Недавно у меня была возможность принять участие в проекте с Inspirit AI, где я работал с командой, чтобы использовать машинное обучение для классификации твитов, которые считаются положительными, отрицательными или нейтральными, поскольку они относятся к разным акциям. Для этого мы исследовали три разные модели машинного обучения для классификации текста: набор слов, долговременная кратковременная память (LSTM) и представления двунаправленного кодировщика из преобразователей (BERT). Здесь я описываю наш опыт решения этой проблемы и подчеркиваю, чему мы научились, используя различные методы.

Мешок слов

Модель мешка слов работает, группируя каждое слово в мешочек или подсчитывая частоту в зависимости от того, как часто слово используется. Подсчет частоты можно использовать как функцию в модели машинного обучения. Например, в предложении «Собака съела всю свою собачью еду» каждое слово будет в отдельном пакете, кроме слова «собака». «Собака» будет в мешке со значением 2, так как в предложении их две. Прежде чем использовать набор слов в модели, предложение должно быть в правильной форме, чтобы компьютер мог рассчитать частоты слов. Чтобы это произошло, предложение нужно очистить, удалив все слова, которые не добавляют контекста предложению. Примерами таких слов являются «is» и «are». Следующий шаг к очистке предложения — избавиться от любых окончаний таких слов, как «ing» и «s». Это гарантирует, что каждое слово находится в его корневой версии, чтобы мы могли сосчитать похожие слова вместе. В целом, мешок слов — хороший метод для начала из-за простоты, но у него есть недостатки. Самая большая проблема заключается в том, что он не учитывает порядок предложений, а это означает, что мы можем потерять важную информацию. На приведенной ниже диаграмме показана матрица путаницы, которая отображает результаты модели мешка слов. Ящики показывают, сколько было случаев, когда модель классифицировала твит как положительный, нейтральный или отрицательный, совпадающий с истинным результатом. В целом мы смогли правильно классифицировать 85,46% твитов.

LSTM

LSTM — это тип нейронной сети, которая хорошо работает с последовательностями данных. LSTM добавляет к пакету слов дополнительные возможности для классификации твитов, поскольку он может фиксировать структуру и порядок слов в предложениях. Это достигается путем создания пустого вектора с именем C, который выполняет итерацию по каждому слову и обновляет свое значение в зависимости от слова. Краткосрочная память относится к текущему сканируемому слову и словам непосредственно перед ним. Долговременная память относится к обновленному вектору, C * после того, как C просмотрит все предложение. Предложения: «Он не будет есть острую пищу». и «Он не будет есть пищу, если она острая?» оба будут представлены одинаково в наборе слов, хотя они имеют разные значения. LSTM сможет различить разницу между этими предложениями. Хотя мы ожидали, что LSTM превзойдет здесь набор слов, мы были удивлены, обнаружив, что точность достигла только 83,70%. Это может быть связано с тем, что LSTM может быть чувствителен к тому, как данные предварительно обрабатываются, и требует процесса, называемого дополнением предложений, чтобы каждое предложение входило одинаковой длины. Дальнейшее исследование предварительной обработки твитов может улучшить результаты с помощью LSTM.

БЕРТ

BERT — это третий и последний метод, который мы использовали для классификации твитов. BERT расшифровывается как представление двунаправленного кодировщика от трансформаторов. BERT — это предварительно обученная модель, созданная Google. Он двунаправленный, потому что анализирует предложения в обоих направлениях, чтобы получить полный контекст. Это делает его потенциально более мощным, чем LSTM, поскольку LSTM не принимает во внимание весь контекст предложения. Чтобы использовать модель BERT, нам сначала нужно было предварительно обработать наши данные. Мы использовали процесс токенизации, который разбивает наши входные предложения на отдельные токены. Мы сопоставляем каждый токен с соответствующим индексом в словаре BERT, и в итоге мы получаем список индексов. Затем мы добавляем специальные токены в начало и конец каждого предложения, дополняем и усекаем все предложения до единой постоянной длины и, наконец, отличаем настоящие токены от дополнений с помощью так называемой «маски внимания». Как только данные подготовлены и готовы, мы разделяем данные на наборы для тестирования и проверки и запускаем их через модель BERT. На тестовом наборе из 227 твитов эта модель классифицировала на 100% правильно!

Основные выводы

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