StanfordPOSTagger не работает с NLTK

У меня возникли проблемы с тем, чтобы последний StanfordPOSTagger работал в python 2.7.1 с NLTK 3.2.1 на Mac с установленной Java 8. Я нашел несколько других тем с очень похожими проблемами, но ни одно из решений не сработало для меня. Ниже приведен вывод, когда я пытаюсь пометить предложение:

>>> from nltk.tag.stanford import StanfordPOSTagger
>>> st = StanfordPOSTagger('wsj-0-18-left3words-distsim.tagger')
>>> st.tag(nltk.tokenize.word_tokenize("This is a test"))
Exception in thread "main" java.lang.UnsupportedClassVersionError: edu/stanford/nlp/tagger/maxent/MaxentTagger : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)


Traceback (most recent call last):
File "<pyshell#44>", line 1, in <module>
st.tag(nltk.tokenize.word_tokenize("This is a test"))
File "/Library/Python/2.7/site-packages/nltk/tag/stanford.py", line 71, in tag
return sum(self.tag_sents([tokens]), [])
File "/Library/Python/2.7/site-packages/nltk/tag/stanford.py", line 94, in tag_sents
stdout=PIPE, stderr=PIPE)
File "/Library/Python/2.7/site-packages/nltk/internals.py", line 134, in java
raise OSError('Java command failed : ' + str(cmd))
OSError: Java command failed : ['/Library/Java/Home/bin/java', '-mx1000m', '-cp', '/Users/johntorr/VirtualAssistantProject/stanford-postagger/stanford-postagger-3.6.0-javadoc.jar:/Users/johntorr/VirtualAssistantProject/stanford-postagger/stanford-postagger-3.6.0-sources.jar:/Users/johntorr/VirtualAssistantProject/stanford-postagger/stanford-postagger-3.6.0.jar:/Users/johntorr/VirtualAssistantProject/stanford-postagger/stanford-postagger.jar:/Users/johntorr/VirtualAssistantProject/stanford-postagger/lib/slf4j-api.jar:/Users/johntorr/VirtualAssistantProject/stanford-postagger/lib/slf4j-simple.jar', 'edu.stanford.nlp.tagger.maxent.MaxentTagger', '-model', '/Users/johntorr/VirtualAssistantProject/stanford-postagger/models/wsj-0-18-left3words-distsim.tagger', '-textFile', '/var/folders/gy/bw2lj_wj79x9vl1l3n3ccg980000gn/T/tmp6yV_lP', '-tokenize', 'false', '-outputFormatOptions', 'keepEmptySentences', '-encoding', 'utf8']

Внутри моего файла .bash_profile я добавил следующие две строки:

export CLASSPATH={CLASSPATH}:/Users/johntorr/VirtualAssistantProject/stanford-postagger/stanford-postagger.jar
export STANFORD_MODELS=/Users/johntorr/VirtualAssistantProject/stanford-postagger/models
export JAVA_HOME=/Library/Java/Home
export PATH=$PATH:$JAVA_HOME/bin/java

Кажется, есть несколько других мест с домашними папками Java и исполняемыми файлами Java, но я пытался использовать их все, и ничего не работает. Я также пробовал решение здесь: https://gist.github.com/alvations/e1df0ba227e542955a8a который был опубликован несколькими людьми в разных темах, но это тоже не сработало. Я буду очень благодарен, если кто-нибудь поможет мне решить эту проблему!


person user3449494    schedule 18.04.2016    source источник
comment
Работает ли команда вне Linux?   -  person alvas    schedule 19.04.2016
comment
Я думаю, что это проблема разрешения. У вас есть доступ к /Library/Java/Home/bin/, /Users/johntorr/VirtualAssistantProject/stanford-postagger/ и /var/folders/?   -  person alvas    schedule 19.04.2016
comment
Попробуйте sudo chmod u+w -R /Library/Java/Home/bin/*, sudo chmod u+w -R /var/folders/ на своем терминале.   -  person alvas    schedule 19.04.2016
comment
Кроме того, обновите Java и установите Java 8, что должно решить большинство проблем, связанных с Java, при использовании инструментов Stanford.   -  person alvas    schedule 19.04.2016


Ответы (1)


Спасибо за все ваши советы, Альвас. На самом деле мне удалось решить проблему, установив следующую более старую версию POS-теггера от 2014 года, в которой все еще есть все императивы: http://nlp.stanford.edu/software/stanford-postagger-full-2014-01-04.zip По-видимому, точно такая же проблема с последним синтаксическим анализатором Стэнфорда, поэтому люди также используют его версию 2014 года.

person user3449494    schedule 20.04.2016