【发布时间】:2019-09-27 12:54:18
【问题描述】:
我想查找具有相同引理的短语单词,例如,如果我搜索“cat runs”,它应该匹配“cats ran”。我尝试创建一个带有无引理的新文档,但由于某种原因我需要依赖项,但新文档不包含依赖项,并且我无法匹配新文档和旧文档的索引。
【问题讨论】:
我想查找具有相同引理的短语单词,例如,如果我搜索“cat runs”,它应该匹配“cats ran”。我尝试创建一个带有无引理的新文档,但由于某种原因我需要依赖项,但新文档不包含依赖项,并且我无法匹配新文档和旧文档的索引。
【问题讨论】:
PhraseMatcher 支持对文本以外的属性进行匹配,因此您无需构建额外的 Doc:
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 模型或斯坦福模型使用 -PRON- 引理,所以我认为您不需要额外检查。如果您确实需要修改引理,您可以修改它们在现有文档中的位置:token.lemma_ = token.lemma_.lower()。正如您在示例中已经拥有的那样,请确保以相同的方式修改提供给 PhraseMatcher 的文本文档和短语文档。)
【讨论】: