Анализ настроений, проведенный на твитах о землетрясении в Турции

Анализ настроений в твитах о землетрясении в Турции

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

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

Что такое Hugging Face?

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

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

На следующей картинке показаны различные характеристики, кроме тональности.

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

Существует несколько пакетов для выполнения анализа тональности, и наиболее известными из них являются TextBlob, VADER и Flair. Для этой работы я выбрал TextBlob в качестве эталонного инструмента. Затем я сравнил его с результатами, полученными с помощью предварительно настроенных моделей больших языковых моделей (LLM), полученных из Hugging Face: cardiffnlp/twitter-roberta-base-sentiment-latest, cardiffnlp/bert-base-multilingual-cased-sentiment-multilingual, philschmid/distilbert-base-multilingual-cased-sentiment-2.

Прежде чем продолжить с моделями, я возвращаюсь к набору данных, который состоит из 16 переменных (включая загруженный как индекс идентификатор) и 28844 строк, с некоторыми признаками, содержащими недостающие данные, и твитами, записанными с 07/02/2023 по 26/02/2023. Фактически, меня интересуют следующие столбцы: “дата”, “текст” и “местоположение пользователя”, которые я использовал для фильтрации данных.

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

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

На этом этапе я отфильтровал данные df_.query(‘user_location==”Turkey”‘) по Турции, сократив их до 538 строк, и после небольшой очистки набор данных был готов к анализу тональности.

Первый подход основан на применении TextBlob в качестве эталонного инструмента.

Как работает TextBlob?

TextBlob – это библиотека Python с доступом к API для выполнения нескольких задач обработки естественного языка. Анализатор тональности TextBlob может использоваться для определения полярности или субъективности. Первый предоставляет дробное значение, находящееся в диапазоне [-1,1], где -1 указывает на отрицательную тональность, а +1 – на положительную. В моей работе я также использовал значения 0 для нейтральной тональности. Субъективность также предоставляет дробное значение, находящееся в диапазоне [0,1]. Субъективность обычно используется для личного мнения, эмоций или суждений. Проблема заключается в том, что TextBlob игнорирует слова, которых нет в его словаре, обрабатывая только слова и фразы, к которым можно применить полярность, и затем вычисляет среднее значение для получения окончательного результата.

На данный момент, поскольку я не уверен в надежности использования только одного инструмента и без понимания качества результатов, я решил использовать продвинутые инструменты: Большие языковые модели (BERT, RoBERTa и DistillBERT), донастроенные и предварительно обученные на задачах анализа настроений и классификации текста и полученные из платформы Hugging Face.

В чем разница между BERT, RoBERTa и DistillBERT?

BERT означает двунаправленное представление кодировщика от трансформатора, и это модель обработки естественного языка, запущенная исследователями Google в 2018 году. Она в основном представляет собой стек кодировщика архитектуры трансформатора. Архитектура трансформатора представляет собой сеть кодировщика-декодера, которая использует само-внимание на стороне кодировщика и внимание на стороне декодера. Кодировщик трансформатора является двунаправленным, что означает, что он может читать предложение в обоих направлениях, слева и справа. Получив предложение в качестве входных данных для кодировщика трансформатора, он получает контекстуальное представление (вложение) каждого слова в предложении в качестве выходных данных. Кодировщик способен понять контекст каждого слова в предложении с помощью механизма многоголового внимания (способа рассмотреть отношение между словом и его соседями) и возвращает контекстуальное представление каждого слова в предложении в качестве выходных данных. По этой причине BERT является моделью вложения на основе контекста. Во время предварительного обучения BERT использует две задачи обучения без учителя: Маскированное моделирование языка (MLM) и предсказание следующего предложения (NSP). Первая случайным образом маскирует некоторые слова в предложении и обучает модель предсказывать маскированные слова на основе контекста окружающих слов. Вторая задача обучает модель предсказывать, являются ли два предложения последовательными или нет. BERT, используемый в этой работе, является донастроенной версией bert-base-multilingual-cased на твитах. Вместо этого, базовая мультиязычная модель BERT предварительно обучена на самом большом корпусе Википедии из мультиязычных данных.

RoBERTa означает Robustly Optimized BERT Pre-training Approach и разработана исследователями Facebook AI. Как и BERT, она основана на архитектуре трансформатора, который использует механизм само-внимания для обработки входных последовательностей и генерации контекстуализированных представлений слов в предложении. В отличие от BERT, она была обучена на гораздо большем наборе данных и использует динамическую технику маскирования во время обучения, которая помогает модели изучать более устойчивые представления слов. RoBERTa, используемая в этой работе, является донастроенной версией twitter-roberta-base-2021–124m, обученной на ~124M твитах с января 2018 года по декабрь 2021 года.

DistillBERT является упрощенной версией BERT, что означает, что его цель – уменьшить большой размер и увеличить скорость BERT, поэтому это более маленькая и быстрая версия BERT. DistillBERT использует аналогичную общую архитектуру как BERT, но с меньшим количеством блоков кодировщика, и он использует технику усвоения знаний во время предварительного обучения, которая включает обучение более маленькой модели имитировать поведение более большой модели. DistillBERT, используемая в этой работе, является донастроенной версией distilbert-base-multilingual-cased, обученной на наборе данных amazon_reviews_multi.

Давайте посмотрим на результаты

Я использовал 3 полярности: положительную, отрицательную и нейтральную.

Просмотрев первую диаграмму с результатами TextBlob, нейтральное настроение преобладает со временем с 07/02/2023 по 21/02/2023. Нейтральное настроение уменьшилось при использовании RoBERTa, но все равно оно составляет 53,2% от общего количества твитов, в то время как TextBlob дает 55%.

Исключив нейтральное настроение, одной из проблем, которая бросается в глаза с TextBlob, является то, что отрицательное настроение составляет всего 15,6% по сравнению с положительным настроением, равным 29,4%, в то время как с LLMs отрицательное настроение превосходит положительные эмоции. Какими инструментами мы можем доверять? Мы определенно имеем дело с событием, которое вызывает страх, возбуждение… типичные отрицательные эмоции, поэтому результаты, предоставленные LLMS, более правдоподобны, чем эталон.

При анализе результатов от BERT нейтральное настроение снижается, заполняя 35,9%. Кажется, он способен выделять гораздо более крайние полярности, чем RoBERTa, с 47,2% отрицательных и 16,9% положительных. Отрицательное настроение побеждает с течением времени с BERT. В то же время нейтральное настроение побеждает только 07/02/2023, 08/02/2023 и 15/02/2023. Тем временем, 11/02/2023, наблюдается равномерное распределение настроений между твитами.

DistillBERT – последний инструмент, используемый для проведения анализа настроения, и в этой ситуации нейтральное настроение практически исчезло, составляя всего 2%. Отрицательная полярность растет с течением времени и составляет 74,9%. Также, в этой ситуации, я не уверен в результатах, потому что, с одной стороны, самая большая отрицательная полярность согласуется с событием, а с другой стороны, твиты сложны в определении положительных/отрицательных, и наличие большого количества нейтрального настроения может быть правдоподобным.

Заключительные замечания

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

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

Ссылки

набор данных

записная книжка

TextBlob

BERT

RoBERTa

DistillBERT