在 Spacy 模式匹配中,我们如何获得有界 Kleene 算子?

问题描述

在 Spacy 模式匹配中,我知道我们可以对范围使用 Kleene 运算符。例如, 模式 = [{"LOWER": "你好"},{ "OP": "*"}]。这里的星号称为 kleene 算子,表示匹配零个或任意数量标记。如何修改规则,以便在标记“hello”之后只匹配 4 或 5 个标记

在其他 NLP 应用程序中,例如在 GATE 应用程序中,我们可以使用诸如 {Token.string == "hello"}({Token})[4,5] 之类的模式来完成上述任务。 Spacy 有这样的机制吗?

谢谢

解决方法

目前不支持此功能,请参阅功能请求:https://github.com/explosion/spaCy/issues/5603

在 v3.0.6+ 中,您可以使用新的 match_alignments 过滤后处理中的匹配项:https://spacy.io/api/matcher。如果只有 * 的模式以大量长/重叠匹配结束,匹配器仍然会很慢。