В статье описана разработка программы, построенной на основе нейронной сети для распознавания эмоциональной окраски текста.
Для реализации программы использовался объектно-ориентированный язык Python [2] версии 3.6, среда разработки-Jupiter Notebook, библиотека для чтения данных из файла-Pandas и библиотека, позволяющая реализовать машинное обучение при написании объектно-ориентированных программ- scikit-learn [3]. Их последовательное применение позволяет реализовать нейронную сеть, которая осуществляет классификацию текста на основе слов из которых он составлен, с целью определения его эмоциональной окраски. Набор возможностей, заложенных в программу при создании, позволяет применять ее для детектирования аномалий в сетевом траффике, так как она способна анализировать текст, а значит способна выявлять нестандартные последовательности символов, содержащиеся в поле комментариев IP пакетов.
Данная работа выполнена в рамках курсового проекта по дисциплине «Machine Learning. Обучающиеся технические системы», научный руководитель – д.ф.-м.н., профессор Воронова Л.И. [4].
Введение
На сегодняшний день область машинного обучения является одной из самых перспективных в сфере IT технологий. Использование основополагающих концепций и принципов присущих данной области позволяет осуществить классификацию текста. Актуальность ее практического применения связана с постоянно возрастающим объёмом данных в мировом информационном пространстве. В данном случае классификация текста позволяет определить общую эмоциональную окраску внесенных для детерминирования текстовых данных. Данный метод интеллектуального анализа данных активно внедряется крупными IT компаниями в их поисковых сервисах. В статье описана разработка программы, построенной на основе нейронной сети для распознавания эмоциональной окраски текста [1].
Примерами применения текстовой классификации являются: фильтрация спама, обнаружение мошенничества, рассылка целевых рекламных объявлений, прогнозирование оттока клиентов, обработка заявок на техническую поддержку.
Постановка задачи
Задачей является разработка и практическая реализация нейронной сети, которая позволяет классифицировать текст по указанным видам эмоциональной окраски. Выбранный для классификации текст содержится в наборе данных взятым с сайта Kaggle [5]. Он представляет собой набор данных из 20 000 новостей, собранных из новостных интернет ресурсов. Каждая из этих новостей является отдельным предложением со своей собственной эмоциональной окраской. Разработанный для классификации программный модуль может быть интегрирован в исходный код кроссплатформенных офлайн-приложений или же в качестве расширения в различные веб-браузеры [6].
Данную задачу необходимо решить, применяя вид машинного обучения «с учителем», с использованием нейронной сети структурной моделью которой является многослойный персептрон. Сначала нейронную сеть необходимо обучить, а затем протестировать на выборках, являющимися частями выбранного набора данных. Обучающая выборка содержит в себе 70 % исходного набора данных, а, тестовая выборка-оставшиеся 30%.
Описание набора исходных данных
В качестве исходных данных был использован открытый набор данных Kaggle news [5], состоящий из названий видов эмоциональной окраски и соответствующих им предложений, в формате json. Общее количество строк файла -41302, формат «текст, id, заголовок» (рис. 1).
Рис. 1 – Часть исходного набора данных
Набор данных содержит 3 вида эмоциональной окраски(класса): positive, negative, neutral.
Архитектура разрабатываемой нейронной сети
Автором статьи разработана архитектура нейронной сети для классификации текста по видам эмоциональной окраски (рис. 2).
Рис. 2 - Архитектура нейронной сети для классификации текста по видам эмоциональной окраски
Структурой данной нейронной сети является многослойный персептрон (MLP). Данная структура была выбрана с целью получения приемлемой точности на этапе обучения нейронной сети. Этот выбор обусловлен ее предрасположенностью к гибкой настройке параметров используемой модели: простота изменения количества скрытых слоев и количества нейронов на каждом из слоев нейронной сети [6]. Первый из таких слоев называют входным, последний - выходным. Кроме входного и выходного слоев, в многослойном персептроне содержится один или несколько промежуточных слоев, которые называют скрытыми. Эти слои состоят из нейронов. Далее приведено описание назначения нейронов на каждом из слоев:
Нейронная сеть (многослойный персептрон) состоит из:
Входного слоя - 1000 нейронов (количество уникальных слов в словаре обучающей выборки).
2 скрытых слоев, каждый из которых состоит из 50 нейронов.
Выходного слоя - 3 нейронов (3 класса).
Свойства данной нейронной сети: нелинейная функция активации присуща каждому нейрону; несколько скрытых слоев; высокая связность.
Для проверки влияния количества скрытых слоев на показатель точности при обучении модели было произведено экспериментальное сравнение. В качестве эксперимента было произведено обучение и тестирование 2 нейронных сетей: первая-нейронная сеть, содержащая 2 скрытых слоя, по 50 нейронов на каждом; вторая-с 1 скрытым слоем, содержащая общую сумму 2х слоев первой сети - 100 нейронов. Результаты экспериментов представлены на рисунках 3 и 4.
Рис. 3 – Точность при обучении/тестировании модели с 2-мя скрытыми слоями, по 50 нейронов
Рис. 4 – Точность при обучении/тестировании модели с 1 скрытым слоем, содержащим 100 нейронов
Нейронная сеть с 2-мя скрытыми слоями показала лучшую точность предсказания вида эмоциональной окраски предложений тестовой выборки по сравнению с нейронной сетью с 1м скрытым слоем (разница составила ~0.6%) при равном количестве нейронов.
Обучение нейронной сети
Обучение происходит методом обратного распространения ошибки. Обратное распространение ошибки - это градиентный спуск, использующий автоматическое дифференцирование в обратном режиме. Цель обучения - найти набор весов и смещений, который минимизирует функцию потери [11].
Этот алгоритм определяет два “потока” в сети. Входные сигналы двигаются в прямом направлении, в результате чего мы получаем выходной сигнал, из которого получаются ошибки. Величина ошибки двигается в обратном направлении, в результате происходит корректировка весовых коэффициентов связей сети.
Для корректировки весовых значений используется дельта-правило:
(1)
Функция f(x)– это функция активности элемента. Для нее используется логистическая функция:
(2)
Подставляется в предыдущую формулу и получается величина ошибки:
* (3)
В данных формулах:
– ошибка элемента с индексом
– индекс, соответствующий слою, который посылает ошибку “обратно”
– комбинированный ввод элемента
– активность элемента
Практические результаты реализации нейронной сети
Выводим первые 5 строк из исходного набора данных для проверки корректности чтения информации-проверка на возможный сбой кодировки при чтении данных программой (рис. 5):
Рис. 5 – Результат работы проверки вывода первых 4 строк
После проверки корректности обработки исходных данных была произведена проверка на отсутствие сторонних классов. Классы помечены метками sentiment. Эта проверка необходима для принятия решения о применении фильтрации исходных данных для очистки исходного набора данных от лишних классов, которая может привести к некорректному поведению обучающей модели (несоответствия результата действительности). Сторонние классы-классы чьим названием не являются: positive, negative, neutral. Проверка была произведена над последними 6 строками исходных данных (рис. 6):
Рис. 6 – Результат работы блока проверки на отсутствие сторонних классов эмоциональной окраски, а также проверка равенства между числом классов и строк
После выполнения всех необходимых проверок осуществляется непосредственное обучение нейронной сети. Для задания значений нейронам входного слоя используется метод Bag of Words (от англ. - мешок со словами) [9]. Метод получает на вход весь текст содержащийся в обучающей выборке. Она выявляет 1000 наиболее часто повторяющихся слов. Далее она определяет для каждого слова вид эмоциональной окраски предложений (класс), в которых оно упоминалось и назначает определяющим классом для слова тот класс, в предложениях которого оно упоминалось чаще всего. Формируется двумерная матрица вида (x, y), где x-это слова, а y-это класс, в котором оно чаще всего упоминалось. В итоге каждому из входных нейронов последовательно задается значение, являющееся координатами слова в матрице, к которому в дальнейшем будет обращаться модель при обучении и тестировании (рис. 7):
Рис. 7 – Визуализация части матрицы, полученной методом Bag of Words
Перед обучением модели многослойного персептрона на обучающей выборке производится ее выбор и настройка ее гиперпараметров. Предварительно задается количество скрытых слоев и количество нейронов на каждом из них (рис. 8).
Рис. 8 – Визуализация процесса назначения и дальнейшего обучения выбранной модели
После обучения происходит определение точности классификации на обучающей и тестовой выборках. На вход подается текст, относящийся к обучающей выборке, а затем текст, относящийся к тестовой выборке. Осуществляется процесс классификации. Результатом этого процесса является получение точности классификации вычисляющего на основе соотношения числа верно предсказанных видов эмоциональной окраски для каждого предложения- для обоих выборок сравниваются полученные метки классов с изначально известными на (рис. 9).
Рис. 9– Определение точности классификации на обучающей и тестовой выборках
Далее для оценки качества работы программы произведена классификация вида эмоциональной окраски предложения, не являющегося частью исходных данных: «Об аресте бывшего министра национальной экономики Казахстана Куандыка Бишимбаева сроком на два месяца сегодня Азаттыку сообщили в пресс-службе городского суда Астаны» (рис. 10):
Рис. 10 – Результат работы блока классификации текста, введенного с клавиатуры
Обученная сеть выдала результат классификации: negative, что является верным результатом определения введенного с клавиатуры текста соответствующего вида эмоциональной окраски.
Выводы
Полученная, в ходе выполнения поставленных задач, нейронная сеть, смогла предсказывать нейтральную, позитивную или негативную окраску текста, основываясь на тексте с точностью 95%.
Данная нейронная сеть может быть использована в качестве модуля расширения в веб-приложении какой-либо новостной компании для показа новостей в соответствии с интересами пользователя или же комплексной аналитики новостных событий. В дальнейшем планируется доработка данной программы с целью повышения показателя точности предсказания и интеграции в веб-приложение.
Список литературы
Сегаран. Т. Программируем коллективный разум. – Пер. с англ. – СПб: Символ Плюс,2008. – 368 с., ISBN 9785932861196
Официальный сайт Python [Электронный ресурс]. – URL: https://www.python.org/ (дата обращения: 25.12.2018).
Открытая библиотека машинного обучения scikit-learn [Электронный ресурс]. –URL: https://scikit-learn.org/ (дата обращения: 25.12.2018).
Воронова Л.И., Воронов В.И. Machine Learning: регрессионные методы интеллектуального анализа данных: Учебное пособие / МТУСИ. – М., 2018, -83
Dataset Kaggle news |Kaggle| [Электронный ресурс]. –URL: https://www.kaggle.com/c/news-classification-by-categories/data (дата обращения: 20.12.2018).
А.Мюллер, C.Гвидо Введение в машинное обучение. Руководство для специалистов по работе с данными: Пер. англ.-СПб: ООО “Альфа-книга”,2017.-480 c., ISBN
978-5-99089-108-1
Маккини У. Python и анализ данных/ Пер. с англ. Слинкин А. А. - М.: ДМК Пресс,2015. - 482 с., ISBN 78-5-97060-315-4
Рашка С. Python и машинное обучение / пер. с англ. А. В. Логунова. - М.: ДМК Пресс,2017. - 418 с., ISBN 978-5-97060-409-0.
Свейгарт Э. Автоматизация рутинных задач с помощью Python 2017. -592 c., ISBN 978-5-8459-2090-4.
Э.Мэтиз Изучаем Python. Программирование игр, визуализация данных, веб-приложения. 2017. — 496 с.,ISBN 978-5-496-02305-4
Функции активации в нейронных сетях [Электронный ресурс]. –URL: http://www.aiportal.ru/articles/neural-networks/activation-function.html (дата обращения: 19.12.2018)
Разновидности нейронных сетей [Электронный ресурс]. –URL: https://tproger.ru/translations/neural-network-zoo-1/ (дата обращения: 19.12.2018)
Лучшие языки программирования для ML [Электронный ресурс]. –URL: https://proglib.io/p/pl-for-data-science/ (дата обращения: 20.12.2018)
Глубинное обучение для автоматической обработки текстов [Электронный ресурс]. – URL: https://www.osp.ru/os/2017/02/13052221/ (дата обращения: 24.12.2018)
Алгоритм обратного распространения ошибки [Электронный ресурс]. –URL: https://scikit-learn.org/stable/modules/neural_networks_supervised.html (дата обращения: 23.12.2018)