首页 > 解决方案 > 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)

而且没有结果!有趣的是,如果文本没有“马德里”这个词,那么它会找到匹配项。现在谁能解释我到底是怎么回事?以及为什么在网站上一切正常

标签: pythonnlpspacymatcher

解决方案


引理取决于 POS 标签,在不同的上下文中,相同的词可能会发生变化(特别是对于非常短的文本)。检查示例文本的 POS 标签和引理,以了解模式匹配或不匹配的原因。

对于 lemmatizer,NOUN 和 PROPN 之间的区别就是区别。不确定“博物馆”是否是专有名词,如“旅游指南出版商宣布推出新指南‘马德里博物馆’……”


推荐阅读