我目前正在使用正则表达式规则测试斯坦福大学NLP命名实体识别器注释器。我基于此示例编写代码。 https://javadeveloperzone.com/nlp/nlp-standford-regexner-example/
根据斯坦福大学NLP文档所述
第四列可用于为规则赋予优先级。如果多个规则匹配,则除非您赋予规则优先级,否则结果是不确定的。这是最后一个文件的(某种愚蠢的)扩展名,其中我们有优先级的规则。优先级出现在第四栏中,因此请非常小心地注意,实体标签和优先级之间有两个选项卡。没有明确指定优先级的规则的优先级为1.0。
比方说,我有此RegexNER实体规则,优先级:
布拉德·皮特(Brad pitt)ACTOR PERSON 1.0
布拉德·皮特导演个人2.0
我的代码中有这个
public String getTokenNerTags(CoreDocument document) {
return document.tokens()
.stream()
.map(token -> token.word()+":"+token.ner())
.collect(Collectors.joining(" "));
}
例如,我想输入以下文本:
搜索布拉德·皮特电影
我的问题是,如何以编程方式输出具有最高优先级的实体?
例如: 输出:
搜索{DIRECTOR}布拉德·皮特{DIRECTOR}电影