Текущие дела с чатботом: новый подход к интерпретации реплик (раскрытию до полных)

Feb 16, 2022 10:55

Текущая задача в проекте чатбота - полностью переработать старое гибридное ядро, отказаться от ведущей роли написанных вручную правил и сценариев. Как минимум правила должны стать второстепенным, вспомогательным механизмом для быстрой кастомизации бота в ситуациях, когда до/пере-обучать генеративную модель тяжело или невозможно по соображениям закрытости датасета. Как максимум - бот должен вообще работать без вручную написанных правил.

Новая версия инференса бота сейчас находится в отдельной ветке, в одном файле core_v4_for_debug.py.

Работает новый бот пока намного медленнее старой версии из-за того, что там в кооперации работают 3 генеративные модели уровня GPT-2. Генерация одного ответа на CPU занимает от минуты до пяти, если беседа сложная. Надеюсь, в будущем получится подускорить генерацию, но пока задача - добиться максимального качества, даже в ущерб скорости.

Вот так сейчас выглядит тестовый диалог с человеком:


B: Привет!
H: привет, ты кто?
B: чатбот, а ты?
H: а я нет :)
B: как-то это странно
H: лучше скажи, как тебя зовут :)
B: Вика
H: а меня Илья
B: как твои дела, Илья?
H: превосходно, а у тебя как?
B: нормально, а у тебя как?
H: давай растопим лед недопонимания
B: давай
H: расскажи, у тебя ведь есть мама?
B: да, есть
H: как ее зовут?
B: Дарья Владимировна
H: где она работает?
B: она учитель математики в школе
H: а ты любишь математику?
B: да, мне нравится математика
H: почему она тебе нравится?

Кроме отсутствия явных правил, по сравнению с предыдущей версией бота сейчас есть еще одно масштабное изменение.

В старой версии вводимая пользователем реплика раскрывалась до полной (подробнее тут) только в том случае, если специальная модель бинарной классификации выдавала высокую вероятность того, что реплика неполная. Кроме того, сама модель интерпретации была seq2seq на keras/tensorflow.

Теперь входные реплики всегда проходят через модель интерпретации на базе GPT. Эта модель кроме раскрытия всяких эллипсисов, анафор и так далее, также нормализует реплики, разбивает их на клаузы и делает еще некоторую полезную работу. Внутри это выглядит вот так - фрагмент лога работы бота:

2022-02-16 10:20:46 DEBUG root +------+------+----------------------------------+-----------------------------------------------------+
2022-02-16 10:20:46 DEBUG root | turn | side | message | interpretation |
2022-02-16 10:20:46 DEBUG root +------+------+----------------------------------+-----------------------------------------------------+
2022-02-16 10:20:46 DEBUG root | 1 | B | Привет! | |
2022-02-16 10:20:46 DEBUG root | 2 | H | привет, ты кто? | кто ты? |
2022-02-16 10:20:46 DEBUG root | 3 | B | чатбот, а ты? | я чатбот. Ты кто? |
2022-02-16 10:20:46 DEBUG root | 4 | H | а я нет :) | я не чатбот |
2022-02-16 10:20:46 DEBUG root | 5 | B | как-то это странно | как-то странно, что ты не чатбот |
2022-02-16 10:20:46 DEBUG root | 6 | H | лучше скажи, как тебя зовут :) | как тебя зовут? |
2022-02-16 10:20:46 DEBUG root | 7 | B | Вика | меня зовут Вика |
2022-02-16 10:20:46 DEBUG root | 8 | H | а меня Илья | меня зовут Илья |
2022-02-16 10:20:46 DEBUG root | 9 | B | как твои дела, Илья? | как твои дела? |
2022-02-16 10:20:46 DEBUG root | 10 | H | превосходно, а у тебя как? | дела у меня идут превосходно. как идут дела у тебя? |
2022-02-16 10:20:46 DEBUG root | 11 | B | нормально, а у тебя как? | дела у меня идут нормально. как идут дела у тебя? |
2022-02-16 10:20:46 DEBUG root | 12 | H | давай растопим лед недопонимания | давай растопим лед недопонимания |
2022-02-16 10:20:46 DEBUG root | 13 | B | давай | давай растопим лед недопонимания |
2022-02-16 10:20:46 DEBUG root | 14 | H | расскажи, у тебя ведь есть мама? | у тебя есть мама? |
2022-02-16 10:20:46 DEBUG root | 15 | B | да, есть | у меня есть мама |
2022-02-16 10:20:46 DEBUG root | 16 | H | как ее зовут? | как зовут твою маму? |
2022-02-16 10:20:46 DEBUG root | 17 | B | Дарья Владимировна | мою маму зовут Дарья Владимировна |
2022-02-16 10:20:46 DEBUG root | 18 | H | где она работает? | где твоя мама работает? |
2022-02-16 10:20:46 DEBUG root | 19 | B | она учитель математики в школе | моя мама работает учитель математики в школе |
2022-02-16 10:20:46 DEBUG root | 20 | H | а ты любишь математику? | ты любишь математику? |
2022-02-16 10:20:46 DEBUG root | 21 | B | да, мне нравится математика | я люблю математику |

Столбцы: turn - номер шага в диалоге; side - кто произносит реплику (H - человек, B - бот); message - реплика; interpretation - результат раскрытия реплики в текущем контексте. Кстати, свои реплики бот тоже пропускает через эту модель, в рамках общего подхода "разговора с самим собой".

chitchat, генеративная модель, читчат, chatbot, чатбот

Previous post Next post
Up