ПОСТРОЕНИЕ НЕЙРОННОЙ СЕТИ ДЛЯ КЛАССИФИКАЦИИ ЗАПРОСОВ НА ЕСТЕСТВЕННОМ ЯЗЫКЕ К ПРОГРАММЕ-ПОМОЩНИКУ ДЛЯ ПОИСКА И АНАЛИЗА ТЕКСТОВ СУДЕБНЫХ ДОКУМЕНТОВ - Студенческий научный форум

X Международная студенческая научная конференция Студенческий научный форум - 2018

ПОСТРОЕНИЕ НЕЙРОННОЙ СЕТИ ДЛЯ КЛАССИФИКАЦИИ ЗАПРОСОВ НА ЕСТЕСТВЕННОМ ЯЗЫКЕ К ПРОГРАММЕ-ПОМОЩНИКУ ДЛЯ ПОИСКА И АНАЛИЗА ТЕКСТОВ СУДЕБНЫХ ДОКУМЕНТОВ

Алексеев Д.О. 1, Трунов А.С. 1
1Московский технический университет связи и информатики
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
В статье изложен процесс построения нейронной сети для классификации запросов пользователя к автоматизированному помощнику, так называемому «чат-боту». В настоящее время чат-боты активно применяются в банковской сфере и телекоммуникациях. Они существенно помогают экономить ресурсы компаниям за счет автоматического приема и обработки документов от клиентов.

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

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

Работа выполнена в рамках курсового проекта по дисциплине «Machine Learning», научный руководитель – старший преподаватель Трунов А.С.

Постановка задачи

Необходимо классифицировать запрос на естественном языке к программе-помощнику по поиску и анализу текстов судебных документов. Задачей является анализ входящих сообщений от пользователя, а именно определение типа запроса, который програме необходимо выполнить. Имеется следующий тестовый список возможных запросов к чат-боту: поиск документа по введенным параметрам, извлечение данных из документа, поиск схожих документов. Эту задачу требуется решить с применением нейронных сетей. Всего имеется 3 типа запроса для помощника, назовем их классами и пронумеруем:

  • 1й класс - "Поиск документа по введенным параметрам"

  • 2й класс - "Извлечение данных из документа"

  • 3й класс - "Поиск схожих документов"

Нейронную сеть необходимо обучить и протестировать на наборе из 250 неструктурированных запросов на естественном языке, где каждый запрос маркирован в соответствии с классом. Для обучения нейронной сети из этого набора выделены 70% примеров (175), а для тестирования сети оставшиеся 30% (75).

Решение задачи классификации запросов на естественном языке проводится с помощью следующих этапов [1; 2]:

1. Предварительная обработка текстов запросов;

2. Перевод текста запросов в вещественное пространство признаков, где каждому запросу будет сопоставлен вектор фиксированной длины;

3. Классификация на выбранном алгоритме.

Предварительная обработка текста запроса

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

Далее необходимо приведение каждого слова к основе, одинаковой для всех его грамматических форм. Это необходимо, так как слова несущие один и тот же смысл могут быть записаны в разной форме. Например, одно и то же слово может встретиться в разных склонениях, иметь различные приставки и окончания [3]. Для реализации данного этапа необходимо применения стемминга (stemming). Стемминг — это процесс нахождения основы слова для заданного исходного слова. Конкретный способ решения задачи поиска основы слов называется алгоритм стемминга, а конкретная реализация — стеммер. Применяемый алгоритм стемминга для обработки текста запросов описан в статье «Russian stemming algorithm» [4].

Пример предварительной обработки текста неструктурированного запроса приведен в таблице 1:

Таблица 1

Порядок операции

Операция обработки запроса

Полученный результат – обработанные запрос

1

Исходный запрос

Найти все документы по делу № А14-7662

2

Удаление не ключевых слов

Найти все документы по делу

3

Применение стемминга

найт все документ по дел

Перевод текста запроса в векторное представление

Нейронные сети должны иметь входные данные фиксированной длины, проблема в том, что все запросы к чат-боту содержат разное число слов. Самое распространенное решение — перевести каждое слово в вектор, длина которого равна количеству используемых слов во всех текстах запросов, получив таким образом словарь слов (слово-вектор). Далее для каждого запроса, необходимо сложить вектора соответствующие встреченным словам, получив таким образом результирующий вектор предложения. Такое представление часто называется «neural bag of words» (NBoW) — «нейронная сумка слов», поскольку порядок слов в нем теряется.

Пример составления словаря приведен в таблице 2. На примере словарь сформирован по текстам двух запросов, предварительно обработанных. Получившееся количество слов – 8, что и является длиной вектора, а каждому слову сопоставлен вектор в котором i элемент, соответствующий номеру слова, равен единице. Нужно отметить, что встреченные слова в текстах запросов не повторяются в словаре.

Таблица 2

№ слова

Слова после предварительной обработки

Векторное представление слов

1

найт

1 0 0 0 0 0 0 0

2

все

0 1 0 0 0 0 0 0

3

документ

0 0 1 0 0 0 0 0

4

по

0 0 0 1 0 0 0 0

5

дел

0 0 0 0 1 0 0 0

6

поиск

0 0 0 0 0 1 0 0

7

решен

0 0 0 0 0 0 1 0

8

суд

0 0 0 0 0 0 0 1

Также приведем пример векторного представления запроса. Сначала текст запроса подвергается предварительной обработке (удаление лишних слов и стемминг, таблица 1), далее формируется словарь размер которого равен количеству используемых слов во всех текстах запросов (таблица 2). Результирующий вектор равен сумме векторов, которые соответствуют словам, встреченным в обработанном тексте запроса (таблица 3).

Таблица 3

№ операции

Операции над запросом

Результат операции

1

Исходный запрос

Решения суда по делу № А14-6273

2

Предварительная обработка запроса

решен суд по дел

3

Векторное представление запроса

0 0 0 1 1 0 1 1

Проектирование и обучение нейронной сети

Для обучения нейронной сети классификации запросов выбран метод обратного распространения ошибки (backpropagation) [5]. После обработки текстов запросов получен словарь размером 96 слов. Это соответствует количеству признаков для обучения нейронной сети (входной слой). Также добавим один скрытый слой. Полученная нейронная сеть имеет следующие параметры:

𝐿 – общее количество слоёв в сети.

𝑆𝐿 – количество элементов (нейронов) в слое L, не считая корректировочную константу.

Для рассматриваемой сети 𝐿 = 96, 𝑆1 (входной слой) равен 96 элементам, 𝑆2 равен 40 элементам (скрытый слой), 𝑆3 (результирующий слой) равен 3 элементам. Выбрана сигмоидальная функция активации, вычисляющая выходной сигнал.

Модель для рассматриваемой нейронной сети представлена на рисунке 1.

Рис. 1. Модель нейронной сети

Нейронная сеть реализована в системе для математических вычислений «Octave». Последовательность действий при обучении нейронной сети приведена на рисунке 2.

Рис. 2. Алгоритм обучения нейронной сети

Тестирование разработанной нейронной сети

Для оценки эффективности используется тестовая выборка, состоящая из 30% от исходной (файл 'testSet'), примеры из тестовой выборки не пересекаются с примерами из обучающей выборки. После обучения нейронной сети, мы получили матрицу параметров для каждого слоя (файлы 'Theta1' и 'Theta2'), таким образом можно вычислить значение функции гипотезы для каждого i-ого элемента тестовой выборки. Для определения точности классификации, сравниваем полученное значение класса нейронной сетью с тестовым набором. Для тестирования классификации запросов используется функция «predict», алгоритм которой приведен на рисунке 3.

Результаты тестирования

Для тестовой выборки (75 примеров) результат классификации с оптимальными параметрами обучения нейронной сети составил 67%. В общем случае точность классификации должна быть повышена с помощью увеличения размера обучающей выборки.

Рис. 3. Алгоритм тестирования нейронной сети

Приведем примеры классификации для отдельных примеров, которые не содержатся в обучающей выборке для нейронной сети (таблица 4). Вероятность принадлежности к классу лежит в интервале [0; 1].

Таблица 4

Текст запроса

Вероятность принадлежности к классу запроса

1й класс

"Поиск документа по введенным параметрам"

2й класс

"Извлечение данных из документа"

3й класс

"Поиск схожих документов"

«Выведи решения суда, статьи 184, 291 за 2017 год»

0.71

0.55

0.38

«Выдай номера статей из документа № А32-9434»

0.23

0.84

0.6

«Сравнить документы № А32-1004 и № А32-1611»

0.11

0.4

0.87

Заключение

В статье решена задача классификации запросов на естественном языке для программы-помощника по поиску и анализу текстов судебных документов с помощью нейронной сети. Результат классификации для тестовой выборки составил 67%. Правильная классификация запроса позволит помощнику в дальнейшем выбрать параметры команды и корректно выполнить запрос. В дальнейшем планируется предусмотреть орфографические ошибки в тексте запроса.

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

Список источников и литературы

  1. Воронцов, К. В. Курс лекций по машиному обучению / К. В. Воронцов. — 2015.

  2. В. В. Круглов, В. В. Борисов — Искусственные нейронные сети. Теория и практика, 2002. — 382с.

  3. Нейронные сети - математический аппарат. [Электронный ресурс]. - http://www.basegroup.ru/library/analysis/neural/math/

  4. Russian stemming algorithm. [Электронный ресурс]. - http://snowball.tartarus.org/algorithms/russian/stemmer.html

  5. Л.И. Воронова, В.И. Воронов. MachineLearning: Регрессионные методы интеллектуального анализа данных: учебное пособие – МТУСИ, 2017 – 81 с.

Просмотров работы: 266