Stanford nlp 如何在RegexNER表达式中使前导标记可选?

Stanford nlp 如何在RegexNER表达式中使前导标记可选?,stanford-nlp,Stanford Nlp,我有一个非常简单的用例,需要在两个单词的序列中添加一个NER注释,其中第一个单词是可选的。 例如,我需要将“净收入”和“收入”短语注释为同一个NE类型。 对于普通正则表达式,以下表达式起作用: ([Nn]et\s)?[Ii]ncome 但是,在RegexNER中,它不起作用 上面的正则表达式在RegexNER中的效果是“income”一词在两个序列中都有注释,但“net”一词在“net income”序列中没有注释,这不是我需要的结果。 这在某种程度上是意料之中的,因为知道RegexNE

我有一个非常简单的用例,需要在两个单词的序列中添加一个NER注释,其中第一个单词是可选的。
例如,我需要将“净收入”和“收入”短语注释为同一个NE类型。

对于普通正则表达式,以下表达式起作用:

([Nn]et\s)?[Ii]ncome
但是,在RegexNER中,它不起作用
上面的正则表达式在RegexNER中的效果是“income”一词在两个序列中都有注释,但“net”一词在“net income”序列中没有注释,这不是我需要的结果。

这在某种程度上是意料之中的,因为知道RegexNER在一系列标记上匹配正则表达式序列,而不是在单个字符串上匹配单个正则表达式。

但是,以下语法也不起作用:

([Nn]et)? [Ii]ncome
该表达式的效果是,序列“净收入”被全部注释,而“收入”则完全不被注释。
这是出乎意料的,因为这似乎是一个非常简单的用例。
我尝试了不同的方法将初始标记表示为一个组,也尝试了不同的量词-它仍然不起作用。


如果您能帮助您选择第一个令牌,我们将不胜感激。

让我回答我自己的问题。这不是一个直接的解决方案,而是一种变通方法。

以下表达式将起作用,但仅适用于令牌regex,不适用于RegexNER:
/[Nn]et//[Ii]ncome/



我不知道为什么会出现这种情况,也许RegexNER不象TokensRegex那样支持令牌级别的量词。

让我回答我自己的问题。这不是一个直接的解决方案,而是一种变通方法。

以下表达式将起作用,但仅适用于令牌regex,不适用于RegexNER:
/[Nn]et//[Ii]ncome/



我不知道为什么会出现这种情况,也许RegexNER不支持令牌级别的量词,就像TokensRegex一样。

我在CoreNLP 3.8.0中遇到了类似的问题。我有一种感觉,
?操作员在
RegexNER
中不工作。我尝试了
使用第一个令牌,并且在另外两个令牌之间使用了一个令牌,但是没有一个有效。目前,我对这个问题的解决方案是重复规则:-(我对CoreNLP 3.8.0也有类似的问题。我有一种感觉,
?操作符
RegexNER
中不起作用。我尝试了
使用第一个令牌,另外两个令牌之间也使用了一个令牌,但都不起作用。目前我解决这个问题的方法是复制规则:-(