如何在spacy中使用短语匹配器将字符串的引理与列表的引理匹配

时间:2019-07-27 16:16:31

标签: python-3.x spacy matcher lemmatization

我有一个列表和一个句子,我想将该列表与句子中单词的词缀匹配,即

list_words = ['play', 'burn fireworks', 'eat']
sentence = "sita was playing with her friends while her broter was burning fireworks"

我尝试过

patterns = [__model.make_doc(text) for text in list_words]
spacy_doc = __model(sentence)
matcher = PhraseMatcher(__model.vocab, attr="LEMMA")
mather.add(id, None, *patterns)

在PhraseMtcher中添加了 LEMMA 作为 attr , 但这对我没有帮助 因为它应该与燃烧烟花相匹配并从句子中播放,所以我得到了一个空列表。

1 个答案:

答案 0 :(得分:0)

如果__model启用了标记器(默认情况下可能会启用),则在创建模式时将__model.make_doc(text)更改为__model(text)即可使用。 make_doc()仅适用于attr="ORTH",因为它除了令牌化之外没有任何作用。

如果您有很多基于引理的模式,而且它们都不需要解析或命名实体,则可以在parser中禁用ner__model来加快处理速度,因为lemmatizer仅取决于标记器。

({PhraseMatcher警告您nlp(text)在仅ORTH模式下可能会变慢,并建议改用nlp.make_doc(),但我认为它还应尝试警告您是否您的文档没有您要匹配的属性。)