我有一个列表和一个句子,我想将该列表与句子中单词的词缀匹配,即
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 , 但这对我没有帮助 因为它应该与燃烧烟花相匹配并从句子中播放,所以我得到了一个空列表。
答案 0 :(得分:0)
如果__model
启用了标记器(默认情况下可能会启用),则在创建模式时将__model.make_doc(text)
更改为__model(text)
即可使用。 make_doc()
仅适用于attr="ORTH"
,因为它除了令牌化之外没有任何作用。
如果您有很多基于引理的模式,而且它们都不需要解析或命名实体,则可以在parser
中禁用ner
和__model
来加快处理速度,因为lemmatizer仅取决于标记器。
({PhraseMatcher
警告您nlp(text)
在仅ORTH
模式下可能会变慢,并建议改用nlp.make_doc()
,但我认为它还应尝试警告您是否您的文档没有您要匹配的属性。)