2016-04-18 6 views
1

Ich habe Probleme, den neuesten StanfordPOSTagger in Python 2.7.1 mit NLTK 3.2.1 auf einem Mac mit installiertem Java 8 zu installieren. Ich habe mehrere andere Threads mit sehr ähnlichen Problemen gefunden, aber keine der Lösungen hat es für mich gearbeitet .. Unten ist der Ausgang, wenn ich versuche, einen Satz zu markieren:StanfordPOSTagger arbeitet nicht mit NLTK

>>> 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'] 

Inside my Bash_profile Datei Ich habe hinzugefügt die beiden folgenden Zeilen:

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 

Es scheinen einige andere Orte mit Java-Home-Ordner und Java-Executables zu sein, aber ich habe sie alle ausprobiert und nichts funktioniert mit. Ich habe auch die Lösung hier versucht: https://gist.github.com/alvations/e1df0ba227e542955a8a die von ein paar Leuten in verschiedenen Threads gepostet wurde, aber das hat auch nicht funktioniert .. Ich werde sehr dankbar sein, wenn mir jemand helfen kann, das zu lösen!

+0

Funktioniert der Befehl außerhalb von Linux? – alvas

+0

Ich denke, es ist ein Genehmigungsproblem. Haben Sie Zugriff auf '/ Library/Java/Home/bin /', '/ Benutzer/johntorr/VirtualAssistantProject/stanford-posttagger /' und '/ var/folders /'? – alvas

+0

Versuchen Sie 'sudo chmod u + w -R/Bibliothek/Java/Home/bin/*', 'sudo chmod u + w -R/var/folders /' auf Ihrem Terminal. – alvas

Antwort

0

Vielen Dank für Ihre Beratung Alvas .. Eigentlich habe ich es geschafft durch die Installation der folgenden älteren Version des POS-Tagger von 2014, das Problem zu lösen, dass noch alle Imperative hat: http://nlp.stanford.edu/software/stanford-postagger-full-2014-01-04.zip Anscheinend gibt es genau das gleiche Problem mit dem neuesten Stanford Parser und so Leute haben eine 2014 Version dieser auch verwendet.