?

Log in

No account? Create an account

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

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

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

Релиз чатбота 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 )

Тренировка 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 )

неудачная попытка использовать либу 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: , ,

Неудачные эксперименты с triple и contrastive loss архитектурами для определения перефразировок
kelijah

1. Постановка задачи

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

Read more...Collapse )


Сравнение оптимизаторов nadam и rmsprop с помощью F-теста
kelijah
Еще одна серия экспериментов с моделью для векторизации символьного представления слов.
Сравним две штатных реализации оптимизаторов в Keras - rmsprop и nadam. Фиксируем batch_size значением 250, делаем несколько запусков обучения модели для каждого варианта оптимизатора (см. строку 356 в файле wordchar2vector_trainer.py).
ANOVA для сравнения алгоритмов оптимизации...Collapse )

Визуализация влияния batch_size на качество модели wordchar2vector - ч.2
kelijah
В комментарии к предыдущему посту коллега p2004r подсказал замечательную мысль по поводу того, что надо бы смотреть не на количество эпох, а на количество градиентов, которые увидела сетка при обучении. И получается вот такая замечательная картина.

1) Смотрим по-старому, динамика обучения в зависимости от числа эпох:
Read more...Collapse )2) Теперь то же самое, но в зависимости от количества батчей (масштаб по OX сделан криво, поэтому цена деления такая странная - надо домножать на число сэмплов в обучающем датасете):
Read more...Collapse )
То есть начиная с какого-то размера батча (>100 в данном случае) сетка обучается примерно с одинаковым темпом для разных batch_size. Разница только в том, что для каких-то значений обучение обрывается раньше, и максимальная точность не достигается.

Новая тетрадка выложена в репозиторий.

PS: сделан расчет еще для нескольких batch_size и получился вот такой график максимально достижимой точности:
Read more...Collapse )