我知道CoreNLP的RegexNER允许我使用映射文件覆盖标记。例如,我有一个单词EGFR,CoreNLP认为它是一个组织。如果映射文件中有下面一行,它仍然将其标记为一个组织。
EGFR基因
如果我将该行更改为如下所示:
EGFR基因组织
然后CoreNLP将其标记为基因。
要做到这一点,我必须知道CoreNLP标记EGFR作为一个组织,我不能总是知道我的映射文件中的每一个字。现在我的问题是,有没有一种方法可以让RegexNER覆盖EGFR的标签,而不管最初的标签是什么?有点像
EGFR基因.*
发布于 2017-03-31 06:21:39
您可以提供可以覆盖的逗号分隔的标记列表。
例如:
ORGANIZATION,PERSON,LOCATION,MISC将允许它覆盖所有这些标记。
我不认为现在有一个覆盖所有选项,所以你必须列出你想要覆盖的每一个类型。
如果您总是希望用规则中的内容覆盖所有内容,则可以将此选项提供给TokensRegexNERAnnotator
regexner.backgroundSymbol ORGANIZATION,PERSON,LOCATION,MISC,O然后每条规则都不需要有一个列表。
发布于 2022-05-04 12:54:50
@StanfordNLPHelp的伟大回答
但是,如果您使用ner.fine进行映射,请使用下面的属性来获得覆盖-
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");https://stackoverflow.com/questions/43128964
复制相似问题