Skip to main content
 首页 » 编程设计

java之斯坦福标注器不工作

2025年05月04日32落叶无声

我曾尝试在 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。如果您无法升级,请使用旧版本的标记器。