关于以下设置:
import spacy
from spacy.matcher import Matcher
from spacy.attrs import POS, LOWER, IS_ALPHA
nlp_en = spacy.load('en')
text = nlp_en('A nice looking great blue house you have!')
matcher = Matcher(text.vocab)
OP = 'OP'
matcher.add_entity('test')
matcher.add_pattern('test', [
{LOWER: 'nice'},
{OP: '*', IS_ALPHA: True},
{LOWER: 'house'}
])
matches = matcher(text)
在这种情况下,我试图找到 nice
和 house
之间的任何单词 - 但匹配器不会产生任何结果。我还尝试将 {OP: '*', IS_ALPHA: True}
翻转为 {IS_ALPHA: True, OP: '*'}
但也没有结果。这个模式有什么问题吗?
Spacy版本:1.9.0
最佳答案
不幸的是,您在这里的匹配器中遇到了错误。运算符未正确实现。
发生的情况是可变长度运算符“*”与结束标记“house”匹配,从而阻止“house”匹配。
每当您有一个与模式的下一部分重叠的可变长度运算符时,就会出现该错误。
如果您有时间和意愿,我希望对此提出拉取请求,但不可否认,匹配器代码非常困难。它可能应该完全重新实现。
关于python - Spacy IS_ALPHA 匹配器模式不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46523057/