Я использую два разных метода извлечения сущностей (https://rasa.com/docs/nlu/entities/) при построении моей модели НЛП в рамках RASA для создания чат-бота. Бот должен обрабатывать разные вопросы, которые имеют настраиваемые сущности, а также некоторые общие, такие как местоположение или организация. Поэтому я использую оба компонента ner_spacy и ner_crf для создания модели. После этого я создаю на Python небольшой вспомогательный скрипт для оценки производительности модели. Там я заметил, что модель изо всех сил пытается выбрать правильную сущность.
Например, для слова «X» он выбрал предварительно определенную сущность «ORG» из SpaCy, но ее следует распознать как пользовательскую сущность, которую я определил в данных обучения.
Если я просто использую экстрактор ner_crf, я столкнусь с огромными проблемами в определении объектов местоположения, таких как столицы. Также одна из моих самых больших проблем - это однозначные ответы.
В: «Какое ваше любимое животное?»
Собака
Моя модель не может выделить это единственное «животное» для этого единственного ответа. Если я отвечу на этот вопрос двумя словами, например «Собака», у модели не возникнет проблем с извлечением сущности животного со значением «Собака».
Итак, мой вопрос: разумно ли использовать два разных компонента для извлечения сущностей? Один для пользовательских объектов, а другой - для заранее определенных объектов. Если я использую два метода, каков механизм модели, какой экстрактор используется?
Кстати, сейчас я просто тестирую вещи, так что мои обучающие образцы не такие большие, как должны быть (менее 100 примеров). Можно ли было бы решить проблему, если бы у меня было намного больше обучающих примеров?