Потому что мы действительно не хотим читать все, что пишет Дональд Трамп.

У людей редко возникают проблемы с пониманием того, является ли твит положительным или отрицательным. С компьютерами, однако, совсем другая история - сложная структура предложения, сарказм, образный язык и т. Д. Мешают компьютерам судить о значении и тональности предложения. Однако автоматическая оценка настроения твита позволит провести крупномасштабный анализ мнений населения по всем видам вопросов и поможет понять, почему определенные группы населения придерживаются определенных мнений.

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

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

Вступление

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

Как компьютеры читают текст?

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

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

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

Как нам предсказать настроение?

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

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

Резюме проекта

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

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

Принятие решения о настройке

Набор данных

Мы использовали набор данных на английском языке, предоставленный для СемЭваль-2017 Задача 4. Он состоит из около 26 тысяч твитов с различными темами, каждый из которых вручную помечен тональностью. Мы сохраняем разделение, определенное организаторами задач, которое составляет около 20 тысяч твитов для обучения и 6 тысяч твитов для тестирования.

Встраиваемые модели

Мы решили протестировать следующие четыре модели встраивания:

  1. Neural-Net Language Models (NNLM) 2003 года - одна из первых попыток изучения встраивания слов с помощью нейронных сетей. Модель конструирует 128 размерных векторов слов и будет функционировать как своего рода базовая линия встраивания слов, которую более продвинутые модели явно должны превзойти.
  2. Модели языка нейронной сети, как указано выше, но теперь с нормализованными векторами слов, которые, как иногда наблюдалось, дают лучшие результаты.
  3. Вложения из языковых моделей (ELMo) с начала 2018 года, которые показали, что позволяют достигать самых современных результатов во многих различных задачах. Создает 1024 размерных векторных слова.
  4. Универсальный кодировщик предложений (USE) с начала 2018 года, модель, обученная находить вложения слов, полезные для решения многих задач. Строит 512 размерных векторов слов.

Все четыре модели встраивания доступны в TensorFlow Hub.

Модели трансформации

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

  • Простое аффинное преобразование. Такое преобразование может представлять только самые основные преобразования, такие как масштабирование, вращение, сдвиг и перенос, поэтому в некотором смысле это позволит проверить, сколько информации захватили «сырые» вложения.
  • Более сложное преобразование, представленное нейронной сетью. Мы используем нейронную сеть с двумя скрытыми слоями, каждый из которых в 8 раз больше встраиваемой размерности, функциями активации и отсева ReLU. Сеть принимает на вход вектор темы и выводит преобразованный вектор темы. Такое преобразование может исказить тематическое пространство очень нелинейным образом, и поэтому оно должно иметь возможность получить более высокую точность. Однако это будет сложнее тренироваться и может быть больше подвержено переобучению тренировочной выборке.

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

Исправление дисбаланса в наборе данных

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

Дисбаланс в наборе данных

График количества твитов по тональности наборов данных показывает большой дисбаланс классов.

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

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

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

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

В идеале диагональ должна быть близка к 100%, что означает, что прогнозируемое настроение было правильным почти для всех твитов, но даже для обучающего набора есть большие недиагональные элементы. Это означает, что даже когда модели известны правильные настроения, она предпочитает по умолчанию прогнозировать положительные настроения в большинстве случаев. Прогнозируется, что 43% твитов с негативными настроениями и более 55% твитов с нейтральными настроениями будут иметь позитивные настроения. Это еще хуже для набора оценок: 39% и 78% соответственно.

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

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

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

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

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

Исправление дисбаланса настроений

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

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

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

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

Исправление дисбаланса темы

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

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

Исправление дисбаланса как настроения, так и темы

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

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

Средняя точность по теме снова не зависит от количества твитов, связанных с темой.

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

Собираем все вместе

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

Настройка соответствует стандартному подходу машинного обучения: мы обучили модель с помощью 10-кратной перекрестной проверки (CV) и оценили лучшую модель из каждой точки на тестовой выборке. Это дает нам меру того, насколько мы можем ожидать, что производительность модели будет варьироваться при обучении на (немного) разных наборах данных.

Всегда рекомендуется включать некоторые базовые эксперименты. Это должны быть самые простые подходы, которые вы можете себе представить, и если ваша продвинутая модель не может их превзойти, вы знаете, что что-то не так. Мы выбрали два простых базовых уровня: 1) использовать наиболее частое настроение из обучающего набора (которое будет «положительным») в качестве прогноза для любого твита и 2) использовать случайные настроения из обучающего набора в качестве прогнозов.

Результаты обучения всех восьми моделей и двух базовых уровней и оценки на невидимом тестовом наборе показаны на рисунке ниже. Вертикальные линии через точки данных указывают на одно стандартное отклонение по 10 кратным CV.

Здесь нужно сделать ряд интересных наблюдений. Во-первых, любая встраиваемая модель значительно лучше базовых линий. Таким образом, слово «вложения», как и ожидалось, содержит информацию, которая может быть использована для определения тональности твита. Во-вторых, если обратиться к вложениям NNLM, то, похоже, нет никаких улучшений при использовании нелинейной модели по сравнению с аффинной моделью. Это интересно, потому что предполагает, что пространство вложения достаточно просто, чтобы аффинная модель могла использовать всю информацию о настроениях, доступную во вложениях. Это контрастирует с более новыми вложениями, ELMo и USE, где мы действительно наблюдаем улучшение при использовании нелинейной модели, предполагая, что пространства вложения, изученные этими моделями, более сложны. Для NNLM нормализованные векторы имеют тенденцию работать лучше, чем ненормализованные, но в наших экспериментах эффект отнюдь не значительный. Наконец, хотя ELMo и USE содержат гораздо больше информации, чем вложения NNLM, в этих экспериментах они работают примерно одинаково. USE обычно содержит немного больше информации, чем ELMo, но не намного больше. Это, однако, все еще интересно, поскольку пространство вложения USE имеет гораздо меньшую размерность, чем пространство ELMo, и, следовательно, модели намного быстрее обучаются.

Мы уже на месте?

Нет, абсолютно нет. Есть много интересных вопросов, касающихся информационного содержания встраиваемых слов.

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

Разумно также спросить, нужны ли огромные пространства для вложения. Вложения ELMo имеют 1024 измерения, но информация, вероятно, встроена в гораздо более низкое размерное пространство. Как уменьшение размерности пространства вложения влияет на предсказание настроений?

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

Вывод

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

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

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

Благодарности

Проект был выполнен в рамках Краткосрочной научной миссии SoBigData 2017 (STSM) на факультете компьютерных наук Университета Шеффилда в сотрудничестве с доктором Дайаной Мейнард. Большое спасибо доктору Изабель Огенштейн за многочисленные обсуждения и советы на протяжении всего этого проекта.