Создание пользовательской именованной сущности в spaCy
Если встроенных именованных сущностей spaCy недостаточно, вы можете создать собственные с помощью класса EntityRuler().
EntityRuler() позволяет определять пользовательские сущности и добавлять их в конвейер spaCy.
Для начала создайте экземпляр EntityRuler() и передайте ему текущий конвейер nlp.
Затем вызовите метод add_patterns() на этом экземпляре и передайте ему словарь с текстовым шаблоном pattern, которому нужно присвоить метку сущности.
После настройки шаблона добавьте его в конвейер nlp с помощью add_pipe().
Поскольку Acme Studios — технологическая компания, вы решаете пометить шаблон "smartphone" тегом сущности "PRODUCT".
Библиотека spaCy уже импортирована, а объект doc создан и содержит текст, расшифрованный из файла call_4_channel_2.wav file).
Это упражнение является частью курса
Обработка устной речи на Python
Инструкции к упражнению
- Импортируйте
EntityRulerизspacy.pipeline. - Добавьте
"smartphone"в качестве значения для ключа"pattern". - Добавьте экземпляр
EntityRuler(),ruler, в конвейерnlp. - Выведите атрибуты сущностей, содержащихся в объекте
doc.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import EntityRuler class
from spacy.pipeline import ____
# Create EntityRuler instance
ruler = EntityRuler(nlp)
# Define pattern for new entity
ruler.add_patterns([{"label": "PRODUCT", "pattern": ____}])
# Update existing pipeline
nlp.add_pipe(____, before="ner")
# Test new entity
for entity in doc.____:
print(entity.text, entity.label_)