Ошибка Nltk stanford pos tagger: команда Java не выполнена

Я пытаюсь использовать nltk.tag.stanford module для пометки предложения (сначала как пример вики), но я продолжаю получать следующую ошибку:

 Traceback (most recent call last): File "test.py", line 28, in <module> print st.tag(word_tokenize('What is the airspeed of an unladen swallow ?')) File "/usr/local/lib/python2.7/dist-packages/nltk/tag/stanford.py", line 59, in tag return self.tag_sents([tokens])[0] File "/usr/local/lib/python2.7/dist-packages/nltk/tag/stanford.py", line 81, in tag_sents stdout=PIPE, stderr=PIPE) File "/usr/local/lib/python2.7/dist-packages/nltk/internals.py", line 160, in java raise OSError('Java command failed!') OSError: Java command failed! 

или после ошибки LookupError :

  • Каковы некоторые хорошие способы оценки «приблизительного» семантического сходства между предложениями?
  • Кластеризация текста в Python
  • Как избавиться от пунктуации с помощью токенизатора NLTK?
  • Как вычислить подобие косинуса с учетом 2 строк предложения? - Python
  • Анализ настроений для Twitter в Python
  • Извлечение существительных из Noun Phase в NLP
  •  LookupError: =========================================================================== NLTK was unable to find the java file! Use software specific configuration paramaters or set the JAVAHOME environment variable. =========================================================================== 

    это код exapmle:

     >>> from nltk.tag.stanford import POSTagger >>> st = POSTagger('/usr/share/stanford-postagger/models/english-bidirectional-distsim.tagger', ... '/usr/share/stanford-postagger/stanford-postagger.jar') >>> st.tag('What is the airspeed of an unladen swallow ?'.split()) 

    Я также использовал word_tokenize вместо split но это не имеет никакого значения.

    Я также установил java снова или jdk ! и все мои поиски были безуспешными! что-то вроде nltknltk.internals.config_java() или …!

    Примечание. Я использую linux (Xubuntu)!

  • Алгоритмы семантической привязки - python
  • Анализ настроений по большому набору текста интерактивной беседы
  • POS-Tagger невероятно медленный
  • NLTK Именованное распознавание объектов с пользовательскими данными
  • Как сделать токенирование строкового предложения в NLTK?
  • Python Arabic NLP
  • One Solution collect form web for “Ошибка Nltk stanford pos tagger: команда Java не выполнена”

    Если вы прочитали встроенную документацию в файле nltk / internals.py (строки 58 – 175), вы должны найти ответ достаточно простым. NLTK требует полного пути к двоичному файлу Java.

    Если не указано, nltk будет искать систему для двоичного кода Java; и если он не найден, он вызывает исключение LookupError.

    У вас есть несколько вариантов, которые, на мой взгляд, основаны на нескольких исследованиях:

    1) Добавьте в свой проект следующий код (не большое решение)

     import os java_path = "path/to/java" # replace this os.environ['JAVAHOME'] = java_path 

    2) Удалите и переустановите NLTK (желательно в virtualenv ) (лучше, но все же не очень)

     pip uninstall nltk sudo -E pip install nltk 

    3) Установите переменную среды java (это наиболее прагматичное решение IMO)

    Редактировать файл Path / etc / profile системы

     sudo gedit /etc/profile 

    Добавьте следующие строки в конец

     JAVA_HOME=/usr/lib/jvm/jdk1.7.0 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin export JAVA_HOME export JRE_HOME export PATH 
    Python - лучший язык программирования в мире.