Category: it

Category was added automatically. Read all entries about "it".

Веб-интерфейс для чатбота

В релизе 0.0.2.14 восстановлен старый код веб-морды бота на фляшке. Теперь он запускается тоже в докере, как и консольный вариант. Для запуска нужно скачать образ, загрузить и запустить его командой:

docker image load -i chatbot.tar.gz
docker run -p 9001:9001 -it chatbot bash -c "/chatbot/scripts/flask_bot.sh"


Через несколько минут бот загрузится и выдаст в консоль сообщение с текстом:

werkzeug - * Running on http://0.0.0.0:9001/ (Press CTRL+C to quit)

Теперь можно открывать в браузере адрес http://127.0.0.1:9001/ и общаться с ботом, вводя запросы в простой веб-форме:
Collapse )

Релиз чатбота 0.0.2.13 - генеративный перефразировщик реплик и улучшение качества

Для чатбота в рамках релиза 0.0.2.13 подготовлено несколько улучшений.
Collapse )

Релиз чатбота 0.0.2.12 - улучшения интерпретатора, переработка интентов

В этом релизе чатбота Вика реализованы такие главные изменения:

1) Модель интерпретатора, которая занимается раскрытим анафоры, гэппинга и элипсиса, доработана. Теперь в ряде случаев срабатывает более точная kNN шаблонная модель, которая обучается на тех же данных, что и seq2seq сетка.

2) Датасет интерпретатора расширен до 26,000 сэмплов. Это еще немного повысило качество seq2seq модели интерпретации.

3) Сделана декомпозиция классификатора интентов. В отдельные классификаторы, помимо интентов, выделено определение тональности (sentiment), оскорбительности (abusiveness), направленности (direction) реплики. Это позволяет оценивать каждую реплику пользователя по нескольким критериям одновременно. То есть реплика пользователя может быть одновременно про политику, быть оскорбительной и являться вопросом к боту.
Collapse )

Релиз чатбота 0.0.2.11 - новая модель интерпретатора (анафора, эллипсис, гэппинг)

Докер-образ чатбота 0.0.2.11 тут

В боте полностью переработан Интерпретатор.

Интерпретатор занимается раскрытием анафоры, заполнением эллипсиса и гэппинга в диалоге, опираясь на контекст. Благодаря ему от собеседника не требуется постоянно задавать полные вопросы.
Collapse )

дополнение к "Синтагрус, UDPipe и Spacy" - теперь Turku NLP

В дополнение к посту "Синтагрус, UDPipe и Spacy"
Я проверил еще и Turku NLP, поскольку там русская модель тоже обучалась на том же самом Синтагрусе. Последовательность шагов для создания докера с русской моделью и выполнение разбора сделаны по мануалу. В консоли делаем так:
Collapse )

Видим результат:

Collapse )


То есть опять женский род (Gender=Fem) для слова "мужчиной".

Можно сделать два интересных вывода.

1) В Синтагрусе есть некий статистически значимый bias, приводящий к одинаковому результату на разных алгоритмах (Spacy, UDPipe, TurkuNLP)

2) Так как я обнаружил этот пример совершенно случайно, то нелишне спросить, сколько еще подобных пасхалок скрыто в Синтагрусе.

Чатбот: полная переделка модели генерации ответа на seq2seq with attention

Репозиторий проекта чатбота: https://github.com/Koziev/chatbot
Докер-образ: https://github.com/Koziev/chatbot/releases/tag/0.0.2.10-alpha

Доработки в новом релизе чатбота

1. Полностью переработан код, строящий ответ на основе вопроса и предпосылок. Вместо нескольких моделей, делавших это для разных типов вопросов, теперь оставлена единственная sequence2sequence модель с "классическим" attention. На текущем датасете из ~81000 троек предпосылка-вопрос-ответ эта модель учится около 10 часов, что намного меньше суммарного времени старого ансамбля моделей. К тому же, качество новой модели выше.
Collapse )
Тестовый диалог с ботом

Вопросы идут без особого порядка, только для тестирования отдельных частей пайплайна бота и моделей. Реплики бота идут с префиксом B, фразы человека предваряются префиксом H.

Collapse )

Текущие концептуальные проблемы, над которыми предстоить серьезно поработать

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

2. В дополнение к предыдущему, бот не умеет предсказывать психическое состояние собеседника по его ответам. Поэтому он не знает, доволен ли собеседник его ответами, не сердится ли он и т.д.

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

4. Движок бота имеет ограниченные возможности по интерпретации неполных ответов человека, анафоры, элипсиса. Вопросы типа "зачем?", "почему?", "а еще?", а также местоимения 3-го лица (он, она etc) обычно ставят его в тупик, выражающийся в нерелевантном ответе.

5. В диалоговый движок заложена возможность строить ответ на основе 2х и более предпосылок. Таким образом, бот теоретически может выполнять сложные рассуждения, используя части и взаимосвязь множества фактов. Но текущая реализация механизма подбора релевантных фактов нормально работает только для случая, когда для ответа вообще не нужны дополнительные предпосылки (Чему равно 2 плюс 2?) или достаточно найти одну релевантную предпосылку в базе данных.

Синтагрус, UDPipe и Spacy

Синтагрус - один из самых популярных корпусов для тренировки русскоязычных POS tagger'ов и парсеров.
И у этой всеобщности есть обратная сторона, о которой не следует забывать.

Collapse )

Использование статистики аргументной структуры для генерации рэпа

Цель

Овладеть искусством (или мастерством) генерации рэпа на заданную тему.

Я ожидал, что это будет попроще, чем онегинская строфа, но не тут-то было :) Приходится идти небольшими шагами, перебирая множество подходов.
Collapse )
PS: и немного свежей выдачи стихогенератора на тему программистов-лингвистов:
Collapse )

Реализация модели детектора перефразировок с BERT в pytorch transformers

Продолжение темы изучения питорча: сделал модель бинарного классификатора для определения синонимичности двух фраз с использованием multilinual BERT: гист
Collapse )

Опыт использования hyperopt для оптимизации весов правил синтаксического парсера

Вот так выглядит процесс подбора >500 параметров для синтаксического парсера с помощью hyperopt:
Collapse )Подробности эксперимента - под катом.
Collapse )