Создание и использование StanfordTagger в NLTK
Я прошу прощения за новичок в этом вопросе - я пытался выяснить Python упаковку и пространства имен, но тонкости, кажется, ускользнули от меня. Я бы хотел использовать оболочку Python для тега части речи Стэнфорда. У меня не было проблем с поиском документации здесь, где приведен пример использования:
st = StanfordTagger('bidirectional-distsim-wsj-0-18.tagger')
st.tag('What is the airspeed of an unladen swallow ?'.split())
[('What', 'WP'), ('is', 'VBZ'), ('the', 'DT'), ('airspeed', 'NN'), ('of', 'IN'), ('an', 'DT'), ('unladen', 'JJ'), ('swallow', 'VB'), ('?', '.')]
Это выглядит великолепно, но я не могу найти правильные пространства имен, которые будут отображаться в моей локальной установке Python + NLTK (у меня последняя версия NLTK, и я попробовал приведенное ниже в Python 2.6.x, а также 2.7.x):
>>> import nltk
>>> from nltk import *
>>> from nltk.tag import stanford
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name stanford
Я также пробовал это утверждение импорта, с тем же результатом:
>>> from nltk.tag.stanford import StanfordTagger
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named stanford
Осматривая здесь SO, я нашел этот вопрос, где постер, похоже, испытывает точно такую же проблему, но может пройти через шаг пространства имен с помощью:
Проблема в том, что моя библиотека nltk не содержит модуль Стэнфорда. Поэтому я скопировал то же самое в соответствующую папку и скомпилировал тоже самое.
Похоже, это действительно та же проблема, за исключением того, что я не могу найти документацию о том, как добавлять модули в NLTK. Все, что я читаю на веб-сайте NLTK, подразумевает, что модуль Stanford уже должен быть включен в базовую установку. Итак, вопрос в двух частях:
- (Конкретно) Есть какие-нибудь предложения по решению этой конкретной проблемы и началу использования StanfordTagger из Python? Я знаю, что могу легко вызвать jar напрямую, а затем интерпретировать вывод в Python - это все, что делает Python-оболочка в любом случае, - но я хотел бы заставить это работать из принципа, если ничего больше.
- (Общие сведения) Каков хороший питонический подход к исследованию отсутствующих проблем с упаковкой или зависимостей, таких как описанные выше?
1 ответ
Предложения: а. Посмотрите на каталог nltk, установленный на вашем компьютере. Я проверил мой, и stanford.py там нет (то есть отсутствует в каталоге nltk / tag /). Вы можете быстро найти, где искать это:
import distutils.sysconfig
print distutils.sysconfig.get_python_lib()+'/nltk/tag/'
б. Если его там нет, скопируйте файл stanford.py из указанного вами источника в каталог nltk / tag на вашем ПК (который вы получите на шаге a).
Я надеюсь, что это сработает.