Spacy \添加宽松的模式,允许条款之间

Spacy \ add relaxed pattern with allowed terms between

我如何编写允许中间单词的正则表达式 赶上:"hello bla bla bla world"(不同数量的 bla 可以出现在任何地方) - 我需要手动编写 IS_ALPHA 吗?我不知道高级的非重要术语的数量...

import spacy
from spacy.matcher import Matcher
from spacy.attrs import POS, LOWER, IS_PUNCT, IS_ALPHA
nlp = spacy.load('en')
matcher = Matcher(nlp.vocab)
text=u"hello bla bla bla world"


matcher.add_pattern("my regex1", [{LOWER: "hello"},  {IS_ALPHA: True}, {LOWER: "world"}])

doc = nlp(text)


matches = matcher(doc)
print(matches)

如果您真的不关心中间的 IS_ALPHA 个单词的数量,您可以使用 * 量词,它似乎是用 "OP" 键指定的:

matcher.add_pattern("my regex1", [{LOWER: "hello"},
                      {"OP": "*", IS_ALPHA: True}, {LOWER: "world"}])

有关可用的量词,请参阅 test_matcher.py from the source for the syntax and the spaCy docs