斯坦福标记器不起作用

Posted

技术标签:

【中文标题】斯坦福标记器不起作用【英文标题】:Stanford tagger not working 【发布时间】:2014-11-30 17:27:02 【问题描述】:

我曾尝试在 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())

线程“主”java.lang.UnsupportedClassVersionError 中的异常: edu/stanford/nlp/tagger/maxent/MaxentTagger:不支持的major.minor 版本 52.0 在 java.lang.ClassLoader.defineClass1(本机方法) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:800) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:71) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:361) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) 在 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

----------------------------------- ---------------------------- OSError Traceback(最近调用 最后)在() ----> 1 st.tag("爱我自己".split())

/Users/bowang/anaconda/lib/python2.7/site-packages/nltk/tag/stanford.pyc 在标签中(自我,令牌) 57 58 def标签(自我,令牌): ---> 59 返回 self.tag_sents([tokens])[0] 60 61 def tag_sents(自我,句子):

/Users/bowang/anaconda/lib/python2.7/site-packages/nltk/tag/stanford.pyc 在 tag_sents(自我,句子)中 79 # 运行标注器并获取输出 80 stanpos_output,_stderr = java(self._cmd,classpath=self._stanford_jar, ---> 81 标准输出=管道,标准错误=管道) 82 stanpos_output = stanpos_output.decode(编码) 83

/Users/bowang/anaconda/lib/python2.7/site-packages/nltk/init.pyc 在 java 中(cmd、类路径、标准输入、标准输出、标准错误、阻塞) 158 如果 p.returncode != 0: 159 打印(stderr.decode(sys.stdout.encoding)) --> 160 引发 OSError('Java 命令失败!') 161 162返回(标准输出,标准错误)

OSError: Java 命令失败!

我已经尝试过link 的回答(除了卸载和重新安装 nltk),但仍然无法正常工作。我还尝试从命令行运行 stanford-tagger.jar 来处理我的数据,它给出了相同的错误,如:

线程“主”java.lang.UnsupportedClassVersionError 中的异常: edu/stanford/nlp/tagger/maxent/MaxentTaggerGUI:不支持 major.minor 版本 52.0

以前有没有人成功解决过这个问题?任何帮助是极大的赞赏!谢谢!

【问题讨论】:

见***.com/questions/10382929/… 【参考方案1】:

最新版本的斯坦福标记器需要 Java 8。如果您无法升级,请使用旧版本的标记器。

【讨论】:

非常感谢!显然我只安装了 JRE 8 而不是 JDK 8,这就是为什么在系统偏好设置中它告诉我 Java 是最新的,但我在 java_home 下找不到新的 java...再次感谢。 3.5.0 及更高版本需要 Java 8。Java 7 的最新版本是 3.4.1。 nlp.stanford.edu/software/tagger.shtml#History

以上是关于斯坦福标记器不起作用的主要内容,如果未能解决你的问题,请参考以下文章

CAD2014安全系统软件锁许可管理器不起作用或未正确安装

引导日期选择器不起作用

为啥 AVPlayer 边界时间观察器不起作用?

Jquery $('class', this) 选择器不起作用

Weka 分类器不起作用

Phong 着色器不起作用