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

PhraseMatcher в spaCy

При обработке неструктурированного текста нередко приходится работать с длинными списками и словарями, по которым нужно искать совпадения в тексте. Шаблоны для Matcher создаются вручную, и каждый токен нужно кодировать отдельно. Если список фраз большой, Matcher перестаёт быть оптимальным решением. В таких случаях на помощь приходит класс PhraseMatcher, позволяющий работать с объёмными словарями. В этом упражнении вы потренируетесь находить совпадения по форме для нескольких терминов с помощью класса PhraseMatcher.

Модель en_core_web_sm уже загружена и доступна как nlp. Класс PhraseMatcher импортирован. Строка text и список terms готовы к использованию.

Это упражнение является частью курса

Обработка естественного языка с помощью 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)
Редактировать и запускать код