вернуться в раздел "Научные труды"
Источник: Щеголев, В. А. Распознавание и анализ текста с помощью нейронных сетей / В. А. Щеголев, О. Ю. Чередникова // Информатика, управляющие системы, математическое и компьютерное моделирование (ИУСМКМ-2020) : Сборник материалов XI Международной научно-технической конференции в рамках VI Международного Научного форума Донецкой Народной Республики, Донецк, 27–28 мая 2020 года / Редколлегия: Ю.К. Орлов [и др.]. – Донецк: Донецкий национальный технический университет, 2020. – С. 482-485. – EDN LTHGUA .

УДК 004.62, 004.93

Распознавание и анализ текста с помощью нейронных сетей

Щёголев В.А., Чередникова О.Ю.

Донецкий Национальный Технический университет

кафедра компьютерной инженерии

E-mail: vlad96ru@mail.ru

Аннотация

Щёголев В.А., Чередникова О.Ю. Распознавание и анализ текста с помощью нейронных сетей. В статье описаны популярные способы распознавания и анализа текста с помощью нейронных сетей. Так же приведены примеры использования библиотек глубокого машинного обучения.

Shogolev V. A., Cherednikova O. Yu. Recognition and analysis of text using neural networks. The article describes popular methods for recognizing and analyzing text using neural networks. Examples of using deep machine learning libraries are also provided.

Общая постановка проблемы

Задача классификации текстов становится все более актуальной в связи с постоянно растущим объемом информации в интернете и потребностью в ней ориентироваться.

Классификация текста используется для решения следующих задач:

  1. Распознавание эмоциональной окраски текста
  2. Борьба со спамом
  3. Разделение сайтов по тематическим каталогам

Так как решение поставленных задач отнимает большое количество времени и сил, для выполнения подобной работы стали использовать нейронные сети. Нейронные сети справляются с этой задачей всё лучше и лучше, так как машинное обучение не стоит на месте [1].

Исследование архитектур нейронных сетей

Для распознавания и классификации текста используют несколько типов архитектур нейронных сетей.

Особую популярность получили сверточные нейронные сети, архитектура которых была предложена Яном Лекуном и нацелена на эффективное распознавание изображений. Свое название архитектура сети получила из-за наличия операции свёртки, суть которой в том, что каждый фрагмент изображения умножается на матрицу (ядро) свёртки поэлементно, а результат суммируется и записывается в аналогичную позицию выходного изображения.

[2] В архитектуру сети заложены априорные знания из предметной области компьютерного зрения: пиксель изображения сильнее связан с соседним (локальная корреляция) и объект на изображении может встретиться в любой части изображения.

Успех применения сверточных нейронных сетей к классификации изображений привел к множеству попыток использовать данный метод к другим задачам. В последнее время их стали активно использовать для задачи классификации текстов.

Структура свёрточной нейронной сети (СНС) состоит из разных видов слоев: сверточные слои, субдискретизирующие слои и слои «обычной» нейронной сети – персептрона (рис. 1).

Структура свёрточной нейронной сети

Рисунок 1 – Структура свёрточной нейронной сети

Нейронная сеть состоит из пар слоев – слоев подвыборки и слоев свертки, каждый из которых в свою очередь состоит из карт признаков. Каждая карта признаков в идеале фильтрует изображение, находя какой-то один определенный, специфичный для данной карты, признак. Исходное изображение подается на входной слой. В первом слое подвыборки каждая карта признаков осуществляет поиск определенного, закрепленного только за данной картой, признака. Достигается это за счет использования общей для всей карты признаков матрицы весов и особой организацией локального рецептивного поля для каждого нейрона такой карты. Каждый нейрон карты признаков получает входные данные от прямоугольной области размера n×m входного изображения. Такая область достаточно мала и множество таких областей на входном изображении пересекаются и накладываются по принципу черепицы.

Рекуррентные нейронные сети (Recurrent Neural Networks, RNNs) – популярные модели, используемые в обработке естественного языка (NLP). Во-первых, они оценивают произвольные предложения на основе того, насколько часто они встречались в текстах. Это дает меру грамматической и семантической корректности. Такие модели используются в машинном переводе. Языковые модели генерируют новый текст.

Один из нюансов работы с нейронными сетями (а также CNN) заключается в том, что они работают с предварительно заданными параметрами. Они принимают входные данные с фиксированными размерами и выводят результат, который также является фиксированным. Плюс рекуррентных нейронных сетей, или RNN, в том, что они обеспечивают последовательности с вариативными длинами, как для входа, так и для вывода. Несколько примеров того, как может выглядеть рекуррентная нейронная сеть, показаны на рис. 2.

Примеры рекуррентных нейронных сетей

Рисунок 2 – Примеры рекуррентных нейронных сетей

На рис. 2 входные данные помечены красным цветом, RNN зелёным, а выходные данные синим.

Рекуррентные нейронные сети, продемонстрировали большой успех во многих задачах NLP. На этом этапе нужно упомянуть, что наиболее часто используемым типом RNN являются LSTM, которые намного лучше захватывают (хранят) долгосрочные зависимости, чем RNN. LSTM – по сути, то же самое, что и RNN, но у них есть другой способ вычисления скрытого состояния [3].

Обучение RNN аналогично обучению обычной нейронной сети. Мы также используем алгоритм обратного распространения ошибки (backpropagation), но с небольшим изменением. Поскольку одни и те же параметры используются на всех временных этапах в сети, градиент на каждом выходе зависит не только от расчетов текущего шага, но и от предыдущих временных шагов. Например, чтобы вычислить градиент при t = 4, нам нужно было бы «распространить ошибку» на 3 шаге и суммировать градиенты. Этот алгоритм называется «алгоритмом обратного распространения ошибки сквозь время» (Backpropagation Through Time, BPTT).

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

Исследование процесса обучения модели

В своей научной работе я использую библиотеку глубокого машинного обучения Keras.

Глубокое обучение – это метод машинного обучения. Глубокое обучение позволяет обучать модель предсказывать результат по набору входных данных. Для обучения сети можно использовать как контролируемое, так и неконтролируемое обучение.

Keras – рекомендуемая библиотека для глубокого изучения Python. Его минималистичный, модульный подход позволяет построить и запустить глубокие нейронные сети.

Создатель этой библиотеки, François Chollet, разработал ее для того, чтобы максимально ускорить и упростить процесс создания нейронных сетей. Он сосредоточил свое внимание на расширяемости, модульности, минимализме и поддержке Python. Keras можно использовать с GPU и CPU; она поддерживает как Python 2, так и Python 3. Keras компании Google внесла большой вклад в коммерциализацию глубокого обучения и искусственного интеллекта, поскольку она содержит современные алгоритмы глубокого обучения, которые ранее были не только недоступными, но и непригодными для использования. На рис. 3 показан код на языке Python построения модели нейронной сети.

model = Sequential() model.add(Dense(units=64, activation='relu', input_dim=100)) model.add(Dense(units=10, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) # Вставь сюда реальный код из своей работы, если он отличается

Рисунок 3 – Построение модели нейронной сети

В данной части кода, собираются слои для построения последовательной модели. Модель – это граф слоев. Настройка обучения сети показана на рис. 4:

model.fit(x_train, y_train, epochs=5, batch_size=32) loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128) classes = model.predict(x_test, batch_size=128) # Вставь сюда реальный код из своей работы, если он отличается

Рисунок 4 – Обучение нейронной сети

В коде (рис. 4) использованы следующие методы:

Выводы

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

Дальнейшие разработки связаны с обучением нейронной сети распознавать эмоциональную окраску текста.

Литература

  1. Zhang, X. Character-level convolutional networks for text classification / Xiang Zhang, Junbo Zhao, Yann LeCun // In Advances in Neural Information Processing Systems. – 2015. – Feb. – 649 - 657 p.
  2. Yann LeCun Leon Bottou, Y. B. Gradient-based learning applied to document recognition / Yoshua Bengio Yann LeCun, Leon Bottou, Patrick Haffner // IEEE. – 1998.
  3. Medium. Towards Data Science [Electronic resourse] / Интернет-ресурс – Режим доступа: https://towardsdatascience.com/recurrent-neural-networks-by-example-in-python-ffd204f99470.