Все начинается с вопроса…

Как мы можем выделить как можно меньше человеческой силы для маркировки данных?

Маркировка обучающих данных становится все более узким местом в развертывании систем машинного обучения. (Snorkel, arXiv:1711.10160) У нас было много данных для нашей модели НЛП, но без маркировки. Людям-аннотаторам было бы дорого и долго маркировать сотни тысяч предложений.

Этот исследовательский проект — Astron решает эту проблему, используя идею маркировки функций, вдохновленную «Snorkel», но больше фокусируется на упрощении и стандартизации процесса. Astron требует, чтобы люди-аннотаторы размечали небольшую часть данных и генерировали дополнительные размеченные данные.

Исследования показывают, что Astron может маркировать в среднем 15–20 % данных с точностью более 80 %, используя 5 % данных, помеченных человеком.

Краткая информация об Astron:

Астрон — это греческое название звезд. Если рассматривать пул данных как Вселенную, а помеченные данные как Солнце. Звезды — «Астрон» освещены Солнцем, поэтому у нас своя система маркировки! (Часть меня считает, что это имя — самая крутая часть этого проекта)

Что мы хотим от Astron?

(Пост в блоге на Snorkel: https://towardsdatascience.com/introduction-snorkel-27e4b0e6ecff)

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

Как работает функция Label в Astron?

Так же просто, как: если «a» находится впредложении1, топредложение1 классифицируется как…

Например, для метки «ВКУС» у нас есть функция метки: ['лед', 'сливки'], затем предложение: «Я хочу шоколадное мороженое» будет классифицирован как «ВКУС».

(Подробности о том, как мы применяем функции меток, см. в нашем репозитории на github: https://github.com/frankyan1119/Astron).

Производительность Astron:

Внутренний поток Astron:

Демонстрация:

Используя Набор данных категории новостей (https://www.kaggle.com/rmisra/news-category-dataset)

Подготовка данных: мы добавляем «Заголовок» и «Краткое описание» в один столбец, и набор данных становится:

Имеется 42 метки с 200853 строками данных.

Для этой демонстрации мы используем только данные с Label = «МИРОВЫЕ НОВОСТИ» и «ВКУС».

Во-первых, чтобы получить информативные ngrams как LF, нам нужно изменить «Content»:

Порядок этого процесса действительно важен!

Например: «США» — очень информативная униграмма для политического содержания. Но если бы мы удаляли неалфавитные буквы перед удалением стоп

слов, сша становится нас, которое будет удалено как стоп-слово (https://www.ranks.nl/stopwords).

Кроме того, обратите внимание, что вместо замены всех неалфавитных символов пробелом мы удаляем неалфавитные символы и сохраняем все существующие пробелы.

символы. В противном случае «нас» превратится в «нас», что потеряет свое первоначальное значение.

Теперь, с измененными данными, мы разделяем данные на два набора (с опцией стратификации, чтобы метки имели одинаковое распределение в двух наборах): 5% обучать (сохранять метки), 95% тестировать (удалять метки).

Время запустить систему!

Это только начало проекта Astron. Следующими целями будут:

  1. Исследуйте производительность Astron, используя больше лейблов
  2. Улучшите существующую логику LF (добавьте больше типов LF на основе правил)

Спасибо за уделенное время! Отзывы и комментарии приветствуются!

Ссылка на код: https://github.com/frankyan1119/Astron