我有以下代码:
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我的大铅笔6 8你的铅笔0 8我的大铅笔是红色的。你的铅笔
但是,我只希望它返回开始和结束标记的匹配项:
0 3我的大铅笔6 8你的铅笔
是否有一种方法可以限制匹配器仅返回起始标记和结束标记之间的所有内容?
第三次匹配是模式-PRON- * pencil
的有效匹配。
由于Matcher
没有使*
处于非贪婪状态的选项,因此您需要过滤返回的匹配项以获得所需的结果。