我想将连续的令牌与相同的命名实体注释(例如,STANFORD大学,其中令牌“stanford”和“大学”都将NE“组织”)组合成一个令牌,这样我才能拥有“STANFORD UNIVERSITY “与NE”组织“。有没有办法用令牌正则表达式做到这一点?
所以,这实际上是一个由两部分组成的问题:
1)你如何为具有相同NER的完整序列的令牌编写模式?
2)你如何编写将捕获的令牌合并为一个的动作(基本上,与Split功能相反)?
谢谢!
答案 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);
}
}
}