问题描述
我想在Microsoft Windows上使用python软件包 pyrouge
.该软件包未提供有关如何在Microsoft Windows上安装的任何说明.我该怎么办?
I want to use the python package pyrouge
on Microsoft Windows. The package doesn't give any instructions on how to install it on Microsoft Windows. How can I do so?
推荐答案
以下说明已在Windows 7 SP1 x64 Ultimate和python 3.5 x64(Anaconda)上进行了测试.
The following instructions were tested on Windows 7 SP1 x64 Ultimate and 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
2) Download ROUGE-1.5.5
. You may download it from https://github.com/andersjo/pyrouge/tree/master/tools/ROUGE-1.5.5
3)pyrouge
带有一个名为pyrouge_set_rouge_path
的python脚本(由于某种原因它没有文件扩展名),您需要运行该脚本才能将pyrouge
指向ROUGE-1.5.5
所在的目录.您需要找到pyrouge_set_rouge_path
,通常位于python Scripts
目录中.
3) pyrouge
comes with a python script named pyrouge_set_rouge_path
(it has no file extension for some reason), which you need to run in order to point pyrouge
to the directory where ROUGE-1.5.5
is located. You need to locate pyrouge_set_rouge_path
, which is typically in the python Scripts
directory.
从cmd.exe
运行以下命令,适当替换pyrouge_set_rouge_path
和ROUGE-1.5.5
的目录:
Run the following command from cmd.exe
, appropriately replacing the directories for pyrouge_set_rouge_path
and 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脚本,它应该不会出现错误:
4) pyrouge
should now be able to initialize a Rouge155
object. You can run the following python script, it should give no error:
from pyrouge import Rouge155
r = Rouge155()
5)如果您没有perl.exe
,则需要安装它(因为pyrouge只是原始的ROUGE脚本(用Perl编写)的包装)您可以安装 http://strawberryperl.com
5) If you don't have perl.exe
, you need to install it (because pyrouge is just a wrapper around the original ROUGE script, which is written in Perl)You can install http://strawberryperl.com
确保perl.exe
二进制文件位于您的Path
系统环境变量中,例如使用which perl
:
Make sure the perl.exe
binary is in your Path
system environment variable, e.g. using which perl
:
要在您的Path
系统环境变量中添加perl:
To add perl in your Path
system environment variable:
最后,为避免此类错误:
Lastly, to avoid this kind of error:
一种方法是将C:\Strawberry\c\bin\*.dll
复制到C:\Strawberry\perl\bin\*.dll
.
6)为防止在运行pyrouge
时出现以下错误消息:
6) To prevent the following error message when running 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
中删除:
You should remove \RELEASE-1.5.5\data\WordNet-2.0.exc.db
, then from 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 ') >. (如果不执行此操作,则会得到OSError: [WinError 193] %1 is not a valid Win32 application
,该错误消息与如果不执行前面的某些步骤会得到的错误消息相同).
7) Open C:\Anaconda\envs\py35\Lib\site-packages\pyrouge\Rouge155.py
(or wherever you installed pyrouge
), go to the function def evaluate(self, system_id=1, rouge_args=None)
(it's at line 319 at the time I am writing this answer), and add command.insert(0, 'perl ')
right before self.log.info("Running ROUGE with command {}".format(" ".join(command)))
. (If you don't do it, you'll get OSError: [WinError 193] %1 is not a valid Win32 application
, which is the same error message as what you would get for if you don't do some of the previous steps).
8)此时,pyrouge
应该可以正常工作.不要尝试运行python -m pyrouge.test
,它是越野车.相反,您可以按以下方式对其进行测试:
8) At that point pyrouge
should work fine. Don't try to run python -m pyrouge.test
, it is buggy. Instead, you can test it as follows:
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()
会收到以下错误消息
If you don't perform step 3, running from pyrouge import Rouge155; r = Rouge155()
will get the following error message
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'
这篇关于如何在Microsoft Windows上安装Python软件包pyrouge?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!