Nlp 如何使空间规则库只匹配给定模式之间的内容

Nlp 如何使空间规则库只匹配给定模式之间的内容,nlp,spacy,matcher,information-extraction,Nlp,Spacy,Matcher,Information Extraction,我有以下代码: doc = nlp("My big pencil is red. Your pencil is green.") matcher = Matcher(nlp.vocab) matcher.add("pencil", None, [ {"LEMMA": "-PRON-"}, {"OP": "*"}, {"LEMMA": "pencil"}, ]) matches = matcher(doc) for (entity_key, start_token, end

我有以下代码:

doc = nlp("My big pencil is red. Your pencil is green.")
matcher = Matcher(nlp.vocab)
matcher.add("pencil", None, [
    {"LEMMA": "-PRON-"},
    {"OP": "*"},
    {"LEMMA": "pencil"},
])
matches = matcher(doc)
for (entity_key, start_token, end_token) in matches:
    print(start_token, end_token, doc[start_token:end_token])
当我运行它时,我得到:

0 3 My big pencil 6 8 Your pencil 0 8 My big pencil is red. Your pencil 03我的大铅笔 你的铅笔 我的大铅笔是红色的。你的铅笔 但是,我只希望它返回开始标记和结束标记的匹配:

0 3 My big pencil 6 8 Your pencil 03我的大铅笔 你的铅笔
有没有办法限制matcher只返回起始标记和结束标记之间的所有内容?

第三个匹配是模式
-PRON-*pencil
的有效匹配

由于
Matcher
没有一个选项使
*
不贪婪,因此您需要过滤返回的匹配项以获得所需的结果