Как сделать, чтобы просторная база правил соответствовала только тому, что находится между заданным шаблоном - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть следующий код:

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

Однако я просто хочу, чтобы он возвращал совпадения для начала и конца токены:

0 3 My big pencil
6 8 Your pencil

Есть ли способ ограничить совпадение только тем, что он возвращает все между начальным и конечным токенами?

1 Ответ

0 голосов
/ 14 февраля 2020

Третье совпадение является действительным совпадением для шаблона -PRON- * pencil.

Поскольку Matcher не имеет возможности для * быть не жадным, вам необходимо отфильтровать совпадения возвращены, чтобы получить результаты, которые вы хотите.

...