我曾尝试在 nltk 中使用 stanford pos tagger,但它给我的错误是:
from nltk.tag.stanford import POSTagger
st = POSTagger('/.../models/english-bidirectional-distsim.tagger', '/.../stanford-postagger-full-2014-10-26/stanford-postagger.jar')
st.tag("dogs and cats".split())
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.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
--------------------------------------------------------------------------- OSError Traceback (most recent call last) in () ----> 1 st.tag("love myself".split())
/Users/bowang/anaconda/lib/python2.7/site-packages/nltk/tag/stanford.pyc in tag(self, tokens) 57 58 def tag(self, tokens): ---> 59 return self.tag_sents([tokens])[0] 60 61 def tag_sents(self, sentences):
/Users/bowang/anaconda/lib/python2.7/site-packages/nltk/tag/stanford.pyc in tag_sents(self, sentences) 79 # Run the tagger and get the output 80 stanpos_output, _stderr = java(self._cmd,classpath=self._stanford_jar, ---> 81 stdout=PIPE, stderr=PIPE) 82 stanpos_output = stanpos_output.decode(encoding) 83
/Users/bowang/anaconda/lib/python2.7/site-packages/nltk/init.pyc in java(cmd, classpath, stdin, stdout, stderr, blocking) 158 if p.returncode != 0: 159 print(stderr.decode(sys.stdout.encoding)) --> 160 raise OSError('Java command failed!') 161 162 return (stdout, stderr)
OSError: Java command failed!
我试过用什么link已回答(除了卸载和重新安装 nltk)但仍然无法正常工作。我也试过从命令行运行 stanford-tagger.jar 来处理我的数据,它给出了同样的错误,如:
Exception in thread "main" java.lang.UnsupportedClassVersionError: edu/stanford/nlp/tagger/maxent/MaxentTaggerGUI : Unsupported major.minor version 52.0
有没有人遇到过并成功解决过这个问题?任何帮助是极大的赞赏!谢谢!
请您参考如下方法:
最新版本的 Stanford Tagger 需要 Java 8。如果您无法升级,请使用旧版本的标记器。
