CoreNLP Incorrectly tagged label as part of money

hec6srdp  于 2个月前  发布在  其他
关注(0)|答案(5)|浏览(144)

我使用核心NLP处理了"I want to buy a $1000 television"。
CoreAnnotations.TokensAnnotation.class的标签中,表示"television"的标签被识别为"NUMBER",CoreAnnotations.NormalizedNamedEntityTagAnnotation.class值为"$1000",CoreAnnotations.EntityMentionIndexAnnotation.class值被设置为0(这是"$1000"标签的值)。
我正在使用3.9.1版本,并按照以下方式创建了StanfordCoreNLP示例:

Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner");
props.put("sutime.language", "british");
StanfordCoreNLP nlp = new StanfordCoreNLP(props);

我认为这是一个bug。
我尝试了"I want to buy a $1000 TV",它正确地将"TV"标记为不属于"$1000"的一部分。
我还在"I want to buy a $50 green jacket"中发现了类似的错误行为,核心NLP声称"green"是"MONEY",CoreAnnotations.NormalizedNamedEntityTagAnnotation.class值为"$50",实体提及索引也被设置为实体提及索引的"$50"。
如果这不是一个bug而是我的错误,请告诉我。谢谢。

fiei3ece

fiei3ece1#

是的,这是一个bug,我会尝试修复它。感谢您提出这个问题。

hmae6n7t

hmae6n7t2#

以下是文本内容的翻译结果:

为了给你一个关于这个的更新,这是一个7类统计命名实体识别模型的错误,这并不容易修复。我们训练了一个7类统计模型,因为你的示例没有以标点符号结尾,所以它会出错,并在$1000之后的某些词上标记为“MONEY”。如果你在句子末尾添加了标点符号,我认为统计模型会做正确的事情。

如果你将“television”更改为其他词汇,有时会出现错误,有时不会。如果你排除了7类模型,你只会运行基于规则的钱款检测,这应该更精确。根据你的项目,这可能是一个有益的调查事项。

yebdmbv4

yebdmbv43#

为了澄清,NER的一部分是会出错的统计模型,我们无法真正修复这些错误。另一部分是基于规则的。在这种情况下,统计模型出了问题,这不是基于规则的部分的错误。
NER在文本上运行3类、4类和7类统计模型的组合。然后它也进行一些基于规则的检测。我不完全了解您的用例,但您可以尝试仅删除7类模型(这是检测“MONEY”的统计模型,尽管也可以检测“DATE”等...),看看会发生什么。所有的错误都是统计模型错误。

wsxa1bj1

wsxa1bj14#

我移除了7类模型。问题解决了。
我的测试也通过了,似乎没有给我们带来任何问题。但是,为了确保安全,我需要查看更改后的内容。
请问在我移除7类模型后,会有什么缺失?
感谢您关注这个问题。

ebdffaop

ebdffaop5#

7类识别:

DATE
LOCATION
MONEY
ORGANIZATION
PERCENT
PERSON
TIME

3类和4类也找到人、组织和地点。
所以它的工作原理是先运行3类,然后运行4类,最后运行7类。同时还会运行一些规则来查找日期、金钱、百分比和时间。

相关问题