Теггер части речи Стэнфорда выдает ошибку атрибута

Я пробовал разные учебные пособия, чтобы научиться использовать стэнфордский тегировщик частей речи в Python. В настоящее время я использую следующий код для маркировки сообщений с помощью тега Stanford. Однако я получаю AttributeError. Мой код ниже:

import nltk
from nltk.tag.stanford import StanfordPOSTagger
english_postagger = StanfordPOSTagger('/home/szk/Downloads/NL2API/NL2API/tutorials/postags/stanford-postagger-2018-10-16/models/english-bidirectional-distsim.tagger', '/home/szk/Downloads/NL2API/NL2API/tutorials/postags/stanford-postagger-2018-10-16/stanford-postagger.jar')
english_postagger.tag('this is stanford postagger in nltk for python users'.split())

Трассировка ошибки ниже:

Traceback (most recent call last):
  File "stanfordpostag.py", line 4, in <module>
    english_postagger.tag('this is stanford postagger in nltk for python users'.split())
  File "/home/szk/Downloads/NL2API/NL2API/newv/local/lib/python2.7/site-packages/nltk/tag/stanford.py", line 93, in tag
    return sum(self.tag_sents([tokens]), [])
  File "/home/szk/Downloads/NL2API/NL2API/newv/local/lib/python2.7/site-packages/nltk/tag/stanford.py", line 116, in tag_sents
    cmd, classpath=self._stanford_jar, stdout=PIPE, stderr=PIPE
  File "/home/szk/Downloads/NL2API/NL2API/newv/local/lib/python2.7/site-packages/nltk/internals.py", line 112, in java
    subprocess_output_dict = {'pipe': subprocess.PIPE, 'stdout': subprocess.STDOUT, 'devnull': subprocess.DEVNULL}
AttributeError: 'module' object has no attribute 'DEVNULL'

Надеюсь, кто-то может предоставить решение.


person kzs    schedule 30.08.2019    source источник


Ответы (1)


Я не уверен, почему это не работает — это все еще предназначено — но начиная с NLTK версии 3.2.3 вам гораздо лучше (по причинам скорости и масштабируемости) использовать более новый интерфейс сервера Stanford CoreNLP, обсуждаемый здесь: https://github.com/nltk/nltk/wiki/Stanford-CoreNLP-API-in-NLTK .

Так что вы можете попробовать это. Можно следовать этим инструкциям, но везде заменять текущую версию CoreNLP от 2018-10-05, а не предыдущую версию, указанную в инструкциях.

person Christopher Manning    schedule 30.08.2019
comment
Очень рад увидеть ответ от ВАС (Кристофера Д. Мэннинга), сэр !!! - person kzs; 05.04.2020