首页 > 解决方案 > Python Textacy pos_regex_matches 与匹配

问题描述

我正在尝试用 python 在一个句子中查找动词来解决 NLP 问题。我在 stackoverflow 上找到了一个旧答案,它适用于已弃用的 pos_regex_matches。使用新的匹配功能我遇到了一个非常无聊的问题。新函数返回任何匹配,而不仅仅是最长的匹配(pos_regex_matches 会这样做)。

pattern = r'<VERB>*<ADV>*<VERB>+<PART>*'
verb_pattern = [{"POS": "VERB", "OP": "*"},{"POS": "ADV", "OP": "*"},{"POS": "VERB", "OP": "+"},{"POS": "PART", "OP": "*"}]

t_list_1 = textacy.extract.pos_regex_matches(text, pattern)
t_list_2 = textacy.extract.matches(text, verb_pattern)

如您所见,模式是相同的,但匹配函数的模式是新格式。例如,旧的 pos_regex_matches 返回,was celebrating而新的匹配同时返回wasand was celebrating。有人遇到过同样的问题吗?是模式问题还是文本问题?

提前致谢

标签: pythonspacytextacy

解决方案


我有同样的问题。一个快速的解决方案可能是filter_spans来自 spacy 实用程序。

具体来说,我在下面发布尝试修复您的示例。

from spacy.util import filter_spans

t_list_2 = filter_spans(t_list_2)

我希望它会帮助你。


推荐阅读