在 SpaCy 中使用 REGEX 和 ORTH 作为短语匹配的一部分

Using REGEX and ORTH as part of phrasematching in SpaCy

我对大量规则使用了 spacy 的短语匹配,其中一些是公司股票代码,以让我们说的形式出现:

AAPL.NY BB.TX

或者这些可能显示为 AAPL 或 BB。

当短语匹配时,我一直在使用两种模式来获得这些匹配:

{"label": "TICKER", "pattern": [{"ORTH": {"REGEX": "AAPL\.[A-Z]{2,3}"}}]}
{"label": "TICKER", "pattern": [{"ORTH": "AAPL"}]}

ORTH 是匹配 REGEX 的正确模式吗?它有时会给出一些有趣的结果,即使它超出了 {2,3}.

,它也会捕获类似 AAPL.HSHSHSJSKKSKKS 的内容

谁能帮我 a) 在这里使用 ORTH 是否有意义 b) 如何将 REGEX 的使用限制在句号后最多只能有 2 或 3 个字符?

ORTH(意思是正字法)在Spacy 2.1引入TEXT之前使用。现在,在进行正则表达式匹配时,您最好将其应用于 TEXT.

至于正则表达式本身,注意它是应用于整个token文本,为了匹配整个token文本,你需要使用anchors, ^$(或 \A\z)。

所以,你可以使用

{"TEXT": {"REGEX": r"^AAPL\.[A-Z]{2,3}$"}}

此外,请注意使用原始字符串文字以避免双重转义反斜杠。