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