Stanford nlp 斯坦福NLP 3.9.0:使用CoreEntityMethod是否结合相邻实体提及?

Stanford nlp 斯坦福NLP 3.9.0:使用CoreEntityMethod是否结合相邻实体提及?,stanford-nlp,named-entity-recognition,Stanford Nlp,Named Entity Recognition,我正在测试如何使用CoreEntityMotion获得实体提到的新3.9.0方法。我会这样做: CoreDocument document = new CoreDocument(text); stanfordPipe = createNerPipeline(); stanfordPipe.annotate(document); for (CoreSentence sentence : document.sentences()) { logger.

我正在测试如何使用CoreEntityMotion获得实体提到的新3.9.0方法。我会这样做:

    CoreDocument document = new CoreDocument(text);
    stanfordPipe = createNerPipeline();
    stanfordPipe.annotate(document);

    for (CoreSentence sentence : document.sentences()) {
        logger.debug("Found sentence {}", sentence);
        if (sentence.entityMentions() == null) continue;
        for (CoreEntityMention cem : sentence.entityMentions()) {
            logger.debug("Found em {}", stringify(cem));            
        }
    }
当我使用
语句.entityments()
遍历实体提及时,我发现生成的一些实体提及是多标记实体提及。获取实体提及的旧方法,如果我错了,请纠正我,是您必须迭代CoreLabel,因此必须自己组合多令牌实体提及


那么,有没有以前不存在的新方法将相邻的令牌与相同的ner标签组合在一起?还是我错过了组合多令牌实体提及的旧方法?

您好,感谢您使用新界面

是的,CoreEntityStation应该代表完整的实体提及。这是添加的一些新语法,有助于更轻松地使用我们的代码

传统上需要像句子.get(CoreAnnotations.TokensAnnotation.class)这样的东西,所以我们尝试添加一些包装类,这样人们可以使用管道接口,但不需要繁琐的语法

使用此新推出的语法,您可以编写:

sentence.tokens();
关于实体提及,如果句子是“Joe Smith去了夏威夷”。你会得到两个实体提及:

乔·史密斯(2枚代币) 夏威夷(1枚代币)

传统上,
ner
注释器会在句子中的每个标记上标记其命名的实体类型。然后,一个单独的
entityments
annotator将构建
entity
注释,这些注释是完整实体提及的
CoreMap
表示(例如Joe Smith)

多年来,我看到很多人问“我如何从标记的标记序列到完整的实体提及?”因此对此,我们试图让提取句子中提及的完整实体变得更容易


我还应该注意到,在大多数情况下,旧方法仍然有效。在我们完成3.9.0版本的过程中,更新的文档正在进行中

您好,感谢您使用新界面

是的,CoreEntityStation应该代表完整的实体提及。这是添加的一些新语法,有助于更轻松地使用我们的代码

传统上需要像句子.get(CoreAnnotations.TokensAnnotation.class)这样的东西,所以我们尝试添加一些包装类,这样人们可以使用管道接口,但不需要繁琐的语法

使用此新推出的语法,您可以编写:

sentence.tokens();
关于实体提及,如果句子是“Joe Smith去了夏威夷”。你会得到两个实体提及:

乔·史密斯(2枚代币) 夏威夷(1枚代币)

传统上,
ner
注释器会在句子中的每个标记上标记其命名的实体类型。然后,一个单独的
entityments
annotator将构建
entity
注释,这些注释是完整实体提及的
CoreMap
表示(例如Joe Smith)

多年来,我看到很多人问“我如何从标记的标记序列到完整的实体提及?”因此对此,我们试图让提取句子中提及的完整实体变得更容易


我还应该注意到,在大多数情况下,旧方法仍然有效。在我们完成3.9.0版本的过程中,更新的文档正在进行中

好的,我看到代码是包含在表示句子的
CoreMap
中的
CoreAnnotations.referencesannotation.class
的包装器。我仍然需要考虑这一点,因为我有非常特殊的情况,在合并提及时不容易捕获。尽管斯坦福页面上的示例代码显示了CoreLabel方法,作为从文档中获取ner注释的方法,但也很高兴将这种方法记录下来。好的,我看到代码是一个包装器,它围绕着表示句子的
CoreMap
中包含的
coreanotations.referencesannotation.class
。我仍然需要考虑这一点,因为我有非常特殊的情况,在合并提及时不容易捕获。尽管斯坦福页面上的示例代码显示了CoreLabel方法,作为从文档中获取ner注释的方法,但也最好将这种方法记录下来。也许还需要进一步阐述,如果您想将标记组合成实体提及,这仍然是可能的,因为标记包含命名实体信息。但是传统上说,在3.8.0版中,你可以使用Entityments注释器,它会将它们组合成实体提及。哇,这是一个多么好的回答啊!在我深入研究3.9之前,我从未真正了解过Entityments注释器,因为它没有明确的文档说明可以通过管道实现,我要求提供更多的文档。在合并实体的过程中,我确实遇到了一些糟糕的情况,我必须亲自探索,看看整个方法是否有效(这就是为什么我现在对自定义合并感到满意的原因)。例如,如果“或”存在于所提到的实体的中间(如Baskin Robbins),会发生什么。这种情况是否会合并,因为-可能会有NER标记O?如果“巴斯金”-“罗宾斯”被标识为一个组织,它应该有NER中的(组织,组织,组织),并且它将被正确地捕获为一个实体。如果你有(ORG,O,ORG),那是NER的失败,而不是实体提及收集技术。此外,我刚刚为这个新API编写了一些新文档,不久将发布它。如果你想将标记组合成实体提及,可能还需要进一步阐述,因为标记包含命名实体信息。但是传统上说,在3.8.0版中,你可以使用Entityments注释器,它会将它们组合成实体提及。哇,这是一个多么好的回答啊!我从来没见过他