?

Log in

No account? Create an account

Компьютерная лингвистика

Новостная лента www.solarix.ru

Entries by category: образование

Классификация интентов в чатботе - сравнение моделей ELMO, BERT и char-level linear sklearn
kelijah
Сравнение выполнялось по f1 weighted метрике на датасете с ~5100 сэмплов через 8-фолдовую кросс-валидацию. Чуть больше 70 интентов с большим дисбалансом.

Финальные результаты:

LinearSVC ~0.77
BERT        ~0.815
ELMo        ~0.817
Пояснения по моделямCollapse )

Релиз чатбота 0.0.1 (альфа) - вербальные формы, сценарии и прочее
kelijah
В проекте русскоязычного чатбота сделан релиз с большими изменениями в коде бота. В основном работа велась над возможность задавать поведение бота через вручную задаваемые правила - сценарии и вербальные формы.

Read more...Collapse )

Текущие задачи, решенные в чатботе плохо или не решенные вообще
kelijah
Зафиксировал текущее состояние всех алгоритмов чатбота релизом 0.0.0.12. Как и раньше, это proof-of-concept, работающий на очень ограниченном domain'е, прежде всего "здрасьте - как вас зовут". В релизе добавлены новые правила и доработан workflow чатбота, что позволяет отрабатывать такие тестовые диалоги:
Read more...Collapse )

Большой рефакторинг чатбота: все правила в одном файле и модель определения intent'ов
kelijah
В репозиторий https://github.com/Koziev/chatbot залита текущая версия чатбота с множеством изменений и исправлений.
Read more...Collapse )

Кастомизация чатбота: переобучение модели релевантности
kelijah

Модель релевантности - алгоритм, который для двух заданных фраз (предпосылка и вопрос), определяет, содержит ли предпосылка всю информацию, необходимую для ответа на вопрос.

Добавление новых сэмплов и переобучение


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

Read more...Collapse )


Изменения в грамматическом словаре касательно составных прилагательных
kelijah
В "грамматическом словаре русского языка" закончена большая чистка русского лексикона. Из словарной базы убраны почти все составные прилагательные такого вида "ярко-зеленый", "багрово-красный" и т.д. В итоге словарь стал меньше, но мощность описываемой им лексики - больше. Далее - пояснения мотивации и последствия.

Read more...Collapse )

Тренировка BERT на русском корпусе: непривычно видеть такую кривую обучения
kelijah
В порядке эксперимента обучаю упрощенную модель BERT (урезал число heads и т.д.) на свое русском корпусе.
То, что обучается медленно - факт. Но дело не в этом. Вот как выглядят кривые loss (на обучающей выборке) и val_loss (на валидационной):
Read more...Collapse )
PS: На 134-й эпохе сработал early stopping после 5 неулучшений. Понятно, что если поставить patience=10, то наверняка обучение протянется еще. Сейчас кривая обучения приняла такой вид:
Read more...Collapse )

Слишком хороший f1 и roc-auc score в моделях релевантности/синонимичности с triple loss
kelijah
1. Что выдает модель сама по себе

Как работают эти модели? В качестве обучающих данных используются триады, содержащие опорное предложение, нерелевантное предложение и релевантное предложение. Для модели синонимичности эта тройка может выглядеть так:

(anchor) кошка ловит мышку
(positive) на мышку охотится кошка
(negative) дети играют в кошки-мышки
Read more...Collapse )

Leveraging Random Label Memorization for Unsupervised Pre-Training (оверфиттинг как благо)
kelijah
Read more...Collapse )

неудачная попытка использовать либу NNSharp для запуска Keras-модели в C#
kelijah
Репозиторий проекта: https://github.com/adamtiger/NNSharp

Файлы со скриптом тренировки простейшей рекуррентной модели на Keras и использование в C#: https://gist.github.com/Koziev/ce781f1acd9df0bb34a7e5d89411bb1e

Сразу надо сказать, что входящий в NNSharp скрипт KerasModeltoJSON.py может работать только с так называемыми sequential моделями Keras. Более удобные и функционально более гибкие functional модели вызывают ошибку в строке 29, когда делается попытка получить размеры данных на первом слое. У functional моделей может быть несколько входов, поэтому этот подход не работает.

Тем не менее, я сделал простейшую sequential модель, которая вычисляет сумму 10 случайных чисел от 0 до 10.

И в C# мне не удалось получить адекватные результаты. В частности, сумма десяти нулей дает результат, существенно отличающийся от выдачи самой Keras модели после обучения.

Тем не менее не исключаю собственный косяк. И пока остаюсь сторонником прямого подхода - создание микросервисов с flask+keras, чтобы не заниматься в бою отладкой глюков преобразования моделей.
Tags: , ,