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

Создание пользовательской именованной сущности в spaCy

Если встроенных именованных сущностей spaCy недостаточно, вы можете создать собственные с помощью компонента конвейера entity_ruler библиотеки spaCy.

Компонент entity_ruler позволяет создавать собственные сущности и добавлять их в конвейер spaCy.

Сначала добавьте компонент в существующий конвейер с помощью nlp.add_pipe(), разместив его before компонентом "ner", чтобы ваши правила применялись первыми. Функция add_pipe() возвращает добавленный компонент.

Затем вызовите add_patterns() у этого компонента и передайте ему словарь с текстовым pattern, который нужно пометить сущностью.

Поскольку Acme — технологическая компания, вы решаете пометить шаблон "smartphone" тегом сущности "PRODUCT".

Библиотека spaCy уже импортирована, а переменная nlp содержит загруженную модель en_core_web_sm. Поскольку изменение конвейера не влияет на уже существующие объекты doc, после добавления нового компонента вы заново создадите doc из текста, транскрибированного из файла call_4_channel_2.wav.

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

Обработка устной речи на Python

Посмотреть курс

Инструкции к упражнению

  • Добавьте компонент "entity_ruler" в конвейер nlp перед компонентом "ner" и сохраните его в переменную ruler.
  • Добавьте "smartphone" в качестве значения для ключа "pattern".
  • Выведите атрибуты сущностей, содержащихся в doc.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Add an entity_ruler component to the pipeline, before ner
ruler = nlp.add_pipe(____, before=____)

# Define pattern for new entity
ruler.add_patterns([{"label": "PRODUCT", "pattern": ____}])

# Recreate the doc so it uses the updated pipeline
doc = nlp(call_4_channel_2_text)

# Test new entity
for entity in doc.____:
  print(entity.text, entity.label_)
Редактировать и запускать код