2017-09-13 9 views
0

私はpyrougeを使って、自動化されたサマリーとゴールドスタンダードの類似点を計算しようとしています。両方のサマリーを処理すると、Rougeは正常に動作します。しかし、結果を書いたとき、「範囲外のタプル・インデックス」という文句を誰かが知っていますか?pyrouge tuple out of index

2017-09-13 23:54:57,524 [MainThread ] [INFO ] Set ROUGE home directory to D:\ComputerScience\Research\ROUGE-1.5.5\ROUGE-1.5.5. 
2017-09-13 23:54:57,524 [MainThread ] [INFO ] Writing summaries. 
2017-09-13 23:54:57,524 [MainThread ] [INFO ] Processing summaries. Saving system files to C:\Users\zhuan\AppData\Local\Temp\tmppm193twp\system and model files to C:\Users\zhuan\AppData\Local\Temp\tmppm193twp\model. 
2017-09-13 23:54:57,524 [MainThread ] [INFO ] Processing files in D:\ComputerScience\Research\summary\Grendel\automated. 
2017-09-13 23:54:57,524 [MainThread ] [INFO ] Processing automated.txt. 
2017-09-13 23:54:57,539 [MainThread ] [INFO ] Saved processed files to C:\Users\zhuan\AppData\Local\Temp\tmppm193twp\system. 
2017-09-13 23:54:57,539 [MainThread ] [INFO ] Processing files in D:\ComputerScience\Research\summary\Grendel\manual. 
2017-09-13 23:54:57,539 [MainThread ] [INFO ] Processing BookRags.txt. 
2017-09-13 23:54:57,539 [MainThread ] [INFO ] Processing GradeSaver.txt. 
2017-09-13 23:54:57,539 [MainThread ] [INFO ] Processing GradeSummary.txt. 
2017-09-13 23:54:57,557 [MainThread ] [INFO ] Processing Wikipedia.txt. 
2017-09-13 23:54:57,562 [MainThread ] [INFO ] Saved processed files to C:\Users\zhuan\AppData\Local\Temp\tmppm193twp\model. 
Traceback (most recent call last): 

    File "<ipython-input-8-bc227b272111>", line 1, in <module> 
    runfile('D:/ComputerScience/Research/automate_summary.py', wdir='D:/ComputerScience/Research') 

    File "C:\Users\zhuan\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 707, in runfile 
    execfile(filename, namespace) 

    File "C:\Users\zhuan\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "D:/ComputerScience/Research/automate_summary.py", line 53, in <module> 
    output = r.convert_and_evaluate() 

    File "C:\Users\zhuan\Anaconda3\lib\site-packages\pyrouge\Rouge155.py", line 361, in convert_and_evaluate 
    rouge_output = self.evaluate(system_id, rouge_args) 

    File "C:\Users\zhuan\Anaconda3\lib\site-packages\pyrouge\Rouge155.py", line 331, in evaluate 
    self.write_config(system_id=system_id) 

    File "C:\Users\zhuan\Anaconda3\lib\site-packages\pyrouge\Rouge155.py", line 315, in write_config 
    self._config_file, system_id) 

    File "C:\Users\zhuan\Anaconda3\lib\site-packages\pyrouge\Rouge155.py", line 264, in write_config_static 
    system_filename_pattern = re.compile(system_filename_pattern) 

    File "C:\Users\zhuan\Anaconda3\lib\re.py", line 233, in compile 
    return _compile(pattern, flags) 

    File "C:\Users\zhuan\Anaconda3\lib\re.py", line 301, in _compile 
    p = sre_compile.compile(pattern, flags) 

    File "C:\Users\zhuan\Anaconda3\lib\sre_compile.py", line 562, in compile 
    p = sre_parse.parse(p, flags) 

    File "C:\Users\zhuan\Anaconda3\lib\sre_parse.py", line 855, in parse 
    p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0) 

    File "C:\Users\zhuan\Anaconda3\lib\sre_parse.py", line 416, in _parse_sub 
    not nested and not items)) 

    File "C:\Users\zhuan\Anaconda3\lib\sre_parse.py", line 616, in _parse 
    source.tell() - here + len(this)) 

error: nothing to repeat 

金の基準はBookRags.txt、GradeSaver.txt、GradeSummary.txt、Wikipedia.txt あるautomated.txt
万一* .txtのではないかのいずれかと比較する必要が要約されています[ a-z0-9A-Z] +仕事ですか?しかし、以前のものは私に "何も繰り返さないエラー"、後者の "タプルインデックスが範囲外です"というエラーを返します。

r = Rouge155("D:\ComputerScience\Research\ROUGE-1.5.5\ROUGE-1.5.5") 
r.system_dir = 'D:\ComputerScience\Research\summary\Grendel\\automated' 
r.model_dir = 'D:\ComputerScience\Research\summary\Grendel\manual' 
r.system_filename_pattern = '[a-z0-9A-Z]+.txt' 
r.model_filename_pattern = '[a-z0-9A-Z]+.txt' 
output = r.convert_and_evaluate() 
print(output) 

私は両方のディレクトリを手動で設定しています。ルージュパッケージがその中のtxtsを処理できるようです。

答えて

1

不正なライブラリは、正規表現に一致するものが見つからない場合がないという問題があります。不正なソースコードid = match.groups(0)[0]の行は、問題のあるものです。 documentationでこれを見ると、グループの機能はReturn a tuple containing all the subgroups of the match, from 1 up to however many groups are in the pattern...となっています。一致するものが見つからない場合は空のタプルが返され、コードは空のタプルから最初のアイテムを取得しようとしているため、エラーが発生します。

+0

です。そこで、正規表現を* .txtに変更しました。これはフォルダ内の要約と一致します。しかしそれは今や私に新しい誤りを与えます - 何も繰り返されません。 – Nat

+0

多くの場合、a *は任意の数の任意の文字と一致するワイルドカード文字として扱われますが、regexを使用すると*の動作が異なります。詳細はhttps://stackoverflow.com/questions/31386552/nothing-to-repeat-from-python-regexを参照してください。あなたが言ったように '[a-z0-9A-Z] +'は何かを選ぶべきです。 write_config_static関数で使用されているsystem_dir変数を出力し、.txtファイルがこのフォルダの内部にあり、このフォルダのサブディレクトリではないことを確認してください。 –

+0

システムディレクトリとモデルディレクトリの両方でサマリを見つけることができるようです。その出力から、両方のディレクトリでtxtsが処理されたからです。この問題は引き続きwrite_config_static関数で発生します。私のsystem_dirとmodel_dirは手動で絶対アドレスに設定されます。 – Nat