Статья опубликована в рамках: XLIV Международной научно-практической конференции «Естественные и математические науки в современном мире» (Россия, г. Новосибирск, 06 июля 2016 г.)
Наука: Информационные технологии
Секция: Системный анализ, управление и обработка информации
Скачать книгу(-и): Сборник статей конференции
дипломов
АНАЛИЗ ТОНАЛЬНОСТИ ТЕКСТОВ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ WORD2VEC
SENTIMENT ANALYSIS OF TEXTS WITH USING TECHNOLOGY WORD2VEC
Alexey Mishenin
senior lecturer of Department of technology of programming, faculty of applied mathematics and control processes Saint Petersburg state University,
Russia, Saint Petersburg
Ekaterina Nefedova
bachelor of the Computer Software and Dataware Saint Petersburg state University, Russia, Saint Petersburg
АННОТАЦИЯ
В данной работе исследуются методы глубинного обучения с использованием нейросетевых моделей для решения задач обработки текстов. Исследуется модель Word2Vec векторного представления слов на естественном языке, анализируются ее преимущества и недостатки. Производится экспериментальное сравнение методов классификации на примере задачи определения тональности рецензий пользователей сервиса Kinopoisk.
ABSTRACT
In this paper, we study the methods of deep learning neural networks for the solution tasks of text processing. We investigate a model Word2Vec for computing representation of words in natural language, its advantages and disadvantages are discussed. The paper evaluates of text classification tasks by example of sentiment reviews of Kinopoisk users.
Ключевые слова: глубинное обучение; нейронные сети; анализ тональности.
Keywords: deep learning; neural networks; Word2Vec; sentiment analysis.
Мнения занимают основное место почти во всех областях человеческой деятельности. Наши убеждения и представления о реальности и выбор, который мы делаем, в значительной мере зависит от того, как другие видят и оценивают мир. По этой причине, когда нам нужно принять решение, мы часто ищем чужие мнения. Это справедливо не только для людей, но и для организаций. Мнения и связанные с ними понятия, такие как чувства, оценки, отношения и эмоции являются предметом изучения анализа настроений (sentiment analysis). Анализ тональности текста – обработка естественного языка, классифицирующая тексты по эмоциональной окраске. При решении задачи возникает ряд трудностей, он может быть связан с порядком слов в предложении, омонимичностью слов, орфографическими и синтаксическими ошибками, все это может в корне менять смысл, а следовательно, и эмоциональную окраску. В общем случае тональность текста весьма субъективна, но ее анализ находит много полезных применений. Например, компании могут понять реакцию пользователей на продукт, а также выявить негативные комментарии.
Компьютер считает быстрее человека, но гораздо хуже понимает естественный язык. Например, существуют два слова, обозначающие одно и то же. Человек, опираясь на свой жизненный опыт, на свои знания, может понять, что эти слова имеют одинаковую смысловую нагрузку. Компьютер же «думает» совсем иначе, сразу встает вопрос, как научить понимать компьютер, что значение этих слов одинаково. Для того чтобы подобраться к смысловому значению слова, необходимо произвести семантический анализ. Необходимо смоделировать, у каких слов схожее значение. Если слова обозначают одно и то же, то и их представления должны быть похожи.
Существует два фундаментальных подхода к моделированию семантики:
- Подход, построенный на знаниях. Также этот подход можно назвать подходом «сверху вниз». Это трудоемкий способ, требующий огромных человеческих ресурсов. В данном случае тысячи экспертов должны построить онтологическую модель, описав какие слова являются синонимами, антонимами, смысловыми подчастями других слов и т. д.
- Дистрибутивный подход или подход «снизу-вверх». Здесь извлекается значение из употребления слов в тексте.
Более подробно рассмотрим второй подход. Для построения векторных представлений будем использовать технологию Word2Vec. В данной модели для получения хороших векторов используется машинное обучение. Одним из популярных методов является построение искусственных нейронных сетей. Изначально задается размерность векторов, которые заполняются случайными величинами. Во время обучения значения компонент векторов будут меняться, причем вектор каждого слова будет максимально схож с векторами типичных соседей и максимально отличаться от векторов слов, которые соседями данному слову не являются. Сами компоненты векторов никак не связаны с конкретными словами из словаря. Но и здесь не все так гладко, при обучении нейронных сетей требуется очень много времени и огромные вычислительные затраты. Но в 2013 году произошла своего рода революция, Tomas Mikolov вместе с соавторами опубликовал статью “Efficient Estimation of Word Representations in Vector Space” [3], а позже выложил код утилиты Word2Vec, которая позволяет тренировать нейронные языковые модели на больших словарях. Миколов модифицировал существовавшие до этого алгоритмы, поэтому Word2Vec обучается на порядок быстрее, чем нейронные языковые модели до него.
Оценка эффективности модели
Поскольку будет проводиться сравнение различных классификаторов, необходимо ввести метрики, по которым будет вестись сравнение. Каждый отзыв обучающей выборки принадлежит одному из классов. Натренированный бинарный классификатор расставляет метки на тестовом множестве. По итогам тестовая выборка разбивается на 4 группы. Их размеры характеризуют работу классификатора на данной выборке.
- TP (true positive) – истинно положительные;
- TN (true negative) – истинно отрицательные;
- FP (false positive) – ложно положительные;
- FN (false negative) – ложно отрицательные.
Для оценки вводятся показатели точность (precision) и полнота (recall):
Для оценки классификатора требуется только одно число, характеризующее его работу. В качестве такой метрики можно взять AUC (area under ROC curve) – площадь под кривой ошибок. Кривая ROC (receiver operating characteristic) представляет собой зависимость доли истинно положительных (TPR – true positive rate) от доли ложно положительных результатов (FPR – false positive rate).
ROC кривую изображают на графике, эта функция всегда возрастает, больший изгиб говорит о лучшей работе бинарного классификатора. Визуально достаточно сложно сравнить эффективность нескольких моделей, поэтому сравнивается численный показать – площадь под кривой ошибок – AUC. Значение AUC лежит в диапазоне [0; 1]. Чем выше значение метрики, тем лучше эффективность модели. Ее и будем использовать для сравнения работы классификаторов.
Экспериментальные данные
Для экспериментального сравнения была выбрана задача определения тональности рецензий на русском языке пользователей сервиса Kinopoisk. Имеющиеся данные представляют собой 22379 отзывов, из которых 17838 имеют положительную оценку, 4541 – отрицательную. Также существуют нейтральные отзывы, которые не несут специфической эмоциональной окраски. Но было принято решение не включать такие данные, так как последующая оценка моделей не для бинарного классификатора, является весьма трудной задачей. Для загрузки рецензий была реализована программа на языке Python, выполняющая парсинг с сайта www.kinopoisk.ru [1].
Отзывы в исходном виде использовать нельзя, они содержат много мусора, для начала их нужно предварительно обработать. Для простоты удалим все знаки препинания, приведем все слова к нижнему регистру, а также избавимся от всех чисел. Наконец нужно решить, как быть с часто встречающимися словами, которые не несут особого смысла (в, на, и, а, …), такие слова называют «стоп-словами».
Тренировать Word2Vec лучше без удаления «стоп-слов», так как алгоритм опирается на широкий контекст в предложении для получения высококачественных векторов слов. Word2Vec предполагает получить на вход отдельные предложения, представленные в виде списка слов. Иными словами, формат ввода – список списков.
Выбрать параметры нелегко, но как только выбор сделан, создание модели Word2Vec будет весьма простым [2]. Для обучения были выбраны следующие параметры: архитектура skip-gram, функция активации – иерархический softmax, размер векторных представлений – size = 300. Обучение Word2Vec составило порядка 88.8 секунд, в корпусе содержится 18610 терминов, каждое слово представлено в виде вектора в 300-мерном пространстве. Размер сохраненной модели – 46.3 МБ.
Приведем несколько примеров семантического калькулятора. Определим запрос, в котором выполняются следующие векторные операции:
предположительным результатом будет . Посмотрим, какие результаты покажет модель.
Также из любого набора слов можно легко убирать лишнее простым сравнением векторов. Удаляются те слова, векторы которых наиболее удалены от среднего. Так как модель была построена на рецензиях к фильмам, составим запрос, близкий к этой тематике.
Запрос:
Результат:
Word2vec может находить близкие слова к заданному.
Запрос:
Результат:
Теперь перейдем к следующей части, к определению тональности рецензий. Существует несколько способов реализации. После использования модели Word2Vec каждое слово представлено в виде вектора. Необходимо их объединить, чтобы можно было классифицировать документы по тональности.
Векторное усреднение
Одной из проблем является то, что все отзывы имеют переменную длину. Необходимо найти способ, чтобы взять отдельные векторы слов и превратить их в набор особенностей, который имеет одинаковую длину для всех рецензий. Поскольку каждое слово – это вектор в N-мерном пространстве, мы можем использовать векторные операции, чтобы объединить слова в каждом обзоре. Один из способов – это просто усреднить векторы слов в данном отзыве. Для этой цели мы удалим «стоп-слова», которые просто добавляют шум. После того, как мы усреднили векторы, вернемся к задаче классификации для разметки данных.
Кластеризация
Word2vec создает кластеры семантически связанных слов, поэтому еще один возможный подход заключается в использовании сходств слов внутри кластера. Группировка векторов таким способом известна как «векторное квантование» («vector quantization»). Для этого сначала нужно найти центры кластеров – слова, можно сделать это при помощи алгоритма кластеризации, например, k-means. В k-means только один параметр, который нужно установить, это – количество кластеров. Как решить, сколько кластеров создавать? Методом проб и ошибок! Предположим, что небольшие кластеры дают лучший результат, нежели большие. Будем использовать библиотеку scikit-learn для выполнения кластеризации k-means. Возьмем сначала за среднее количество слов в кластере значение 50, тогда количество кластеров, то есть будет определяться следующим образом: . Запустим алгоритм кластеризации, при данном параметре время разбиения составило 521.32 секунд, . Аналогично за среднее значение возьмем 10. При данном параметре время разбиения на кластеры составило 7550.72 секунд, .
Рассмотрим несколько классификаторов, используя векторное представление документов, сравним их, применив ROC-анализ. В качестве входных данных для обучения классификатора SVM (support vector machine) – метод опорных векторов будем менять следующие параметры: ядро kernel, максимальное количество итераций max_iter. Для классификатора Random Forest – случайный лес в качестве параметра можем устанавливать количество деревьев. По умолчанию стоит 100. Большее количество деревьев могут работать лучше, а могут и хуже, но, безусловно, это займет больше времени для запуска алгоритма.
Для модели Word2Vec и усредненных векторов документов были достигнуты следующие результаты (Рисунок 1).
Рисунок 1. Точность классификаторов по метрике AUC для модели W2V и усредненных векторов слов. Классификаторы SVM (kernel = rbf, max_iter = 500), Random Forest (n_estimators = 100)
Для модели Word2Vec и центроид кластеров при были достигнуты следующие результаты (Рисунок 2).
Рисунок 2. Точность классификаторов по метрике AUC для модели W2V и центроид кластеров при k = 372. Классификаторы SVM (kernel = rbf, max_iter = 500), Random Forest (n_estimators = 100)
Для модели Word2Vec и центроид кластеров k-means () были достигнуты следующие результаты (Рисунок 3).
Рисунок 3. Точность классификаторов по метрике AUC для модели W2V и центроид кластеров при k = 1861. Классификаторы SVM (kernel = rbf, max_iter = 500), Random Forest (n_estimators = 100)
В заключении можно сказать, что технология Word2Vec показывает весьма хорошие результаты при обработке текстов на русском языке. Среди преимуществ данного подхода перед нейронными сетями и другими популярными моделями является то, что модель существенно понижает размерность вектора признаков, а также уменьшает вычислительные затраты при обучении. К недостаткам можно отнести тот факт, что достаточно часто для применения различных методов машинного обучения требуется векторное представление для данных переменной длины, а модель дает только векторные представления слов.
Список литературы:
- Русскоязычный интернет-проект «КиноПоиск», посвящённый кинематографу – [Электронный ресурс], URL: http://www.kinopoisk.ru (Дата обращения: 18.01.2016).
- Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, Jeffrey Dean. Distributed Representations of Word and Phrases and their Compositionaly – [Электронный ресурс] // In Proceedings of Workshop at The Twenty-seventh Annual Conference on Neural Information Processing Systems (NIPS) – 2013, URL: http://arxiv.org/abs/1310.4546 (Дата обращения: 15.02.2016).
- Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean. Efficient Estimation of Word Representations in Vector Space – [Электронный ресурс] // In Proceedings of Workshop at International Conference on Learning Representations (ICLP) – 2013, URL: http://arxiv.org/abs/1301.3781 (Дата обращения: 26.05.2015).
дипломов
Оставить комментарий