spacy:如何获取基于引理的PhraseMatcher

时间:2019-09-27 12:54:18

标签: python spacy

我想找到一个词组,它们具有相同的引理,例如,如果我搜索“猫跑”,它应该匹配“猫跑”。我试图用不含词组的单词创建新文档,但由于某些原因我需要依赖项,但是新文档不包含依赖项,并且我无法匹配新文档和旧文档的索引。

1 个答案:

答案 0 :(得分:0)

PhraseMatcher支持对文本以外的属性进行匹配,因此您无需构建额外的文档:

import spacy
from spacy.matcher import PhraseMatcher
nlp = spacy.load('en')
matcher = PhraseMatcher(nlp.vocab, attr="LEMMA")
matcher.add("CAT", None, nlp("cats run"))
matches = matcher(nlp("cat ran")) # [(14858270728821099472, 0, 2)]

(我不认为非英语的spacy模型或Stanford模型使用-PRON-引理,所以我认为您不需要额外检查。如果需要修改引理,则可以只需在现有文档token.lemma_ = token.lemma_.lower()中对其进行修改即可。正如您在示例中所使用的,请确保以相同的方式修改提供给PhraseMatcher的文本doc和短语doc。)