问题描述
在 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。如果只有 *
的模式以大量长/重叠匹配结束,匹配器仍然会很慢。