Тема: РАЗРАБОТКА DSL ДЛЯ БЫСТРОГО ПРОТОТИПИРОВАНИЯ ПРИЛОЖЕНИЙ АНАЛИЗА ТЕКСТОВ НА ПЛАТФОРМЕ APACHE UIMA
Характеристики работы
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Актуальность проблемы 4
1. Постановка задачи 7
1.1. Обзор существующих решений 7
1.1.1. GATE 7
1.1.2. NLTK 8
1.1.3. DKPro Core 9
1.1.4. Bluima 12
1.2. Коротко о UIMA 14
1.3. Структура CAS 16
2. Разработка 19
2.1. Используемые технологии 19
2.1.1. Язык программирования Scala 19
2.1.2. Библиотека Scalaz-stream 20
2.1.3. Плагин Scalamacros-paradise 21
2.2. Архитектура 22
2.2.1. Генерация XML-дескриптора системы типов 22
2.2.2. Представление конвейера 25
2.2.3. Программная реализация 27
3. Оценка эффективности 29
ЗАКЛЮЧЕНИЕ 31
Рекомендации к дальнейшему улучшению приложения 31
Рекомендации ко внедрению 32
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
📖 Введение
Важное место занимают расширяемые системы, предназначенные для обработки произвольных видов данных, которые могут гибко настраиваться пользователем. Наиболее популярные из них - это GATE, NLTK и Apache UIMA.
UIMA - одна из наиболее зрелых программных платформ для реализации индустриальных решений в области текстовой аналитики, разработанная IBM и ASF. Аббревиатура UIMA - это сокращение от Unstructured Information Management Architecture (архитектура управления неструктурированной информацией). Данная библиотека является программной реализацией фреймворка для анализа неструктурированного контента, такого как текст, видео- и аудио- данные. Неструктурированная информация на данный момент является самым крупным, наиболее актуальным и быстрорастущим источником информации, который доступен для предприятий и правительства.
Мотивация к созданию такой системы заключалась в создании общей платформы для неструктурированных данных, чтобы способствовать повторному использованию компонентов анализа и уменьшения дублирования в разработке анализаторов. Подключаемая архитектура UIMA позволяет легко подключить собственные компоненты анализа и объединить их вместе с другими. Задача полного анализа (с использованием неструктурированных данных), как например, задача поиска, является не монолитной задачей, а многоступенчатым процессом, в котором различные модули должны опираться друг на друга, чтобы получить мощную цепочку анализа. В некоторых случаях аннотаторы от разных разработчиков должны работать вместе, чтобы произвести необходимые результаты. С применением UIMA нет необходимости знать детали того, как разные аннотаторы работают в сборе. Библиотека UIMA берет на себя заботу за интеграцию и взаимодействие нескольких аннотаторов между собой.
Таким образом, основная цель UIMA заключается в преобразовании неструктурированной информации в структурированный вид, путем организации механизмов анализа, для выявления сущностей или отношений, и тем самым позволяя построить мост между неструктурированным и структурированным мирами.
Актуальность проблемы
Библиотека Apache UIMA предоставляет огромные возможности для организации эффективной обработки больших объемов неструктурированных данных. Однако создание и развертывание такой высокопроизводительной системы, а также последующая поддержка и конфигурирование для удовлетворения различных функциональных и нефункциональных требований к такому программному продукту требует глубокого понимания процессов, происходящих внутри фреймворка Apache UIMA. Более того, даже при разработке сравнительно небольшого приложения для обработки текстов на естественном языке с помощью этой библиотеки, разработчик сталкивается с проблемой поддержки множества ХМЬ-файлов[2]. Для иллюстрации этой проблемы, рассмотрим примитивное приложение, предназначенное для разбиения текста на предложения. Ниже приведен список действий, который должен выполнить разработчик для реализации данной задачи, следуя традиционному подходу:
1. Написать XML-дескриптор, описывающий систему типов для конкретной задачи (в данном случае - класс Sentence).
2. Запустить утилиту JCasGen (входит в состав UIMA) для генерации Java-классов из дескриптора системы типов.
3. Реализовать анализатор для выделения предложений в тексте.
4. Написать XML-дескриптор, описывающий созданный анализатор.
5. Реализовать CAS Consumer для обеспечения требуемого вывода полученных результатов.
6. Написать еще один XML-дескриптор, который описывает этот CAS Consumer.
7. Написать XML-дескриптор для компоненты, которая бы считывала входные данные (Collection Reader).
8. Написать XML-дескриптор, описывающий конвейер (pipeline), состоящий из предыдущих модулей.
9. И, наконец, вызвать Collection Processing Manager, передав в него дескриптор файл конвейера.
Отчетливо видно, что почти для каждого Java класса в приложении должен быть создан дублирующий файл xml с описанием. При каждом изменении кода, xml файл также должен быть редактирован. Это создает неудобства как во время разработки системы, так и во время последующей поддержки.
Эту проблему в некоторой степени решают существующие библиотеки, построенные на платформе Apache UIMA, в первую очередь это UIMAFit, разрабатываемый тем же Apache Foundation. UIMAFit позволяет избежать ненужное дублирование логики приложения и сводит использование xml файлов к минимуму. Несмотря на то, что эта библиотека кардинально изменяет взаимодействие с фреймворком UIMA, упрощая разработку и добиваясь минимального количества кода, UIMAFit лишь является оберткой над стандартной библиотекой Apache UIMA. Однако использование UIMAFit не решает проблему с написанием xml-дескрипторов для системы типов, лишь автоматизируя сам процесс запуска утилиты JCasGen.
✅ Заключение
• Проведен анализ и сравнение существующих на момент публикации инструментов для анализа текстовых данных на платформе Apache UIMA.
• Разработан предметно-ориентированный язык, позволяющий минимальным количеством кода разработать NLP-приложение с сохранением возможности гибкой настройки каждой из компонент приложения.
• Разработан механизм автоматической генерации XML- дескрипторов системы типов и соответствующих Java-классов, что значительно ускоряет время разработки приложения.



