用于Hello World的基于SpaCy规则的短语匹配

时间:2019-10-23 09:26:46

标签: python python-3.x nlp spacy

我正在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给出空字符串。你能纠正我吗?

2 个答案:

答案 0 :(得分:1)

您的模式将Hello, world与标点符号放在中间,而不是Hello world

答案 1 :(得分:1)

要匹配hello worldhello, world,请使用

pattern = [{"LOWER": "hello"}, {"IS_PUNCT": True, "OP" : "?"}, {"LOWER": "world"}]

{"IS_PUNCT": True, "OP" : "?"}表示类型为标点的令牌在"OP" : "?"hello之间可以存在1或0次(由于world

查看Spacy文档中有关Operators and quantifiers的更多信息。