Расшифровка эмоций в тексте с помощью анализа настроений
В эпоху цифровых коммуникаций понимание эмоций, заложенных в тексте, стало мощным инструментом. Введите анализ настроений, краеугольный камень обработки естественного языка (NLP). Этот метод предполагает использование машинного обучения для выявления чувств, выраженных в тексте, будь то позитив, негатив или даже более сложные эмоции.
Анализ настроений имеет огромное значение в различных областях:
- Business Insights: помогает компаниям узнавать общественное мнение об их предложениях, улучшать продукты и прогнозировать тенденции.
- Обслуживание клиентов. Быстрое выявление негативных настроений позволяет предприятиям повысить удовлетворенность клиентов.
- Мониторинг социальных сетей: он формирует коммуникационные стратегии, измеряя общественное мнение по поводу событий и тем.
- Политический анализ. Во время выборов анализ настроений дает представление о восприятии общественностью кандидатов и политики.
- Персонализация: адаптация контента на основе предпочтений настроений повышает вовлеченность.
- Репутация бренда: быстрое реагирование на негатив защищает имидж бренда.
Эта статья углубляется в анализ настроений, исследуя три реализации модели: рекуррентные нейронные сети (RNN), сверточные нейронные сети (CNN) и преобразующую модель BERT. Сравнивая эти подходы и анализируя их сильные и слабые стороны, мы обнаруживаем, как анализ настроений не только расшифровывает эмоции, но и углубляет наше понимание человеческого самовыражения в цифровой сфере.
Этот проект и его код можно найти у меня на GitHub, вот репозиторий.
Методология: использование методов анализа настроений
В этом разделе мы углубимся в методы, которые мы использовали для анализа настроений. Мы выбрали три разных подхода: рекуррентные нейронные сети (RNN), сверточные нейронные сети (CNN) и революционную модель BERT. Мы выбрали их, потому что каждый из них превосходно справляется с последовательностями слов, пониманием контекста и максимально эффективно использует уже существующие языковые знания.
Набор данных
Центральное место в этом начинании занимает набор данных обзоров Amazon, кладезь текстовой информации, сопровождаемой звездными рейтингами от 1 до 5. Хотя весь корпус включает более 500 тысяч обзоров, вычислительные соображения привели к созданию репрезентативного подмножества для углубленных обзоров. анализ, около 50 тыс. строк из наборов данных. Этот набор данных сильно несбалансирован, поскольку люди чаще всего оставляют отзывы, когда они довольны продуктом, поэтому положительных отзывов больше, чем отрицательных (соотношение примерно 75–25).
Конвейер предварительной обработки данных: преобразование необработанного текста в расширенные функции
- Очистка текста. Я начал с избавления от неважных слов, таких как «и», «the», которые называются стоп-словами. Я также изменил слова до их базовой формы, которая называется лемматизацией. Это упрощает текст, сохраняя при этом основной смысл.
- Сопоставление настроений. Спектр звездных рейтингов подвергается семантической трансформации: баллы 1, 2 и 3 сопоставляются с негативными настроениями, а баллы 4 и 5 — с позитивными настроениями.
- Встраивание слов. В повествовании используется двойной подход к встраиванию слов. Word2Vec, обученный на том же корпусе, умеет инкапсулировать семантические нюансы. Однако эксперименты со слоями внедрения Keras показали, что Word2Vec превосходит его по производительности, как мы увидим позже в сравнениях.
- Заполнение. Этот процесс имеет решающее значение при работе с последовательностями. Это обеспечивает согласованную структуру данных для нейронных сетей. Без заполнения последовательности разной длины вызывают проблемы во время обучения и прогнозирования модели. Дополненные последовательности гарантируют единообразие, что делает пакетную обработку эффективной и предотвращает проблемы с размерностью данных. Эта практика оптимизирует обучение, вычисления и производительность модели.
- Разделение данных. Данные разделены на обучающую, проверочную и тестовую подгруппы в соотношении 80–10–10.
Рекуррентные нейронные сети (RNN)
Выбор RNN обусловлен их внутренней способностью фиксировать последовательные зависимости в данных. Эти сети методично проходят каждый токен в последовательности, сохраняя память о предыдущих токенах. Эта архитектура идеально соответствует характеру задач анализа настроений, где контекстуальная последовательность имеет первостепенное значение.
Сверточные нейронные сети (CNN)
Хотя CNN известны своим мастерством в обработке изображений, их адаптируемость распространяется и на последовательный анализ данных. Рассматривая слова как «локальные особенности», CNN готовы раскрывать сложные закономерности в текстовой ткани. Этот подход особенно хорошо перекликается с анализом настроений, где местные контексты могут сильно влиять на общее настроение.
BERT (Представления двунаправленного кодировщика из преобразователей)
BERT возникает как преобразующая парадигма в НЛП, движимая мастерством архитектуры преобразователя. Его двунаправленный характер позволяет усваивать контекстную информацию как из предыдущих, так и из последующих токенов. Предварительно обученный на массивных корпусах, BERT по своей сути улавливает разнообразные лингвистические нюансы, что усиливает его превосходство в широком спектре задач НЛП, включая анализ настроений.
В следующих разделах наше путешествие познакомит нас глубже с тонкостями реализации каждой техники, нюансами протоколов их обучения и открытиями, которые они привносят в область анализа настроений. Это путешествие обещает целостное понимание RNN, CNN и BERT, поскольку они ориентируются в тонкостях настроений в тексте.
Реализации модели
РНН
- Архитектура: в этой модели использовалась простая архитектура: только один слой LSTM с 50 единицами, которому предшествовал слой маскировки для маскировки нулей в конце последовательностей. Добавление второго слоя LSTM резко увеличило время обучения, но, безусловно, усложнение модели повысит производительность, хотя и не так значительно. Чтобы избежать переобучения, к этому слою была применена регуляризация; L2 и отсев с показателями 0,01 и 0,4 соответственно. Почетное упоминание слою ГРУ, который не попал на этот подиум из-за того, что его более сложный брат, LSTM, превзошел его по производительности.
Выходной слой представляет собой Плотный слой с сигмовидной функцией активации. Это связано с тем, что это проблема двоичной классификации. Таким образом, модель выведет число от 0 до 1. Если число превышает определенный порог (в данном случае 0,65, хотя чаще используется 0,5), прогноз равен 1, а если оно меньше, то это 0. . - Гиперпараметры. Что касается оптимизации, я использовал Адама с графиком скорости обучения, чтобы снижать скорость обучения с течением эпох. График был PolynomialDecay от Keras. Функция потерь также была изменена: ввиду перекоса набора данных я решил добавить веса к функции потерь, поэтому ошибки в классе 0 наказываются более строго. Веса были рассчитаны с помощью compute_class_weight Sci-Kit Learn. Наконец, после многочисленных обучающих прогонов, я решил установить количество эпох обучения равным 18, поскольку потери при валидации начали стагнировать и даже расти.
С точки зрения производительности, это лучшая из всех моделей, не считая BERT, GOAT этого выбора. При оценке моделей я использовал классификацию_report() из Sci-Kit Learn. Эта модель получила такие результаты. TLDR: точность 87,6% и показатель F1 72,2% и 92,0% в классах 0 и 1 соответственно.
Для оценки я придерживался основ классификации; Я использовал точность, отзыв, показатель F1 и точность. Это позволило мне понять, что модель неудовлетворительна по категории 0, отрицательным отзывам. В этом и заключается цель некоторых методов, таких как функция взвешенных потерь и балансировка набора данных, как мы увидим в следующей модели.
RNN (сбалансированные данные обучения)
Эта модель по архитектуре и гиперпараметрам точно такая же, как и основная. Однако я тренировался в течение 20 эпох, поскольку кривая потерь, похоже, начала восходящую тенденцию немного позже, чем в основной модели.
В этой модели, как следует из названия, данные обучения сбалансированы в соотношении 60–40 (60% положительных отзывов и 40% отрицательных отзывов). Это сделано для того, чтобы модель не была слишком предвзятой в отношении предсказания чисел, близких к 1 (положительных).
Однако наборы проверки и тестирования остаются прежними не только для воспроизводимости, но и для того, чтобы увидеть, как модель будет действовать в более реалистичной ситуации. Изменение соотношения распределения в тестовых наборах может быть очень полезно, чтобы увидеть, как модель обрабатывает искаженные наборы данных.
Как мы видим, показатель F1 гораздо более сбалансирован между классами, чего и следовало ожидать, поскольку модель научилась гораздо более равномерному распределению. Однако этот метод работает не так хорошо, как несбалансированный набор данных, хотя в будущем мы увидим, что этот метод повысит производительность других моделей.
Си-Эн-Эн
- Архитектура. В этой модели, как и в других, использовался маскирующий слой, поэтому ей не нужно понимать, что вектор, полный нулей, не имеет значения. В дальнейшем появится слой Conv1D с 64 сверточными фильтрами для обработки входных последовательностей, позволяющий улавливать локализованные шаблоны в текстовых данных. Функция активации на этом уровне — это функция relu, которая вводит нелинейность.
После сверточного слоя используется слой GlobalMaxPooling1D. Этот шаг позволяет выделить ключевые функции из сверточных слоев, выбрав максимальное значение на выходе каждого фильтра. Затем, как и ожидалось, данные сводятся в одномерный массив со слоем выравнивания. Первый плотный слой после этого имеет 64 единицы с relu, а выходной слой имеет только одну единицу с сигмовидной активацией.
Что касается регуляризации, я использовал L2(0.01) как для сверточного слоя, так и для полностью связанного плотного слоя, и для этого последнего я также использовал dropout(0.5). - Гиперпараметры: эта модель обучалась в течение 10 эпох, что намного меньше, чем у остальных, но это произошло потому, что при более длительном обучении модель обучалась «по памяти» и не могла обобщать новые данные. Это можно увидеть в восходящей тенденции потерь при проверке на следующем графике.
В целом по производительности он был близок к RNN, но уступал. Было очень интересно увидеть этот тип архитектуры модели, чаще используемый для обработки изображений, в этом последовательном контексте.
CNN (слой внедрения)
Отличием этой модели от предыдущей является ключевой этап конвейера данных: встраивание слов. Это ключ к тому, чтобы любая модель машинного обучения принимала слова в качестве входных данных. Встраивание слов преобразует слова в числовые векторы, которые фиксируют семантические отношения и значения между словами в непрерывном пространстве. Однако это также модель машинного обучения, поэтому есть из чего выбирать. Существуют очень большие предварительно обученные модели, такие как Обученная модель Google Word2Vec.
Однако в этой конкретной реализации я хотел протестировать уровень внедрения Keras. Во время обучения слой Embeddings корректирует эти векторы в соответствии с данными. Слова со схожим значением получают схожие векторы. Этот процесс позволяет модели понимать значения слов в контексте. Слой Keras Embeddings позволяет модели лучше понимать значения слов. Вместо того, чтобы видеть слова изолированно, он понимает, как слова связаны друг с другом.
Это означает, что слой внедрения обучается вместе с моделью с использованием тех же обучающих данных. Это очень важно для моей модели Word2Vec, которую я смог заранее обучить на всем наборе данных. Преимущество этого также заключается в том, что обучение проводится только один раз, в случае, если для модели требуется несколько прогонов обучения. Кроме того, поскольку я не мог обучить свою CNN на таком большом количестве данных, уровень внедрения обучался только на 50 тысячах отзывов, в то время как модель Word2Vec (поскольку ее можно было обучать отдельно) обучалась на 500 тысячах отзывов. Вероятно, это важный фактор, который следует учитывать при оценке производительности обеих моделей.
Характеристики очень похожи, точность у этой модели еще выше, хотя для данной задачи этот показатель не так уж и важен; чего я хотел увеличить, так это количества правильно предсказанных негативных отзывов, поскольку это самый недопредставленный класс.
БЕРТ
Что выделяет BERT, так это его сложность: тот, который я использовал, имел 109 миллионов параметров. Единственный способ обучить модель такого размера — это импортировать ее предварительно обученную и провести тонкую настройку. Это называется переносным обучением, которое заключается в использовании очень большой модели в качестве основы и последующем обучении на меньшем наборе данных (в данном случае 10 тысяч примеров), более конкретном для поставленной задачи. Этот подход использует изученные функции, шаблоны и контекстное понимание исходной задачи, позволяя модели достигать более быстрых и часто лучших результатов в новой задаче с меньшим количеством обучающих данных. Трансферное обучение особенно ценно в сценариях, где получение большого набора данных для конкретных задач непрактично, и оно оказалось мощным инструментом в различных областях, включая НЛП.
В моем случае я использовал BertForSequenceClassification из библиотеки преобразователей с одним модулем на выходном слое. Полная модель доступна на моем Github, поскольку она сложнее, чем несколько строк. Я использовал рекомендуемые настройки модели, использовал оптимизатор AdamW со скоростью обучения 0,00002 и обучал модель всего 3 эпохи, которые после 4 часов обучения вернули такие результаты.
Стоит отметить, что, хотя модель BERT была обучена всего лишь на 10 000 обзорах, она оценивалась на тех же тестовых данных, что и другие модели, чтобы обеспечить честную конкуренцию. Эта модель была лучшей по большинству показателей, но нельзя сказать, что другие модели не показали хороших результатов.
4. Результаты и анализ:
Как мы видим, BERT является победителем в большинстве категорий. Я применил средний балл F1 для сортировки моделей. Как и ожидалось, BERT, обученный на 10 тысячах примеров, показал лучшие результаты, чем на 5 тысячах, хотя и ненамного. Точность и показатель F1_1 очень похожи, но версия 10k показала лучшие результаты в F1_0.
Вот несколько графиков, которые помогают визуализировать различные показатели и эффективность каждой модели.
При сравнении производительности различных моделей становится очевидным, что модель BERT оказалась выдающейся, демонстрируя свои расширенные возможности в понимании эмоций в тексте. Хотя разрыв между моделью BERT и другими подходами может быть незначительным, очевидно, что BERT использовал свое контекстуальное понимание и обширные ранее существовавшие знания языка, чтобы предложить заметное преимущество в анализе настроений. Этот вывод соответствует ожиданиям, связанным с исключительным мастерством BERT в решении различных лингвистических задач.
Что касается показателей, которым следует уделять больше внимания, важно учитывать компромисс между точностью и отзывом. В анализе настроений более высокая точность означает, что, когда модель прогнозирует положительные настроения, она с большей вероятностью окажется правильной. С другой стороны, более высокий уровень отзыва означает способность модели правильно идентифицировать большую долю фактических положительных настроений. Вот почему я отдал приоритет точности положительному классу, при этом самый большой BERT был лучшим по этому показателю, и напомню, что в отрицательном классе BERT получил серебряную медаль, всего на 0,016 отставая от сбалансированного RNN, который работал «слишком хорошо». на отрицательный класс, а не в целом.
Решения о том, отдать приоритет точности или полноте, зависят от приложения. Например, при анализе настроений для обзоров продуктов более высокая точность обеспечивает точную идентификацию положительных настроений, тогда как в медицинской диагностике акцент на воспоминаниях может помочь не пропустить важные положительные случаи.
Заключение
Исследуя анализ настроений с использованием различных методов глубокого обучения, я углубился в понимание эмоционального контекста текстовых данных. Это исследование раскрыло возможности и нюансы RNN, CNN, а также преобразующую силу BERT. Каждая модель продемонстрировала уникальные сильные стороны в улавливании последовательных закономерностей, извлечении локализованных особенностей и использовании контекстуального понимания соответственно.
В центре внимания оказалась модель BERT, которая продемонстрировала свое превосходство в анализе настроений. Хотя разрыв в производительности между BERT и другими моделями не был существенным, исключительная способность BERT понимать сложные лингвистические контексты оказала заметное влияние.
Будущие направления и улучшения
По мере того, как мы рассматриваем горизонты, выходящие за рамки этого исследования, открываются захватывающие возможности для дальнейшего совершенствования и расширения нашего проекта анализа настроений. Производительность модели BERT можно повысить за счет более тщательной настройки и изучения предварительной подготовки для конкретной предметной области. Исследование ансамблевых методов, которые используют взаимодополняющие преимущества нескольких моделей, может дать более надежные прогнозы.
Изучение механизмов внимания может укрепить модели RNN и CNN, позволяя им сосредоточиться на более значимых частях текста. Более того, изучение методов интерпретации моделей может дать более глубокое понимание того, как эти модели делают свои прогнозы.
Завершая эту главу, мы признаем, что анализ настроений остается динамичной областью, полной возможностей для инноваций и развития. Успехи, достигнутые в рамках этого проекта, служат основой для дальнейших исследований в области понимания эмоций, заключенных в тексте.
Библиотеки и наборы данных
Я выражаю благодарность библиотекам с открытым исходным кодом, таким как TensorFlow, Keras, PyTorch, Sci-Kit Learn, NumPy, Pandas и Hugging Face Transformers, которые облегчили реализацию модели. Кроме того, я признателен за вклад поставщиков наборов данных, особенно набора данных обзоров Amazon, который сыграл ключевую роль.
Рекомендации
- Миколов Т., Чен К., Коррадо Г. и Дин Дж. (2013). Эффективная оценка представлений слов в векторном пространстве.
- Девлин Дж., Чанг М.В., Ли К. и Тутанова К. (2018). BERT: Представления двунаправленного кодера от трансформаторов.
- Чжан Дж., Чжао С., Лекунь Ю. (2015). Сверточные сети на уровне символов для классификации текста.
- Репозиторий BERT исследования Google.
Эти ссылки дают ценную информацию о сфере BERT, RNN и CNN, предлагая различные точки зрения на их теоретические основы и практическое применение.