НачатьНачать бесплатно

Расширенный синтаксис сопоставления в 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)
Редактировать и запускать код