有没有办法使用TokensRegex将几个令牌重新标记为一个令牌?

时间:2017-03-01 03:58:51

标签: stanford-nlp

我想将连续的令牌与相同的命名实体注释(例如,STANFORD大学,其中令牌“stanford”和“大学”都将NE“组织”)组合成一个令牌,这样我才能拥有“STANFORD UNIVERSITY “与NE”组织“。有没有办法用令牌正则表达式做到这一点?

所以,这实际上是一个由两部分组成的问题:

1)你如何为具有相同NER的完整序列的令牌编写模式?

2)你如何编写将捕获的令牌合并为一个的动作(基本上,与Split功能相反)?

谢谢!

1 个答案:

答案 0 :(得分:1)

您想使用entitymentions注释器,它将为您执行此操作并从文本中提取完整实体。

示例代码:

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);
    }
  }
}