ПРИМЕНЕНИЕ ТЕХНОЛОГИИ WORD2VEC В ЗАДАЧЕ ВЫДЕЛЕНИЯ ИНВЕРТОРОВ ТОНАЛЬНОСТИ
ПРИМЕНЕНИЕ ТЕХНОЛОГИИ WORD2VEC В ЗАДАЧЕ ВЫДЕЛЕНИЯ ИНВЕРТОРОВ ТОНАЛЬНОСТИ
Научная статья
Полозов И.К.1, *, Волкова И.А.2
1 ORCID: 0000-0003-2679-5465;
1 ,2МГУ им. М.В. Ломоносова, Москва, Россия
* Корреспондирующий автор (ilya-polozov[at]mail.ru)
АннотацияВ работе рассматривается задача выделения инверторов тональности (слов, меняющих тональность соседних слов). Предложен новый метод выделения таких слов, использующий векторные представления, получаемые с помощью технологии Word2vec. В работе также проводится обзор задач, в которых используются тональные слова и инверторы тональности, анализируются существующие методы выделения инверторов тональности, определяются достоинства и недостатки каждого подхода, подробно описывается предложенный новый алгоритм, приводится оценка его работы.
Ключевые слова: инверторы тональности, word2vec, оценка тональности, компьютерная лингвистика.
APPLYING WORD2VEC TECHNOLOGY TO SHIFTER EXTRACTION TASK
Research article
Polozov I.K.1, *, Volkova I.A.2
1 ORCID: 0000-0003-2679-5465;
1, 2 Lomonosov Moscow State University, Moscow, Russia
* Corresponding author (ilya-polozov[at]mail.ru)
AbstractThe paper considers the task of tonality shifters extraction (words that change the tonality of neighboring words). A novel approach for extracting such words is proposed. It uses vector representations generated by Word2vec technology. The paper also reviews tasks that use tonal words and tonality shifters, analyzes existing methods for extracting tonality shifters, determines the advantages and disadvantages of each approach. It gives a thorough description of the proposed algorithm and its evaluation.
Keywords: tonality shifters, word2vec, sentiment analysis, computational linguistics.
Анализ тональности является одним из направлений обработки естественного языка. Он может применяться для автоматической оценки отзывов о товаре, выявлении мнения о политике, экологии, компании, репутации и во многих других задачах. Также разработаны системы, в которых анализ тональности используется для предсказания эпидемий.
Часто анализ тональности разделяется на следующие подзадачи: определение объекта оценки, субъекта, делающего оценку и саму оценку. Иногда в оценке выделяются отдельные аспекты.
Во многих таких системах используется информация о тональности как отдельных слов, так и словосочетаний. При этом тональность слов может меняться в зависимости от контекста. Часто тональность меняется с помощью других слов - инверторов тональности, например, "уменьшить", "избавить", "вылечить" и других. Для русского языка в настоящее время словари инверторов тональности разработаны слабо. Предлагаемая работа посвящена созданию именно таких словарей.
Анализ тональности на основе методов машинного обучения
В задаче автоматической оценки тональности текста наилучшие результаты показывают программы, основанные на методе опорных векторов, методе максимальной энтропии и Наивный Байесовский алгоритм [1].
Когда количество признаков велико лучшие работает подход, использующий SVM (Support Vector Machine - метод опорных векторов), а когда признаков немного – Наивный Байесовский алгоритм. При этом для работы алгоритма количество признаков более критично, чем частота каждого отдельного признака [1].
Анализ тональности на основе правил
В самом простейшем подходе каждому оценочному слову приписывается вес, равный 1 или -1, в зависимости от его тональности. Затем веса всех тональных слов складываются, и по полученному числу определяется тональность отзыва. В более сложных алгоритмах также учитываются словосочетания, тональность слов оценивается по более широкой шкале, учитывается совместная встречаемость.
У систем, основанных на правилах, в большинстве случаев выше точность, но ниже полнота.
Инверторы тональности могут использоваться как в системах, использующих машинное обучение, так и в системах, основанных на правилах.
Системы, использующие тональные слова
Многие системы автоматической оценки тональности используют словарь тональных слов. Есть работы, основанные на машинном обучении - работа [2], в которой строится нейронная сеть со слоем, использующем информацию о тональности слов. Авторам удалось увеличить точность классификации отзывов по тональности. В работе [3] используются частота тональных слов как признак для классификатора.
Обзор работ, посвященных созданию инверторов тональности
Среди работ, посвященных извлечению инверторов тональности, можно выделить работу [4]. Авторы получают инверторы тональности с помощью системы правил. На первом шаге вручную создается список инверторов. Затем анализируются их наиболее значимые лингвистические характеристики.
В работе [5] авторы получают инверторы тональности с помощью ассоциативных правил. Для каждого предложения строится дерево отношений с помощью синтаксического анализатора. Затем отбираются наиболее значимые отношения с тональными словами.
После этого обучается классификатор, который расширяет первоначальный список инверторов.
Много работ посвящено и “ручному” построению словаря инверторов. Например, в работе [6] строится система правил для извлечения инверторов китайского языка, где рассматриваются последовательности токенов, частота встречаемости которых выше определенного порога. Алгоритм заключается в следующем:
- проводится сегментация текста на предложения, предложений на слова;
- для каждого слова определяется его часть речи;
- выбирается несколько слов и вручную приписывается, стоят ли они перед положительными словами или нет;
- полученный корпус разбивается на фразы;
- затем рассматриваются все предложения, в которых есть хотя бы одно размеченное слово; в этих предложениях все положительные слова заменяются токеном, обозначающем его часть речи;
- находятся все фразы, включающие хотя бы одного кандидата в инверторы, и частота встречаемости которых больше определенного порога;
- если полученное множество пусто, то остановиться, иначе
- уменьшить множество, оставить только фразы, в которых встречаются положительные слова. Также если фраза содержит инвертор, то все фразы, которые включают данную фразу, убираются из рассмотрения. Если же фраза вообще не содержит инверторов, то все слова, которые она содержит убираются из рассмотрения. Например, пусть есть фраза "не A", которая является инвертором. “A” обозначает положительное слово. Тогда фразы "не очень A", "не совсем A", тоже являются инверторами, и их не надо вручную аннотировать. При этом, например, фраза "ручной A" не меняет тональность, поэтому ее можно удалить.
- снова вручную находятся инверторы.
- уменьшить порог встречаемости и заново перейти на шаг поиска частотных фраз.
Существует несколько видов инверторов тональности. В работе [6] выделяется 3 класса инверторов в зависимости от степени и направления изменения тональности слова:
1) инверторы, меняющие тональность слова на противоположную
2) Инверторы, увеличивающие тональность слова
3) Инверторы, уменьшающие тональность слова.
Метод пополнения словаря инверторов тональности с помощью Word2vec
Предлагаемый метод работает со словосочетаниями вида “Wi+тональное слово” и “тональное слово+Wi”, где Wi - слово, предшествующее тональному слову из выбранного словаря тональных слов или стоящее после него. Для каждого Wi собрана частота совместной встречаемости с тональными словами. Эмпирически выбран порог, после которого считать Wi кандидатом в инверторы. Каждое появление кандидата в тексте заменено токеном “кандидат_тональное_слово”. Обучен Word2vec [7]. Потом, если для данного Wi_тональное_слово среднее расстояние до положительных слов меньше, чем среднее расстояние до отрицательных слов, при этом если само тональное слово в токене Wi_тональное_слово отрицательное, то Wi инвертор.
На вход программе подаются тексты отзывов (при этом не требуется информация о тональности конкретного отзыва), список позитивных и негативных слов. Происходит предобработка текста: удаление стоп-слов, сегментация на предложения, предложений на токены, перевод токенов в начальную форму. В итоге получается новая обработанная коллекция отзывов. Экспериментально выявлено, что для обучения Word2vec нужно минимум 100000 предложений. Всего в собранном корпусе 117039 предложений.
На следующем шаге в отзывах находятся все тональные слова и запоминаются в массиве. Этот массив будет необходим для того, чтобы на последнем шаге измерять близость измененных инверторами слов к тональным словам, так как не все слова из списка тональных слов есть в корпусе, и соответственно будут получены векторные представления только для тональных слов, которые встречаются в корпусе.
После этого программа проходит по всем отзывам и находит тональные слова. Для каждого соседа тонального слова слева и справа происходит подсчет, сколько раз данное слово встретилось с тональными словами. Затем выбирается порог, после которого слово можно считать кандидатом в инверторы тональности. В данной работе он равен 3.
Затем рассматриваются кандидаты в инверторы. Для каждого кандидата смотрится, где он встречается в тексте. Если он стоит рядом с тональным словом, то кандидат и тональное слово заменяются единым токеном: кандидат_тональное_слово. Модифицированное слово добавляется в специальный массив. Так делается для всех тональных слов и для всех кандидатов. Таким образом, получается обучающий корпус для Word2vec.
После этого обучается Word2vec со следующими экспериментально подобранными параметрами: размер вектора - 150, размер окна - 8, минимальный порог встречаемости - 2, модель - SkipGram, количество итераций - 30.
Обучив модель Word2vec, для тонального слова из каждого модифицированного токена считается его тональность. Это делается следующим образом. Берутся 50 положительных и 50 отрицательных слов из коллекции, считается расстояние по косинусной мере между тональным словом из модифицированного токена и каждым таким тональным словом. Находится среднее расстояние до положительных слов и среднее расстояние до отрицательных слов. Если среднее расстояние до положительных слов больше, чем до отрицательных, то слову приписывается отрицательная тональность. Если у тонального слова была положительная тональность (берется из коллекции тональных слов), а подсчитанная получилась отрицательная, то тональность слова была изменена инвертором. Таким образом, соответствующий кандидат в инверторы становится инвертором. Так же делается, если тональность изменилась с отрицательной на положительную.
Реализация
Для реализации был выбран язык программирования Python3. Выбор обусловлен наличием для этого языка всех необходимых библиотек, простотой синтаксиса и обширной документацией. В качестве среды разработки был выбран редактор Sublime Text. Этот редактор быстрый и обладает удобной подсветкой синтаксиса. Также используются следующие основные библиотеки: NLTK - для сегментации и токенизации текста, Pyenchant - для исправления орфографических ошибок в корпусе, Gensim - для обучения Word2vec, Pickle - для сохранения данных, Pymorthy2 - для получения начальной формы слов, Re - для использования регулярных выражений при токенизации, Numpy - для вычисления близости векторов.
Требования к аппаратному обеспечению для работы системы
Для работы системы необходимо 2ГБ оперативной памяти, 112,4 МБ свободного места на диске (с учетом необходимых библиотек для работы), операционная система семейства Linux.
Оценка работы системы
Эксперименты проведены в системе Google Collab. Процессор Intel Xeon, тактовая частота 2.20 ГГц, оперативная память 12.7 ГБ.
На вход системе подаются отзывы с сайта Отзовик [8] из раздела “Здоровье и гигиена”, так как в медицинских отзывах большое количество инверторов (часто встречаются такие конструкции, как “сняло напряжение”, “вылечило болезнь” и так далее). Размер корпуса, для поиска инверторов: 117039 предложений. Время обучения модели составило 15 минут 55 секунд. Время выделения инверторов – 11 минут 48 секунд. Общее время работы - 27 минут 43 секунды. Система обнаружила 253 инвертора. Для оценки качества инверторов была написана программа автоматической оценки тональности. Программа определяет тональность отзыва, подсчитывая количество положительных и отрицательных слов. Так же учитываются инверторы, полученные основной системой. Если в предложении найдены инверторы, то тональность предложения считается противоположной от тональности рядом стоящими с инверторами слов. Тональность предложений без инверторов определяется тональностью большинства слов этого предложения. Тональность всего отзыва определяется тональностью большинства предложений.
Корпус для оценки тональности был тоже взят с сайта Отзовик, но сами отзывы отличны от тех, на которых происходил поиск инверторов. Размер корпуса для оценки: 200 положительных отзывов и 200 отрицательных отзывов. Эксперименты показали увеличение точности оценки на 4% при использовании словаря инверторов, полученного с помощью Word2vec. Общая точность метода оценки составила 85%. При этом важна не сама точность, а именно ее увеличении при использовании полученных инверторов.
Для сравнения времени работы системы с работой [5] были получены синтаксические отношения c помощью программы Maltparser для 117039 предложений. Эти отношения необходимы для работы подхода [5]. Время работы составило 39 минут 23 секунды. Таким образом, предложенный подход работает быстрее как минимум на 12 минут 20 секунд на корпусе отзывов с сайта “Отзовик”.
В результате проведенных экспериментов предложенный подход показал свою работоспособность и эффективность, он дает повышение точности классификации на 4%. Преимущество разработанного подхода по сравнению с существующими в большей скорости работы. Нет необходимости получать синтаксические отношения, как в работе [5], и не нужно вручную составлять правила, как в подходе [4]. Недостатком является необходимость использовать большой обучающий корпус - больше 100000 предложений. Полученный список инверторов можно также расширить, используя синонимы из тезаурусов, например, [9] или [10].
Благодарности Выражаем благодарность Ефремовой Наталье Эрнестовне за идею об адаптации Word2vec к задаче выделения инверторов тональности. | Acknowledgement We want to thank Efremova Natalia Ernestovna for the idea of adapting Word2vec to shifter extraction task. |
Конфликт интересов Не указан. | Conflict of Interest None declared. |
Список литературы / References
- Pang B. Thumbs up? sentiment classification using machine learning techniques Pang B. Vaithyanathan S. // Proceedings of the ACL-02 conference on Empirical methods in natural language processing. – 2002. - Vol. 10. - P. 79-86. doi: 3115/1118693.1118704
- Ye Z. Encoding Sentiment Information into Word Vectors for Sentiment Analysis / Z. Ye, F. Li, T.Baldwin // Proceedings of the 27th International Conference on Computational Linguistics. – 2018. - P. 997-1007
- Morsy S. A. Improving Document-Level Sentiment Classification Using Contextual Valence Shifters The American University in Cairo / S.A. Morsy, A. Rafea // International Conference on Application of Natural Language to Information Systems. - – P. 253-258. doi: 10.1007/978-3-642-31178-9_30
- Schulder M. Towards Bootstrapping a Polarity Shifter Lexicon using Linguistic Features / M. Schulder, M. Wiegand, J. Ruppenhofer // Proceedings of the Eighth International Joint Conference on Natural Language Processing. – - Vol. 1. - P. 624-633
- Noferesti S. Using Data Mining Techniques for Sentiment Shifter Identification / S. Noferesti, M. Shamsfard // Language Resources and Evaluation. – - Vol. 53. - P. 279–302. doi: 10.1007/s10579-018-9432-0
- Xu G. Mining Chinese Polarity Shifters / G. Xu, C. Huang // Chinese Lexical Semantics: 16th Workshop. - - P. 244-251. doi: 10.1007/978-3-319-27194-1
- Статься их Википедии “Word2vec” [Электронный ресурс]. - URL: https://ru.wikipedia.org/wiki/Word2vec (дата обращения 19.03.2020).
- Сайт “Отзовик” // [Электронный ресурс]. - URL: https://otzovik.com/ (дата обращения 19.03.2020).
- Сайт “РуТез” // [Электронный ресурс]. - URL: https://www.labinform.ru/pub/ruthes (дата обращения 19.03.2020).
- Сайт “RuWordNet” // [Электронный ресурс]. - URL: http://www.ruwordnet.ru/ru (дата обращения 19.03.2020).
Список литературы на английском языке / References in English
- Pang B. Thumbs up? sentiment classification using machine learning techniques Pang B. Vaithyanathan S. // Proceedings of the ACL-02 conference on Empirical methods in natural language processing. – 2002. - Vol. 10. - P. 79-86. doi: 3115/1118693.1118704
- Ye Z. Encoding Sentiment Information into Word Vectors for Sentiment Analysis / Z. Ye, F. Li // Proceedings of the 27th International Conference on Computational Linguistics. – 2018. - P. 997-1007
- Morsy S. A. Improving Document-Level Sentiment Classification Using Contextual Valence Shifters The American University in Cairo / S.A. Morsy, A. Rafea // International Conference on Application of Natural Language to Information Systems. - – P. 253-258. doi: 10.1007/978-3-642-31178-9_30
- Schulder M. Towards Bootstrapping a Polarity Shifter Lexicon using Linguistic Features / M. Schulder, M. Wiegand, J. Ruppenhofer // Proceedings of the Eighth International Joint Conference on Natural Language Processing. – - Vol. 1. - P. 624-633
- Noferesti S. Using Data Mining Techniques for Sentiment Shifter Identification / S. Noferesti, M. Shamsfard // Language Resources and Evaluation. – - Vol. 53. - P. 279–302. doi: 10.1007/s10579-018-9432-0
- Xu G. Mining Chinese Polarity Shifters / G. Xu, C. Huang // Chinese Lexical Semantics: 16th Workshop. - - P. 244-251. doi: 10.1007/978-3-319-27194-1
- Article from Wikipedia “Word2vec” [Electronic resource]. - URL: https://ru.wikipedia.org/wiki/Word2vec (accessed: 19.03.2020). [in Russian]
- Site “Otzovik” // [Electronic resource]. - URL: https://otzovik.com/ (accessed: 19.03.2020). [in Russian]
- Site “RuThes” // [Electronic resource]. - URL: https://www.labinform.ru/pub/ruthes (accessed: 19.03.2020). [in Russian]
- Site “RuWordNet” // [Electronic resource]. - URL: http://www.ruwordnet.ru/ru (accessed: 19.03.2020). [in Russian]