Spacy模式匹配规则的形成



在Spacy模式匹配中,如何编写可以由以下模式触发的SINGLE模式匹配规则:

"red", apple"   # ie, the rule must trigger when the input sentence contains "red apple"
"large", "white", "building" # ie, the rule must trigger when the input sentence contains "large white building"
["lamp", "light", "fan"] # ie, the rule must trigger when the input sentence contains a token "light"

在上面的例子中,每个部分没有相同数量的令牌,并且每个这样的部分可能有一个以上的令牌长(所以我不能使用Spacy运算符"In"来组合所有这些部分(

您不能编写一个令牌匹配器模式来实现这一点。

但是你可以给多个模式分配相同的标签,所以没有理由这么做。如果你想比标签更具体,你也可以在图案中添加ID。

以下是如何用你的图案制作一个标签:

import spacy
nlp = spacy.blank("en")
ruler = nlp.add_pipe("entity_ruler")
patterns = [{"label": "SOMETHING", "pattern": "red apple"},
{"label": "SOMETHING", "pattern": "large white building"},
{"label": "SOMETHING", "pattern": "lamp"},
{"label": "SOMETHING", "pattern": "light"},
{"label": "SOMETHING", "pattern": "fan"}
]
ruler.add_patterns(patterns)
text = "I saw a red apple under a lamp in the large white building"
for ent in nlp(text).ents:
print(ent.label_, ent, sep="t")

我在这里使用了EntityRuler,但如果您想使用PhraseMatcher来使用on_match功能,您可以执行类似matcher.add("SOMETHING", pattern, myfunc)的操作。

相关内容

  • 没有找到相关文章

最新更新