К научным трудам

Источник: Сборник материалов VII Междунродной научно-технической конференции «Современные информационные технологии в образовании и научных исследованиях» (СИТОНИ-2021). — 2021. — С. 216-224.


УДК 004.85

АНАЛИЗ ПОДХОДОВ К РЕШЕНИЮ ПРОБЛЕМЫ ПОНЯТИЯ И ОБРАБОТКИ ЕСТЕСТВЕННОГО ЯЗЫКА МЕТОДАМИ МАШИННОГО ОБУЧЕНИЯ

Рудак Л.В., Федяев О.И.

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

leo2598@yandex.ua, fedyaev@donntu.org

Введение

Обработка естественного языка (Natural language processing, NLP) – область исследований, находящаяся на пересечении компьютерных наук, искусственного интеллекта и лингвистики. Предметом её исследований являются методы компьютерного анализа и синтеза текстов на естественном языке, т.е. вопросы, относящиеся к обработке и пониманию естественного языка для перевода текста и конструирования грамотных ответов на вопросы [1].

С развитием голосовых интерфейсов и чат-ботов NLP стала одной из важных технологий искусственного интеллекта. Но полное понимание и воспроизведение смысла языка – чрезвычайно сложная задача, так как человеческий язык имеет следующие особенности:

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

Новые перспективы технологий NLP основываются на глубоком обучении (deep learning) с применением искусственных нейронных сетей – области машинного обучения, которая начала бурно развиваться только в начале этого десятилетия по следующим причинам:

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

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

Учитывая разнообразие новых подходов к проблеме NLP, необходимо оценить современное состояние и возможности методов машинного обучения в решении проблемы анализа и обработки естественного языка, в частности для решения задачи перевода текстов. Современные методы и технологии машинного обучения сосредоточены в специальных библиотеках, которые содержат программные модули, реализующие различные модели. Чтобы разумно использовать эти наукоёмкие инструментальные средства, необходимо проанализировать назначение, функционал и особенности их применения.

Библиотека Fairseq

Данная библиотека машинного обучения с открытым исходным кодом основана на наборе инструментов последовательного моделирования. Это позволяет исследователям с её помощью обучать пользовательские модели для трансформера с целью обучения языку, перевода и решению других задач. Она поддерживает распределённое обучение на нескольких графических процессорах [4].

Возможность моделирования последовательных данных является одной из особенностей библиотеки. Она поддерживает различные модели. Рассмотрим эти модели:

  1. Свёрточные нейронные сети (CNN). Реализует: моделирование языка с помощью Gated CNN, классический структурированный прогноз потерь, иерархическая генерация нейронных историй, обучение без учителя для распознавания речи.
  2. LightConv и DynamicConv. Поддерживают предобученные наборы данных и обучение новых моделей через fairseq-preprocess и fairseq-train для языков, включая русский, английский, китайский, немецкий и французский.
  3. Сети долгой краткосрочной памяти (LSTM). Используются для классификации и прогнозирования временных рядов, распознавания речи и обнаружения аномалий. Пример визуализирован на рисунке 1 [7].
  4. Пример реализации LSTM-шифровщика с помощью библиотеки Fairseq
    Рисунок 1 – Пример реализации LSTM-шифровщика с помощью библиотеки Fairseq
  5. Нейронные сети трансформеры. Трансформер – это архитектура глубоких нейронных сетей, предназначенная для обработки последовательностей, таких как текст на естественном языке, и решения задач машинного перевода и автоматического реферирования [8].

Библиотека Spacy

Данная библиотека с открытым исходным кодом для расширенной обработки естественного языка (NLP) в Python. Она бесплатна и помогает создавать приложения, обрабатывающие и «понимающие» большие объёмы текста [9]. Её можно использовать для построения систем извлечения информации, понимания естественного языка или для предварительной обработки текста для глубокого обучения.

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

Лингвистические аннотации. С помощью лингвистических аннотаций Spacy возможно улучшить понимание грамматической структуры текста. Они включают типы слов, такие как части речи, и то, как слова связаны друг с другом. Например, при анализе текста имеет значение, является ли существительное субъектом предложения или объектом — или используется ли слово «google» как глагол или относится к веб-сайту/компании в конкретном контексте [11].

Данные языков. Каждый язык индивидуален и полон исключений и особых случаев, особенно среди самых распространенных слов. Некоторые исключения общие для разных языков, другие полностью специфичны и требуют жесткой программной реализации. Модуль lang содержит все данные для конкретного языка, организованные в простые файлы Python. Это упрощает обновление и расширение данных. Общие языковые данные включают правила, которые могут применяться к разным языкам (например, базовая пунктуация, эмодзи, смайлики, однобуквенные сокращения). Отдельные языковые данные содержат правила для конкретного языка и создают подкласс Language (например, английского или русского). Значения определены в Language.Defaults [12].

Основные функции библиотеки Spacy приведены в таблице ниже.

Таблица 1 – Основные функции библиотеки Spacy
Название функции Описание функции
ТокенизацияСегментирование текста на слова, знаки препинания и т.д.
Пометка части речи (POS)Присваивание частей речи токенам, например глагол или существительное
Анализ зависимостейНазначение меток синтаксических зависимостей, описывающих отношения между отдельными токенами, такие как субъект или объект
ЛемматизацияНазначение базовых форм слов
Определение границ предложения (SBD)Поиск и сегментирование отдельных предложений
Распознавание именованных сущностей (NER)Маркировка именованных объектов, таких как люди, компании или местоположения
Связывание сущностей (EL)Устранение неоднозначности текстовых сущностей в уникальные идентификаторы
СходствоСравнение слов, фрагментов текста и документов и определение их сходства
Текстовая классификацияНазначение категорий или меток всему документу или его частям
Соответствие на основе правилПоиск последовательностей токенов на основе их текстов и аннотаций
ОбучениеОбновление и улучшение прогнозов статистической модели
СериализацияСохранение объектов в файлы или байтовые строки

На рисунке 2 показан пример разбиения стандартного текста-примера на русском языке на части речи, где NOUN – существительное, VERB – глагол, ADJ – прилагательное.

Пример разбиения русского текста на части речи
Рисунок 2 – Пример разбиения русского текста на части речи

Библиотека DeepPavlov

Данная библиотека является диалоговой и использует искусственный интеллект, с открытым исходным кодом, построена на TensorFlow, Keras и PyTorch [13].

Библиотека DeepPavlov предназначена для:

Схема работы библиотеки DeepPavlov
Рисунок 3 – Схема работы библиотеки DeepPavlov

Ключевые концепции:

  1. Навык выполняет цель пользователя в некоторой области. Обычно это предоставление информации или завершение транзакции (например, ответ на FAQ, бронирование билетов и т.д.). Для некоторых задач успешное взаимодействие определяется как постоянное взаимодействие.
  2. Модель – любая модель NLP, которая не обязательно общается с пользователем на естественном языке.
  3. Компонент – многоразовая функциональная часть модели или навыка.
  4. Модели на основе правил нельзя обучить.
  5. Модели машинного обучения (ML) обучаются только автономно.
  6. Модели глубокого обучения (DL) можно обучать независимо и в сквозном режиме, объединяя их в цепочку.
  7. Менеджер навыков выполняет выбор навыка для генерации ответа.
  8. Сцепление строит пайплайн модели из разнородных компонентов (правила / ML / DL), что позволяет обучать и выводить модели в пайплайне в целом.

Самый маленький блок библиотеки – это компонент. Компонент обозначает любую функцию в NLP пайплайне: нейронную сеть, модель ML или систему, основанную на правилах [14]. Компоненты могут быть объединены в модель или навык. Модель решает более крупную задачу NLP, чем компонент, но по реализации не отличается от компонентов. Навык отличается тем, что его входные и выходные данные должны быть строками, поэтому навыки обычно связаны с диалоговыми задачами.

Современные виртуальные помощники, такие как Amazon Alexa и Google Assistant, объединяют различные разговорные навыки. DeepPavlov Agent – это платформа для разработки масштабируемых виртуальных помощников, сложных диалоговых систем и чат-ботов [15].

Ключевые особенности:

Главные архитектурные концепции:

Заключение

При изучении проблемы анализа и обработки естественного языка средствами машинного обучения были проанализированы современные подходы к её решению.

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

Перечень ссылок

  1. Обработка естественного языка – Режим доступа: https://neerc.ifmo.ru/wiki/index.php?title=Обработка_естественного_языка
  2. Правильный NLP: как работают и что умеют системы обработки естественного языка – Режим доступа: https://tproger.ru/articles/naturallanguage-processing/
  3. Что такое глубокое обучение? – Режим доступа: https://www.baslerweb.com/ru/vision-campus/otrasli-i-zadachi/chto-takoeglubokoe-obuchenie/
  4. Свёрточная нейронная сеть – Режим доступа: https://ru.wikipedia.org/wiki/Свёрточная_нейронная_сеть
  5. Трансформер (модель машинного обучения) – Режим доступа: https://ru.wikipedia.org/wiki/Трансформер_(модель_машинного_обучения)
  6. Gated recurrent unit – Режим доступа: https://ru.wikipedia.org/wiki/Gated_recurrent_unit
  7. Fairseq documentation – Режим доступа: https://fairseq.readthedocs.io/en/latest/
  8. Fairseq – All You Need to Know – Режим доступа: https://www.folio3.ai/blog/fairseq/
  9. spaCy 101: Everything you need to know – Режим доступа: https://spacy.io/usage/spacy-101
  10. Features – Режим доступа: https://spacy.io/usage/spacy-101#features
  11. Industrial-Strength Natural Language Processing – Режим доступа: https://spacy.io/
  12. Language data – Режим доступа: https://spacy.io/usage/spacy-101#language-data
  13. Conceptual overview – Режим доступа: http://docs.deeppavlov.ai/en/master/intro/overview.html
  14. Features – Режим доступа: http://docs.deeppavlov.ai/en/master/features/overview.html
  15. DeepPavlov Agent documentation – Режим доступа: https://deeppavlov-agent.readthedocs.io/en/latest/index.html
  16. Architecture Overview – Режим доступа: https://deeppavlovagent.readthedocs.io/en/latest/intro/overview.html