当前位置: 首页 > 知识库问答 >
问题:

如何使用CorenLP的regexner检测具有超过1个单词的命名实体?

钱繁
2023-03-14

吉尔伯特综合征

第一个会被检测到,但是每个单词都会得到批注DRUG_CLASS,而且似乎没有办法将这些单词链接起来,就像两个单词都有的NER id一样。

第二种情况根本检测不到,这可能是因为标记器将Gilbert后面的撇号作为一个单独的标记。由于RegexNER将标记化作为一个依赖项,所以我真的无法绕过它。

有什么解决这些案件的建议吗?

共有1个答案

仉联
2023-03-14

如果您使用EntityMentions注释器,该注释器将从具有相同ner标记的连续令牌中创建实体提及。有一个缺点是,如果两个相同类型的实体并排在一起,它们将被连接在一起。我们正在改进ner系统,所以我们可能会包括一个新的模型,在这些情况下找到不同提及的边界,希望这将进入斯坦福CorenLP3.8.0。

下面是访问所提到的实体的一些示例代码:

package edu.stanford.nlp.examples;

import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.util.*;

import java.util.*;

public class EntityMentionsExample {

  public static void main(String[] args) {
    Annotation document =
        new Annotation("John Smith visted Los Angeles on Tuesday.");
    Properties props = new Properties();
    props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,entitymentions");
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
    pipeline.annotate(document);

    for (CoreMap entityMention : document.get(CoreAnnotations.MentionsAnnotation.class)) {
      System.out.println(entityMention);
      System.out.println(entityMention.get(CoreAnnotations.TextAnnotation.class));
    }
  }
}

如果您只是用与标记器相同的方式标记规则,那么它将很好地工作,例如,规则应该是Gilbert's syndrome

 类似资料: