python - 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
而新的匹配同时返回was
and was celebrating
。有人遇到过同样的问题吗?是模式问题还是文本问题?
提前致谢
解决方案
我有同样的问题。一个快速的解决方案可能是filter_spans
来自 spacy 实用程序。
具体来说,我在下面发布尝试修复您的示例。
from spacy.util import filter_spans
t_list_2 = filter_spans(t_list_2)
我希望它会帮助你。
推荐阅读
- android - 如何在 Android Studio 上添加三星 Galaxy 预览版?
- powershell - Powershell解析字符串中的命令
- javascript - 如何从 FileRead 返回变量
- python - 如何防止美汤跑慢
- node.js - 只更新集合 mongodb 的一部分
- javascript - 滚动和窗口大小随着图像显示像素的变化而变化(php,js)
- arrays - 如何从 JSON 对象数组中删除具有特定键/值对的所有 JSON 对象?
- fabricjs - Fabric.js / 移动设备上的文本编辑
- ios - 如何在 Swift 中一次显示 UILabel 一行
- google-sheets-formula - Google 表格 - 如何简化这种重复比较