Всем привет. На связи Игорь Буянов, старший разработчик в MTS AI. Этот пост — текстовый вариант моего доклада, с которым я выступал в прошлую пятницу на Pycon 2024. Расскажу о том, как мы оптимизировали параметры аугментаций для текстовых данных и что из этого получилось. Текст рассчитан на широкий круг читателей, поэтому если вы слышите про аугментации впервые — не пугайтесь, разберемся.
NLP-разработчик (MTS AI)
Как использовать метод Дэвида-Скина для агрегации разметки. Разбираем по шагам
Всем привет. Открываю серию статей, посвященную агрегации разметки. Этим вопросом я активно занимался, пока работал в нашем центре компетенций по работе с данными: нам нужен был механизм агрегации разметки из разных задач. По пути накопил материалов и, причесав, делюсь с вами.
В этой части я расскажу про модель Дэвида-Скина, которая заложила основы для многих методов агрегации разметки и является второй по значимости после голосования большинством. Многие создатели проектов следуют этому методу для повышения качества данных. Изначально он был разработан в 1970-х для вероятностного моделирования медицинских обследований. Именно поэтому разберем этот метод на примере с докторами.
Падаем в кроличью нору. Ищем способ характеризовать текстовые датасеты
Всем привет! На связи Игорь Буянов, разработчик в команде разметки MTS AI. Сегодня я поделюсь с вами своими наработками, появившимися во время изучения метрик оценки генерации данных. Когда я только пришел в команду разметки, эта задача была особо актуальной - нас тогда просили нагенерить данные под тестирование информационного бота по COVID. Дело в том, что тестирование результатов выполнялось вручную, что значительно замедляло работу. Каких-либо автоматических метрик оценки качества генерации тестовых данных не существовало.
В какой-то момент мне надоело это терпеть, и я решил посмотреть, а как качество текстов оценивают разработчики языковых моделей. У них точно есть перплексия, может, есть что-то еще.
Спустя время, проведенное за штудированием статей, я нашел кандидата среди известных метрик для оценки качества генерации, но кроме того, к своему удивлению, у меня появилось несколько теоретических тезисов о качестве данных вообще. В этом посте я делюсь ими с сообществом в надежде на дальнейшее обсуждение. Для лучшего понимания дальнейшего текста рекомендую прочитать эту статью.
О когезии и когерентности
В этом посте я собрал все свои заметки, которые собрал при изучении лингвистических явлений, таких как когезия, когерентность и связь между ними, а также лексические цепи. В конце вас ждет пара интересных алгоритмов: вычисление этих самых лексических цепей и генерация саммари на их основе.
Мы в город изумрудный идем дорогой трудной. Ваш компас в мир NLP
Всегда завидовал, что существует ресурс roadmap.sh, где есть разные дорожные карты для разработчиков, а для MLщиков, NLP в частности, нет. Устал я это терпеть и решил сделать сам. С другой стороны, меня интересовали вопросы: а NLP Уngineer это кто? А NLP Research engineer это уже другое? А это то же самое, что NLP Scientis? Чтобы хоть немного разобраться, я решил посмотреть, а что вообще сейчас требуется в вакансиях, где в заголовке фигурирует NLP. В результате вместо просто дорожной карты, получилось собрать еще парочку интересных диаграмм. Надеюсь тем, кто только смотрит в сторону NLP, она поможет сориентироваться, всем HR поможет в построении диаграмм компетенций, а специалистам поможет оценивать кандидатов на собеседовании.
Разбираемся, как измерять разнообразие слов
Привет в Новом году. Я тут добрался на праздниках до одной темы, которая пылится у меня уже полгода в закладках. Поговорим сегодня о метриках лексического разнообразия. Эти метрики показывают насколько богат текст на разные слова, помогая нам оценить его сложность. В этой небольшой заметке я кратко расскажу историю вопроса, о современных метриках, а в конце покажу результаты предварительных экспериментов. Тетрадка доступна по ссылке.
I never asked for this. Как понять, на что способен аугментатор текстов
Привет, я Буянов Игорь. Разработчик в команде разметки MTS AI. Сегодня я вам расскажу о способе понять, на что способен ваш аугментатор текста и в каких случаях его лучше использовать.
История создания этой методики началась с задачи текстовой генерации, в которой разметчики должны писать тексты под определенный класс. Такой отчаянный способ создания данных, когда их нет совсем. В раздумьях о том, как облегчить труд разметчиков, мне пришла идея:
что если разметчики будут писать не весь объем текстов, а, скажем, только некоторую часть, пусть и большую, а меньшую добивать с помощью аугментаторов. Однако, как убедиться, что тексты, полученные от аугментатора, хотя бы соответствуют тематике класса? Ко всем ли текстам можно применять аугментатор и ожидать, что все будет работать как надо? Другими словами, надо получить характеристику аугментатора, чтобы знать, чего от него можно ожидать.
В этой небольшой заметке я покажу простую и довольно быструю, хоть и ручную, методику оценки текстовых аугментаторов.
Ныряем со Сноркелем в море данных. Туториал по фреймворку для программирования датасетов
Привет. Я Игорь Буянов, старший разработчик группы разметки данных MTS AI. Я люблю датасеты и все методы, которые помогают их делать быстро и качественно. Недавно рассказывал о том, как делать иерархически датасет из Википедии. В этом посте хочу рассказать вам о Сноркеле - фреймворке для программирования данных (data programming). Познакомился я с ним случайно несколько лет назад, и меня поразил этот подход, который заключается в использовании разных эвристик и априорных знаний для автоматической разметки датасетов. Проект стартовал в Стэнфорде как инструмент для помощи в разметке датасетов для задачи information extraction, а сейчас разработчики делают платформу для пользования внешними заказчиками.
Сноркель может существенно сократить время на проверку какой-либо идеи, когда данных мало или их нет совсем, или увеличить эффективность процесса создания качественного датасета, как это потребовалось в проекте медицинского чат-бота, про который почитать можно здесь.
В этом посте я подготовил туториал, который наглядно покажет, как работать со Сноркелем, а также кратко объясню теоретические аспекты его работы.
Как мы с помощью NLP облегчаем поиск людей с суицидальными наклонностями
В этой статье я бы хотел рассказать о совместной работе с @elizavetakluchikova и командой над тем, как бы применяем машинное обучение для облегчения поиска и оценки людей с суицидальными наклонностями по постам в социальных сетях, в частности, в Твиттере.
Прежде всего, мы отсылаем читателя к предыдущей статье, где рассказывалось о суицидальных играх, о команде людей, которая за шиворот вытаскивает детей из петли или с подоконника, а также о проблемах, с которыми сталкивается команда. Я прочитал эту статью и подумал, что мог бы помочь им, применив свои знания в обработке естественного языка. В результате работы, был собран датасет, который можно скачать здесь, а также была написана научная статья, которая была опубликована на конференции Диалог 2022.
Этот же пост был написан совместно с Лизой, где мы углубленно рассказываем о психологической подоплеке работы, а также о некоторых деталях работы, которые не были упомянуты в статье.
Как я извлекал иерархию статей Википедии для задач NLP
Привет, я Игорь Буянов, работаю в MTS AI старшим разработчиком в департаменте машинного обучения в команде разметки и сбора данных.
В этом руководстве я покажу, как на основе Википедии можно сделать текстовый датасет, метки которго будут иметь иерархию. Необходимость в таком датасете возникла при тестировании различных подходов к эксплуатации иерархичности меток [3]. Иерархией меток могут представлены интенты, которые распознает чат-бот при запросе пользователя: является ли обращение пользователя заявлением о проблем с медленным интернетом или тем, что он вообще отсутствует. Общим классом здесь будет интернет, а подклассом будет скорость и отсутствие интернета, соответственно. Материалы доступны на нашем гитхабе.
Скажу сразу, что большего датасета не получилось, но сам метод показался мне достаточно интересным, чтобы о нём рассказать. Возможно, кому-то этот метод поможет кому-то начать свои исследования. Это руководство — третья часть неформальной серии статей о парсинге Википедии (первая часть, вторая часть).
Шпаргалка по съемке фотографий для фотограмметрии для новичков
Данную шпаргалку я сделал для себя, когда начал въезжать в фотограмметрию. Естественно, я сразу столкнулся с некоторыми типичными ошибками, которые мешали мне сделать самое простое сканирование, поэтому я пошел искать рекомендации по съемке. В процессе поиска и агрегации получился компактный список рекомендаций, подсказывающий именно как снимать. Полагаю, что для эффективного использования, необходимо прочитать, выждать время, еще раз прочитать, и затем уже идти в бой с фоторужьём.
Смещение в датасетах
Эта статья – дистиллят моих разведочных исследований о смещении в датасетах. В ней я расскажу, что такое смещение и как оно влияет на работу модели. А еще – о том, как мы воспринимаем результаты работы модели и какие есть подходы для борьбы со смещением. Детальнее расскажу о двух способах избавления от него.
Смещение в датасетах (артефакты) – нежелательные взаимосвязи между входными и выходными данными, в частности, между признаками и метками, которые могут эксплуатироваться моделями машинного обучения в качестве опоры при предсказании. Часто они возникают там, где совсем не ожидаешь.
Простой пример смещения можно представить следующим образом: нам нужно определить оскорбительные посты в социальной сети. Высока вероятность, что оскорбительные посты будут содержать нецензурные слова и модель будет опираться на них при принятии решения. Некоторые пользователи могут использовать нецензурные слова и в обычных, нейтральных постах. Те же нецензурные слова могут быть использованы и для выражения позитивных эмоций. В результате, модель, обученная на датасете, в котором мало других примеров: нейтральных или позитивных, будет считать пост оскорбительным, когда в нем есть нецензурные слова. Если тестирование модели провести на похожей тестовой выборке, где нецензурные слова представлены только в оскорбительных постах, то тест подтвердит высокое качество модели. При реальном использовании эта модель будет давать ложно положительные срабатывания. Из-за смещения складывается ложное чувство, что модель работает хорошо, но это происходит ровно до того, как она начинает использоваться в реальности.
Обзор методов чистки данных
Приветствую! Меня зовут Игорь Буянов, я NLP-разработчик в команде MTS AI. В рамках рабочих проектов группы обработки естественного языка я провожу исследования в области активного обучения, редукции шума и, в целом, занимаюсь подготовкой и обработкой датасетов.
В этой статье будут рассмотрены методы чистки данных – noise reduction – и результаты тестирования алгоритмов.
Чистка данных – значение и применение
Чистка данных – это процесс удаления шума из датасетов, который появляется в результате неправильно размеченных примеров. Источники такого шума могут быть разными: случайные ошибки аннотатора – человека или машины, которые размечают данные в соответствии с задачей, – неслучайные ошибки из-за плохого понимания задачи или двусмысленного примера, ошибки автоматической разметки.
Несмотря на то, что существует много способов разметки и контроля качества данных, подобный шум всегда будет присутствовать в датасетах. В задачах классификации одна из причин шума – невозможность однозначно провести границу между классами. Для большинства современных моделей наличие шума в данных объемом до 10% – несерьезная проблема. Поэтому, если датасет создан грамотно или найденный набор данных надежен, результат будет удовлетворительным.
Но что делать, если нужно решить специфическую задачу, для которой доступен только один датасет сомнительного качества? Или вам недоступны средства для качественной разметки, вы вынуждены размечать данные вручную и хотите проверить себя? На помощь придут алгоритмы чистки данных.
Парсим Википедию, фильтруя, для задач NLP в 44 строки кода
В этой заметке я хотел бы дополнить эту статью и рассказать, как можно гибче использовать экстрактор Википедии WikiExtractor, фильтруя статьи по категориям.
Разбор статьи о том, как извлечь смыслы из эмбеддингов
tl;dr: Упрощенный разброр статьи, в которой автор предлагает две интересные теоремы, на базе которых он нашел способ как из матрицы эмбеддингов извлечь скрытые векторы смыслов. Приведен гайд о том, как воспроизвести результаты. Ноутбук доступен на гитхабе.
Введение
В этой статье я хочу рассказать об одной потрясной вещи, которую нашел исследователь Санджев Арора в статье Linear Algebraic Structure of Word Senses, with Applications to Polysemy. Она является одной из серии статей, в которых он пытается дать теоретические обоснования свойства эмбеддингов слов. В этой же работае Арора делает предположение о том, что простые эмбеддинги, такие как word2vec или Glove, на самом деле включают в себя несколько значений для одного слова и предлагает способ как можно их восстановить. По ходу статьи я буду стараться придерживаться оригинальных примеров.
Более формально, за обозначим некий вектор эмбединга слова tie, которое может иметь значение узла или галстука, а может быть глаголом "завязать". Арора предполагает, что этот вектор можно записать, как следующую линейную комбинацию
где это одно из возможных значений слова tie, а — коэффициент. Давайте попробуем разобраться, как же так получается.
Оракул, скажи, кем я быть хочу
Здравствуйте, читатели. Я хочу вам представить небольшое исследование, которые провели мы с моим другом полтора года назад, но в виду некоторых обстоятельств оформление затянулось до сего момента. Вопрос, который мы хотели рассмотреть, это можно ли построить такой классификатор, который помог бы молодым людям с выбором профессии.
TL;DR Провели опрос трех психологических тестов: Большая пятерка, эмоциональный интеллект, тест на профессию. Задали вопрос кем работают, нравится ли работа. Провели небольшой EDA. На базе тестов построили несколько классификаторов и лучший сравнили с тестом на профессию, ответы которого учитывались с нюансом. Датасет выложили в открытом доступе.