Создание пользовательской именованной сущности в 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_)