为什么句子解析仅在第一次时抛出异常?

时间:2019-01-23 16:56:03

标签: java scala nlp stanford-nlp

我正在使用edu.stanford.nlp.simple包为几种不同语言的句子生成语法树。英文和中文模型产生了预期的结果,例如

> val s = new Sentence("The quick brown fox jumps over the lazy dog.")
> s.parse

res1: edu.stanford.nlp.trees.Tree = (ROOT (NP (NP (DT The) (JJ quick) (JJ brown) (NN fox)) (NP (NP (NNS jumps)) (PP (IN over) (NP (DT the) (JJ lazy) (NN dog))))))

(我在这里使用Scala,但这没什么关系。)

但是,其他语言(例如德语)表现出奇怪的行为:

> val p = new Properties()
> p.load(IOUtils.readerFromString("StanfordCoreNLP-german.properties"))
> val s = new Sentence("Ich hoffe, dass es funktionieren wird.")
> s.parse(p)

10:48:34.127 [main] INFO  e.s.nlp.parser.common.ParserGrammar - Loading parser from serialized file edu/stanford/nlp/models/lexparser/germanFactored.ser.gz ... done  [1.4sec].                                                                                                                                    
java.lang.NullPointerException                                                                                                                            
  edu.stanford.nlp.pipeline.ProtobufAnnotationSerializer.toProto(ProtobufAnnotationSerializer.java:672)                                                   
  edu.stanford.nlp.simple.Document.runParse(Document.java:933)                                                                                            
  edu.stanford.nlp.simple.Sentence.parse(Sentence.java:637)                                                                                               
  ammonite.$sess.cmd3$.<init>(cmd3.sc:1)                                                                                                                  
  ammonite.$sess.cmd3$.<clinit>(cmd3.sc)

> s.parse(p)
res4: edu.stanford.nlp.trees.Tree = (ROOT (S (PPER Ich) (VVFIN hoffe) ($, ,) (S (KOUS dass) (PPER es) (VP (VVINF funktionieren)) (VAFIN wird)) ($. .)))

我已经检查了属性p,以确保它们没有更改-解析器始终在第一次调用时抛出NullPointerException,然后对同一句子正确地工作。

我已经浏览了CoreNLP的源代码,但是找不到明确的原因为什么会发生这种情况...我想知道我是否丢失了什么?

我正在使用Stanford-CoreNLP版本3.9.1。我要引用的外语模型是来自Maven信息库的模型,也在Stanford CoreNLP website上进行了讨论。

1 个答案:

答案 0 :(得分:0)

确认为错误-@StanfordNLPHelp的修复程序对我有用。