spaCy 的基于规则的匹配器找到比形状指定的更长的标记

spaCy's rule-based Matcher finds tokens longer than specified by the shape

我想使用基于规则的 Matcher(spaCy 版本 2.0.12)来定位由 4 个字母和 4 个数字组成的文本代码(例如 CAPA1234)。我正在尝试使用具有属性 SHAPE:

的模式
pattern = [{'SHAPE': 'XXXXdddd'}]

你可以自己用 Rule-based Matcher Explorer 测试一下。

它找到了我期待的代码,但也找到了更长的代码,如 CAPABCD1234CAPA1234567XXXX 似乎意味着 4 个大写字母或更多 dddd.

也是如此

是否有使形状与文本完全匹配的设置?

我找到了解决我的问题的解决方法,但并没有真正解释为什么 spaCy 的行为如此。我会留下这个问题。

使用 SHAPE 并另外明确指定 LENGTH

pattern = [{'LENGTH': 8, 'SHAPE': 'XXXXdddd'}]

请注意,当使用 LENGTH 时,在线资源管理器似乎会失败(没有突出显示标记)。它在我的机器上运行良好。