Category: образование

Неудачная попытка использования XGBRanker и LGBMRanker для задачи определения перефразировки

Под катом - особенности определения синонимичности фраз в языке, использование BERT, метрики для оценки моделей и проблема с задачей ранжирования.
Collapse )

Классификация интентов в чатботе - сравнение моделей ELMO, BERT и char-level linear sklearn

Сравнение выполнялось по f1 weighted метрике на датасете с ~5100 сэмплов через 8-фолдовую кросс-валидацию. Чуть больше 70 интентов с большим дисбалансом.

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

LinearSVC ~0.77
BERT        ~0.815
ELMo        ~0.817
Collapse )

Релиз чатбота 0.0.1 (альфа) - вербальные формы, сценарии и прочее

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

Collapse )

Датасет с сэмплами подлежащее+глагол+предлог+существительное

Обнаружил у себя датасет (файл в репе 3 Мб) с большим списком сэмплов такого вида:
Collapse )
Сэмплы были собраны автоматически из 10Гб корпуса текстов. Некоторые сэмплы содержат неполные предложения ("Я расскажу с позиции"). Я планирую использовать их для обучения модели валидации синтаксиса для чатбота, но, возможно, они будут кому-то полезны и для других языковых моделей.

Текущие задачи, решенные в чатботе плохо или не решенные вообще

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

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

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

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


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

Collapse )

Планы по новой генеративной модели чат-бота ("Машина Хомского")

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

Изменения в грамматическом словаре касательно составных прилагательных

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

Collapse )

Тренировка BERT на русском корпусе: непривычно видеть такую кривую обучения

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

Слишком хороший f1 и roc-auc score в моделях релевантности/синонимичности с triple loss

1. Что выдает модель сама по себе

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

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