J'essaie d'utiliser le pyrouge pour calculer la similarité entre le résumé automatisé et les normes d'or. Quand il traite les deux résumés, Rouge fonctionne bien. Mais quand il écrit le résultat, il se plaint que "tuple index out of range" Est-ce que quelqu'un sait ce qui cause ce problème, et comment je peux le réparer?pyroute tuple hors 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
Les normes d'or sont BookRags.txt, GradeSaver.txt, GradeSummary.txt, Wikipedia.txt Le résumé qui doit être comparé à automated.txt est
ne faut pas non * txt ou [ a-z0-9A-Z] + travail? Mais le précédent me donne « rien à redire erreur », ce dernier « indice de tuple hors de portée » erreur
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)
Je réglage manuel à la fois répertoire. Il semble que le paquet Rouge puisse traiter les txts.
Je vois. J'ai donc changé mon expression régulière en * .txt, qui correspondra à tous les résumés dans le dossier. Mais cela me donne maintenant une nouvelle erreur - rien à répéter. – Nat
Souvent, un * sera traité comme un caractère générique qui correspond à n'importe quel nombre de caractères, mais lorsque vous utilisez regex, le * se comporte différemment. Voir https://stackoverflow.com/questions/31386552/nothing-to-repeat-from-python-regex pour plus d'informations à ce sujet. Comme vous l'avez mentionné '[a-z0-9A-Z] +' devrait choisir n'importe quoi. Pourriez-vous imprimer la variable system_dir utilisée par la fonction write_config_static et vous assurer que vos fichiers .txt se trouvent dans ce dossier, et non dans un sous-répertoire de ce dossier. –
Il semble que le Rouge puisse trouver des résumés dans le répertoire du système et dans le répertoire du modèle car, à partir de sa sortie, il a traité les txts dans les deux répertoires. Le problème se produit toujours dans la fonction write_config_static. Mes system_dir et model_dir sont définis manuellement à une adresse absolue. – Nat