В
новом релизе чатбота в движке сделаны некоторые правки, чтобы получались (иногда) вот такие диалоги:
B:> Привет!
B:> День добрый
H:> привет
B:> Привет, о чем поговорим?
H:> меня зовут Илья
B:> Моего создателя тоже зовут Илья
H:> это круто
B:> :)
H:> а тебя как зовут
B:> вика
H:> приятно познакомиться
B:> Взаимно
H:> ты кто
B:> чатбот
H:> круто
B:> :)
H:> кто такой чатбот
B:> Чатбот это компьютерная программа, способная отвечать на вопросы пользователя, задаваемые на естественном языке.
B:> я чатбот
H:> а я программист
B:> Я уважаю программистов
H:> я разрабатываю чатботы
B:> Чатботы это круто
H:> что ты любишь
B:> вопросы
B:> животных я люблю
H:> а я люблю компьютеры
B:> Чем ты занимаешься с компьютерами ?
Это уже намного ближе к обычной болтовне незнакомых людей, как, например, в этом датасете
Toloka Persona Chat Rus. То есть меньше механичности, больше импровизации и проактивности. Хотя косяков пока многовато - иногда (кхм, частенько) бот выдает малорелевантные реплики, иногда модели генерации текста поставляют мусор.
Чтобы справится с этими косяками, нужна модель для оценки того, насколько реплика вписывается в общий дискурс диалога. Я попробовал сделать черновую модельку на базе
ELMO из deeppavlov (
ElmoEmbedder) плюс
линейный регрессор для предсказания вектора следующей реплики, чтобы через cosine между предсказанным и фактическим вектором оценивать уместность реплики. Результат в целом нулевой, так как по метрике precision@k предсказанный вектор с трудом попадает в top-40% фраз, из которых одна - действительно релевантная. Следующая попытка - нейросетевой регрессор поверх BERT. Я проверил на
ruBERT из deeppavlov плюс
keras-bert, вроде бы немного более обнадеживающие результаты, будем препарировать тему дальше.