Использование AWS для классификации текстов Часть-1

Онлайновые разговоры повсеместно распространены в современной жизни, охватывая отрасли от видеоигр до телекоммуникаций. Это привело к экспоненциальному росту объема данных онлайн-общения, что помогло разработать современные системы обработки естественного языка (NLP), такие как чат-боты и модели генерации естественного языка (NLG). Со временем развивались и различные методы NLP для анализа текста. В связи с этим возникла необходимость в полностью управляемой услуге, которая может быть интегрирована в приложения с помощью вызовов API без необходимости привлечения специалистов в области машинного обучения (ML). AWS предлагает предварительно обученные сервисы AWS AI, такие как Amazon Comprehend, которые могут эффективно решать задачи NLP, включающие классификацию, обобщение текста, распознавание сущностей и многое другое для получения информации из текста.

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

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

Предварительные условия

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

  1. Настройте учетную запись AWS и создайте пользователя IAM.

  2. Настройте AWS CLI и AWS SDK.

  3. (Необязательно) Настройте среду Cloud9 IDE.

Набор данных

В этом посте мы используем набор данных Jigsaw Unintended Bias in Toxicity Classification — эталон для решения конкретной проблемы классификации токсичности в онлайн-общении. В наборе данных представлены метки токсичности, а также несколько атрибутов подгрупп, таких как непристойность, нападение на личность, оскорбление, угроза и сексуально откровенный. Ярлыки предоставляются в виде дробных значений, которые представляют собой долю человеческих аннотаторов, считающих, что атрибут применим к данному фрагменту текста, которые редко бывают единодушны. Для создания бинарных меток (например, токсичный или нетоксичный) к дробным значениям применяется порог 0,5, и комментарии со значениями, превышающими порог, рассматриваются как положительный класс для данной метки.

Встраивание подслов и RNNs

Для нашего первого подхода к моделированию мы используем комбинацию вкрапления подслов и рекуррентных нейронных сетей (РНС) для обучения моделей классификации текста. Встраивание подслов было представлено Бояновски и др. в 2017 году как улучшение предыдущих методов встраивания на уровне слов. Традиционные модели пропускных программ Word2Vec обучаются для изучения статического векторного представления целевого слова, которое оптимально предсказывает контекст этого слова. Модели подслов, с другой стороны, представляют каждое целевое слово как пакет n-грамм символов, составляющих это слово, где n-грамма состоит из набора n последовательных символов. Этот метод позволяет модели встраивания лучше представлять морфологию родственных слов в корпусе, а также вычислять встраивания для новых, не входящих в словарный запас (OOV) слов. Это особенно важно в контексте онлайн-общения — проблемного пространства, в котором пользователи часто неправильно пишут слова (иногда намеренно, чтобы избежать обнаружения), а также используют уникальный, постоянно развивающийся словарный запас, который не может быть охвачен общим обучающим корпусом.

Amazon SageMaker позволяет легко обучить и оптимизировать модель встраивания субслов без наблюдения на собственном корпусе текстовых данных, специфичных для конкретной области, с помощью встроенного алгоритма BlazingText. Мы также можем загрузить существующие модели общего назначения, обученные на больших массивах данных онлайн-текстов, например, следующие модели английского языка, доступные непосредственно с fastText. Из экземпляра ноутбука SageMaker просто выполните следующие действия, чтобы загрузить предварительно обученную модель fastText:

!wget -O vectors.zip [https://dl.fbaipublicfiles.com/fasttext/vectors-english/crawl-300d-2M-subword.zip](https://dl.fbaipublicfiles.com/fasttext/vectors-english/crawl-300d-2M-subword.zip) 
Войдите в полноэкранный режим Выйти из полноэкранного режима

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

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

Чтобы загрузить предварительно обработанный текст в Amazon Simple Storage Service (Amazon S3), используйте следующий код:

Чтобы начать масштабируемое обучение модели на нескольких процессорах с помощью SageMaker, введите следующий код:

Внутри , мы определяем набор данных PyTorch, который используется файлом train.py для подготовки текстовых данных для обучения и оценки модели:

Обратите внимание, что этот код предполагает, что файл vectors.zip, содержащий ваши вкрапления fastText или BlazingText, будет храниться в .

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

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

Оцените статью
devanswers.ru
Добавить комментарий