根据CoreNLP's Git,根据我的猜测,在某些版本的CoreNLP中修复了该问题,可能是3.5.1,因为NER被列为更改注释中已更改的模块之一。但是,3.5.x需要跳转到Java 1.8,我们目前还没准备这样做。
此外,免责声明,我也发布了该问题,但可能没有看到,因为问题已经解决。鉴于SO是支持CoreNLP的官方论坛,我在这里问。
所以我在问,解决这个问题有什么变化?它实际上是存在于当前版本中,还是还有其他需要完成的东西。我需要解决这个问题,而不是从我目前正在使用的3.4.1升级。
对于记录,下面的字符串应该代表2009年12月3日10:00(该字符串中没有给出秒数,因此我们假设为00)。
这是堆栈跟踪。
java.lang.NumberFormatException: For input string: "200912031000"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:583)
at java.lang.Integer.valueOf(Integer.java:766)
at edu.stanford.nlp.ie.pascal.ISODateInstance.extractDay(ISODateInstance.java:1107)
at edu.stanford.nlp.ie.pascal.ISODateInstance.extractFields(ISODateInstance.java:398)
at edu.stanford.nlp.ie.pascal.ISODateInstance.<init>(ISODateInstance.java:82)
at edu.stanford.nlp.ie.QuantifiableEntityNormalizer.normalizedDateString(QuantifiableEntityNormalizer.java:363)
at edu.stanford.nlp.ie.QuantifiableEntityNormalizer.normalizedDateString(QuantifiableEntityNormalizer.java:338)
at edu.stanford.nlp.ie.QuantifiableEntityNormalizer.processEntity(QuantifiableEntityNormalizer.java:1018)
at edu.stanford.nlp.ie.QuantifiableEntityNormalizer.addNormalizedQuantitiesToEntities(QuantifiableEntityNormalizer.java:1320)
at edu.stanford.nlp.ie.NERClassifierCombiner.classifyWithGlobalInformation(NERClassifierCombiner.java:145)
at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifySentenceWithGlobalInformation(AbstractSequenceClassifier.java:322)
at edu.stanford.nlp.pipeline.NERCombinerAnnotator.doOneSentence(NERCombinerAnnotator.java:148)
at edu.stanford.nlp.pipeline.SentenceAnnotator.annotate(SentenceAnnotator.java:95)
at edu.stanford.nlp.pipeline.NERCombinerAnnotator.annotate(NERCombinerAnnotator.java:137)
at edu.stanford.nlp.pipeline.AnnotationPipeline.annotate(AnnotationPipeline.java:67)
at edu.stanford.nlp.pipeline.StanfordCoreNLP.annotate(StanfordCoreNLP.java:847)
修改
我再次关注这个问题,因为我正在解决当前代码中的一些时间问题,我可以通过简单的方式重现:
ISODateInstance idi = new ISODateInstance();
boolean fields = idi.extractFields("200912031000");
System.out.println(fields);
请注意,true
是打印值。
答案 0 :(得分:0)
我没有看到Stanford CoreNLP 3.4.1的这个问题。我下载了3.4.1发行版并运行了一个非常长的句子,并且不会发生任何类型的崩溃。
你能给我一个导致这次崩溃的样本句子吗?
答案 1 :(得分:0)
好的,请允许我说明问题存在的原因。在3.4.1中,extractDay()存在两个问题:
所以唯一的答案是更新到更高版本(虽然我现在还不能更新到更高版本)。