Вложения слов с сохранением настроения

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

Давайте посмотрим на пример. Здесь мы смотрим на 10 ближайших соседей слова «хорошо» в пространстве для вложения слова. Мы используем модель Word2Vec, обученную на новостях Google с 300 измерениями. Ниже приведен код для просмотра 10 лучших соседей.

import gensim.models.keyedvectors as word2vec


wordVectorModel = word2vec.KeyedVectors.load_word2vec_format("GoogleNews-vectors-negative300.bin",
                                                                 binary=True)
neighbors = list(wordVectorModel.similar_by_word("good", topn=10))
print(neighbors)

Это дает нам следующий результат.

[('great', 0.7291510105133057), ('bad', 0.7190051078796387), ('terrific', 0.6889115571975708), ('decent', 0.6837348937988281), ('nice', 0.6836092472076416), ('excellent', 0.644292950630188), ('fantastic', 0.6407778263092041), ('better', 0.6120728254318237), ('solid', 0.5806034803390503), ('lousy', 0.5764201879501343)]

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

Решение

[1] предлагает очень новое решение этой проблемы. В этом блоге мы обсудим их подход, а затем покажем ближайших соседей «хороших», чтобы увидеть, работает ли этот подход эффективно или нет.

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

Рейтинг ближайшего соседа

На этом этапе они используют лексику тональности под названием E-ANEW, используемую при изучении расширенной версии Аффективных норм английских слов. Он содержит около 13000 слов, и каждое слово имеет оценку от 1 до 9, где 1 означает крайне отрицательный, 5 - нейтральный и 9 - чрезвычайно положительный.

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

Модель уточнения

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

  1. Ближе к своим сентиментально похожим соседям
  2. Подальше от своих непохожих соседей, и
  3. Не слишком далеко от исходного вектора.

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

[('astonishing', 0.9998810291290283), ('unbelievable', 0.9998570680618286), ('respectable', 0.9998552203178406), ('solid', 0.9998213648796082), ('commendable', 0.9998155236244202), ('decent', 0.9998145699501038), ('excellent', 0.9998089075088501), ('incredible', 0.9997923374176025), ('amazing', 0.9997886419296265), ('exciting', 0.9997859001159668)]

Код для этого метода можно найти [2]. Стоит отметить, что их вложения слов, которые также сохраняют тональность, могут очень помочь в выполнении анализа тональности.

Ссылки

[1] https://www.aclweb.org/anthology/D17-1056

[2] https://github.com/wangjin0818/word_embedding_refine