Зіставлення з розширеним синтаксисом у spaCy
Правиловий (rule-based) витяг інформації є важливою частиною будь-якого конвеєра NLP. Клас Matcher робить шаблони виразнішими, дозволяючи використовувати деякі оператори всередині фігурних дужок. Ці оператори виконують розширені порівняння і подібні до операторів Python: in, not in та операторів порівняння. У цій вправі ви попрактикуєтеся у функціональності зіставлення spaCy, Matcher, щоб знаходити збіги для заданих термінів у прикладному тексті.
Клас Matcher уже імпортовано з бібліотеки spacy.matcher. У цій вправі ви використовуватимете контейнер Doc з прикладним текстом через змінну doc. Попередньо завантажена модель spaCy також доступна як nlp.
Ця вправа є частиною курсу
Обробка природної мови (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)