разметка текста для машинного обучения

Аннотирование текста для машинного обучения

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Что такое аннотирование текста?

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

Почему это важно?

Зачем мы вообще аннотируем текст? Последние прорывы в сфере NLP выявили нарастающую потребность в текстовых данных для таких областей, как страхование, здравоохранение, банковское дело, телекоммуникации и так далее. Аннотирование текстов необходимо, поскольку оно гарантирует, что целевая считывающая система, в данном случае — модель машинного обучения (ML), сможет воспринимать предоставленную информацию и делать выводы на её основе. Ниже мы подробнее рассмотрим конкретные способы использования, а пока вам следует помнить то, что текстовые данные всё равно остаются данными, почти как изображения или видео, и они так же используются для обучения и тестирования.

Как аннотируется текст: аннотирование текстов для NLP

Список задач, которые учатся выполнять компьютеры, стабильно растёт, однако некоторые области остаются нетронутыми: NLP не является в этом исключением. Без аннотаторов-людей модели не поймут глубины, естественности и сленга, при помощи которых люди управляют и манипулируют языком. Поэтому компании постоянно пользуются помощью живых аннотаторов для обеспечения достаточного качества данных для обучения. К современным ИИ-решениям на основе NLP относятся голосовые помощники, машинные переводчики, умные чат-боты, альтернативные поисковых движки, и список систем продолжает расширяться параллельно с повышением гибкости, обеспечиваемой типами аннотирования текста.

Аннотирование текста для распознавания текста

Визуальное распознавание текста (optical character recognition, OCR) — это извлечение текстовых данных из отсканированных документов или изображений (PDF, TIFF, JPG) в понимаемые моделью данные. Системы OCR предназначены для упрощения доступности информации пользователям. Они помогают в ведении бизнеса и в рабочих процессах, экономят время и ресурсы, которые были бы необходимы для управления данными. После преобразования обработанная OCR текстовая информация может более удобно и просто использоваться компаниями. Достоинствами распознавания текста являются отсутствие необходимости ручного ввода данных, снижение ошибок, повышение продуктивности и т.д.

Подробнее об OCR и областях его применения мы поговорим в отдельной статье. А пока главный вывод будет таким: OCR вместе с NLP — две основные области, сильно зависящие от аннотирования текста.

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Типы аннотирования текста

Наборы данных аннотирования текста обычно представлены в виде выделенного или подчёркнутого текста, по краям которого оставлены заметки. В этом посте мы рассмотрим следующие основные типы аннотирования текста:

Аннотирование сущностей

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

Распознавание именованных сущностей (named entity recognition, NER): NER лучше всего подходит для разметки в тексте ключевой информации, будь то люди, географические точки, часто встречающиеся объекты или персонажи. NER является фундаментальной основой NLP. Google Translate, Siri и Grammarly — прекрасные примеры NLP, использующего NER для понимания текстовых данных.

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

Разметка ключевых фраз: этот способ можно описать как поиск и разметку ключевых слов или фраз в текстовых данных.

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

Сопоставление сущностей

Если аннотирование сущностей помогает находить и извлекать сущности из текста, то сопоставление сущностей, часто называемое сопоставлением именованных сущностей (named entity linking, NEL) — это процесс соединения этих именованных сущностей с более крупными наборами данных. Возьмём для примера предложение «Summer loves ice cream». Задача заключается в том, чтобы определить, что Summer — это имя девушки, а не время года или любая другая сущность, которую потенциально можно назвать Summer. Сопоставление сущностей отличается от NER тем, что NER находит именованную сущность в тексте, но не указывает, что это за сущность.

Классификация текста

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

Классификация документов: присвоение документу одной метки может быть полезным для интуитивной сортировки больших объёмов текстового содержимого.

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

Аннотирование эмоционального настроя

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

Способы применения аннотирования текста

Способы применения аннотирования текста почти столь же повсеместны, как и способы применения аннотирования изображений и видео. Почти каждая область, содержащая текстовые данные, может быть аннотирована и использована для обучения модели:

Здравоохранение

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

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Страхование

Как и в здравоохранении, в области страхования аннотирование текста обеспечивает множество преимуществ.

Банковское дело

Повышение персонализации, улучшение автоматизации, снижение ошибок и адекватное использование ресурсов — всё это становится возможным благодаря модели, способной выполнять следующие задачи:

Телекоммуникации

Аннотированный текст автоматизирует человеческий труд в следующих областях:

Источник

Как подготовить текстовые данные для машинного обучения с помощью scikit-learn

Дата публикации 2017-09-29

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

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

Библиотека scikit-learn предлагает простые в использовании инструменты для выполнения токенизации и извлечения функций из ваших текстовых данных.

В этом руководстве вы узнаете, как именно вы можете подготовить свои текстовые данные для интеллектуального моделирования в Python с помощью scikit-learn.

После завершения этого урока вы узнаете:

разметка текста для машинного обучения. 4005186127. разметка текста для машинного обучения фото. разметка текста для машинного обучения-4005186127. картинка разметка текста для машинного обучения. картинка 4005186127.

Модель Bag-of-Words

Мы не можем работать с текстом напрямую при использовании алгоритмов машинного обучения.

Вместо этого нам нужно преобразовать текст в числа.

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

Простая и эффективная модель для размышления о текстовых документах в машинном обучении называется моделью мешка слова, или BoW.

Модель проста в том, что она отбрасывает всю информацию о порядке в словах и фокусируется на появлении слов в документе.

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

Это модель пакета слов, где нас интересуют только схемы кодирования, которые представляют, какие слова присутствуют или в какой степени они присутствуют в зашифрованных документах без какой-либо информации о порядке.

Есть много способов расширить этот простой метод, оба лучше объяснив, что «слово”И в определении, что кодировать о каждом слове в векторе.

Библиотека scikit-learn предоставляет 3 различные схемы, которые мы можем использовать, и мы кратко рассмотрим каждую.

Количество слов с помощью CountVectorizer

CountVectorizerпредоставляет простой способ как токенизировать коллекцию текстовых документов и создать словарь известных слов, так и кодировать новые документы, используя этот словарь.

Вы можете использовать его следующим образом:

Закодированный вектор возвращается с длиной всего словаря и целым числом для числа раз, которое каждое слово появилось в документе.

Поскольку эти векторы будут содержать много нулей, мы называем их разреженными. Python обеспечивает эффективный способ обработки разреженных векторов вscipy.sparseпакет.

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

Ниже приведен пример использования CountVectorizer для токенизации, построения словарного запаса, а затем кодирования документа.

Выше вы можете видеть, что мы получаем доступ к словарю, чтобы увидеть, что именно было токенизировано, путем вызова:

Мы можем видеть, что все слова были сделаны строчными по умолчанию и что пунктуация была проигнорирована. Эти и другие аспекты токенизации могут быть настроены, и я рекомендую вам просмотреть все варианты вAPI документация,

При выполнении примера сначала печатается словарь, а затем форма закодированного документа. Мы видим, что в словаре есть 8 слов, и поэтому закодированные векторы имеют длину 8.

Затем мы можем видеть, что закодированный вектор является разреженной матрицей. Наконец, мы можем видеть версию массива закодированного вектора, показывающую количество вхождений 1 для каждого слова, кроме (index и id 7), которое имеет вхождение 2.

Важно отметить, что один и тот же векторизатор может использоваться в документах, содержащих слова, не вошедшие в словарь. Эти слова игнорируются, и в результирующем векторе нет подсчета.

Например, ниже приведен пример использования приведенного выше векторизатора для кодирования документа с одним словом в словаре и одним словом, которого нет.

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

Закодированные векторы могут затем использоваться непосредственно с алгоритмом машинного обучения

Частоты слов с TfidfVectorizer

Одна проблема с простыми подсчетами заключается в том, что некоторые слова типа « »Появится много раз, и их большие значения не будут иметь большого значения в закодированных векторах.

Не вдаваясь в математику, TF-IDF являются показателями частоты слов, которые пытаются выделить слова, которые более интересны, например, часто в документе, но не в документах.

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

Используется тот же процесс создания, подгонки и преобразования, что и в CountVectorizer.

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

Из документов извлекается словарь из 8 слов, и каждому слову присваивается уникальный целочисленный индекс в выходном векторе.

Частоты обратных документов рассчитываются для каждого слова в словаре, присваивая наименьшую оценку 1,0 наиболее часто наблюдаемому слову: « »По индексу 7.

Наконец, первый документ кодируется как разреженный массив из 8 элементов, и мы можем просмотреть итоговые оценки каждого слова с различными значениями для « «,»лиса«, а также «собака”Из других слов в словаре.

Баллы нормализуются до значений от 0 до 1, и закодированные векторы документов могут затем использоваться непосредственно с большинством алгоритмов машинного обучения.

Хеширование с помощью HashingVectorizer

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

Это, в свою очередь, потребует больших векторов для кодирования документов и налагает большие требования к памяти и замедляет алгоритмы.

HashingVectorizerКласс реализует этот подход, который можно использовать для последовательного хеширования слов, а затем для токенизации и кодирования документов по мере необходимости.

Пример ниже демонстрирует HashingVectorizer для кодирования одного документа.

Был выбран произвольный вектор фиксированной длины размером 20. Это соответствует диапазону хеш-функции, где небольшие значения (например, 20) могут привести к коллизиям хеш-функции. Вспоминая классы compsci, я полагаю, что есть эвристики, которые вы можете использовать для выбора длины хеша и вероятности коллизии на основе предполагаемого размера словаря.

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

Выполнение примера кодирует образец документа как разреженный массив из 20 элементов.

Дальнейшее чтение

Этот раздел предоставляет больше ресурсов по этой теме, если вы хотите углубиться.

Обработка естественного языка

sciki учиться

API классов

Резюме

В этом уроке вы узнали, как подготовить текстовые документы для машинного обучения с помощью scikit-learn.

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

У вас есть вопросы?
Задайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.

Источник

7 способов получить качественные размеченные данные для машинного обучения

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

Любой data scientist знает, что необученная ML модель бесполезна. Без высококачественных размеченных данных для обучения контролируемое, обучение разваливается; при этом невозможно гарантировать, что модели смогут прогнозировать, классифицировать или каким-то иным образом анализировать интересующее нас явление с хоть какой-нибудь точностью.

разметка текста для машинного обучения. jv 85t4a1l45y0ylbmmp2hvu9gk. разметка текста для машинного обучения фото. разметка текста для машинного обучения-jv 85t4a1l45y0ylbmmp2hvu9gk. картинка разметка текста для машинного обучения. картинка jv 85t4a1l45y0ylbmmp2hvu9gk.

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

Однако разметка — это неблагодарная работа, которой большинство data scientists-ов занимается только в случае абсолютной необходимости. В рейтинге задач data science разметка данных для обучения по престижности находится где-то в самом низу. В экосистеме data science разметка получила (вероятно, несправедливо) репутацию низкоквалифицированной работы для «синих воротничков». Или, как показано в этом забавном эпизоде последнего сезона сериала HBO «Кремниевая долина», разметка данных для обучения — это рутина, которой бессовестный data scientist может заставить бесплатно заниматься ничего не подозревающих юных студентов колледжа.

Из-за всего этого складывается ошибочное впечатление, что data scientist не может получить приемлемых данных для обучения, если не передаст задачу разметки на аутсорс какой-нибудь «фабрике» низкоквалифицированного труда от мира высоких технологий. Это очень неправильное впечатление, потому что, как я говорил в колонке Pattern Curators of the Cognitive Era, наряду с рутинной оценкой, которую сможет выполнить любой из нас (например, «хот-дог перед нами или не хот-дог»), для разметки могут понадобиться мнения очень квалифицированных в соответствующей области специалистов (например, онкологов, решающих, говорят ли результаты биопсии о наличии злокачественных тканей).

Как сказано в этом посте на Medium, монотонная работа — не единственный способ получения и разметки данных для обучения. Его автор Расмус Рот замечает, что есть и другие подходы для создания размеченных обучающих данных, цена которых вполне будет приемлема для вашего бюджета data science. Ниже я вкратце расскажу об этих способах:

Сложные решения, которые должны принимать data scientist-ы, привносят риски и неустойчивость в жизненный цикл процесса контролируемого обучения. Как я писал недавно в посте на Wikibon, выбор способа обучения алгоритмов накладывает постоянное бремя по обслуживанию приложений, потребляющих результаты, выдаваемые вашей аналитической моделью.

Источник

Как работает разметка данных

Сегодня хочу вас обрадовать: вы все уже давно работает на искусственный интеллект. Cейчас объясню почему.

разметка текста для машинного обучения. Skhema razmetki dannykh. разметка текста для машинного обучения фото. разметка текста для машинного обучения-Skhema razmetki dannykh. картинка разметка текста для машинного обучения. картинка Skhema razmetki dannykh.

разметка текста для машинного обучения. Primer razmetki dannykh. разметка текста для машинного обучения фото. разметка текста для машинного обучения-Primer razmetki dannykh. картинка разметка текста для машинного обучения. картинка Primer razmetki dannykh.

разметка текста для машинного обучения. Razmetka vizualnykh dannykh. разметка текста для машинного обучения фото. разметка текста для машинного обучения-Razmetka vizualnykh dannykh. картинка разметка текста для машинного обучения. картинка Razmetka vizualnykh dannykh.

Теперь вы понимаете, почему data labelling— самая трудозатратная задача при создании решений на базе искусственного интеллекта: надо без ошибок разметить тысячи единиц информации и сделать это нужно быстро.

Как и в случае, когда нужно было генерить большой объем программного кода и Индия оказалась самым подходящим ресурсом для этого и стала (и остается) лидером в области оффшорного программирования, так и в случае с разметкой данных основной ресурс находится в Азии. Прежде всего это Китай, в котором миллионы сотрудников, без квалификации или с низкой квалификацией и маленькой заработной платой, ежедневно отсматривают десятки и сотни тысяч данных и размечают ее. Так что старая картинка с шуткой о сервисе распознавания музыкальных треков Shazam, где в огромном зале в наушниках сидят сотрудники и один из них кричит: «Кто-нибудь знает, чья эта песня?» не так уж далека от истины. Каким бы умным ни был искусственный интеллект, он ничто без человека. Смею надеяться, что так будет еще очень долго.

Крупные поставщики инфраструктуры данных также создали хабы для разметки данных. В Штатах лидирует решение от Amazon, Amazon Mechanical Turk, названное в честь уловки 18 века, когда было модно играть в автоматизированные шахматы, хотя в ящике под шахматным столом сидел человек и физически передвигал фигуры. В России более популярна площадка Яндекс.Толока, которая, как и механический турок позволяет свести заказчиков наборов данных, датасетов, и специалистов по разметке данных.

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

Источник

Как решить 90% задач NLP: пошаговое руководство по обработке естественного языка

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

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

Как вам может помочь эта статья

За прошедший год команда Insight приняла участие в работе над несколькими сотнями проектов, объединив знания и опыт ведущих компаний в США. Результаты этой работы они обобщили в статье, перевод которой сейчас перед вами, и вывели подходы к решению наиболее распространенных прикладных задач машинного обучения.

Мы начнем с самого простого метода, который может сработать — и постепенно перейдем к более тонким подходам, таким как feature engineering, векторам слов и глубокому обучению.

После прочтения статьи, вы будете знать, как:

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

Применение машинного обучения для понимания и использования текста

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

Шаг 1: Соберите ваши данные

Примерные источники данных

Любая задача машинного обучения начинается с данных — будь то список адресов электронной почты, постов или твитов. Распространенными источниками текстовой информации являются:

Датасет «Катастрофы в социальных медиа»

Для иллюстрации описываемых подходов мы будем использовать датасет «Катастрофы в социальных медиа», любезно предоставленный компанией CrowdFlower.

Авторы рассмотрели свыше 10 000 твитов, которые были отобраны при помощи различных поисковых запросов вроде «в огне», «карантин» и «столпотворение». Затем они пометили, имеет ли твит отношение к событию-катастрофе (в отличие от шуток с использованием этих слов, обзоров на фильмы или чего-либо, не имеющего отношение к катастрофам).

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

Далее мы будем ссылаться на твиты о катастрофах как «катастрофа», а на твиты обо всём остальном как «нерелевантные».

Метки (Labels)

Наши данные имеют метки, так что мы знаем, к каким категориям принадлежат твиты. Как подчеркивает Ричард Сочер, обычно быстрее, проще и дешевле найти и разметить достаточно данных, на которых будет обучаться модель — вместо того, чтобы пытаться оптимизировать сложный метод обучения без учителя.

Rather than spending a month figuring out an unsupervised machine learning problem, just label some data for a week and train a classifier.

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

Шаг 2. Очистите ваши данные

Правило номер один: «Ваша модель сможет стать лишь настолько хороша,
насколько хороши ваши данные»

Одним из ключевых навыков профессионального Data Scientist является знание о том, что должно быть следующим шагом — работа над моделью или над данными. Как показывает практика, сначала лучше взглянуть на сами данные, а только потом произвести их очистку.
Чистый датасет позволит модели выучить значимые признаки и не переобучиться на нерелевантном шуме.

Далее следует чеклист, который используется при очистке наших данных (подробности можно посмотреть в коде).

Шаг 3. Выберите хорошее представление данных

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

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Улыбающееся лицо, представленное в виде массива чисел

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

One-hot encoding («Мешок слов»)

Естественным путем отображения текста в компьютерах является кодирование каждого символа индивидуально в виде числа (пример подобного подхода — кодировка ASCII). Если мы «скормим» подобную простую репрезентацию классификатору, он будет должен изучить структуру слов с нуля, основываясь лишь на наших данных, что на большинстве датасетов невозможно. Следовательно, мы должны использовать более высокоуровневый подход.

Например, мы можем построить словарь всех уникальных слов в нашем датасете, и ассоциировать уникальный индекс каждому слову в словаре. Каждое предложение тогда можно будет отобразить списком, длина которого равна числу уникальных слов в нашем словаре, а в каждом индексе в этом списке будет хранится, сколько раз данное слово встречается в предложении. Эта модель называется «Мешком слов» (Bag of Words), поскольку она представляет собой отображение полностью игнорирущее порядок слов предложении. Ниже иллюстрация такого подхода.

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Представление предложений в виде «Мешка слов». Исходные предложения указаны слева, их представление — справа. Каждый индекс в векторах представляет собой одно конкретное слово.

Визуализируем векторные представления

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

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

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Визуализация векторных представлений для «мешка слов»

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

Шаг 4. Классификация

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

Разобьем наши данные на обучающую выборку, которую мы будем использовать для обучения нашей модели, и тестовую — для того, чтобы посмотреть, насколько хорошо наша модель обобщается на данные, которые не видела до этого. После обучения мы получаем точность в 75.4%. Не так уж и плохо! Угадывание самого частого класса («нерелеватно») дало бы нам лишь 57%.

Однако, даже если результата с 75% точностью было бы достаточно для наших нужд, мы никогда не должны использовать модель в продакшне без попытки понять ее.

Шаг 5. Инспектирование

Матрица ошибок

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

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

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

Объяснение и интерпретация нашей модели

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

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

«Мешок слов»: значимость слов

Наш классификатор верно нашел несколько паттернов (hiroshima — «Хиросима», massacre — «резня»), но ясно видно, что он переобучился на некоторых бессмысленных терминах («heyoo», «x1392»). Итак, сейчас наш «мешок слов» имеет дело с огромным словарем из различных слов и все эти слова для него равнозначны. Однако, некоторые из этих слов встречаются очень часто, и лишь добавляют шума нашим предсказаниям. Поэтому далее мы постараемся найти способ представить предложения таким образом, чтобы они могли учитывать частоту слов, и посмотрим, сможем ли мы получить больше полезной информации из наших данных.

Шаг 6. Учтите структуру словаря

TF-IDF

Чтобы помочь нашей модели сфокусироваться на значимых словах, мы можем использовать скоринг TF-IDF (Term Frequency, Inverse Document Frequency) поверх нашей модели «мешка слов». TF-IDF взвешивает на основании того, насколько они редки в нашем датасете, понижая в приоритете слова, которые встречаются слишком часто и просто добавляют шум. Ниже приводится проекция метода главных компонент, позволяющая оценить наше новое представление.

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Визуализация векторного представления с применением TF-IDF.

Мы можем наблюдать более четкое разделение между двумя цветами. Это свидетельствует о том, что нашему классификатору должно стать проще разделить обе группы. Давайте посмотрим, насколько улучшатся наши результаты. Обучив другую логистическую регрессию на наших новых векторных представлениях, мы получим точность в 76,2%.

Очень незначительное улучшение. Может, наша модель хотя бы стала выбирать более важные слова? Если полученный результат по этой части стал лучше, и мы не даем модели «мошенничать», то можно считать этот подход усовершенствованием.

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

TF-IDF: Значимость слов

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

Шаг 7. Применение семантики

Word2Vec

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

Чтобы решить данную проблему, нам потребуется захватить семантическое (смысловое) значение слов — это означает, что для нас важно понимать, что слова «хороший» и «позитивный» ближе друг к другу, чем слова «абрикос» и «континент». Мы воспользуемся инструментом Word2Vec, который поможет нам сопоставить значения слов.

Использование результатов предварительного обучения

Word2Vec — это техника для поиска непрерывных отображений для слов. Word2Vec обучается на прочтении огромного количества текста с последующим запоминанием того, какое слово возникает в схожих контекстах. После обучения на достаточном количестве данных, Word2Vec генерирует вектор из 300 измерений для каждого слова в словаре, в котором слова со схожим значением располагаются ближе друг к другу.

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

Отображение уровня предложений

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

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Векторные представления предложений в Word2Vec

Вот визуализация наших новых векторных представлений после использования перечисленных техник:

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Визуализация векторных представлений Word2Vec.

Теперь две группы цветов выглядят разделенными еще сильнее, и это должно помочь нашему классификатору найти различие между двумя классами. После обучения той же модели в третий раз (логистическая регрессия), мы получаем точность в 77,7% — и это наш лучший результат на данный момент! Настало время изучить нашу модель.

Компромисс между сложностью и объяснимостью

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

Для столь небольшого прироста точности, полная потеря возможности объяснить работу модели — это слишком жесткий компромисс. К счастью, при работе с более сложными моделями мы можем использовать интерпретаторы наподобие LIME, которые применяются для того, чтобы получить некоторое представление о том, как работает классификатор.

LIME доступен на Github в виде открытого пакета. Данный интерпретатор, работающий по принципу черного ящика, позволяет пользователям объяснять решения любого классификатора на одном конкретном примере при помощи изменения ввода (в нашем случае — удаления слова из предложения) и наблюдения за тем, как изменяется предсказание.

Давайте взглянем на пару объяснений для предложений из нашего датасета.

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Правильные слова катастроф выбраны для классификации как «релевантные».

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Здесь вклад слов в классификацию выглядит менее очевидным.

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

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

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

Шаг 8. Использование синтаксиса при применении end-to-end подходов

Мы рассмотрели быстрые и эффективные подходы для генерации компактных векторных представлений предложений. Однако, опуская порядок слов, мы отбрасываем всю синтаксическую информацию из наших предложений. Если эти методы не дают достаточных результатов, вы можете использовать более сложную модель, которая принимает целые выражения в качестве ввода и предсказывает метки, без необходимости построения промежуточного представления. Распространенный для этого способ состоит в рассмотрении предложения как последовательности индивидуальных векторов слов с использованием или Word2Vec, или более свежих подходов вроде GloVe или CoVe. Именно этим мы и займемся далее.

разметка текста для машинного обучения. image loader. разметка текста для машинного обучения фото. разметка текста для машинного обучения-image loader. картинка разметка текста для машинного обучения. картинка image loader.

Высокоэффективная архитектура обучения модели без дополнительной предварительной и последующей обработки (end-to-end, источник)

Сверточные нейронные сети для классификации предложений (CNNs for Sentence Classification) обучаются очень быстро и могут сослужить отличную службу в качестве входного уровня в архитектуре глубокого обучения. Несмотря на то, что сверточные нейронные сети (CNN) в основном известны своей высокой производительностью на данных-изображениях, они показывают превосходные результаты при работе с текстовыми данными, и обычно гораздо быстрее обучаются, чем большинство сложных подходов NLP (например, LSTM-сети и архитектуры Encoder/Decoder ). Эта модель сохраняет порядок слов и обучается ценной информации о том, какие последовательности слов служат предсказанием наших целевых классов. В отличии от предыдущих моделей, она в курсе существования разницы между фразами «Лёша ест растения» и «Растения едят Лёшу».

Обучение данной модели не потребует сильно больше усилий по сравнению с предыдущими подходами (смотрите код), и, в итоге, мы получим модель, которая работает гораздо лучше предыдущей, позволяя получить точность в 79,5%. Как и с моделями, которые мы рассмотрели ранее, следующим шагом должно быть исследование и объяснение предсказаний с помощью методов, которые мы описали выше, чтобы убедиться в том, что модель является лучшим вариантом, который мы можем предложить пользователям. К этому моменту вы уже должны чувствовать себя достаточно уверенными, чтобы справиться с последующими шагами самостоятельно.

В заключение

Итак, краткое содержание подхода, который мы успешно применили на практике:

Как уже отмечалось в статье, кто угодно может извлечь пользу, применив методы машинного обучения, тем более в мире интернета, со всем разнообразием аналитических данных. Поэтому темы искусственного интеллекта и машинного обучения непременно обсуждаются на наших конференциях РИТ++ и Highload++, причем с совершенно практической точки зрения, как и в этой статье. Вот, например, видео нескольких прошлогодних выступлений:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *