首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用CoreNLP的RegexNER覆盖命名实体的标记而不指定原始标记

如何使用CoreNLP的RegexNER覆盖命名实体的标记而不指定原始标记
EN

Stack Overflow用户
提问于 2017-03-30 21:49:08
回答 2查看 290关注 0票数 1

我知道CoreNLP的RegexNER允许我使用映射文件覆盖标记。例如,我有一个单词EGFR,CoreNLP认为它是一个组织。如果映射文件中有下面一行,它仍然将其标记为一个组织。

EGFR基因

如果我将该行更改为如下所示:

EGFR基因组织

然后CoreNLP将其标记为基因。

要做到这一点,我必须知道CoreNLP标记EGFR作为一个组织,我不能总是知道我的映射文件中的每一个字。现在我的问题是,有没有一种方法可以让RegexNER覆盖EGFR的标签,而不管最初的标签是什么?有点像

EGFR基因.*

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-31 06:21:39

您可以提供可以覆盖的逗号分隔的标记列表。

例如:

代码语言:javascript
复制
ORGANIZATION,PERSON,LOCATION,MISC

将允许它覆盖所有这些标记。

我不认为现在有一个覆盖所有选项,所以你必须列出你想要覆盖的每一个类型。

如果您总是希望用规则中的内容覆盖所有内容,则可以将此选项提供给TokensRegexNERAnnotator

代码语言:javascript
复制
regexner.backgroundSymbol ORGANIZATION,PERSON,LOCATION,MISC,O

然后每条规则都不需要有一个列表。

票数 2
EN

Stack Overflow用户

发布于 2022-05-04 12:54:50

@StanfordNLPHelp的伟大回答

但是,如果您使用ner.fine进行映射,请使用下面的属性来获得覆盖-

代码语言:javascript
复制
Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner,regexner");
props.setProperty("ner.fine.regexner.mapping", rulesFiles);
//  props.put("regexner.backgroundSymbol", "ORGANIZATION,PERSON,LOCATION,MISC,O");
props.put("ner.fine.regexner.backgroundSymbol", "ORGANIZATION,PERSON,LOCATION,MISC,O");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43128964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档