Тест на сознание: практический подход

Коллега alexander-xom написал интересный материал Тест на сознание.

В целом, это очень неплохое функциональное представление плана для "эмоционального бота", через тесты :)

Под "эмоциональным ботом" подразумеваю систему, которая имеет внутренние мотивации, простейшим (и древнейшим, если говорить о живых системах) случаем которых будут эмоции.

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

Вопрос: Как на практике может выглядеть механизм таких "хотений" в рамках вопросно-ответной системы?
Collapse )

а ruGPT2 хорош, да

Даже после переобучения на небольшом кусочке (~10%) датасета читчата модель ruGPT2Large начала выдавать вполне годные реплики, хорошо попадающие в контекст беседы:
Collapse )
Болдом выделены фразы, которые приходят именно из сервиса ruGPT2. Беседует тут, кстати, только неживая материя - два бота.

Немного мудрости от читчата

Из тестовой выдачи - моделька читчата генерит ответы на вопросы "что такое" и "кто такой":
Collapse )

Самое эпичное - творческий подход к морфологии, аппроксимация "пенал" до "пенальти" и то, что модель сделала с воротами:

- что такое пенал ?
- штрафной удар по воротамал .

Эксперименты с GPT-2 в чатботе

В тестовый стенд чатбота интегрирована модель GPT-2, дообученная на массиве диалогов. Общий объем диалогов после отфильтровывания мата и жаргона - около 1 Гб, в основном чит-чат. Процедуру обучения GPT-2 пришлось немного доработать, так как оригинальный код рассчитан на большие тексты, а у нас - короткие реплики.

Некоторые тестовые разговоры двух ботов:
Collapse )

Небольшая проверка Sentence Trasformers на русскоязычных данных

Библиотечка https://www.sbert.net/docs/ содержит удобные инструменты как для получения эмбеддингов предложений (согласно доке, поддерживается 100 языков), так для некоторых базовых операций со списками предложений. Например, очень просто делается поиск ближайшего предложения для запроса. При этом используется косинусная метрика близости.

Уместный вопрос - насколько хорошо это работает "из коробки"?

Я сделал небольшой эксперимент с двумя моделями:
Collapse )


Кажется, что работает это с переменным успехом.

Планы по чатботу

Итак, текущее состояние проекта чатбота зафиксировано в релизе 0.0.2.16. Вика стала многословней и чуточку лучше поддерживает чит-чат:
Collapse )
Иногда тестовый бот раскручивает Вику на диалоги из 20+ реплик (с ошибками, увы, над ними еще работать и работать):Collapse )
Что в планах?

1. Надо что-то делать с составными ответами. Например, для человека естественным является такой обмен репликами:

- как тебя зовут
- меня Витя, а тебя?

Collapse )

Регулярки как основа голосового UI

Небольшой рассказ о Марусе (голосовой ассистент mail.ru):
Collapse )
Интересный момент на 21:23, спикер сообщает что-то такое:

"из последних инсайтов, которые почерпнула ... когда пользователь говорит про погоду ... он например может использовать фразу 'сообщи погоду' ... почему 'сообщи'?

Вот прямо немного запахло регулярками в разборе запросов в Марусе.
И до этого несколько раз она же говорит вещи, подразумевающие сопоставление запроса с шаблонами по буквальному представлению.

Посидим рядком, початботим ладком: парное полуавтоматическое тестирование чатботов

Ручное тестирование чатбота постепенно становится обременительным из-за роста числа разных тем, которые поддерживает движок. В связи с этим было решено поручить "протыкивание" второму чатботу. Затем листинги бесед двух мудрецов можно просмотреть и выявить явные разрывы, нерелевантные ответы и так далее.

И важное техническое решение: средняя длина диалогов чит-чата, судя по всему, неплохо подходит в качестве оптимизируемой метрики. Простыми словами, чем дольше два бота беседуют до затыка (при отсутствии повторов реплик), тем лучше. Например, "беседа" длиной 17 реплик:

Collapse )

Полный листинг с сотней диалоговых сессий - тут.

Сытое брюхо к прытливости глухо (генератор OOV лексики + генератор стихов)

Генератор OOV лексики и немного NLP'шной требухи в виде ударятора, тэггера и т.д. позволяют генерить вот такую народную мудрость:

Сытое брюхо к прытливости глухо

шлиботун в бороду, мужатбон в сторону

когда риботка урчит, голова молчит

Утливость от ботности недалеко падает

набитое брюхо к файболту глухо

дарёному коню в полты не смотрят
Collapse )