УДК 004.85
Рудак Л.В., Федяев О.И.
Донецкий национальный технический университет
leo2598@yandex.ua, fedyaev@donntu.org
Введение
Обработка естественного языка (Natural language processing, NLP) – область исследований, находящаяся на пересечении компьютерных наук, искусственного интеллекта и лингвистики. Предметом её исследований являются методы компьютерного анализа и синтеза текстов на естественном языке, т.е. вопросы, относящиеся к обработке и пониманию естественного языка для перевода текста и конструирования грамотных ответов на вопросы [1].
С развитием голосовых интерфейсов и чат-ботов NLP стала одной из важных технологий искусственного интеллекта. Но полное понимание и воспроизведение смысла языка – чрезвычайно сложная задача, так как человеческий язык имеет следующие особенности:
Новые перспективы технологий NLP основываются на глубоком обучении (deep learning) с применением искусственных нейронных сетей – области машинного обучения, которая начала бурно развиваться только в начале этого десятилетия по следующим причинам:
Большинство методов машинного обучения хорошо работают из-за разработанных человеком представлений данных и входных признаков, а также оптимизации весов, чтобы сделать финальное предсказание лучше.
Глубокое обучение в настоящее время накопило множество гибких, универсальных и обучаемых инструментов (фреймворков) для представления мира как в виде визуальной, так и лингвистической информации. Вначале это привело к прорывам в областях распознавания речи и компьютерном зрении. Эти модели часто обучаются с помощью распространенных алгоритмов и не требуют традиционного построения признаков под конкретную задачу [3].
Учитывая разнообразие новых подходов к проблеме NLP, необходимо оценить современное состояние и возможности методов машинного обучения в решении проблемы анализа и обработки естественного языка, в частности для решения задачи перевода текстов. Современные методы и технологии машинного обучения сосредоточены в специальных библиотеках, которые содержат программные модули, реализующие различные модели. Чтобы разумно использовать эти наукоёмкие инструментальные средства, необходимо проанализировать назначение, функционал и особенности их применения.
Библиотека Fairseq
Данная библиотека машинного обучения с открытым исходным кодом основана на наборе инструментов последовательного моделирования. Это позволяет исследователям с её помощью обучать пользовательские модели для трансформера с целью обучения языку, перевода и решению других задач. Она поддерживает распределённое обучение на нескольких графических процессорах [4].
Возможность моделирования последовательных данных является одной из особенностей библиотеки. Она поддерживает различные модели. Рассмотрим эти модели:
Библиотека Spacy
Данная библиотека с открытым исходным кодом для расширенной обработки естественного языка (NLP) в Python. Она бесплатна и помогает создавать приложения, обрабатывающие и «понимающие» большие объёмы текста [9]. Её можно использовать для построения систем извлечения информации, понимания естественного языка или для предварительной обработки текста для глубокого обучения.
Статистические модели. В то время как некоторые функции библиотеки работают независимо, другие требуют загрузки обученных конвейеров, которые позволяют предсказывать лингвистические аннотации, например, является ли слово глаголом или существительным. Обученный конвейер может состоять из нескольких компонентов, которые используют статистическую модель, обученную на помеченных данных. В настоящее время библиотека Spacy предлагает обученные конвейеры для множества языков, которые можно установить как отдельные модули Python. Пакеты конвейеров могут различаться по размеру, скорости, использованию памяти, точности и содержащимся в них данным [10].
Лингвистические аннотации. С помощью лингвистических аннотаций Spacy возможно улучшить понимание грамматической структуры текста. Они включают типы слов, такие как части речи, и то, как слова связаны друг с другом. Например, при анализе текста имеет значение, является ли существительное субъектом предложения или объектом — или используется ли слово «google» как глагол или относится к веб-сайту/компании в конкретном контексте [11].
Данные языков. Каждый язык индивидуален и полон исключений и особых случаев, особенно среди самых распространенных слов. Некоторые исключения общие для разных языков, другие полностью специфичны и требуют жесткой программной реализации. Модуль lang содержит все данные для конкретного языка, организованные в простые файлы Python. Это упрощает обновление и расширение данных. Общие языковые данные включают правила, которые могут применяться к разным языкам (например, базовая пунктуация, эмодзи, смайлики, однобуквенные сокращения). Отдельные языковые данные содержат правила для конкретного языка и создают подкласс Language (например, английского или русского). Значения определены в Language.Defaults [12].
Основные функции библиотеки Spacy приведены в таблице ниже.
| Название функции | Описание функции |
|---|---|
| Токенизация | Сегментирование текста на слова, знаки препинания и т.д. |
| Пометка части речи (POS) | Присваивание частей речи токенам, например глагол или существительное |
| Анализ зависимостей | Назначение меток синтаксических зависимостей, описывающих отношения между отдельными токенами, такие как субъект или объект |
| Лемматизация | Назначение базовых форм слов |
| Определение границ предложения (SBD) | Поиск и сегментирование отдельных предложений |
| Распознавание именованных сущностей (NER) | Маркировка именованных объектов, таких как люди, компании или местоположения |
| Связывание сущностей (EL) | Устранение неоднозначности текстовых сущностей в уникальные идентификаторы |
| Сходство | Сравнение слов, фрагментов текста и документов и определение их сходства |
| Текстовая классификация | Назначение категорий или меток всему документу или его частям |
| Соответствие на основе правил | Поиск последовательностей токенов на основе их текстов и аннотаций |
| Обучение | Обновление и улучшение прогнозов статистической модели |
| Сериализация | Сохранение объектов в файлы или байтовые строки |
На рисунке 2 показан пример разбиения стандартного текста-примера на русском языке на части речи, где NOUN – существительное, VERB – глагол, ADJ – прилагательное.
Библиотека DeepPavlov
Данная библиотека является диалоговой и использует искусственный интеллект, с открытым исходным кодом, построена на TensorFlow, Keras и PyTorch [13].
Библиотека DeepPavlov предназначена для:
Ключевые концепции:
Самый маленький блок библиотеки – это компонент. Компонент обозначает любую функцию в NLP пайплайне: нейронную сеть, модель ML или систему, основанную на правилах [14]. Компоненты могут быть объединены в модель или навык. Модель решает более крупную задачу NLP, чем компонент, но по реализации не отличается от компонентов. Навык отличается тем, что его входные и выходные данные должны быть строками, поэтому навыки обычно связаны с диалоговыми задачами.
Современные виртуальные помощники, такие как Amazon Alexa и Google Assistant, объединяют различные разговорные навыки. DeepPavlov Agent – это платформа для разработки масштабируемых виртуальных помощников, сложных диалоговых систем и чат-ботов [15].
Ключевые особенности:
Главные архитектурные концепции:
Заключение
При изучении проблемы анализа и обработки естественного языка средствами машинного обучения были проанализированы современные подходы к её решению.
Рассмотренные в ходе работы технологии понимания и обработки естественного языка показали возможность решения разноплановых задач, относящихся к изучаемой проблеме, с использованием различных функциональных подходов и инструментов.
Перечень ссылок