Datetime 意外的日期/日期时间字符串导致Stanford CoreNLP中出现异常
根据,这个问题已经在CoreNLP的某个版本中修复了,据我猜测可能是3.5.1,因为NER在变更注释中被列为变更模块之一。但是,3.5.x需要跳转到Java1.8,目前我们还不准备这样做 另外,免责声明,我也曾发布过该问题,但由于该问题已经解决,因此可能未被看到。鉴于这是一个支持CoreNLP的官方论坛,我在此请求 所以我在问,为了解决这个问题,有什么变化?它是否确实存在于当前版本中,或者是否需要执行其他操作。我需要在不升级当前使用的3.4.1的情况下修复此问题 为了便于记录,下面的字符串应该表示2009年12月3日10:00(该字符串中没有给出秒数,因此我们也假设为00) 这是堆栈跟踪Datetime 意外的日期/日期时间字符串导致Stanford CoreNLP中出现异常,datetime,stanford-nlp,sutime,Datetime,Stanford Nlp,Sutime,根据,这个问题已经在CoreNLP的某个版本中修复了,据我猜测可能是3.5.1,因为NER在变更注释中被列为变更模块之一。但是,3.5.x需要跳转到Java1.8,目前我们还不准备这样做 另外,免责声明,我也曾发布过该问题,但由于该问题已经解决,因此可能未被看到。鉴于这是一个支持CoreNLP的官方论坛,我在此请求 所以我在问,为了解决这个问题,有什么变化?它是否确实存在于当前版本中,或者是否需要执行其他操作。我需要在不升级当前使用的3.4.1的情况下修复此问题 为了便于记录,下面的字符串应该表
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)
请注意,
true
是打印值。我认为斯坦福CoreNLP 3.4.1没有这个问题。我下载了3.4.1发行版,在一个很长的句子上运行,没有出现任何崩溃
你能给我一个导致这次崩溃的例句吗?我认为斯坦福CoreNLP 3.4.1没有这个问题。我下载了3.4.1发行版,在一个很长的句子上运行,没有出现任何崩溃
你能给我一个导致这次崩溃的例句吗?好的,让我说说为什么会出现这个问题。3.4.1中的extractDay()有两个问题:
因此,唯一的答案是更新到更高版本(尽管目前我还无法更新到更高版本)。好的,让我来说明问题存在的原因。3.4.1中的extractDay()有两个问题:
因此,唯一的答案是更新到更高版本(虽然我现在还不能更新到更高版本)。我不能提供完整的文档,但我希望所讨论的行足够好
DATETIME\u END:200912031000
这发生在使用已创建的模型进行测试(分类)时。它被标记为日期实体,然后当它被视为日期实体时(正如您从这个字符串中解析一天所看到的),问题就会出现。同样,我正在实例化nerCombiner=new nerclasifiercombiner(applyNumericClassifiers,useSUTime,props,//此参数应包含SUtime属性myClassifierArray)
我发现如果手动将第一个参数设置为false,则不会发生错误。因此,大多数情况下,我们只是从管道中访问NER,但在某些情况下,我们必须自己构造它,这就是一种情况。我无法真正提供整个文档,但我希望相关行足够好DATETIME\u END:200912031000
在使用已创建的模型进行测试(分类)时会发生这种情况。它被标记为日期实体,然后当它被视为日期实体时就会出现问题(正如您从该字符串中解析一天所看到的那样)。此外,我正在实例化(applyNumericClassifiers,useSUTime,props,//此参数应包含SUtime属性myClassifierArray)我发现,如果第一个参数手动设置为false,则不会发生错误。因此,大多数情况下,我们只是从管道访问NER,但在某些情况下,我们必须自己构造它,这就是一种情况。
ISODateInstance idi = new ISODateInstance();
boolean fields = idi.extractFields("200912031000");
System.out.println(fields);