【问题标题】:Spacy \ add relaxed pattern with allowed terms betweenSpacy \添加宽松模式与允许的条款之间
【发布时间】:2026-01-11 07:25:01
【问题描述】:

我如何编写允许介于两者之间的单词的正则表达式 捕捉:“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)

【问题讨论】:

    标签: nlp spacy


    【解决方案1】:

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

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

    请参阅源代码中的test_matcher.py 以了解语法,并参阅the spaCy docs 以了解可用的量词。

    【讨论】: