Поиск одного термина с помощью Matcher в spaCy
Шаблоны RegEx непросто читать, писать и отлаживать. Однако у вас есть удобная альтернатива: spaCy предоставляет класс Matcher, который отличается наглядностью и подходит для использования в реальных проектах. Класс Matcher сопоставляет заранее определённые правила с последовательностью токенов в заданном контейнере Doc. В этом упражнении вы потренируетесь использовать Matcher для поиска отдельного слова.
Текст для анализа доступен в переменной example_text. Используйте nlp для доступа к модели spaCy и doc — к контейнеру Doc для example_text.
Это упражнение является частью курса
Обработка естественного языка с помощью spaCy
Инструкции к упражнению
- Инициализируйте класс
Matcher. - Определите шаблон для поиска слова
witchв нижнем регистре в текстеexample_text. - Добавьте шаблоны в класс
Matcherи найдите совпадения. - Переберите совпадения и выведите начальный и конечный индексы токенов, а также фрагмент найденного текста.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
nlp = spacy.load("en_core_web_sm")
doc = nlp(example_text)
# Initialize a Matcher object
matcher = Matcher(nlp.____)
# Define a pattern to match lower cased word witch
pattern = [{"lower" : ____}]
# Add the pattern to matcher object and find matches
matcher.add("CustomMatcher", [____])
matches = matcher(____)
# Print start and end token indices and span of the matched text
for match_id, start, end in matches:
print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)