pyrouge: __init__() получил неожиданный аргумент ключевого слова 'n_words'
Я пытаюсь установить Pyrouge, и я запустил этот код (после этого репо)
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 ответа
Вам необходимо экспортировать переменную среды: ROUGE_EVAL_HOME
Из документов:
Предполагая работающий ROUGE-1.5.5. при установке, сообщите pyrouge путь ROUGE с помощью этой команды:
pyrouge_set_rouge_path /absolute/path/to/ROUGE-1.5.5/directory
Перейдите в свой репозиторий (ваша папка, откуда вы клонировали это). Теперь проберись в pyrouge/base.py
и убедитесь, что переменная ROUGE_EVAL_HOME
указывает на tools/ROUGE-1.5.5
. Попробуйте вручную ввести все назначение, скопировав путь к файлу, а затем, если он работает, попробуйте использовать os
модуль, чтобы сделать его более динамичным. Вы должны указать свой код, чтобы он указывал на пакет ROUGE, который находится в вашем хранилище, а не на тот, из которого вы получаете pip install pyrouge
Следующие инструкции были протестированы на Windows 10 и Python 3.7x32
Загрузите ваш проект Pyrouge в хранилище Андерса Йоханнсена. Не устанавливать мысли для pip install pyrouge
,
Чтобы решить, я должен был сделать небольшую модификацию в тот момент, когда командная строка построена и будет работать ROUGE-1.5.5.pl
, В Windows, кроме того, вам нужно добавить PERL.exe в переменные среды, но вам также нужно будет изменить class Rouge155()
в коде файла \pyrouge\rouge.py
,
- Откройте код файла
\pyrouge\rouge.py
перейти к функцииdef _run_rouge(self)
(это в строке 96 в то время, когда я пишу этот ответ). - Перейти к строке 122, прокомментировать эту строку
return check_output([self._rouge_bin] + options)
- Добавьте этот код на место:
command = [self._rouge_bin] + options
command.insert(0, 'perl ')
return check_output(command)
Franck Dernoncourt в своем ответе на вопрос Как установить пакет Pyrouge Python в Microsoft Windows? решил проблему в шаге 7, но этот шаг работает только в pyrouge
установлен через pip install rouge
, в реализации хранилища другого автора, Бенджамина Хайнцерлинга.
И вы пытаетесь использовать доступную версию репозитория автора Андерса Йоханнсена. Его реализация имеет класс с аргументами, которые вы прокомментировали n_words=100
, но только в своей версии класса Rouge155()
и ее нет в Python Package Index (PyPI).
PS: извините за любую ошибку, мой английский средний.