Классификация текста, когда есть общие фразы в разных классах - PullRequest
0 голосов
/ 24 мая 2019

Прежде всего, извините за мой английский и спасибо за ваше терпение.

Я пытаюсь сделать классификатор чат-ботов с диалоговым движком.Текущий конвейер выглядит следующим образом:

Raw_user_input -> preprocessing -> classification -> dialog_engine -> bot_answer

Механизм диалога пересчитывает оценки классификатора в зависимости от состояния диалога.

Проблема в том, что у меня есть похожие фразы в разных классах,Например:

Если бот спрашивает: Can you provide more information about yourself?

Ответ пользователя: I can // означает «да».Ответ «да» также допускается

Но если бот спрашивает: Do you want to join our ...<whatever>

Ответ пользователя: I do // «Да» также разрешено, но «Я могу» не появляетсяв наборе поездов.

Итак, у меня есть несколько общих фраз в словах 'provide_info_yes', 'provide_info_no', 'join_yes', 'join_no'.

Когда дело доходит до классификации, и пользователь отвечает «да», я получил следующие результаты:

intents: [other_int1, other_int2, provide_info_yes, provide_info_no, join_yes, join_no]

scores: [0.001, 0.003, 0.21, 0.03, 0.75, 0.006] (оценки не являются реальными, но представляет проблему) Я получил 0,21 для 'provide_info_yes' и 0,75 для 'join_yes', но ожидаемый результат составляет 0,5 / 0,5 (меньше или больше), и механизм диалога будет пересчитывать их в зависимости от состояния диалога (если бот спросил опредоставляя информацию, оценки будут 80/20)

В настоящее время я использую классификатор SVC от sklrean с преобразователем TF_IDF.TF_IDF изучается на свалках Википедии.Я попытался использовать классификатор KNN, и именно там я получил ожидаемый результат (50/50), но я не хочу его использовать, потому что мне не нравится его поведение в некоторых других случаях.

Не могли бы вы дать мне несколько советов о том, что делать с этой проблемой?И я не уверен, что все делаю правильно.Итак, можете ли вы дать несколько советов о том, как правильно делать то, что я хочу?

...