#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