2

对不起,如果这是一个新手的问​​题。我试图在 Netbeans 中使用 maven 来构建 CoreNLP 解析器。

我首先添加了 stanford-corenlp 1.2.0 的依赖项。但是,我在编译代码时总是出错。我试图简化我的代码以创建 StanfordCoreNLP 对象,但它仍然无法正常运行并显示相同的错误消息。我想这里可能会带来主要的麻烦点。

我的简化代码显示为:

import java.util.Properties;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;

Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);

错误信息:

Exception in thread "main" java.lang.NoSuchMethodError: 
edu.stanford.nlp.process.PTBTokenizer.factory
(Ledu/stanford/nlp/process/LexedTokenFactory;Ljava/lang/String;)Ledu/stanford/nlp/objectbank/TokenizerFactory;
        at edu.stanford.nlp.pipeline.PTBTokenizerAnnotator.<init>(PTBTokenizerAnnotator.java:42)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP$1.create(StanfordCoreNLP.java:365)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP$1.create(StanfordCoreNLP.java:355)
        at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:62)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:328)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:194)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:184)
        at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:176)
        at com.mycompany.hellocore.App.main(App.java:26)

我也在 E​​clipse 上通过 maven 尝试了同样的事情,错误信息仍然是一样的。谁能给我一些建议?谢谢!

操作系统:Mac Lion / Java 版本:1.6.0_29


[更新] 01-6-2012 根据 Sri Sankaran 的建议,我尝试了mvn dependency: tree

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building hellocore 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ hellocore ---
[INFO] com.mycompany:hellocore:jar:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] \- edu.stanford.nlp:stanford-corenlp:jar:1.2.0:compile
[INFO]    +- xom:xom:jar:1.2.5:compile
[INFO]    |  +- xml-apis:xml-apis:jar:1.3.03:compile
[INFO]    |  +- xerces:xercesImpl:jar:2.8.0:compile
[INFO]    |  \- xalan:xalan:jar:2.7.0:compile
[INFO]    \- joda-time:joda-time:jar:2.0:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.483s
[INFO] Finished at: Fri Jan 06 08:55:06 EST 2012
[INFO] Final Memory: 5M/81M
[INFO] ------------------------------------------------------------------------

我的 Netbeans 中的设置:

在此处输入图像描述

但似乎需要的库看起来与 Netbeans 中已经下载的库相同。该项目仍然停止,而Adding annotator tokenize.


[更新] 01-09-2012

我重装系统后,问题就消失了。所以我认为代码和模块都是正确的。类路径目录可能只是被我弄乱了。感谢大家的帮助。

只是对通过 Netbeans 使用 corenlp 的人的一个温和提醒。除了 stanford-corenlp.jar 的标准依赖项。如果您想将 stanford-corenlp-models.jar 包含到您的项目中。似乎您还需要指定<classifier>将模型添加到依赖库。

<dependency>
  <groupId>edu.stanford.nlp</groupId>
  <artifactId>stanford-corenlp</artifactId>
  <version>1.2.0</version>
  <classifier>models</classifier>
</dependency>
4

2 回答 2

1

您需要包含模型(POS 标签、NER、Coref 等),这样您的注释器才能正常工作。
你可以在这里得到

在此处输入图像描述

于 2012-01-09T06:15:42.507 回答
0

Standford NLP的使用表明存在其他依赖关系。如果由于声明的对stanford-corenlp 1.2.0您的依赖而没有将它们传递到类路径中,则还必须明确声明这些其他依赖项。该命令mvn dependency:tree应显示您的有效依赖关系树。

于 2012-01-06T04:10:21.277 回答