Как стать автором
Обновить
111
Карма
26
Рейтинг
Давид Дале @cointegrated

Разработчик / Аналитик / Data Scientist / NLPшник

Рейтинг русскоязычных энкодеров предложений

Python *Семантика *Машинное обучение *Natural Language Processing *

Энкодер предложений (sentence encoder) – это модель, которая сопоставляет коротким текстам векторы в многомерном пространстве, причём так, что у текстов, похожих по смыслу, и векторы тоже похожи. Обычно для этой цели используются нейросети, а полученные векторы называются эмбеддингами. Они полезны для кучи задач, например, few-shot классификации текстов, семантического поиска, или оценки качества перефразирования.

Но некоторые из таких полезных моделей занимают очень много памяти или работают медленно, особенно на обычных CPU. Можно ли выбрать наилучший энкодер предложений с учётом качества, быстродействия, и памяти? Я сравнил 25 энкодеров на 10 задачах и составил их рейтинг. Самой качественной моделью оказался mUSE, самой быстрой из предобученных – FastText, а по балансу скорости и качества победил rubert-tiny2. Код бенчмарка выложен в репозитории encodechka, а подробности – под катом.

Читать далее
Всего голосов 26: ↑26 и ↓0 +26
Просмотры 3.2K
Комментарии 14

Нейросети для Natural Language Inference (NLI): логические умозаключения на русском языке

Python *Семантика *Программирование *Машинное обучение *Natural Language Processing *

NLI (natural language inference) – это задача автоматического определения логической связи между текстами. Обычно она формулируется так: для двух утверждений A и B надо выяснить, следует ли B из A. Эта задача сложная, потому что она требует хорошо понимать смысл текстов. Эта задача полезная, потому что "понимательную" способность модели можно эксплуатировать для прикладных задач типа классификации текстов. Иногда такая классификация неплохо работает даже без обучающей выборки!

До сих пор в открытом доступе не было нейросетей, специализированных на задаче NLI для русского языка, но теперь я обучил целых три: tiny, twoway и threeway. Зачем эти модели нужны, как они обучались, и в чём между ними разница – под катом.

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 9.8K
Комментарии 3

Многозадачная модель T5 для русского языка

Python *Семантика *Программирование *Машинное обучение *Natural Language Processing *

Модель T5 – это нейросеть, которая уже обучена хорошо понимать и генерировать текст, и которую можно дообучить на собственную задачу, будь то перевод, суммаризация текстов, или генерация ответа чат-бота.

В этом посте я рассказываю про первую многозадачную модель T5 для русского языка и показываю, как её можно обучить на новой задаче.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 6.1K
Комментарии 4

Лучшие навыки Алисы и советы от их разработчиков

Программирование *Разработка игр *Интерфейсы *Яндекс API *Голосовые интерфейсы

Я уже довольно давно разрабатываю навыки для Яндекс.Алисы, но пока не создал ни одного популярного. Недавно мне стало интересно: а какие навыки становятся самыми популярными, и кто те люди, которые их создают? Чтобы ответить на этот вопрос, я проанализировал каталог Алисы и опросил 20 разработчиков, чьи навыки набрали наибольшее количество оценок "пять". Похоже, что к их советам стоит прислушаться.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 23K
Комментарии 8

Перефразирование русских текстов: корпуса, модели, метрики

Python *Семантика *Программирование *Машинное обучение *Natural Language Processing *

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

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

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 9K
Комментарии 5

Маленький и быстрый BERT для русского языка

Семантика *Программирование *Data Mining *Машинное обучение *Natural Language Processing *
✏️ Технотекст 2021

BERT – нейросеть, способная неплохо понимать смысл текстов на человеческом языке. Впервые появившись в 2018 году, эта модель совершила переворот в компьютерной лингвистике. Базовая версия модели долго предобучается, читая миллионы текстов и постепенно осваивая язык, а потом её можно дообучить на собственной прикладной задаче, например, классификации комментариев или выделении в тексте имён, названий и адресов. Стандартная версия BERT довольно толстая: весит больше 600 мегабайт, обрабатывает предложение около 120 миллисекунд (на CPU). В этом посте я предлагаю уменьшенную версию BERT для русского языка – 45 мегабайт, 6 миллисекунд на предложение. Она была получена в результате дистилляции нескольких больших моделей. Уже есть tinybert для английского от Хуавея, есть моя уменьшалка FastText'а, а вот маленький (англо-)русский BERT, кажется, появился впервые. Но насколько он хорош?

Читать далее
Всего голосов 57: ↑57 и ↓0 +57
Просмотры 21K
Комментарии 17

Cross-nested ordered probit: мой первый разработческий проект, ML и эконометрика

Программирование *Data Mining *Математика *Машинное обучение *Статистика в IT

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

В этом посте я расскажу про Cross-Nested Ordered Probit, забавную модель для предсказания порядковых величин, покажу её код на PyTorch, и порассуждаю о различиях и сходствах машинного обучения и эконометрики.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 2K
Комментарии 3

Культурные рекомендации: опыт московского хакатона

Программирование *Хакатоны Машинное обучение *Natural Language Processing *

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 1.5K
Комментарии 2

Как предсказать гипероним слова (и зачем). Моё участие в соревновании по пополнению таксономии

Python *Алгоритмы *Хакатоны Машинное обучение *Natural Language Processing *

Как может машина понимать смысл слов и понятий, и вообще, что значит — понимать? Понимаете ли вы, например, что такое спаржа? Если вы скажете мне, что спаржа — это (1) травянистое растение, (2) съедобный овощ, и (3) сельскохозяйственная культура, то, наверное, я останусь убеждён, что вы действительно знакомы со спаржей. Лингвисты называют такие более общие понятия гиперонимами, и они довольно полезны для ИИ. Например, зная, что я не люблю овощи, робот-официант не стал бы предлагать мне блюда из спаржи. Но чтобы использовать подобные знания, надо сначала откуда-то их добыть.


В этом году компьютерные лингвисты организовали соревнование по поиску гиперонимов для новых слов. Я тоже попробовал в нём поучаствовать. Нормально получилось собрать только довольно примитивный алгоритм, основанный на поиске ближайших соседей по эмбеддингам из word2vec. Однако этот простой алгоритм каким-то образом оказался наилучшим решением для поиска гиперонимов для глаголов. Послушать про него можно в записи моего выступления, а если вы предпочитаете читать, то добро пожаловать под кат.


Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Просмотры 6.7K
Комментарии 5

Хакатон в Симферополе, Яндекс.Диалоги и законы чат-бото-техники

Яндекс API *Хакатоны Natural Language Processing *

1 февраля в Симферополе прошёл хакатон по разработке навыков для Алисы. Местные фронтенд-разработчики взялись его организовать, а Яндекс предоставил место. Несмотря на то, что участники создавали голосовые интерфейсы впервые, за день было создано больше десятка работающих прототипов, и некоторые из них даже опубликовались.


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



На фотографии пара участников хакатона и затылок Сегаловича

Читать дальше →
Всего голосов 23: ↑12 и ↓11 +1
Просмотры 1.6K
Комментарии 4

Как сжать модель fastText в 100 раз

Python *Data Mining *Алгоритмы *Машинное обучение *Natural Language Processing *

Модель fastText — одно из самых эффективных векторных представлений слов для русского языка. Однако её прикладная польза страдает из-за внушительных (несколько гигабайт) размеров модели. В этой статье мы показываем, как можно уменьшить модель fastText с 2.7 гигабайт до 28 мегабайт, не слишком потеряв в её качестве (3-4%). Спойлер: квантизация и отбор признаков работают хорошо, а матричные разложения — не очень. Также мы публикуем пакет на Python для этого сжатия и примеры компактной модели для русских слов.


Читать дальше →
Всего голосов 43: ↑43 и ↓0 +43
Просмотры 16K
Комментарии 4

Создание stateful навыка для Алисы на serverless функциях Яндекс.Облака и Питоне

Python *Программирование *Яндекс API *Облачные сервисы Голосовые интерфейсы
Tutorial

Начнём с новостей. Вчера Яндекс.Облако анонсировало запуск сервиса бессерверных вычислений Yandex Cloud Functions. Это значит: ты пишешь только код своего сервиса (например, веб-приложения или чатбота), а Облако само создаёт и обслуживает виртуальные машины, где он запускается, и даже реплицирует их, если возрастает нагрузка. Думать вообще не надо, очень удобно. И плата идёт только за время вычислений.


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


Но есть пара нюансов. Во-первых, ваш питонячий код может требовать каких-то зависимостей, и затаскивать их в Облако — нетривиально. Во-вторых, любому нормальному чатботу нужно хранить где-то состояние диалога (stateful поэтому); как сделать это в бессерверной функции проще всего? В третьих, а как вообще можно быстро-грязно написать навык для Алисы или вообще какого-то бота с ненулевым сюжетом? Об этих нюансах, собственно, статья.


image
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 6.6K
Комментарии 8

Сэмплирование с температурой

Математика *Машинное обучение *Статистика в IT Natural Language Processing *

Недавно натолкнулся на вопрос в чате ODS: почему алгоритм, генерирующий текст буква-за-буквой, сэмплит буквы не из p (вектор вероятностей следующей буквы, предсказанный языковой моделью), а из p'=softmax(log(p)/t) (где t — это ещё какой-то непонятный положительный скаляр)?


Быстрый и непонятный ответ: t — это "температура", и она позволяет управлять разнообразием генерируемых текстов. А ради длинного и детального ответа, собственно, и написан этот пост.

Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 2.4K
Комментарии 0

Создание простого разговорного чатбота в python

Python *Data Mining *Машинное обучение *Natural Language Processing *
Tutorial
Как вы думаете, сложно ли написать на Python собственного чатбота, способного поддержать беседу? Оказалось, очень легко, если найти хороший набор данных. Причём это можно сделать даже без нейросетей, хотя немного математической магии всё-таки понадобится.

Идти будем маленькими шагами: сначала вспомним, как загружать данные в Python, затем научимся считать слова, постепенно подключим линейную алгебру и теорвер, и под конец сделаем из получившегося болтательного алгоритма бота для Телеграм.

Этот туториал подойдёт тем, кто уже немножко трогал пальцем Python, но не особо знаком с машинным обучением. Я намеренно не пользовался никакими nlp-шными библиотеками, чтобы показать, что нечто работающее можно собрать и на голом sklearn.



Читать дальше →
Всего голосов 30: ↑29 и ↓1 +28
Просмотры 36K
Комментарии 20

How linear algebra is applied in machine learning

Математика *Машинное обучение *

When you study an abstract subject like linear algebra, you may wonder: why do you need all these vectors and matrices? How are you going to apply all this inversions, transpositions, eigenvector and eigenvalues for practical purposes?


Well, if you study linear algebra with the purpose of doing machine learning, this is the answer for you.


In brief, you can use linear algebra for machine learning on 3 different levels:


  • application of a model to data;
  • training the model;
  • understanding how it works or why it does not work.

drawing
Read more →
Всего голосов 49: ↑37 и ↓12 +25
Просмотры 14K
Комментарии 39

Машинное обучение и экструдер полипропилена: история 3 места на хакатоне Сибура

Python *Data Mining *Хакатоны Машинное обучение *Прототипирование *
Хакатон "Цифровой завод", организованный Сибуром и AI Community, состоялся на прошлых выходных. Одна из двух задач хакатона была на тему predictive maintenance — нужно было предсказывать проблемы в работе экструдера. Её мы и решили. Рассказ сосредоточен в основном на data science'ной части решения, и о том, как нам удалось научиться неплохо прогнозировать довольно редкие события.


Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 12K
Комментарии 11

Нужно ли бояться несбалансированности классов?

Data Mining *Алгоритмы *Математика *Машинное обучение *

В сети есть множество постов и ресурсов, которые учат нас бороться с несбалансированностью классов (class imbalance) в задаче классификации. Обычно они предлагают методы сэмплирования: искусственно дублировать наблюдения из редкого класса, или выкинуть часть наблюдений из популярного класса. Этим постом я хочу прояснить, что «проклятие» дисбаланса классов – это миф, важный лишь для отдельных типов задач.


Читать дальше →
Всего голосов 22: ↑19 и ↓3 +16
Просмотры 19K
Комментарии 4

Нужно ли пытаться полюбить математику?

Математика *Учебный процесс в IT Карьера в IT-индустрии

Математика позволяет достигать успеха: запускать ракеты, обучать AI, и так далее. Самыми качественными кадрами считаются выпускники математических специальностей. Молодые работники, студенты и школьники, которые не идеально решают тренировочные задачи, часто комплексуют по этому поводу. Такие люди обычно переживают, что, если бы они могли полюбить и понять математику, то их жизнь изменилась бы к лучшему, но им этого, увы, "не дано".


Объясняю, почему переживать и насиловать себя не надо.


Читать дальше →
Всего голосов 35: ↑15 и ↓20 -5
Просмотры 27K
Комментарии 70

Как обучть мдль пнмть упртые скрщня

Python *Data Mining *Алгоритмы *Математика *Машинное обучение *

Недавно я натолкнулся на вопрос на Stackoverflow, как восстанавливать исходные слова из сокращений: например, из wtrbtl получать water bottle, а из bsktballbasketball. В вопросе было дополнительное усложнение: полного словаря всех возможных исходных слов нет, т.е. алгоритм должен быть в состоянии придумывать новые слова.


Вопрос меня заинтриговал, и я полез разбираться, какие алгоритмы и математика лежат в основе современных опечаточников (spell-checkers). Оказалось, что хороший опечаточник можно собрать из n-граммной языковой модели, модели вероятности искажений слов, и жадного алгоритма поиска по лучу (beam search). Вся конструкция вместе называется модель зашумлённого канала (noisy channel).


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


Читать дальше →
Всего голосов 88: ↑87 и ↓1 +86
Просмотры 37K
Комментарии 17

Как я парсил Хабр, часть 1: тренды

Python *Визуализация данных Исследования и прогнозы в IT Веб-аналитика *

Когда был доеден новогодний оливье, мне стало нечего делать, и я решил скачать себе на компьютер все статьи с Хабрахабра (и смежных платформ) и поисследовать.


Получилось несколько интересных сюжетов. Первый из них — это развитие формата и тематики статей за 12 лет существования сайта. Например, достаточно показательна динамика некоторых тем. Продолжение — под катом.


Читать дальше →
Всего голосов 62: ↑62 и ↓0 +62
Просмотры 21K
Комментарии 45
1

Информация

В рейтинге
185-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность