Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 9(29)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4

Библиографическое описание:
ОПРЕДЕЛЕНИЕ ТЕМЫ ТЕКСТА С ПОМОЩЬЮ НЕЙРОННОЙ СЕТИ // Студенческий: электрон. научн. журн. Фазлыева З.Р. [и др.]. 2018. № 9(29). URL: https://sibac.info/journal/student/29/106383 (дата обращения: 26.04.2024).

ОПРЕДЕЛЕНИЕ ТЕМЫ ТЕКСТА С ПОМОЩЬЮ НЕЙРОННОЙ СЕТИ

Фазлыева Зарема Римовна

студент, Высшая школа ИТИС КФУ,

РФ, г. Казань

Клинов Даниил Андреевич

студент, Высшая школа ИТИС КФУ,

РФ, г. Казань

Волков Николай Владимирович

студент, Высшая школа ИТИС КФУ,

РФ, г. Казань

Боева Екатерина Сергеевна

студент, Высшая школа ИТИС КФУ,

РФ, г. Казань

Фёдорова Полина Игоревна

студент, Высшая школа ИТИС КФУ,

РФ, г. Казань

Маннапова Лилия Фаязовна

студент, Высшая школа ИТИС КФУ,

РФ, г. Казань

Аннотация. В статье представлено исследование группы студентов Высшей школы ИТИС в области нейронных сетей. Была создана программа, которая классифицирует текст, подающийся на вход обученной нейронной сети. Темы выбраны заранее, и они представляют из себя сферы жизни человека. Проект уникален в своем направлении, так как написан на языке программирования PHP.

Ключевые слова: нейронная сеть, классификация текста, php, перцептрон, метод обратного распространения ошибки, обучение с учителем, TF-IDF.

 

В начальной школе ученики проходят такую тему, как «определение основной мысли текста», и делают множество упражнений для закрепления изученного материала из года в год.

Со временем у учеников выстраивается определенный алгоритм для подобных заданий: прочтение заголовка, изучение текста, выделение ключевых предложений и словосочетаний, распределение их по значимости. Но несмотря на то, что кажется это всё крайне очевидным, выпускники всё-таки допускают ошибки при сдаче ЕГЭ по русскому языку.

Первое задание на экзамене по русскому языку проверяет способность проводить информационную обработку текста, и если посмотреть на рис. 1, то можно заметить, что процент не справившихся с заданием достаточно мал (около девяти процентов за последние четыре года по данным веб-сайта http://4ege.ru/analitika). И если в 2017 году количество выпускников в России составило 716 тысяч [4], получается, что 9% не справившихся — это примерно 64.440 человек.

 

https://pp.userapi.com/c824200/v824200916/10dd7f/R2E0k4VOQSg.jpg

Рисунок 1. Средний процент выполнения первого задания ЕГЭ по русскому языку

 

Глядя на такую статистику, группа студентов Высшей школы ИТИС задумалась над следующим вопросом: если школьники за 11 лет учебы все-таки допускают ошибки, то сколько времени нужно будет затратить на обучение нейронной сети и насколько точно будет выполнено задание?

Нейронная сеть [1]– это последовательность нейронов, соединенных между собой синапсами, которые могут либо усиливать, либо ослаблять проходящий по ним сигнал. Каждому синапсу соответствует число (вес связи), которое умножается на сигнал, проходящий по связи. Нейрон похож на функцию: он принимает на вход несколько значений и возвращает одно. Как можно заметить, искусственная нейронная сеть и нейронная сеть человека имеют сходства не только в своей деятельности, но и в структуре.

Нейронная сеть состоит из трех типов слоев: входной, скрытый и выходной. [1] Число скрытых слоев и количество нейронов определяется особенностями решаемой задачи. На нейроны входного слоя поступает вектор входного воздействия, на данном этапе обработка данных не происходит, а только идет распределение сигнала следующим слоям. В скрытых слоях происходит основная работа (обработка данных), выходной же слой представляет собой результат работы нейронной сети.

Целью написания научной статьи является исследование: насколько точно может справиться с классификацией текста искусственная нейронная сеть.

Основной задачей является создание и обучение нейронной сети, которая могла бы классифицировать текст. Темы выбраны заранее, и они представляют из себя сферы жизни человека: «Политика», «Искусство», «Религия», «Спорт», «Наука», «Развлечение».

Для поставленной задачи был выбран язык программирования PHP, так как по статистике [5] (рис. 2) именно он является одним из лидеров в создании веб-приложений. Это значит, что поставленная задача может иметь широкое практическое применение в будущем: программу на PHP гораздо проще интегрировать в веб-приложение. Также было выявлено, что нейронных сетей на PHP гораздо меньше, чем на других языках.

 

https://pp.userapi.com/c824200/v824200059/1112f4/8ShCfqg4VT4.jpg

Рисунок 2. Статистика языков программирования для веб-сайтов

 

Итак, в основе программы для определения темы текста лежит нейронная сеть, для которой сначала была написана библиотека нейронной сети. Что она из себя представляет? Это различные классы, такие как класс слоя, различные виды нейронов, класс функции активации [3] (для обработки и формулировки выходного сигнала, принимающая взвешенную сумму как аргумент), класс обратного распространения ошибки, класс нейронной сети (у которой есть слои), а также класс персептрон (представляет собой многослойный персептрон, но также предусмотрен и один слой, содержащий произвольное количество слоев). Для обучения нейронной сети используется подход - обучение с учителем [3] (вид обучения сети, при котором ее веса меняются так, чтобы ответы сети минимально отличались от уже готовых правильных ответов). При этом применяется алгоритм обратного распространения ошибки [2] (один из методов обучения многослойных персептронов, который предполагает прямой и обратный проходы по всем слоям сети). С помощью данной библиотеки можно создать нейронную сеть, которая классифицирует текст по темам.

Количество входных параметров равно количеству слов в словаре, который формируется на этапе предварительной обработки. Обработка выглядит следующим образом: берутся все имеющиеся тексты, выделяются все слова, убираются стоп-слова (слова, знаки, символы, которые самостоятельно не несут никакой смысловой нагрузки, и они просто игнорируются), используя алгоритм стемминга, слова приводятся к их морфемным основам. В итоге получается большой исходный список слов, но нейронная сеть не может принять столько параметров, именно поэтому из этого списка нужно выделить ключевые слова, количество которых и будет определять входной слой.

Для составления списка ключевых слов (далее - словаря) за основу был взят алгоритм TF-IDF, с помощью которого можно определить важность какого-либо термина для текста относительно всех остальных текстов.

TF (Term Frequency) — это частотность термина, которая находится по формуле: количество раз, когда определенный термин встретился в тексте делится на общее количество слов в тексте. IDF (Inverse Document Frequency) — это обратная частотность текстов, которая измеряет важность термина и не учитывает, например, предлоги и частицы, не влияющие на смысл текста. Он считается как логарифм от общего количества текстов, деленного на количество текстов, в которых встречается определенный термин.

Исследовав различные варианты, было решено остановиться на следующих формулах для нейронной сети, которая определяет тему текста: TF = количество раз, когда определенное слово встретилось в текстах одной темы, деленное на общее количество слов по этой теме. IDF термина a = log( [всего текстов-тексты этой темы] / [остальные тексты (кроме исследуемой темы), в которых есть термин a]). Таким способом будут охватываться все слова, все темы, все тексты и каждое слово в тексте – именно так бы думал человек, выходит, что данный вариант является более уместным.

Таким образом для каждого слова находится коэффициент TF-IDF и из исходного списка берется 100 слов с наивысшим значением TF-IDF, которые добавляются в список ключевых слов, и эта процедура повторяется для каждой темы.

Для обучения нейронной сети было составлено 50 текстов по 6 Кбайт для каждой из шести тем («Политика», «Искусство», «Религия», «Спорт», «Наука», «Развлечение»), на которых производилось выделение ключевых слов. После обучения было подготовлено еще по 10 текстов (тестовых) для каждой темы для определения вероятности того, насколько точно нейронная сеть определяет тему текста.

Процесс обучения нейронной сети и определение темы текста: подается текст, вычленяются все слова, после удаления стоп-слов они приводятся к морфеме. В итоге получается список слов x - количество всех слов с повторами после применения алгоритма стемминга (нахождение основы слова) и удаления стоп-слов. Нейронной сети, как уже было оговорено, подается 600 значений (100 слов для каждой темы). Изначально все значения равны 0.

Для каждого слова из словаря, составленного на этапе предварительной обработки, высчитывается количество раз, когда встретилось это слово в полученном списке x - эти данные подаются на вход нейронной сети. То есть входной слой нейронной сети состоит из входных нейронов, где каждый нейрон соответствует слову из словаря, а их количество эквивалентно размеру словаря.

Происходит обучение нейронной сети, после которого уже могут подаваться (тестовые) тексты на определение темы. Точность классификации зависит от темы и насыщенности текста информацией: на выходе получилось, что в “Религии” и “Спорте” точность составила 85%, “Наука” - 80%, “Политика” - 75%, “Искусство” - 70%, “Развлечения” - 50% (среднее значение - 74,1%). Конечно, данная нейронная сеть показывает результаты хуже, чем человек, но это значит лишь то, что есть куда стремиться, ведь нет предела совершенству!

У данной программы достаточно широкое применение, ведь пользователю данной программы нужно лишь указать количество корзин (в данном случае - тем) и обучить нейронную сеть достаточным количеством текстов для каждой из корзин, а дальше нейронная сеть уже будет сама классифицировать любой входной текст по заданным параметрам. Примеры применения:

1.  Пользователи, которые публикуют свои рассказы/стихотворения по жанрам и/или категориям, могут не задумываться над разницей между «фантастикой» и «фэнтези», «драмой» и «мелодрамой» - нейронная сеть это сделает за них.

2.  Нейронная сеть также может помочь определить «теги» при создании рецептов: «первое», «второе», «салаты», «выпечка» и так далее.

3.  Можно обучить ее отличать цензурные тексты от нецензурных, или тексты с живой, богатой речью от скудных и бедных текстов и так далее.

В ходе написания статьи, было выяснено, что разработанная нейронная сеть определяет тему текста хуже, чем одиннадцатиклассники на экзамене, только вот программа выдает результат за несколько секунд, а человеку нужно гораздо больше времени (прочтение текстов, анализ, распределение по темам). Безусловно, программа нуждается в доработке и будет вестись дальнейшее улучшение по точности работы и по расширению функционала.

 

Список литературы:

  1. Per Harald Borgen, Изучаем нейронные сети за четыре шага. URL: https://tproger.ru/translations/learning-neural-networks/ (дата обращения 13.04.2018)
  2. Ясницкий Л. Н. Введение в искусственный интеллект. — М.: Издат. центр «Академия», 2005.
  3. Пётр Радько, Учебник [Электронный ресурс].   URL: https://neuralnet.info/book/ (дата обращения 18.04.2018)
  4. Сетевое издание M24.ru [Электронный ресурс]. URL: https://www.m24.ru/articles/образование/08082017/148534 (дата обращения 15.04.2018)
  5. Trends in the usage of server-side languages for websites [Электронный ресурс]. URL: https://w3techs.com/technologies/history_overview/programming_language/ms/y (дата обращения 15.04.2018)

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.