>我正在使用规则扩展一个spaCy模型。在浏览文档时,我注意到IN
属性,该属性用于将模式映射到属性字典。这很棒,但它仅适用于单个令牌。
例如,此模式:{"label":"EXAMPLE","pattern":[{"LOWER": {"IN": ["such as", "like", "for example"]}}]}
仅适用于术语like
,而不适用于其他术语。
对于多术语属性,实现相同结果的最佳方法是什么?
这取决于预期模式的复杂程度,但PhraseMatcher
可以使用属性LOWER
处理上述类似情况:
import spacy
from spacy.matcher import PhraseMatcher
nlp = spacy.blank("en")
pmatcher = PhraseMatcher(nlp.vocab, attr="LOWER")
phrases = ["such as", "like", "for example"]
pmatcher.add("EXAMPLE", [nlp(x) for x in phrases])
assert pmatcher(nlp("Things Such As Books")) == [(15373972490796046842, 1, 3)]