проблемы с импортом тега Stanford pos в nltk

Наверное, это очень банальный вопрос. Я пытаюсь использовать тег stanford pos через nltk с учетом здесь Проблема в том, что моя библиотека nltk не содержит модуль stanford. Поэтому я скопировал то же самое в соответствующую папку и скомпилировал то же самое. Теперь, когда я пытаюсь запустить пример, обнаруживается модуль, но не класс внутри модуля. Может ли кто-нибудь сказать мне, где я иду не так?? Опять же, это, вероятно, очень глупо.

>>> from nltk.tag import stanford 
>>> st = StanfordTagger('bidirection-distsim-wsj-0-18.tagger')

Я использовал py_compile для компиляции файла stanford.py. Я что-то пропустил


person user926321    schedule 08.09.2011    source источник


Ответы (2)


Вы импортируете только stanford. Чтобы получить доступ к StanfordTagger, вам нужно использовать либо:

>>> from nltk.tag.stanford import StanfordTagger

(при условии, что StanfordTagger больше не вложен в модуль) или получить к нему доступ,

>>> st = stanford.StanfordTagger('bidirection-distsim-wsj-0-18.tagger')
person CoatedMoose    schedule 08.09.2011
comment
ОМГ да как же я это забыл!! Однако нужно будет выяснить эту другую ошибку. - person user926321; 08.09.2011
comment
Вы скомпилировали каталог nltk/tag и каталог nltk/internals? Мне никогда не приходилось использовать py_compile, python всегда делал это за меня автоматически, так что здесь мои знания несколько ограничены. - person CoatedMoose; 18.09.2011
comment
Это действительно отдельный вопрос от первого. Изменив содержание вопроса, чтобы он больше не объяснял вашу первоначальную проблему и больше не помогал будущим пользователям. Пожалуйста (как минимум) включите первоначальный вопрос. - person CoatedMoose; 18.09.2011
comment
да, извините, я понял это только сейчас.. изменится - person user926321; 26.09.2011
comment
Я получаю TypeError: не могу создать экземпляр абстрактного класса StanfordTagger с помощью абстрактных методов _cmd - person Nathan B; 22.03.2018

Если вы хотите использовать синтаксический анализатор Stanford, используйте это:

import os
from nltk.parse import stanford
os.environ['STANFORD_PARSER'] = '/folder/with/standford/jars'
os.environ['STANFORD_MODELS'] = '/folder/with/standford/jars'

parser = stanford.StanfordParser(model_path="/location/of/the/englishPCFG.ser.gz")
print parser.raw_batch_parse(("Hello, My name is Melroy.", "What is your name?"))

Выход:

[Дерево('ROOT', [Дерево('S', [Дерево('INTJ', [Дерево('UH', ['Hello'])]), Дерево(',', [',']), Дерево('NP', [Дерево('PRP$', ['Мой']), Дерево('NN', ['имя'])]), Дерево('VP', [Дерево('VBZ', [ 'is']), Tree('ADJP', [Tree('JJ', ['Melroy'])])]), Tree('.', ['.'])])]), Tree(' ROOT', [Дерево('SBARQ', [Дерево('WHNP', [Дерево('WP', ['Что'])]), Дерево('SQ', [Дерево('VBZ', ['is' ]), Tree('NP', [Tree('PRP$', ['ваш']), Tree('NN', ['имя'])])]), Tree('.', ['? '])])])]

Примечание 1. В этом примере JAR-файлы парсера и модели находятся в одной папке.

Примечание 2:

  • Имя файла Стэнфордского парсера: stanford-parser.jar
  • Имя файла стэнфордских моделей: stanford-parser-x.x.x-models.jar

Примечание 3. Файл englishPCFG.ser.gz находится внутри файла models.jar (/edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz). Пожалуйста, используйте менеджер архивов, чтобы «разархивировать» файл models.jar.

person danger89    schedule 08.03.2014