PhraseMatcher у spaCy
Під час обробки неструктурованого тексту ви часто маєте довгі списки й словники, які потрібно переглядати та зіставляти з текстами. Шаблони для Matcher створюють вручну, і кожен токен потрібно описувати окремо. Якщо у вас є довгий список фраз, Matcher уже не найкращий варіант. У такому разі клас PhraseMatcher допомагає зіставляти великі словники. У цій вправі ви потренуєтеся знаходити шаблони з відповідними формами для кількох термінів за допомогою класу PhraseMatcher.
Модель en_core_web_sm уже завантажена і доступна як nlp. Клас PhraseMatcher імпортовано. Рядок text і список terms підготовлені для вашого використання.
Ця вправа є частиною курсу
Обробка природної мови (NLP) зі spaCy
Інструкції до вправи
- Ініціалізуйте клас
PhraseMatcherз параметромattr, щоб зіставляти за формою заданихterms. - Створіть
patterns, які потрібно додати до об'єктаPhraseMatcher. - Знайдіть збіги для заданих шаблонів і виведіть індекси початкового та кінцевого токенів, а також відповідну ділянку заданого
text.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
text = "There are only a few acceptable IP addresse: (1) 127.100.0.1, (2) 123.4.1.0."
terms = ["110.0.0.0", "101.243.0.0"]
# Initialize a PhraseMatcher class to match to shapes of given terms
matcher = ____(nlp.____, attr = ____)
# Create patterns to add to the PhraseMatcher object
patterns = [nlp.make_doc(____) for term in terms]
matcher.____("IPAddresses", patterns)
# Find matches to the given patterns and print start and end characters and matches texts
doc = ____
matches = ____
for match_id, start, end in matches:
print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)