Как обрабатывать два метода извлечения сущностей в НЛП

Я использую два разных метода извлечения сущностей (https://rasa.com/docs/nlu/entities/) при построении моей модели НЛП в рамках RASA для создания чат-бота. Бот должен обрабатывать различные вопросы, которые имеют настраиваемые объекты, а также некоторые общие вопросы, такие как местоположение или организация. Поэтому я использую оба компонента ner_spacy и ner_crf для создания модели. После этого я создаю небольшой вспомогательный скрипт на питоне для оценки производительности модели. Там я заметил, что модель изо всех сил пытается выбрать правильный объект.

Например, для слова «X» он выбрал предопределенную сущность «ORG» из SpaCy, но она должна быть распознана как пользовательская сущность, которую я определил в обучающих данных.

Если я просто использую экстрактор ner_crf, я сталкиваюсь с огромными проблемами при идентификации объектов местоположения, таких как столицы. Также одной из моих самых больших проблем являются объекты с одним ответом.

Вопрос: Какое ваше любимое животное?

Собака

Моя модель не может извлечь это единственное существо «животное» для этого единственного ответа. Если я отвечу на этот вопрос двумя словами, например «Собака», у модели не возникнет проблем с извлечением сущности животного со значением «Собака».

Итак, мой вопрос: разумно ли использовать два разных компонента для извлечения сущностей? Один для пользовательских сущностей, а другой для предопределенных сущностей. Если я использую два метода, какой механизм в модели, какой экстрактор используется?

Кстати, в настоящее время я просто тестирую вещи, поэтому мои обучающие выборки не такие большие, как должны быть (менее 100 примеров). Могла бы проблема быть решена, если бы у меня было гораздо больше обучающих примеров?

Тонкая настройка GPT-3 с помощью Anaconda
Тонкая настройка GPT-3 с помощью Anaconda
Зарегистрируйте аккаунт Open ai, а затем получите ключ API ниже.
1
0
424
1

Ответы 1

Здесь вы сталкиваетесь с 2 проблемами. Я предлагаю несколько способов, которые я нашел полезными.

1. Пользовательское распознавание объектов: Чтобы решить эту проблему, вам нужно добавить больше обучающих предложений со всеми возможными длинами сущностей. ner_crf будет лучше предсказывать, когда вокруг сущностей есть идентифицируемые маркеры (например, предлоги)

2. Извлечение объектов из однословного ответа: В качестве обходного пути я предлагаю вам выполнить следующие манипуляции на стороне клиента.

When you are sending question like What´s your favorite animal?, append a marker to question to indicate to client that a single answer is expected. e.g. You can send ##SINGLE## What´s your favorite animal? to client.

Client can remove the ##SINGLE## from question and show it to user. But when client sends user's response to server, it doesn't send Dog, it send something like User responded with single answer as Dog

You can train your model to extract entities from such an answer.

Другие вопросы по теме