Шаблоны в Spacy

#python #spacy

#python #spacy

Вопрос:

Я создаю простую программу с использованием Spacy, чтобы научиться ее использовать. Я создал шаблон для распознавания, когда пользователь вводит «1 день» или «3 недели», например:

 [{"IS_DIGIT": True},{"TEXT":"days"}],
[{"IS_DIGIT": True},{"TEXT":"day"}])
  

Однако я также хочу, чтобы он распознавал, когда пользователь вместо этого вводит «4 дня». Как я могу этого добиться?

Ответ №1:

Вы можете достичь этого с помощью:

 import spacy
from spacy.matcher import Matcher
nlp = spacy.load("en_core_web_sm")

txt = "This will take 1 day. That will take 3 days. It may take up to 3 weeks."
doc = nlp(txt)

matcher = Matcher(nlp.vocab)

pattern = [{"IS_DIGIT":True},{"LEMMA":{"REGEX":"day|week|month|year"}}]
matcher.add("HERE_IS_YOUR_MATCH",None, pattern)

matches = matcher(doc)

for match_id, start, end in matches:
    print(nlp.vocab.strings[match_id], doc[start:end])
HERE_IS_YOUR_MATCH 1 day
HERE_IS_YOUR_MATCH 3 days
HERE_IS_YOUR_MATCH 3 weeks
  

Комментарии:

1. Хорошо, спасибо! Кстати, вы знаете, как я могу это сделать, чтобы шаблон распознавал, например, как «2 дня», так и «четыре дня»?

2. Возможно, вы захотите проверить атрибут токена like_ num