pyrouge:__init __()获得了意外的关键字参数'n_words'

时间:2018-09-14 06:42:45

标签: python rouge

我正在尝试安装pyrouge,并且我运行了这段代码(在repo之后)

from pyrouge import Rouge155
from pprint import pprint

ref_texts = {'A': "Poor nations pressurise developed countries into granting trade subsidies.",
             'B': "Developed countries should be pressurized. Business exemptions to poor nations.",
             'C': "World's poor decide to urge developed nations for business concessions."}
summary_text = "Poor nations demand trade subsidies from developed nations."


rouge = Rouge155(n_words=100)
score = rouge.score_summary(summary_text, ref_texts)
pprint(score)

但是我遇到了一些错误,回溯显示如下:

Traceback (most recent call last):

  File "<ipython-input-116-94aea372ee05>", line 1, in <module>
    runfile('C:/Users/cerdas/Documents/Bil/Lat/rouge.py', wdir='C:/Users/cerdas/Documents/Bil/Lat')

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

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

  File "C:/Users/cerdas/Documents/Bil/Lat/rouge.py", line 10, in <module>
    rouge = Rouge155(n_words=100)

TypeError: __init__() got an unexpected keyword argument 'n_words'

这里是__init__.py

的代码
from pyrouge.base import Doc, Sent
from pyrouge.rouge import Rouge155

和调用的函数Rouge155

class Rouge155(object):
    def __init__(self, rouge_home=ROUGE_EVAL_HOME, n_words=None, stem=False, keep_files=False):
        self._stem = stem
        self._n_words = n_words
        self._discover_rouge(rouge_home)
        self._keep_files = keep_files

2 个答案:

答案 0 :(得分:0)

您需要导出环境变量:ROUGE_EVAL_HOME

来自docs

  

假设ROUGE-1.5.5正常工作。安装,使用以下命令告诉pyrouge ROUGE路径:

     

pyrouge_set_rouge_path /absolute/path/to/ROUGE-1.5.5/directory

答案 1 :(得分:0)

以下说明已在Windows 10和python 3.7x32上进行了测试

请勿将项目pyrouge下载到 Anders Johannsen。没有pip install pyrouge的安装想法。

要解决这个问题,我必须在构建命令行并运行ROUGE-1.5.5.pl的那一刻做一下小修改。在Windows中,除了需要将PERL.exe添加到环境变量外,还需要更改文件代码class Rouge155()中的\pyrouge\rouge.py

  1. 打开文件代码\pyrouge\rouge.py转到函数def _run_rouge(self)(在我编写此答案时位于第96行)。
  2. 转到第122行,对此行return check_output([self._rouge_bin] + options)进行注释
  3. 将此代码添加到位:
    command = [self._rouge_bin] + options
    command.insert(0, 'perl ')
    return check_output(command)

Franck Dernoncourt在问题 How to install the Python package pyrouge on Microsoft Windows? 的答案中在第7步中解决了问题,但是此步骤仅在{{1 }}在其他作者Benjamin Heinzerling的存储库的实现中安装了pyrouge

您正在尝试使用作者Anders Johannsen的存储库中可用的版本。他的实现具有带有您注释过的参数pip install rouge的类,但是仅在他的类n_words=100的版本中,而她不在Python Package Index(PyPI)中。

P.S:抱歉,我的英语中等。