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