Почему синтаксический анализ предложения выдает исключение только в первый раз? - PullRequest
0 голосов
/ 23 января 2019

Я использую пакет 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 .

1 Ответ

0 голосов
/ 02 февраля 2019

Подтверждено как ошибка - исправление @ StanfordNLPHelp работает для меня.

...