首页 > 解决方案 > 在 Spacy 模式匹配中,我们如何获得有界 Kleene 算子?

问题描述

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

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

谢谢

标签: nlppattern-matchingspacy

解决方案


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

在 v3.0.6+ 中,您可以使用 newmatch_alignments在后处理中过滤匹配:https ://spacy.io/api/matcher 。如果您的模式*最终有很多长/重叠的匹配,匹配器仍然会很慢。


推荐阅读