我正在Spacy中执行基于规则的短语匹配。我正在尝试下面的示例,但是它不起作用。
示例
import spacy
from spacy.matcher import Matcher
nlp = spacy.load('en_core_web_sm')
doc = nlp('Hello world!')
pattern = [{"LOWER": "hello"}, {"IS_PUNCT": True}, {"LOWER": "world"}]
matcher = Matcher(nlp.vocab)
matcher.add('HelloWorld', None, pattern)
matches = matcher(doc)
print(matches)
然后最后的matches
给出空字符串。你能纠正我吗?
答案 0 :(得分:1)
您的模式将Hello, world
与标点符号放在中间,而不是Hello world
答案 1 :(得分:1)
要匹配hello world
和hello, world
,请使用
pattern = [{"LOWER": "hello"}, {"IS_PUNCT": True, "OP" : "?"}, {"LOWER": "world"}]
{"IS_PUNCT": True, "OP" : "?"}
表示类型为标点的令牌在"OP" : "?"
和hello
之间可以存在1或0次(由于world
)
查看Spacy文档中有关Operators and quantifiers的更多信息。