斯坦福分析与斯坦福之间的冲突斯坦福POS标签

时间:2014-03-16 22:15:18

标签: maven nlp stanford-nlp pos-tagger

我正在开发一个项目,要求我将 POS 标签添加到输入字符串中。我还将使用由Stanford解析器生成的语法依赖结构进行后续处理。

在我跳到我的问题之前需要注意的事项。

  1. 对于 POS标记我正在使用http://nlp.stanford.edu/software/tagger.shtml(版本3.3.1)
  2. 对于 grammetical dependency 生成我正在使用http://nlp.stanford.edu/software/lex-parser.shtml#Download(版本3.3.1)
  3. 我在这个类路径中包含了这两个jar。(通过include我使用maven从maven存储库中提取stanford解析器jar并使用后面提到的步骤包含POStagger jar

    现在的问题是每当我尝试获取输入字符串的POS标签时,我都会收到以下错误。

    Exception in thread "main" java.lang.NoSuchMethodError: edu.stanford.nlp.tagger.maxent.TaggerConfig.getTaggerDataInputStream(Ljava/lang/String;)Ljava/io/DataInputStream;
    

    我的直觉说这是因为斯坦福解析器jar也有包含TaggerConfig类的Maxent包。每当我要求字符串的POS标签时,程序会查看斯坦福解析器jar而不是Stanford POStagger jar,因此会出错。

    我正在使用maven并且无法在Maven中心找到POStagger jar,因此我使用http://charlie.cu.cc/2012/06/how-add-external-libraries-maven/链接上的说明将其包含在我的本地maven存储库中。

    如果有人能指出解决这个问题的任何方法,我真的很感激

2 个答案:

答案 0 :(得分:0)

您正在使用两个jar文件。转到BuildPath并反转导入的jar的顺序。那应该解决它。

答案 1 :(得分:0)

Java抱怨的方法是在2009-2011期间发布的Stanford POS Tagger,但不在最近(或古代)版本中。

所以这意味着你的类路径上有另一个jar,其中包含隐藏在其中的旧版Stanford POS标记,并且已调用其MaxentTagger,而不是v3.3.1中的那个jar(由于类路径搜索顺序)。你应该找到它并抱怨。

最近最常见的案例是CMU ark-tweet-nlp.jar。请参阅:http://nlp.stanford.edu/software/corenlp-faq.shtml#nosuchmethoderror

Stanford版本的重叠类不是问题:如果您使用相同版本的标记器和解析器,它们是相同的。