Статья содержит описание разработки семантической нейронной сети, направленной на определение эмоциональной окраски текста.
Для разработки и реализации программы использовался объектно-ориентированный язык Python [2] версии 3.5, среда разработки-Jupiter Notebook, библиотека для чтения данных из файла-Pandas и библиотека Keras, представляющую собой открытую нейросетевую библиотеку, нацеленную на работу с сетями глубинного обучения, модуль tokenize позволяющий векторизовать текстовый корпус, превращая каждый текст в последовательность целых чисел (каждое целое число является индексом токена в словаре).[3]. Их применение позволило реализовать нейронную сеть, направленную на определение эмоционального окраса текста, на основе определения эмотивного значения слов, содержащихся в предложениях. Возможности и перспективы данной программы могут быть использованы для определения психологического состояния человека по его поведению в сети интернет, так как она способна анализировать эмоциональную окраску текста, запросов в поисковых системах, сообщений в социальных сетях, а, следовательно, выявлять аномалии в состоянии человека, написавшего определённый текст или сообщения.
Данная работа выполнена в рамках курсового проекта по дисциплине «Machine Learning. Обучающиеся технические системы», научный руководитель – д.ф.-м.н., профессор Воронова Л.И. [1].
Введение
В 21 веке информационные технологии проникли буквально во все сферы деятельности человека, из-за этого необходимость обработки данных резко возросла. Постоянно растущий объём данных и время, проводимое людьми в сети Интернет, связанных как с рабочими процессами, так и с препровождением свободного времени привели к тому, что область машинного обучения на сегодняшний является одной из самых перспективных в сфере IT технологий и как следствие актуализирует применение семантического анализа.
Основные принципы относящиеся к данной области позволяют осуществлять анализ и классификацию набора текстовых данных. В данном случае, интеллектуальный анализ данных позволяет определить эмоциональную окраску внесённых для определения текстовых данных. Миру уже известны успешные случаи применения семантического анализа, такие как экономическое прогнозирование на основе новостных сообщений, рассылка рекламных объявлений, определение и фильтрация спама, а также активное использование поисковыми системами.
В статье описана разработка программы, построенной на основе свёрточной нейронной сети для распознавания эмоциональной окраски текста [4].
Постановка задачи
Задачей является разработка и практическая реализация семантической нейронной сети, которая позволяет классифицировать текст по указанным видам эмоциональной окраски. Выбранный для обучения классификации датасет взят с открытого интернет ресурса Kaggle [8]. Набор данных содержит 1.3 миллиона сообщений пользователей социальной сети Twitter извлеченных с помощью программного обеспечения API Twitter. Каждое из сообщений имеет свой эмоциональный окрас. Разработанная программа в дальнейшем может быть использована для интеграции в различные расширения для веб-браузеров или приложения, связанные с семантическим анализом[6].
Поставленная задача будет решена с помощь применения машинного обучения с учителем, а структурой нейронной сети будет являться свёрточная модель. Обучение нейронной сети будет проходить на обучающем наборе, содержащем 70% датасета, в то время как тестовая выборка будет состоять из 30%.
Описание набора исходных данных
В качестве исходных данных был использован открытый набор данных Kaggle Twitter Tweets[8], состоящий из названий видов эмоциональной окраски (где 0 – негативный, 2 – нейтральный,4 – позитивный), id – сообщения, даты написания сообщения, имя пользователя и текст сообщения. Общее количество строк файла -1280000(рис. 1).
Рис. 1 – Часть исходного набора данных
Набор данных содержит 3 вида эмоциональной окраски(класса): positive, negative, neutral.
Архитектура разрабатываемой нейронной сети
Общеизвестен тот факт, с момента появления, а также дальнейшего развития свёрточных нейронных сетей удалось достичь высокой скорости обучения и точности предсказаний в области семантического анализа с их использованием. [6].
Авторами статьи проведена параметризация нейронной сети[12] для классификации текста по видам эмоциональной окраски. Полученная архитектура приведена на рис.3.
На вход нейронной сети подаются текстовые данные, но на первый из свёрточных слоёв необходимо подать текстовые данные преобразованные в векторное пространство. Для этого будет использован модуль tokenizer. Экспериментальным методом было выявлено, что библиотеку tokenizer нужно ограничить до 400000 слов, а длину каждого сообщения до 20 слов. При увеличении словаря и длины сообщения точность классификации не увеличивается, а при использовании меньшего словаря и меньшей длины сообщений точность предсказания существенно уменьшается. Каждому слову сообщения выдаётся индекс в соответствии с его индексом в словаре. Если сообщение меньше 20 слов, то пробелы заполняются нулями.
Рис.2– Модуль tokenize (перевода текста в вектор)
Рис. 3 - Архитектура свёрточной нейронной сети для классификации текста по видам эмоциональной окраски
На первом слое свёртке используется 128 карт признаков, размером 5х5. Второй слой свёртки содержит 64 карты признаков размером 6х6. На третьем и на четвертом слое свёртки, используется 32 карты признаков размеров 7х7 и 8х8. а на слое подвыборки, который следует после этих свёрточных слоёв, так же происходит уменьшение размерности в квадрате 2х2. После этого данные преобразуются из двумерного формата в одномерный и передаются на полносвязный слой, на котором выполняется классификация. На выход выводится результат классификации.
Обучение нейронной сети
Обучение происходит с использованием на свёрточных слоях функции сигмоиды. Сигмодная функция активации - самая общая сигмоидальная (S-образная) нелинейная функция с насыщением. Она моделирует кривую роста вероятности некоего события, по мере изменения управляющих параметров[1].Функция находит применение в обширном диапазоне областей знания, включая искусственные нейронные сети, биологию, биоматематику, экономику, химию, математическую психологию, вероятность и статистику.
Эта функция принимает на входе произвольное вещественное число, а на выходе дает вещественное число в интервале от 0 до 1. В частности, большие (по модулю) отрицательные числа превращаются в ноль, а большие положительные – в единицу.
Сигмоидальная функция активации имеет вид:
(1)
Где x это параметр функции определяющий её крутизну, e – экспонента.
Рис.4– Сигмоидальная функция
Реализация нейронной сети
Перед обучением нейронной сети осуществляется предобработка исходных данных с целью очистить их от лишних символов, которые могут привести к некорректному поведению обучающей модели (несоответствия результата действительности). Результат очистки датасета представлен на рисунке 5.
Рис. 5 – Результат работы модуля по очистке исходных данных.
После проверки корректности исходных данных, текстовые сообщения переводятся в векторы с помощью описанного ранее модуля tokenaizer. Далее данные передаются на слои свёрточной сети.
Обучение нейронной сети происходит в методе model.fit, представленный на рисунке 6, на вход которого подаются данные, по 128 сообщений за раз. Обучение нейронной сети выполнялось в течении 10 эпох и удалось достигнуть точности в 96%. Эпоха – полный проход по выборке[10]. Дальнейшее обучение не увеличило точность предсказания.
Рис.6 – метод model.fit
После обучения и сохранения обученной модели автором была произведена оценка качества работы программы методом определения эмоциональной окраски предложения, не входящего в набор исходных данных. «Disgusting week», что в переводе с английского означает «отвратительная неделя». Обученная нейросеть определила его в класс “negative”, тем самым показав верный результат. (Рис. 7)
Рис.7 – результат проверки качества работы программы.
Выводы
В статье описана параметризация свёрточной нейронной сети, с целью осуществления семантического анализа текста для определения его эмоциональной окраски. Приведена структура нейронной сети. Проведено её обучение и тестирование. Точность предсказания нейросети оценивается в 96%. Эта разработка может быть внедрена в стороннее приложение и быть использована в качестве базы для более глубокого анализа текста. В дальнейшем планируется более глубокая доработка полученной нейронной сети, с целью определения психологического состояния человека по его поведению в сети Интернет.
Список литературы
Воронова Л.И., Воронов В.И. Machine Learning: регрессионные методы интеллектуального анализа данных: Учебное пособие / МТУСИ. – М., 2018, -83
Официальный сайт Python [Электронный ресурс]. – URL: https://www.python.org/ (дата обращения: 25.12.2018).
Открытая библиотека машинного обучения Keras [Электронный ресурс]. –URL: https://keras.io/ (дата обращения: 25.12.2018).
Сегаран. Т. Программируем коллективный разум. – Пер. с англ. – СПб: Символ Плюс,2008. – 368 с., ISBN 9785932861196
Рашка С. Python и машинное обучение / пер. с англ. А. В. Логунова. - М.: ДМК Пресс,2017. - 418 с., ISBN 978-5-97060-409-0. А.Мюллер, C.Гвидо Введение в машинное обучение. Руководство для специалистов по работе с данными: Пер. англ.-СПб: ООО “Альфа-книга”,2017.-480 c., ISBN978-5-99089-108-1
Маккини У. Python и анализ данных/ Пер. с англ. Слинкин А. А. - М.: ДМК Пресс,2015. - 482 с., ISBN 78-5-97060-315-4
Dataset Kaggle Twitter Tweets |Kaggle| [Электронный ресурс]. –URL: https://www.kaggle.com/kazanova/sentiment140 (дата обращения: 18.12.2018).
Свейгарт Э. Автоматизация рутинных задач с помощью Python 2017. -592 c., ISBN 978-5-8459-2090-4.
Э.Мэтиз Изучаем Python. Программирование игр, визуализация данных, веб-приложения. 2017. — 496 с.,ISBN 978-5-496-02305-4
Глубинное обучение для автоматической обработки текстов [Электронный ресурс]. – URL: https://www.osp.ru/os/2017/02/13052221/ (дата обращения: 24.12.2018)
Открытая нейронная сеть для семантического анализа [Электронный ресурс]– URL: https://www.kaggle.com/florianrougier/sentiment-analysis. (дата обращения: 12.11.2018).