В статье рассмотрено применения машинного обучения для классификации отзывов в рамках курсового проекта по дисциплине «Machine Learning. Обучающиеся технические системы», научный руководитель – д.ф.-м.н., профессор Воронова Л.И.
Задача автоматического определения настроения текста является весьма актуальной. В настоящей статье затронута проблема решения задачи определения тональности текста. Под этим будет пониматься окрашенная эмоциями лексика и оценка, выраженная составителем текста по поводу чего-либо[1].
Количество отзывов на товары в сети Интернет ежедневно увеличивается и достигает такого количества, что просматривать каждый отзыв вручную становится уже невозможно. Но, компаниям-производителям необходимо знать мнение покупателей об их товарах[2]. Поэтому, поиск решений данной проблемы является актуальной задачей.
Целью работы является разработка нейронной сети для решения поставленной задачи анализа тональности текста. Автором статьи была разработана программа, реализующая решение такой задачи. Для обучения нейронной сети используются открытые данные торговой интернет-площадки Amazon по разделу продажи музыкальных инструментов[3]. Таким образом, объем данных составил 10257 отзывов на различные товары. Отзывы представлены в виде структуры json (Рис. 1).
Рис. 1 – Данные в формате json
При представлении структуры в наглядно понятном виде (Рис. 2) видны бесполезные для решения задачи поля, которые не будут учитываться при работе нейронной сети.
Рис. 2 – Данные в альтернативном виде
Таким образом, из такой структуры будут использованы поля отвечающие за текст обзора, а также за итоговую оценку, выставленную обозреваемому товару.
Далее, необходимо сформировать входной числовой вектор[4]. Для этого составлен словарь (Рис. 3) самых часто встречаемых слов в обзорах путем объединения обзоров из всей обучающей выборки. Пример записей в словаре представлен на Рис. 4.
Рис. 3 – Код составления словаря
Рис. 4 – Словарь
После составления словаря инициализируется вектор, размер которого совпадает с размером словаря. Для присвоения этому вектору входных значений производится сравнение слов в словаре и в отзыве. При наличии одинаковых слов, элементу вектора соответствующему элементу словаря присваивается единица. В данном случае, размер словаря равен 500 так как этот размер оказался оптимальным в ходе отладки программ , а значит и вектор имеет ту же размерность. Пример такого вектора входных данных представлен на Рис. 5
Рис. 5 – Пример входного вектора
Также, для обучения нейронной сети требуются ожидаемые вектора. Они были получены из изначальных данных, где изначальный скаляр был преобразован в вектор с единичным элементом, соответствующий рейтингу товара.
В качестве инструмента для решения задачи классификации был выбран персептрон с одним скрытым слоем. Количество нейронов на входном слое равно размеру словаря – 500. Количество нейронов на скрытом слое было принято взять 1/8 величины от входного – 63. Количество выходных нейронов равно количеству звёзд, которые может поставить покупатель к своему отзыву - 5.
Для тестирования данные разбиты на две части – обучающую и тестовую. В обучающую входит приблизительно 9000 отзывов, в тестовую приблизительно 1000 отзывов. Обучение происходило с помощью метода обратного распространению ошибки по достижению 1000 эпох, то есть каждый обучающий отзыв поменял параметры нейронной сети 1000 раз. Результаты и качество работы программы представлены в виде графиков (Рис. 6 и Рис. 7).
Рис. 6 – Зависимость ошибки обучающего набора от количества итераций
Рис. 7 – Точность предсказания на обучающем наборе и на тестовой выборке в зависимости от номера эпохи
Ошибка обучающего набора определялась средним от всех среднеквадратичных отклонений предсказанных векторов и ожидаемых.
Точность предсказания определялась соотношением верно предсказанных векторов к их общему количеству.
Обучение происходило с помощью алгоритма с обратным распространением ошибки[5], код которого проиллюстрирован на Рис. 8.
Рис. 8 – Код алгоритма обратного распространения ошибки
Выводы
В статье описана разработанная автором программа, реализующая алгоритм простейшей нейронной сети, классифицирующая типы отзывов на различные товары торговой площадки Amazon. В результате работы программы, получилась обученная нейронная сеть, способная с точностью приблизительно 0.6 верно определить поставленную под отзывом оценку.
Однако, из-за количества обучающих данных, сети не понадобилось много эпох для достаточного обучения, из-за чего начался процесс переобучения. Для решения данной задачи более корректным действием было бы не давать программе на обучение данные более одного раза.
Двинских В.И., Ларин А.И. Применение машинного обучения для классификации комментариев
Ехлаков Ю.П, Грибков Е.И. Модель извлечения пользовательских мнений о потребительских свойствах товара на основе рекуррентной
Источник данных. Отзывы на музыкальные инструменты пользователей магазина Amazon [Электронный ресурс]. – Режим доступа: http://jmcauley.ucsd.edu/data/amazon/ (дата обращения: 10.01.2019)
А. Жармагамбетов. Автоматическое определение тональности текста [Электронный ресурс] (Sentiment Analysis) Режим доступа: https://habr.com/ru (дата обращения: 01.12.2019)
Воронова Л.И., Воронов В.И. MachineLearning: регрессионные методы интеллектуального анализа данных: Учебное пособие / МТУСИ. – М., 2018, -83 с.