Entity-Level Tweets Emotion Analysis Набор данных для классификации эмоций и обнаружения сарказма

Набор данных анализа эмоций твитов на уровне сущностей (ELTEA17) — это набор данных для детального анализа эмоций твитов, который я сделал общедоступным здесь. Это побочный продукт моего исследования 2017 года о структурированном прогнозировании эмоций твитов с совместным извлечением причины, держателя и цели.

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

Вариант использования

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

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

Таксономия эмоций

Первая проблема в анализе эмоций состоит в том, чтобы определить таксономию эмоций. Исследователи предложили для этой цели список основных эмоций. Для ELTEA17 я принял классификацию эмоций Экмана, которая выделяет шесть основных эмоций, а именно; счастье, печаль, гнев, страх, удивление и отвращение . Чтобы выполнить точную классификацию эмоций, определение обладателя, причины и цели вместе с ключевыми словами эмоций может предоставить значимые функции для классификаторов. Этот вид информации чрезвычайно интересен, поскольку он может дать практическое знание об эмоциональной полярности твитов. Например, взаимодействие между этой тройкой и общей эмоциональной полярностью твита может дать нам возможность ответить; «Кто выразил эмоцию?», «Что это за эмоция?», «На что направлена ​​эмоция?» и «Почему возникает такая эмоция?»

Построение набора данных

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

На высоком уровне ELTEA17 прошел следующие этапы:

  1. Автоматическое получение случайных сообщений из Twitter с учетом ключевых слов эмоций, хэштегов эмоций, смайликов, длины текстов и т. д.
  2. Удалите отвлекающие факторы, такие как веб-ссылки, геотеги, дубликаты сообщений и т. д.
  3. Определение политики аннотирования ролей эмоций и маркировки ключевых слов эмоций.
  4. Определите политику, когда существует несколько эмоций или когда представляемая эмоция неоднозначна.
  5. Вручную аннотируйте твиты с помощью роли эмоций и ключевых слов эмоций (аннотации на уровне токена).
  6. Вручную аннотируйте твиты по шести классам эмоций Экмана (аннотации на уровне предложений)

Сбор данных

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

Данные Твиттера

Для целей этого исследования я создал задание по сбору данных, используя базовый API Twitter и tweepy. Скрипт использует наборы ключевых слов для фильтрации нежелательных твитов. Вот подробное объяснение каждого фильтра:

  • Язык: установите английский язык для всего процесса загрузки.
  • Смайлики: предустановленный список наиболее часто используемых смайликов, таких как :), :D и т. д., с соответствующими эмоциями. Этот список взят из неопубликованной работы Марка Ламберти.
  • Эмоциональные хэштеги: на основе этого исследования 93% твитов с эмоциональными хэштегами, предоставленными пользователями, имеют отношение к эмоциям. Я принял минимальную версию предложенного ими списка эмоциональных хэштегов. , каждый хэштег соответствует своему классу Экмана.
  • Ключевые слова для эмоций. Я использовал Список словаря эмоций NRC. Этот список содержит 3462 лексики, каждая из которых классифицирована по классам Плутчика.
  • Каузативные лингвистические сигналы. Чтобы получить больше данных о том, какая причина эмоций явно упоминается, я составил список каузативных лингвистических сигналов, таких как потому что, из-за и т. д.
  • Ключевые слова, связанные с войной. После выборочного анализа данных я заметил, что большинство собранных данных смещены в сторону счастья из-за, например, сообщения с днем ​​​​рождения. Поэтому я решил составить список ключевых слов, которые обозначают войну и политический конфликт, таких как атака, вторжение, войска и т. д.

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

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

{
 "id":9025500993849∗∗∗∗∗,
 "text":"Josh’s Family Must Be so Proud of him ... ,
 "datetime":"Tue Aug 29 15:14:46 +0000 2017",
 "links":[],
 "emojis":[],
 "mentions":["@∗∗∗∗∗"],
 "emoticons":[],
 "hashtags":[],
 "filter":"CE",
 "num_words":n,
}

Фильтрация

Общее количество собранных твитов превышает 1 миллион. В конце концов, каждая запись была сохранена в базе данных SQLite для более быстрого доступа, применения запросов для дальнейшего выбора записей и очистки. Для работы с повторяющимися твитами я установил текстовое поле базы данных твитов в качестве уникального идентификатора, который автоматически отказывается хранить дубликаты. Общее количество записей в таблице твитов составляет почти 500 000. На следующем снимке показана схема базы данных. Давайте проверим некоторые из запросов, примененных для дальнейшей фильтрации:

# selects random tweets where they have hashtag and the filter which has been used for ingestion was emotion hashtags (EHT)
SELECT * FROM tbl_tweets WHERE (hashtag != ’F’ AND filter = ’EHT’ ) ORDER BY RANDOM()
# selects random tweets where the filter which has been used for ingestion was causative keywords
SELECT * FROM tbl_tweets WHERE (filter = ’CE’ ) ORDER BY RANDOM()
# selects random tweets where they have emoji
SELECT * FROM tbl_tweets WHERE emoji != ’F’ ORDER BY RANDOM()
# selects LIMIT number of tweets where the length field is less or equal to 20, and the filter which has been used for ingestion was 'war' keywords
SELECT * FROM tbl_tweets WHERE (filter = ’war’ AND length <= 20) ORDER BY length DESC LIMIT
# selects tweets where they have hashtag and the filter which has been used for streaming was NRC emotion lexicon, and no link exists in tweets, and the length of tweets is between 5 and 35 tokens
SELECT * FROM tbl_tweets WHERE (hashtag != ’F’ AND filter = ’NRC’ AND link = ’F’ AND (length BETWEEN 5 AND 35))

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

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

Аннотация

Уровень предложения

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

  • Аннотируются только твиты, которые выражают определенный тип классов Экмана.
  • Когда существует несколько эмоций, выбирается доминирующая.
  • Если эмоция слишком сильна или расплывчата, твит отбрасывается.

Этот процесс приводит к успешному аннотированию 2034 экземпляров твитов. Здесь вы можете увидеть распределение аннотированных данных на уровне предложений по шести классам:

Токен-уровень

В этом разделе сначала я описываю лингвистический феномен в эмоциональных выражениях. Затем я объясняю детали схемы аннотации. Еще одна цель этого набора данных — определение ключевых слов владельца, причины, цели и эмоций из твитов таким образом, чтобы их можно было легко ввести в последовательность. алгоритмы маркировки, такие как HMM, CRF или LSTM.

Ключевые слова эмоций

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

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

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

Эмоция Причина

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

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

  • Явные ограничения квалифицируют единственную заметную эмоциональную причину, которая непосредственно связана с эмоциональным выражением (может быть легко обнаружена с помощью каузативных лингвистических сигналов).
  • Неявные ограничения квалифицируют все прямые и косвенные причины-эмоции (причину можно вывести из значения).

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

  • Твит слишком короткий, поэтому не хватает контекстной информации, например: «Я зол и раздут».
  • Твит достаточно длинный, но причина может быть вне контекста.
  • Причина неясна, что может быть связано с высокой абстракцией.

Держатель эмоций

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

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

Джеффбыл очень счастлив.
Дженнибыл счастливот счастья Джеффа.

Во втором примере следует также указать «Джефф». Таким образом, в одном предложении два держателя эмоций.

Цель эмоции

Цель эмоции — это объект, о котором идет речь. Точнее, это сущности и их атрибуты, на которые нацелены эмоции. В твитах мишень эмоций весьма разнообразна, так как существует большой спектр различных тем: именованные сущности и именные словосочетания, являющиеся объектом эмоции. В субъективных текстах цели эмоций, как правило, сопровождаются ключевыми словами эмоций. Например, в «Я ненавижу дождливую погоду» цель эмоции — дождливая погода. Можно поспорить, что дождливую погоду можно интерпретировать как причину эмоционального состояния. Иногда в неформальном тексте, таком как твиты, выражения эмоций могут иметь перекрывающуюся причину эмоции и цель эмоции. Вот почему этот набор данных даже включает извлечение причины с идентификацией цели для повышения производительности [3]. Цели эмоций важны, потому что, не зная их, эмоции, выраженные в твите, имеют ограниченное применение.

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

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

Формат обучающего набора данных

Для проблем с маркировкой последовательностей «отраслевым стандартом» кодирования является кодирование BIO. Он подразделяет тексты в тегах либо на находящиеся вне объекта (O-X), либо на начало объекта (B-X), либо на продолжение объекта (I-X). В ELTEA17 представление BIO разделяет текст на перекрывающиеся группы слов, так называемые фрагменты текста. Поэтому для каждой группы меток требуется свое представление BIO. В частности, одно кодирование BIO на шесть классов эмоций плюс три роли эмоций, что приводит к девяти уровням кодирования BIO. В таблице ниже показано представление аннотации в кодировке BIO на разных уровнях. Обратите внимание, что токен убийство помечен как страх, так и печаль.

Статистика данных

Давайте посмотрим на некоторые предварительные статистические данные по ELTEA17. В таблице ниже показана общая сводка корпуса. Для оценки я использовал 5-кратную перекрестную проверку, значение fold было установлено путем применения алгоритма рандомизированного поиска.

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

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

Инструмент аннотации

Существует множество инструментов, которые могут предоставить среду ручного аннотирования сущностей и отношений. Общая архитектура для текстовой инженерии или GATE — это хорошо зарекомендовавший себя набор инструментов с открытым исходным кодом для задач НЛП, первоначально разработанный в Шеффилдском университете. Он обеспечивает совместную среду аннотирования для семантического аннотирования и моделирования онтологических данных. Brat Rapid — онлайн-среда для совместной текстовой аннотации. Он разработан, в частности, для структурированных аннотаций. WebAnno — это веб-инструмент аннотации для широкого спектра лингвистических аннотаций, включая различные уровни морфологических, синтаксических и семантических аннотаций. В этом инструменте можно определить пользовательские слои аннотаций. Кроме того, он поддерживает несколько пользователей для совместных проектов аннотаций.

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

Этот инструмент может экспортировать аннотацию в различные файловые форматы, среди всех TSV 3 проще всего преобразовать в кодировку BIO. Экспортированный файл включает заголовок и основной раздел. Раздел заголовка содержит информацию о различных типах слоев аннотаций и объектов, используемых в файле. Ниже вы можете увидеть маркер заголовка файла WebAnno TSV 3 вместе с примером аннотации.

#FORMAT=WebAnno TSV 3.1
#T SP=webanno.custom.Emotion|Emotion|Role
#Text=I need a tutor because chemistry exam is killing me
305–1 33289–33290 I _ _
305–2 33291–33295 need _ _
305–3 33296–33297 a _ _
305–4 33298–33303 tutor _ _
305–5 33304–33311 because _ _
305–6 33212–33321 chemistry *[3364]|cause[3364]
305–7 33322–33326 exam *[3364]|*[3365] cause[3364]|target[3365] 
305–8 33327–33329 is _ _
305–9 33330–33337 killing sadness[3366]|fear[3367] *[3366]|*[3367] 
305–10 33338–33340 me * holder

Слои отмечены символом «#», за которым следует «T SP=» для типов промежутков, а объекты разделены символом «_». Предложения представлены после текстового маркера «#Text=». Аннотация маркера начинается с номера маркера предложения, за которым следуют смещения начала и конца и сам маркер, разделенные символами TAB. Здесь для первого токена «I» 305 указывает номер предложения, 1 указывает номер токена, а 33289 — начальное смещение токена. , а 33290 — это конечное смещение маркера. Для каждого объекта диапазона значение аннотации будет представлено в той же строке, что и аннотация маркера/вложенного маркера, разделенных символом TAB. Если для данного пролетного слоя аннотация отсутствует, в столбце ставится символ «_». Если объект не имеет аннотаций или если слой отрезка вообще не имеет объекта, символ «*» представляет аннотацию. Для токена «я» звездочка означает, что токен не связан ни с одним типом эмоций, поскольку первый слой посвящен типам эмоций, а роль токена связана с держателем. Аннотации с несколькими диапазонами на токене будут иметь пронумерованную ссылку, заключенную в квадратные скобки как [N], где N относится к n-й аннотации на слое.

Следующие шаги

  • Оставайтесь с нами, чтобы узнать, как я объединил CRF и CNN для классификации эмоций.
  • Не стесняйтесь исследовать ELTEA17

Дополнительная ссылка

[1] Плутчик, Роберт: Эмоции: теория, исследования и опыт. В Теориях эмоций, том. 1. Academic Press, Нью-Йорк, США, 1980.

[2] Ф. Рен, Х. Ши, Общая онтологическая многоязычная многофункциональная мультимедийная интеллектуальная система (2000), материалы конференции. 2000 г. международная конференция ieee по системам, человеку и кибернетике.

[3] Чен, Ин, София Ят Мей Ли, Шоушан Ли и Чу-Рен Хуанг Обнаружение причин эмоций с помощью лингвистических конструкций (2010) В материалах 23-й Международной конференции по компьютерной лингвистике, страницы 179–187.

[4] Weiyuan Li, Hua Xu Текстовая классификация эмоций с использованием извлечения причин эмоций (2014) Expert Systems with Applications 41(4):1742–1749

[5] https://webanno.github.io/webanno/releases/3.2.2/docs/user-guide.html