python - Spacy Matcher 怪异
问题描述
我在演示“基于规则的匹配器资源管理器”中使用爆炸网站上的下一个模式
pattern = [{'LEMMA': 'museum'}]
文字是
马德里的博物馆
这是工作,好的。然后我在代码中执行下一步:
import spacy
from spacy.matcher import Matcher
nlp = spacy.load("en_core_web_sm")
matcher = Matcher(nlp.vocab)
matcher.add("tourism", None, [{'LEMMA': 'museum'}])
doc = nlp("museums in madrid")
matches = matcher(doc)
print(matches)
for match_id, start, end in matches:
string_id = nlp.vocab.strings[match_id]
span = doc[start:end]
print(match_id, string_id, start, end, span.text)
而且没有结果!有趣的是,如果文本没有“马德里”这个词,那么它会找到匹配项。现在谁能解释我到底是怎么回事?以及为什么在网站上一切正常
解决方案
引理取决于 POS 标签,在不同的上下文中,相同的词可能会发生变化(特别是对于非常短的文本)。检查示例文本的 POS 标签和引理,以了解模式匹配或不匹配的原因。
对于 lemmatizer,NOUN 和 PROPN 之间的区别就是区别。不确定“博物馆”是否是专有名词,如“旅游指南出版商宣布推出新指南‘马德里博物馆’……”
推荐阅读
- excel - 根据第一个单元格值合并空白列
- raphael - svg.js 中的 Raphael.transformPath 类似物是什么?
- reactjs - 如何同时上传图片和发送消息(React & Firebase)?
- ios - React 本机摄像头录制为 ram 添加内存导致崩溃 - ios
- google-chrome - 如何在 Chrome 快捷方式中添加或组合多个禁用选项或标志?
- c++ - 此类定义中定义的内容
- c++ - 为什么我会得到这个?
- python - 如何在 spyder 中制作 csv 图,但仅包含 500 行中的前 25 行?
- reactjs - React Navigation - 自定义 headerRight 组件被自定义 headerTitle 组件覆盖
- html - Bootstrap 5 Navbar-不能分开网站标志(品牌)和导航链接