Как установить пакет Pyrouge Python на Microsoft Windows?

Я хочу использовать пакет Python pyrouge в Microsoft Windows. Пакет не дает никаких инструкций о том, как установить его в Microsoft Windows. Как я могу это сделать?

1 ответ

Решение

Следующие инструкции были протестированы на Windows 7 SP1 x64 Ultimate и python 3.5 x64 (Anaconda).

1) В cmd.exe, бежать

pip install pyrouge

2) Скачать ROUGE-1.5.5, Вы можете скачать его с https://github.com/andersjo/pyrouge/tree/master/tools/ROUGE-1.5.5

3) pyrouge поставляется со скриптом Python с именем pyrouge_set_rouge_path (у него нет расширения файла по какой-то причине), который нужно запустить, чтобы указать pyrouge в каталог, где ROUGE-1.5.5 расположен. Вам нужно найти pyrouge_set_rouge_path, который обычно находится в питоне Scripts каталог.

Запустите следующую команду из cmd.exeсоответственно заменяя каталоги на pyrouge_set_rouge_path а также ROUGE-1.5.5:

python C:\Anaconda\envs\py35\Scripts\pyrouge_set_rouge_path  C:\pyrouge-master\tools\ROUGE-1.5.5

4) pyrouge теперь должен иметь возможность инициализировать Rouge155 объект. Вы можете запустить следующий скрипт Python, он не должен выдавать ошибку:

from pyrouge import Rouge155
r = Rouge155()

5) Если у вас нет perl.exe, вам нужно установить его (потому что pyrouge - это просто оболочка вокруг оригинального скрипта ROUGE, написанного на Perl). Вы можете установить http://strawberryperl.com/

Убедитесь, что perl.exe бинарный в вашем Path системная переменная среды, например, с использованием which perl:

Чтобы добавить Perl в ваш Path системная переменная среды:

Наконец, чтобы избежать такого рода ошибок:

Одним из способов является копирование C:\Strawberry\c\bin\*.dll в C:\Strawberry\perl\bin\*.dll,

6) Чтобы предотвратить следующее сообщение об ошибке при запуске pyrouge:

Cannot open exception db file for reading: C:\Anaconda\pyrouge-master\tools\ROUGE-1.5.5\data/WordNet-2.0.exc.db

Вы должны удалить \RELEASE-1.5.5\data\WordNet-2.0.exc.dbзатем из cmd.exe:

cd RELEASE-1.5.5\data\
perl WordNet-2.0-Exceptions/buildExeptionDB.pl ./WordNet-2.0-Exceptions ./smart_common_words.txt ./WordNet-2.0.exc.db

7) Открыть C:\Anaconda\envs\py35\Lib\site-packages\pyrouge\Rouge155.py (или где вы установили pyrouge), перейти к функции def evaluate(self, system_id=1, rouge_args=None) (это в строке 319 в то время, когда я пишу этот ответ), и добавьте command.insert(0, 'perl ') прямо перед self.log.info("Running ROUGE with command {}".format(" ".join(command))), (Если вы этого не сделаете, вы получите OSError: [WinError 193] %1 is not a valid Win32 application, что является тем же сообщением об ошибке, которое вы получите, если не выполните некоторые из предыдущих шагов).

8) В этот момент pyrouge должно работать нормально. Не пытайся бежать python -m pyrouge.test глючит. Вместо этого вы можете проверить это следующим образом:

some_folder:
│   rouge.py
│
├───model_summaries
│       text.A.001.txt
│
└───system_summaries
        text.001.txt

rouge.py содержит:

from pyrouge import Rouge155
r = Rouge155()

r.system_dir = 'system_summaries'
r.model_dir = 'model_summaries'
r.system_filename_pattern = 'text.(\d+).txt'
r.model_filename_pattern = 'text.[A-Z].#ID#.txt'

output = r.convert_and_evaluate()
print(output)
output_dict = r.output_to_dict(output)

text.A.001.txt содержит:

preprocess my summaries, then run ROUGE

text.001.txt содержит:

I only want to preprocess my summaries and then run ROUGE on my own

Выход при работе rouge.py:

2017-10-31 21:55:37,239 [MainThread  ] [INFO ]  Writing summaries.
2017-10-31 21:55:37,249 [MainThread  ] [INFO ]  Processing summaries. Saving system files to C:\Users\Francky\AppData\Local\Temp\tmpmh72hoxa\system and model files to C:\Users\Francky\AppData\Local\Temp\tmpmh72hoxa\model.
2017-10-31 21:55:37,249 [MainThread  ] [INFO ]  Processing files in system_summaries.
2017-10-31 21:55:37,249 [MainThread  ] [INFO ]  Processing text.001.txt.
2017-10-31 21:55:37,249 [MainThread  ] [INFO ]  Saved processed files to C:\Users\Francky\AppData\Local\Temp\tmpmh72hoxa\system.
2017-10-31 21:55:37,249 [MainThread  ] [INFO ]  Processing files in model_summaries.
2017-10-31 21:55:37,249 [MainThread  ] [INFO ]  Processing text.A.001.txt.
2017-10-31 21:55:37,249 [MainThread  ] [INFO ]  Saved processed files to C:\Users\Francky\AppData\Local\Temp\tmpmh72hoxa\model.
2017-10-31 21:55:37,249 [MainThread  ] [INFO ]  Written ROUGE configuration to C:\Users\Francky\AppData\Local\Temp\tmpgx71qygq\rouge_conf.xml
2017-10-31 21:55:37,249 [MainThread  ] [INFO ]  Running ROUGE with command perl  C:\Anaconda\pyrouge-master\tools\ROUGE-1.5.5\ROUGE-1.5.5.pl -e C:\Anaconda\pyrouge-master\tools\ROUGE-1.5.5\data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -a -m C:\Users\Francky\AppData\Local\Temp\tmpgx71qygq\rouge_conf.xml
command: ['C:\\Anaconda\\pyrouge-master\\tools\\ROUGE-1.5.5\\ROUGE-1.5.5.pl', '-e', 'C:\\Anaconda\\pyrouge-master\\tools\\ROUGE-1.5.5\\data', '-c', '95', '-2', '-1', '-U', '-r', '1000', '-n', '4', '-w', '1.2', '-a', '-m', 'C:\\Users\\Francky\\AppData\\Local\\Temp\\tmpgx71qygq\\rouge_conf.xml']
---------------------------------------------
1 ROUGE-1 Average_R: 1.00000 (95%-conf.int. 1.00000 - 1.00000)
1 ROUGE-1 Average_P: 0.42857 (95%-conf.int. 0.42857 - 0.42857)
1 ROUGE-1 Average_F: 0.60000 (95%-conf.int. 0.60000 - 0.60000)
---------------------------------------------
1 ROUGE-2 Average_R: 0.80000 (95%-conf.int. 0.80000 - 0.80000)
1 ROUGE-2 Average_P: 0.30769 (95%-conf.int. 0.30769 - 0.30769)
1 ROUGE-2 Average_F: 0.44444 (95%-conf.int. 0.44444 - 0.44444)
---------------------------------------------
1 ROUGE-3 Average_R: 0.50000 (95%-conf.int. 0.50000 - 0.50000)
1 ROUGE-3 Average_P: 0.16667 (95%-conf.int. 0.16667 - 0.16667)
1 ROUGE-3 Average_F: 0.25000 (95%-conf.int. 0.25000 - 0.25000)
---------------------------------------------
1 ROUGE-4 Average_R: 0.00000 (95%-conf.int. 0.00000 - 0.00000)
1 ROUGE-4 Average_P: 0.00000 (95%-conf.int. 0.00000 - 0.00000)
1 ROUGE-4 Average_F: 0.00000 (95%-conf.int. 0.00000 - 0.00000)
---------------------------------------------
1 ROUGE-L Average_R: 1.00000 (95%-conf.int. 1.00000 - 1.00000)
1 ROUGE-L Average_P: 0.42857 (95%-conf.int. 0.42857 - 0.42857)
1 ROUGE-L Average_F: 0.60000 (95%-conf.int. 0.60000 - 0.60000)
---------------------------------------------
1 ROUGE-W-1.2 Average_R: 0.69883 (95%-conf.int. 0.69883 - 0.69883)
1 ROUGE-W-1.2 Average_P: 0.42857 (95%-conf.int. 0.42857 - 0.42857)
1 ROUGE-W-1.2 Average_F: 0.53131 (95%-conf.int. 0.53131 - 0.53131)
---------------------------------------------
1 ROUGE-S* Average_R: 1.00000 (95%-conf.int. 1.00000 - 1.00000)
1 ROUGE-S* Average_P: 0.16484 (95%-conf.int. 0.16484 - 0.16484)
1 ROUGE-S* Average_F: 0.28303 (95%-conf.int. 0.28303 - 0.28303)
---------------------------------------------
1 ROUGE-SU* Average_R: 1.00000 (95%-conf.int. 1.00000 - 1.00000)
1 ROUGE-SU* Average_P: 0.19231 (95%-conf.int. 0.19231 - 0.19231)
1 ROUGE-SU* Average_F: 0.32258 (95%-conf.int. 0.32258 - 0.32258)

Если вы не выполните шаг 3, запустите from pyrouge import Rouge155; r = Rouge155() получит следующее сообщение об ошибке

Traceback (most recent call last):
  File "C:\Users\Franck\Documents\rouge.py", line 8, in <module>
    r = Rouge155()
  File "C:\Anaconda\envs\py35\lib\site-packages\pyrouge\Rouge155.py", line 88, in __init__
    self.__set_rouge_dir(rouge_dir)
  File "C:\Anaconda\envs\py35\lib\site-packages\pyrouge\Rouge155.py", line 402, in __set_rouge_dir
    self._home_dir = self.__get_rouge_home_dir_from_settings()
  File "C:\Anaconda\envs\py35\lib\site-packages\pyrouge\Rouge155.py", line 416, in __get_rouge_home_dir_from_settings
    with open(self._settings_file) as f:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Franck\\AppData\\Roaming\\pyrouge\\settings.ini'
Другие вопросы по тегам