Существует вектор v, такой, что перевод отрицательного слова n на v ведет к антониму n.

Примеры:

  • плохо + vхорошо
  • скучно + vинтересно
  • глупый + vумный

Введение

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

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

Лексика настроений

Лексиконы настроений - зверь простой. Они состоят из отображения слова на его полярность. Оценка полярности может быть категориальной (положительный, нейтральный, отрицательный) или числовой (например, по шкале от -5 до 5).

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

Вложения слов

Вложения слов - это представления слов в многомерном пространстве. Каждое слово связано с вектором, и семантически связанные слова близки в пространстве вложений.

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

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

  • Непрерывный мешок слов
  • Модель Skipgram
  • Перчатка
  • FastText

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

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

Обогащение лексикона

Пополнение словарного запаса будет достигаться за счет двух операций:

  • Ищите синонимы, просматривая векторы, наиболее похожие на известные положительные или отрицательные слова.

  • Ищите антонимы, просматривая наиболее похожие векторы после перевода с помощью вектора neg2pos v или вектора pos2neg -v

Шаги, необходимые для обогащения словарного запаса:

  • Загрузите предварительно обученные вложения слов. Мы будем использовать 100 тысяч лучших слов из предварительно обученных Glove Embeddings (glove.42B.300d.zip)
  • Найдите вектор v, взяв среднее значение небольшого набора предопределенных пар антонимов
  • Определите функции neg2pos и pos2neg как простые переводы вектором v.

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

  • Изучите результаты.

В таблицах ниже показано, как работают преобразования для некоторых примеров как в положительном, так и в отрицательном направлении. В столбце start_word указано слово, с которого было инициировано преобразование. Столбец closest показывает слова, ближайшие к start_word в пространстве вложений. В общем случае они должны быть синонимами начального слова. Столбец translated показывает слова, ближайшие к точке (start_word + v) в пространстве вложений. Теоретически они должны представлять антонимы начального слова. К сожалению, они все еще содержат некоторые синонимы start_word. Последний столбец filtered показывает результаты с синонимами, отфильтрованными с помощью предложенной выше техники.

Предостережения

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

Будущая работа

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