Недавно завершился «Deep Learning in Natural Language Processing», открытый образовательный курс по обработке естественного языка. По традиции кураторы курса — сотрудники проекта DeepPavlov, открытой библиотеки для разговорного искусственного интеллекта, которую разрабатывают в лаборатории нейронных систем и глубокого обучения МФТИ. Курс проводился при информационной поддержке сообщества Open Data Science. Если нужно больше деталей по формату курса, то вам сюда. Один из ключевых элементов «DL in NLP» — это возможность почувствовать себя исследователем и реализовать собственный проект.
Периодически мы рассказываем на Medium о проектах, которые участники создают в рамках наших образовательных программ, например о том, как построить разговорного оракула. Сегодня мы готовы поделиться итогами весеннего семестрового курса 2020 года.
В этом году мы побили все рекорды по численности курса: в начале февраля записавшихся было около 800 человек. Скажем честно, мы не были готовы к такому количеству участников, поэтому многие моменты придумывали на ходу вместе с ними. Но об этом мы напишем в следующий раз.
Вернемся к участникам. Неужели все окончили курс? Ответ, конечно, очевиден. С каждым новым заданием желающих становилось все меньше и меньше. Как итог — то ли из-за карантина, то ли по другим причинам, но к середине курса осталась только половина. Ну что ж, а дальше пришлось определяться с проектами. В качестве итоговых участниками было заявлено семьдесят работ. А самый популярный проект — Tweet sentiment extraction — девятнадцать команд пытались выполнить задание на Kaggle.
На прошлой неделе мы провели заключительное занятие курса, где несколько команд представили свои проекты. Если вы пропустили открытый семинар, то мы подготовили запись. А ниже мы постараемся кратко описать реализованные кейсы.
Роман Щекин (QtRoS), Денис Грушенцев(evilden), Максим Талиманчук (mtalimanchuk)
Это соревнование — продолжение популярного конкурса от Jigsaw по определению токсичного текста, однако в данном случае тренировка происходит на английских данных, а тестирование — на мультиязыковых (в том числе на русском). Оценка происходит по метрике ROC AUC. Команда взяла бронзу (132 место из 1621) с оценкой ROC AUC ~ 0,9463. Финальная модель представляла собой ансамбль из классификаторов:
XLMRoberta large с линейным слоем 1024*1 была обучена на базовом датасете с оптимизатором AdamW. Модель USE multilingual использовалась в базовом варианте (обучена на 16 языках) без дообучения. Использование Bert base было возможно за счет автоматического перевода тестового датасета на английский язык. Обучающая выборка была расширена за счет дополнительных датасетов.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
Никита Балаганский
Как известно, модели на основе архитектуры BERT, добиваясь впечатляющих оценок качества, все же сильно отстают по производительности. Это связано с тем, что BERT — модель с больших количеством весов. Есть несколько способов уменьшения модели, один из них — дистилляция. Идея дистилляции — создать модель «студента» меньшего размера, которая бы повторяла поведение большой модели — «учителя». Тренировка русской модели студента проходила на четырех картах 1080ti в течение 100 часов, на датасете новостей. В итоге модель студента получилась в 1,7 раз меньше, чем оригинальна модель. Сравнение качества моделей студента и учителя было произведено на датасете для определения эмоциональной окраски текста Mokoron. Как результат, модель студента показала сопоставимое качество с моделью учителя. Скрипт тренировки был написан с применением пакета catalyst. Подробнее о проекте можно почитать на Medium.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
Картинка: rasa.com
Илья Сироткин, Юрий Зеленский, Екатерина Карпова
Все началось с поста в ODS от Екатерины Карповой. Идея была достаточно амбициозная — создать автоответчик на вопросы в ODS slack community на основе собранного датасета вопросов и ответов. Однако предварительный анализ выявил, что большинство из вопросов достаточно уникальны, и создание размеченной тестовой выборки для оценки качества — задача довольно трудоемкая. Поэтому было принято решение для начала создать классификатор для определения принадлежности задаваемого вопроса к slack-каналу ODS. Он бы помог новичкам ODS задавать вопросы в соответствующей теме каналов. В качестве оценки качества была выбрана метрика pwROC-AUC.
В рамках проекта был произведен сравнительный анализ популярных моделей классификации текстов. Лучшая из них — модель на основе RuBERT от DeepPavlov — показала качество 0,995 pwROC-AUC. Такие высокие цифры качества модели свидетельствуют о высокой степени разделения (и разделимости) исходных данных. Единственный канал, вызывающий затруднения у всех опробованных моделей, — _call_4_colaboration. Но почему именно он, выяснить пока не удалось.
Расправившись с этим заданием, команда не оставляет надежд вернуться к изначальной задаче ответов на вопросы пользователей ODS.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
Дмитрий Бунин
В рамках данного проекта решалась задача определения тональности относительно заданного объекта в тексте (задача С из конкурса Dialogue Evaluation 2015). В качестве датасетов использовались как русские, так и английские данные. В своей основе сравнивались современные модели на основе архитектур ELMо (из пакета RusVectores) и BERT (из пакета DeepPavlov). Модель на основе ELMо + CNN на русском языке показала сопоставимое качество с лучшей моделью из соревнования, несмотря на небольшую тренировочную выборку и сильный дисбаланс данных.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
Кирилл Герасимов
По условию соревнования, задача состояла в выделении ключевого слова или фразы из текста твита, которые бы определяли настроение этого твита. В качестве метрики качества использовалось значение word-level Jaccard Score. В этом соревновании все участники столкнулись с шумными данных и неоднозначной разметкой. В качестве базовой модели командой использовалась модель из публичного ноутбука на основе RoBERTa-base. Эта модель использует подход reading comprehension, при котором выделяются начало и конец ключевой фразы (с обязательным условием, чтобы конец был после начала). Согласно принятой традиции, ансамбль разнообразных моделей показывал скоры лучше, чем отдельные модели. Как результат, бронза (135 место из 2100). По опыту победителя соревнования, двухуровневое ансаблирование дает еще лучшие скоры.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
Михаил Тетерин и Леонид Морозов
Цель этого проекта — улучшение метрик качества на трех задачах cоревнования AI Journey 2019 (автоматическое решение ЕГЭ), а именно:
По всем трем задачам удалось превзойти лучшее решение на соревновании. Во многом улучшения обусловлены использованием дополнительных данных для обучения. В решениях лучшее качество показали модели на основе RuBERT от DeepPavlov.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
В этой статье мы постарались рассказать про часть проектов, которые были представлены на семинаре, но их, конечно же, было больше.
Спасибо всем, кто принимал активное участие в курсе и не сдался. Ну а тем, кто только учится и ищет интересные задачи в области NLP, мы рекомендуем рассмотреть DeepPavlov Contribute project. Будущее Conversational AI в ваших руках!
Периодически мы рассказываем на Medium о проектах, которые участники создают в рамках наших образовательных программ, например о том, как построить разговорного оракула. Сегодня мы готовы поделиться итогами весеннего семестрового курса 2020 года.
Немного данных и аналитики
В этом году мы побили все рекорды по численности курса: в начале февраля записавшихся было около 800 человек. Скажем честно, мы не были готовы к такому количеству участников, поэтому многие моменты придумывали на ходу вместе с ними. Но об этом мы напишем в следующий раз.
Вернемся к участникам. Неужели все окончили курс? Ответ, конечно, очевиден. С каждым новым заданием желающих становилось все меньше и меньше. Как итог — то ли из-за карантина, то ли по другим причинам, но к середине курса осталась только половина. Ну что ж, а дальше пришлось определяться с проектами. В качестве итоговых участниками было заявлено семьдесят работ. А самый популярный проект — Tweet sentiment extraction — девятнадцать команд пытались выполнить задание на Kaggle.
Подробнее про представленные проекты
На прошлой неделе мы провели заключительное занятие курса, где несколько команд представили свои проекты. Если вы пропустили открытый семинар, то мы подготовили запись. А ниже мы постараемся кратко описать реализованные кейсы.
Kaggle Jigsaw: Multilingual Toxic Comment Classification
Роман Щекин (QtRoS), Денис Грушенцев(evilden), Максим Талиманчук (mtalimanchuk)
Это соревнование — продолжение популярного конкурса от Jigsaw по определению токсичного текста, однако в данном случае тренировка происходит на английских данных, а тестирование — на мультиязыковых (в том числе на русском). Оценка происходит по метрике ROC AUC. Команда взяла бронзу (132 место из 1621) с оценкой ROC AUC ~ 0,9463. Финальная модель представляла собой ансамбль из классификаторов:
- XLMRoberta large
- Naive Bayes
- Bert base
- Bert base multilingual
- USE multilingual
XLMRoberta large с линейным слоем 1024*1 была обучена на базовом датасете с оптимизатором AdamW. Модель USE multilingual использовалась в базовом варианте (обучена на 16 языках) без дообучения. Использование Bert base было возможно за счет автоматического перевода тестового датасета на английский язык. Обучающая выборка была расширена за счет дополнительных датасетов.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
On Bert Distillation
Никита Балаганский
Как известно, модели на основе архитектуры BERT, добиваясь впечатляющих оценок качества, все же сильно отстают по производительности. Это связано с тем, что BERT — модель с больших количеством весов. Есть несколько способов уменьшения модели, один из них — дистилляция. Идея дистилляции — создать модель «студента» меньшего размера, которая бы повторяла поведение большой модели — «учителя». Тренировка русской модели студента проходила на четырех картах 1080ti в течение 100 часов, на датасете новостей. В итоге модель студента получилась в 1,7 раз меньше, чем оригинальна модель. Сравнение качества моделей студента и учителя было произведено на датасете для определения эмоциональной окраски текста Mokoron. Как результат, модель студента показала сопоставимое качество с моделью учителя. Скрипт тренировки был написан с применением пакета catalyst. Подробнее о проекте можно почитать на Medium.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
Картинка: rasa.com
Open Data Science Question Answering
Илья Сироткин, Юрий Зеленский, Екатерина Карпова
Все началось с поста в ODS от Екатерины Карповой. Идея была достаточно амбициозная — создать автоответчик на вопросы в ODS slack community на основе собранного датасета вопросов и ответов. Однако предварительный анализ выявил, что большинство из вопросов достаточно уникальны, и создание размеченной тестовой выборки для оценки качества — задача довольно трудоемкая. Поэтому было принято решение для начала создать классификатор для определения принадлежности задаваемого вопроса к slack-каналу ODS. Он бы помог новичкам ODS задавать вопросы в соответствующей теме каналов. В качестве оценки качества была выбрана метрика pwROC-AUC.
В рамках проекта был произведен сравнительный анализ популярных моделей классификации текстов. Лучшая из них — модель на основе RuBERT от DeepPavlov — показала качество 0,995 pwROC-AUC. Такие высокие цифры качества модели свидетельствуют о высокой степени разделения (и разделимости) исходных данных. Единственный канал, вызывающий затруднения у всех опробованных моделей, — _call_4_colaboration. Но почему именно он, выяснить пока не удалось.
Расправившись с этим заданием, команда не оставляет надежд вернуться к изначальной задаче ответов на вопросы пользователей ODS.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
Russian Aspect-Based Sentiment Analysis
Дмитрий Бунин
В рамках данного проекта решалась задача определения тональности относительно заданного объекта в тексте (задача С из конкурса Dialogue Evaluation 2015). В качестве датасетов использовались как русские, так и английские данные. В своей основе сравнивались современные модели на основе архитектур ELMо (из пакета RusVectores) и BERT (из пакета DeepPavlov). Модель на основе ELMо + CNN на русском языке показала сопоставимое качество с лучшей моделью из соревнования, несмотря на небольшую тренировочную выборку и сильный дисбаланс данных.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
Kaggle: Tweet Sentiment Extraction
Кирилл Герасимов
По условию соревнования, задача состояла в выделении ключевого слова или фразы из текста твита, которые бы определяли настроение этого твита. В качестве метрики качества использовалось значение word-level Jaccard Score. В этом соревновании все участники столкнулись с шумными данных и неоднозначной разметкой. В качестве базовой модели командой использовалась модель из публичного ноутбука на основе RoBERTa-base. Эта модель использует подход reading comprehension, при котором выделяются начало и конец ключевой фразы (с обязательным условием, чтобы конец был после начала). Согласно принятой традиции, ансамбль разнообразных моделей показывал скоры лучше, чем отдельные модели. Как результат, бронза (135 место из 2100). По опыту победителя соревнования, двухуровневое ансаблирование дает еще лучшие скоры.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
Автоматическое решение ЕГЭ
Михаил Тетерин и Леонид Морозов
Цель этого проекта — улучшение метрик качества на трех задачах cоревнования AI Journey 2019 (автоматическое решение ЕГЭ), а именно:
- поиск главной информации в тексте;
- определение значения слова в заданном контексте;
- расстановка знаков препинания в предложениях.
По всем трем задачам удалось превзойти лучшее решение на соревновании. Во многом улучшения обусловлены использованием дополнительных данных для обучения. В решениях лучшее качество показали модели на основе RuBERT от DeepPavlov.
Презентация проекта доступна по ссылке.
GitHub проекта доступен по этой ссылке.
В этой статье мы постарались рассказать про часть проектов, которые были представлены на семинаре, но их, конечно же, было больше.
Спасибо всем, кто принимал активное участие в курсе и не сдался. Ну а тем, кто только учится и ищет интересные задачи в области NLP, мы рекомендуем рассмотреть DeepPavlov Contribute project. Будущее Conversational AI в ваших руках!