很抱歉,如果这是新手的问题。 我试图在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)
我也在Eclipse上通过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
时仍然停止。
[更新] 2012年1月9日
重新安装系统后,问题就消失了。所以我认为代码和模块都是正确的。类路径目录可能只是被我搞砸了。感谢所有人的帮助。
温馨提醒人们通过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>
答案 0 :(得分:1)
您需要包含模型(POS标签,NER,Coref等),以便您的注释器工作 你可以得到它here
答案 1 :(得分:0)
usage of Standford NLP表明还有其他依赖项。如果它们由于对stanford-corenlp 1.2.0
的声明依赖性而不能传递地包含在类路径中,那么您还必须明确声明这些其他依赖项。命令mvn dependency:tree
应该显示您的有效依赖树。