SUTime输出与Java版本和stanford-corenlp版本不同

xqk2d5yq  于 2个月前  发布在  Java
关注(0)|答案(7)|浏览(113)

你好,
在使用SUTime的一些代码进行单元测试时,我们注意到所有测试在Java 1.8下都通过了,但在Java 11下有一个测试失败了。在这两种情况下,我们都使用了相同的stanford-corenlp 3.9.2。我们追踪到这是由于SUTime的差异导致的,它为不同的Java版本产生了不同的输出。https://nlp.stanford.edu/software/sutime.shtml中的SUTimeDemo程序对于句子

The Food and Agriculture Organization of the United Nations (FAO), the United Nations Children's Fund (UNICEF) and the World Food Programme (WFP) stressed that while the deteriorating situation coincides with an unusually long and harsh annual lean season, when families have depleted their food stocks and new harvests are not expected until August, the level of food insecurity this year is unprecedented.

在Java 8下的输出包含了单词"annual",而Java 11的输出中没有它。

annual [from char offset 237 to 243] --> P1Y
August [from char offset 343 to 349] --> 2013-08
this year [from char offset 380 to 389] --> 2013

值得注意的是,如果使用standord-corenlp 4.2.0运行相同的测试,两个运行结果中都会出现"annual"。然而,我们不愿意切换到较新的版本,因为它还带来了其他的变化。
有人知道这种行为的原因吗?我们能否将其回溯到旧版本,以便获得一致的输出?
谢谢!

c6ubokkw

c6ubokkw1#

我不想泄气,但基本上我们对3.9.2的任何工作机会都非常渺茫,除了可能为公司许可证持有者提供一些服务。您对4.2.0有什么具体的担忧吗?

2021年2月18日,下午12:39,Keith Alcock ***@***.***>写道:

嗨,当我们在运行使用SUTime的一些代码的单元测试时,我们注意到所有测试都通过了Java 1.8,但有一个测试在Java 11上失败了。在这两种情况下,我们都使用了相同的stanford-corenlp 3.9.2。我们追踪到SUTime中的一个差异,它为不同的Java版本产生了不同的输出。https://nlp.stanford.edu/software/sutime.shtml中的SUTimeDemo程序针对句子“联合国粮食及农业组织(粮农组织)、联合国儿童基金会(儿基会)和世界粮食计划署(粮食署)强调,虽然恶化的局势与异常漫长而严酷的年度淡季相吻合,家庭已经耗尽了粮食储备,新的收成预计要到8月份才能到来”,其中包括单词“annual”。Java 8的输出中包含这个词,而Java 11的输出中没有。[从字符偏移量237到243] --> P1Y August [从字符偏移量343到349] --> 2013-08 今年 [从字符偏移量380到389] --> 2013 就其价值而言,如果使用standord-corenlp 4.2.0运行相同的测试,"annual"都会出现在两个运行结果中。然而,我们不愿意切换到更新的版本,因为它还有其他的变化。有人知道这种行为的原因吗?我们能将这些内容回溯到旧版本中吗?这样我们就可以得到一致的输出?谢谢!——您收到这封邮件是因为您订阅了这个线程。直接回复此邮件,查看GitHub上的<#1137>或者取消订阅< https://github.com/notifications/unsubscribe-auth/AA2AYWNGFNI6TIFMX36WSZTS7V3JRANCNFSM4X27PJUQ >。

cyej8jka

cyej8jka2#

我们正在评估新版本的性能,以了解可能会遇到的问题。然而,如果旧版本中存在未完全解决的奇怪行为,了解原因会很好。只是碰巧我们注意到它以某种方式失败了,问题可能同样偶然地消失了。

2nbm6dog

2nbm6dog3#

最可能的解释是,由于模型已经被重新训练,对于特定的单词序列有不同的识别,导致了不同的标签。你可以在这里看到发布历史:$x_{1e0f_1^x}$

kcugc4gi

kcugc4gi4#

对于我们来说,标签集可能会有一些问题,但我还不了解具体细节。重新训练可以解释3.9.2和4.2.0版本之间的差异,但它无法解释为什么Java 8版本的3.9.2与Java 11版本的3.9.2有所不同。

nimxete2

nimxete25#

这是非常真实的。哪个JDK?虽然老实说,过去已经有很多这样的bug,我已经修复了但忘记了,或者别人修复了我却不知道,所以我现在真的不打算调查几年前的版本中的一个错误。我讨厌花几个小时去追查它,结果却发现它一直被解决了。如果在4.2.0版本中出现这个问题,我们肯定会调查的。

yc0p9oo0

yc0p9oo06#

这听起来令人沮丧。顺便说一下,Java 11版本在3.9.2中找不到"annual",而是Oracle jdk-11.0.10。我并不太关心是否找到了其他东西,但确实需要每次都得到相同的答案。

jxct1oxe

jxct1oxe7#

如果你在4.2.0中发现任何不一致之处,我们将立即着手修复。或者,当你发现4.2.0不适合你的需求,但3.9.2可以时,也许我们可以努力解决这个问题。

相关问题