Разработка серверной части системы для лингвистических исследований

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 19.08.2020
Размер файла 4,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Разработка серверной части системы для лингвистических исследований

Сунцев Максим Александрович

Введение

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

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

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

Частичная автоматизация процесса может быть проведена при помощи программной системы, работающей с корпусами академических текстов. Здесь корпус - набор академических текстов с их ярко выраженными особенностями. Такие особенности анализируются с помощью специальных критериев, именуемых «маркерами», которые описываются заранее группой экспертов.

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

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

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

1. Анализ предметной области, рассмотрение аналогов.

2. Выдвижение требований к системе и разработка ТЗ.

3. Проектирование программной системы и ее компонентов.

4. Проектирование интерфейса приложения.

5. Реализация программной системы.

6. Отладка и тестирование системы.

7. Внедрение системы.

Отчет состоит из трех частей: анализ задачи; проектирование системы; реализация системы, тестирование и внедрение. В главе «Анализ задачи» подробно рассматривается предметная область, проводится поиск аналогов, выдвигаются требования к программной системе. В главе «Проектирование системы» производится поэтапное планирование системы, создание моделей этапа проектирования для последующей реализации системы. В главе «Реализация системы…» подробно документируется процесс разработки программы, ее отладки и тестирования, отражаются этапы ее внедрения.

1. Анализ задачи разработки портала для анализа академического письма

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

Существующие библиотеки для корпусных исследований

В рамках исследования были рассмотрены несколько библиотек, открытых и бесплатных к использованию, выявлены их сильные и слабые стороны, оценены технологические детали.

GATE

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

Рисунок 1.1 - Интерфейс GATE Developer

В GATE Developer можно создавать программы-конвейеры для обработки текстов, в качестве этапов в которых можно использовать как встроенные элементы, так и сторонние плагины (см. рисунок 1.1).

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

Фреймворк NLTK написан на Python, и является довольно мощным средством для анализа естественных языков [2]. Фреймворк довольно прост в использовании, при установке программисту доступны свыше 50 корпусов.

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

AntConc - приложение для работы с текстовыми документами в «сыром» формате - файлы, подлежащие обработке, поставляются в виде файлов *.txt[3]. AntConc не использует БД для хранения корпусов, поэтому его возможности ограничены анализом небольших объемов информации.

Рисунок 1.2 - Интерфейс программы AntConc

Интерфейс AntConc схож по внешнему виду с интерфейсом GATE Developer (см. рисунок 1.2). В отличие от GATE, где количество корпусов произвольно, здесь корпус один и фиксированный. Здесь так же есть центральное текстовое поле для отображения аннотированного текста.

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

Далее будут рассмотрены несколько подходов к хранению данных корпусов текстов, и будет принят выбор в сторону оптимального. У каждого подхода будут освещены достоинства и недостатки.

Первым и самым очевидным способом хранения информации является использование дискового хранилища. Основным объектом анализа на портале будут загружаемые пользователями документы Project Proposal на английском языке, в среднем объем которых составляет 20 МиБ. Такой объем делает хранение полного текста в классической базе данных затруднительным, в то время как данный подход позволяет хранить файлы настолько большие, насколько это позволяет файловая система.

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

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

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

Новейшие базы данных, такие как MongoDB, соревнуются в скорости с традиционными реляционными БД, а также позволяют хранить крупное содержимое прямо в записях. Записи в MongoDB можно расширять динамически - здесь нет фиксированной табличной структуры, как в реляционных БД. Согласно документации MongoDB [4], максимальный размер документа, который можно сохранить напрямую в БД, составляет 16 МиБ, что достаточно для разрабатываемого портала, так как по сравнению с этой цифрой, размеры обрабатываемых текстов на порядки меньше.

В случае, если документы становятся больше 16 МиБ, MongoDB позволяет использовать встроенную файловую систему GridFS для хранения таких документов, что потребует использования APIдля их получения. MongoDB не поддерживает многопоточный доступ в отличие от SQL баз данных.

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

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

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

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

В источнике [6] утверждается, что уровень владения студентами письменностью и связанными с ней навыками обычно уступает другим коммуникативным задачам. В частности, это связано с методикой обучения, которая фокусируется на аудировании, разговорной речи, грамматике и т. д., в то время как навыки письма часто рассматриваются как дополнительные. Автор описывает несколько подходов к обучению и в заключение предлагает комбинированную методику, которая, как утверждается в тексте, работает лучше. Первый из представленных здесь подходов - продуктовый подход (англ. Productapproach), который предполагает, что для написания текста обучающемуся следует знать некоторое количество шаблонов, следуя которым он сможет произвести текст. Автор утверждает, что эффективность такого метода сомнительна, и обучающиеся способны создавать качественные тексты только при изучении большого количества текстов, написанных носителями языка. Следующий - процессный подход (англ. Processapproach), который концентрируется на том, как пишется текст, а не на конечном результате. Применяя такой подход, обучающийся оперирует не шаблонами, а определенными активностями, которые он чередует, чтобы на выходе получился текст. Далее автор описывает жанровый подход (англ. Genreapproach), который схож с продуктовым подходом, но больше акцентирует внимание на социальном контексте написанного. Наконец, в статье предлагается гибридный подход (англ. Product-Genrebasedapproach), который объединяет процессный и жанровый подходы. Такой способ мышления может помочь избавиться от часто повторяющихся шаблонов, которые встречаются в продуктовом подходе, и в то же время создать естественный поток для письма студента.

Исследование, проведённое в [7], направлено на изучение трудностей, возникающих при написании академического текста на английском в восприятии иностранных студентов. Автор провел исследование с помощью опросников в одном из университетов Австралии. Оказалось, что многие испытуемые указали одинаковые сложности, учитывая то, что история их обучения английскому была различной. Среди трудностей были названы использование лексики, согласованность, связность, выбор подходящих источников. Наименьшей проблемой, как сообщалось, были перефразировка, ссылка и цитирование. Так как данная публикация указывает на проблемные точки при написании академических текстов, при разработке программной системы особое внимание будет уделяться вышеуказанным сложностям.

В работе [8] основное внимание уделяется выявлению жанровых сигналов в академической письменной форме. Жанровые сигналы - характерные шаблоны, появляющиеся в текстах определенного жанра. Это исследование особенно важно, так как его цель напрямую связана с задачей текущего исследования. Утверждается, что в академическом тексте имеются распознаваемые закономерности, которые в зависимости от автора могут быть сформулированы разными словами, но иметь в основе одну структуру. В то же время у каждого автора есть свой узнаваемый и уникальный стиль, который идентифицирует автора вне зависимости от жанровых сигналов. В приложении возможно применение такого подхода для улучшения качества выдаваемых рекомендаций.

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

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

Система помощи в академической письменной форме описана в [11]. Хотя описанная здесь система не является прямым аналогом, это интересный случай для изучения, так как она имеет сходную цель - помочь студентам в академическом письме. По сути, это система рекомендаций по словарю, которая может помочь пользователям выбрать правильное слово для выражения своих мыслей. Данный подход может быть применен к разрабатываемой системе, хотя и в ограниченном объеме.

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

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

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

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

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

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

Задачи по проектированию будут осуществлены в Visio [13]. Это программное обеспечение может создавать различные диаграммы на протяжении всего цикла разработки, в то время как его близкие аналоги, как правило, подходят лишь для конкретных этапов процесса, не охватывая весь цикл. программный контроллер серверный

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

Для разработки будет использоваться Intelli JIDEA [14]. Данная IDEв наибольшей степени подходит для разработки на Java, а также для развертывания и тестирования ПО. Используемый язык программирования -Java - на данный момент считается одним из основополагающих языков для разработки Enterprise-приложений: помимо множества сторонних библиотек, он использует широкие возможности встроенного инструментария, которые позволяют разрабатывать сложные программы, не прибегая к сторонним решениям.

В качестве фреймворка для разработки серверной части портала был выбран Spring Boot [15], так как он позволяет быстро создать приложение с минимумом конфигурационного кода, а также имеет мощные и выразительные инструменты для разработки MVCприложений. Внутри Spring Boot будет использоваться обработчик шаблонов Thymeleaf [16], который является одним из самых мощных для Java.

Для создания клиентской части портала будет использоваться HTML5 (с дополнительными атрибутами от Thymeleaf), CSS4 и Java Script нового стандарта ECMAScript-262 [17] без фреймворков для облегчения файлов клиентской части и для увеличения производительности

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

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

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

Далее к разрабатываемому приложению будут выдвинуты требования (см. рисунок 1.3). Система должна быть оформлена в виде микросервиса и являться порталом, а также иметь три уровня иерархии пользователей: администратор, пользователь и неавторизованный посетитель. Основные прецеденты, с которыми будет работать система:

1. Регистрация пользователя позволяет посетителю портала стать пользователем системы с приобретением всех преимуществ последнего.

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

3. Просмотр публичных корпусов доступен всем посетителям, а также внешним сервисам посредством API. Одним из таких сервисов станет сервис визуализации статистики.

4. Редактирование общих корпусов (здесь и далее для краткости «редактирование» включает в себя создание, просмотр, обновление и удаление, если не обговорено иное) доступно, начиная с уровня «пользователь». Таким образом, анонимному посетителю понадобится авторизоваться, чтобы редактировать корпуса.

5. Редактирование документов доступно пользователю и включает в себя загрузку документа в систему, автоматизированную разметку документа, а также поиск документа в базе.

6. Редактирование всех корпусов доступно только администраторам портала, так как это действие потенциально опасно в руках злоумышленников.

7. Просмотр статистики по корпусу доступен администраторам и внешним сервисам посредством API. Скорее всего, обычным пользователям статистика не пригодится. В то же время было принято решение создать открытый API для этого прецедента, так как в рамках НУЛ будет разработан сервис по визуализации статистики.

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

Рисунок 1.3 - Диаграмма прецедентов для портала

Далее будут приведены требования к разрабатываемой системе с учетом анализа, проведенного ранее в этой главе. Подробно требования расписаны в техническом задании (см. Приложение А):

1. Разрабатываемая система должна быть веб-порталом.

2. Разрабатываемый портал должен быть написан на Javaс применением фреймворка SpringBoot, а также модулей расширения для этого фреймворка.

3. Клиентская часть портала должна быть написана на HTML5. CSS 4, ECMAScript2015 без применения фреймворков.

4. Система должна быть расширяемой: должна иметься возможность подключения к другихмикросервисов посредством RESTAPI.

5. Система должна хранить данные вдокументоориентированной MongoDB.

6. В качестве ядра для анализа текстов система будет использовать библиотеку GATE с разнообразными плагинами, в том числе написанными ранее командой Научно учебной лаборатории.

7. Система должна эффективно выполнять запросы пользователя, не «зависать».

8. Система должна хранить пользователей и уровни их привилегий, и на их основе разрешать либо запрещать определенные действия.

9. Система должна работать с корпусами и документами внутри них, для работы с каждой сущностью у пользователя должны быть определенные элементы управления.

2. Проектирование системы для анализа академического письма

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

Проектирование базы данных

Для хранения информации веб-портала была выбрана MongoDB. Всего в базе данных предполагается хранить 7 сущностей (см. рисунок 2.1): сущности, связанные с пользователем, с документами и корпусами, а также сущности аннотаций, текста и статистики.

Рисунок 2.1 -Диаграмма сущностей базы данных этапа проектирования

С помощью SpringData [18] планируется создать интерфейсы репозиториев, после чего фреймворк сам сгенерирует реализацию. При сохранении в базу данных каждому классу присваивается уникальный идентификатор id, которое является строкой (требование MongoDB) и используется базой данных для корректного функционирования. Далее приведено описание каждого из классов (см. таблица 2.1):

Таблица 2.1 - Описание классов проектируемого приложения

Класс

Атрибуты

Связи

Описание

User

Login: строка Password: шифр. строка

Corpus

При регистрации пользователя создается запись о нем.

Corpus

Name: строка

User Document Text Statistics

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

Document

Name: строка

Corpus Text

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

Text

Document TextNode

Сущность, инкапсулирующая размеченный текст. Содержит множество узлов, в которых находится текст.

TextNode

Text: строка

Text

Текстовый узел, может иметь или не иметь аннотации.

Annotation

Name: строка

Type: строка

StartNode: целое

EndNode: целое

TextNode Statistics

К каждому текстовому узлу может быть привязано множество аннотаций, они будут создаваться внутри GATE.

Statistics

Count: целое

Corpus Annotation

Статистика по корпусу будет содержать встречаемость маркеров в текстах корпуса (возможны другие атрибуты, на данной этапе еще неясно).

Классы Corpus, Document, Text, Annotationявляются главными классами внутри портала. Именно за счет них будет выполняться анализ академических текстов. Содержимое загружаемых документов будет храниться на сервере, так как MongoDB позволяет хранить довольно большие документы в записях.

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

Для слоя контроллеров предусмотрено разделение по области ответственности: так, CorpusController будет ответственен за операции над корпусами, UserController - за операции над пользователями и т.д. То же касается и сервисного слоя. Диаграмма классов для реализуемого паттерна MVC представлена ниже (см. рисунок 2.2).

Рисунок 2.2 - Диаграмма классов паттерна MVC

Классы разбиты на три слоя: слой контроллеров, сервисный слой, и слой моделей предметной области. На диаграмме выше изображены лишь интерфейсы репозиториев для моделей предметной области, так как уже было оговорено, что структура классов моделей практически полностью повторяет таковую у сущностей, описанную в диаграмме ERD.

Слой контроллеров содержит пять классов контроллеров: для корпусов, документов, отображения статистики, текста и пользователей. Подробно каждый класс описан в таблице ниже (см. таблица 2.2). Для краткости и удобности отображения данных в таблице суффикс «Controller», а также суффиксы методов создания, чтения и т. д. будут опущены.

Таблица 2.2 - Описание классов слоя контроллеров

Класс

Метод

Действия

Corpus

create

Обрабатывает запрос на создание корпуса, обращается к соответствующему методу сервиса корпусов.

read

Обрабатывает запрос на чтение списка корпусов, возможно указание критерия выборки, например, вместимости страницы и номера.

delete

Обрабатывает запрос на удаление корпуса. Следует заметить, что на сервисном слое из сервиса корпусов произойдет каскадное удаление и документов, входящих в корпус.

Document

create

Переадресует запрос на создание корпуса в сервис корпусов, так как он содержит корпус, выбранный пользователем на данный момент.

read

Запрашивает у сервиса корпусов все документы, входящие в корпус, возможно задание критериев выборки.

delete

Вызывает у сервиса корпусов метод на удаление документов из коллекции данного корпуса.

Statistics

read

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

Text

read

Передает запрос о чтении текста в сервис документов, который хранит открытый на данный момент документ.

User

register

Обрабатывает запрос на регистрацию пользователя.

login

Обрабатывает авторизацию пользователя.

В сервисном слое было выделено пять классов сервисов: сервис корпусов, документов, текста, пользователей, а также отдельный сервис для работы с библиотекой GATE Embedded. Описания сервисных классов представлены в таблице ниже (см. таблица 2.3). Для краткости суффиксы были опущены, как и в предыдущей таблице.

Таблица 2.3 - Описания классов сервисного слоя

Класс

Метод

Действия

Corpus

create

Создает и сохраняет в БД пустой корпус.

read

Считывает из БД корпус.

delete

Каскадно удаляет все связанные документы, обращаясь в сервис документов, а затем удаляет корпус.

createAndAddDocuments

Создает новые документы, обращаясь в сервис документов, и прикрепляет их к текущему корпусу.

readDocuments

Считывает список документов, прикрепленных к корпусу.

removeDocuments

Открепляет документы от корпуса и удаляет их из БД.

getStatistics

Возвращает статистику по корпусу.

Document

create

Создает и сохраняет в БД новый документ, обращаясь в сервис текста для сохранения аннотированного текста.

read

Считывает документ из БД.

delete

Удаляет документ из БД, удаляет текст, но не открепляет его от корпуса. Именно поэтому напрямую из контроллеров не вызывается.

readText

Считывает текст, обращаясь к сервису текста.

Text

create

Создает текст, обращаясь в сервис GATE.

read

Считывает аннотированный текст.

delete

Удаляет текст, но не открепляет его от документа.

Gate

processWithGate

Обрабатывает текст с помощью библиотеки GATEEmbedded. Вызывается из сервиса текста.

User

register

Регистрирует пользователя и сохраняет данные в БД.

login

Авторизует пользователя в системе.

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

Для работы с GATE Embedded используется интерфейс Corpus Controller, к которому можно присоединить корпус документов, а далее обработать их. Обработка происходит с помощью ранее написанной программы-конвейера. Такую программу планируется написать в GATE Developer, после чего она будет использована на портале.

Для клиентской части планируется разработать четыре представления: представление начальной страницы, корпусов, документов и статистики. Каждое из представлений будет иметь элементы управления, при активации которых будут посылаться запросы на контроллеры серверной части (см. рисунок 2.3).

Рисунок 2.3 - Диаграмма классов для клиентской части

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

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

В представлении документов будут представлены инструменты для работы с доступными документами корпуса. Здесь также можно будет просмотреть аннотированный текст документа.

Представление статистики будет открыто только для администраторов, и здесь можно будет увидеть статистику по заданному корпусу. Для сторонних сервисов будет разработано API, которое не нуждается в пользовательском интерфейсе.

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

1. HTML для разметки веб-страницы.

2. CSS для создания стилей страницы.

3. JavaScriptдля создания динамического контента.

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

Предполагается, что для просмотра таких страниц, как, например, для просмотра корпусов или же документов, пользователь должен авторизоваться в систему. Поэтому первой разработанной страницей стала страница регистрации пользователя (см. рисунок 2.4).

Рисунок 2.4 - Страница регистрации пользователя

Для регистрации пользователь вводит свои данные: это полное имя, электронную почту, пароль и, далее, подтверждение пароля. Если все поля заполнены корректно, система зарегистрирует пользователя по нажатии кнопки регистрации. После регистрации пользователь сможет просматривать документы, интерфейс данной страницы представлен далее (см. рисунок 2.5).

Рисунок 2.5 - Страница работы с документами

Из интерфейса портала можно будет просматривать список документов уже загруженных в базу, и для каждого документа будут реализованы действия редактирования документа, просмотра информации о нем, а также удаления из базы (на рисунке выше представлены соответствующие элементы управления). С этой же страницы будет реализована функция добавления нового документа в систему (см. рисунок 2.6).

Рисунок 2.6 - Страница добавления документа

Для добавления документа были добавлены следующие элементы управления: название документа, расположение файла (будет возможен ввод с помощью файлового диалога, примерно такого, как указано на изображении), автор документа, а также выпадающий список корпусов, куда этот текст будет добавлен. По нажатии кнопки создания документ будет добавляться в базу. Для работы с документов создан интерфейс с тестовой разметкой (см. рисунок 2.7).

Рисунок 2.7 - Страница с тестовой разметкой

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

Рисунок 2.8 -Боковое меню

Меню выдвигается по нажатии кнопки меню, закрывается так же. В боковом меню перечислены страницы с редактированием корпусов (ее структура будет практически идентична страницы с документами), редактированием документов и редактированием аннотаций (была освещена в предыдущем абзаце).

Архитектура системы

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

Для описания архитектуры системы этапа проектирования была создана диаграмма компонентов, на которой указаны отдельные элементы разрабатываемого веб-портала (см. рисунок 2.9).

Рисунок 2.9 - Диаграмма компонентов веб-портала

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

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

3. Реализация системы для анализа академического письма

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

Реализация серверной части

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

Инструменты разработки

Серверная часть веб-приложения написана на языке Javaи базируется на фреймворке SpringBoot, который существенно упрощает разработку веб-приложений по сравнению с SpringMVC. В качестве базы данных используется документоориентированная MongoDB, которая позволяет беспрепятственно сохранять документы большого объема в свое хранилище. Для коммуникации с клиентской частью используется шаблонный процессор Thymeleaf, который обрабатывает HTML5_совместимые шаблоны страниц на сервере и далее отсылает их конечному пользователю.

Для разработки серверной части приложения основным инструментом стала IDE Intelli JIDEA. Система заточена на использование для разработки на языке Java(и некоторых других совместимых языков). Однако, небольшой неожиданностью оказалось отсутствие поддержки фреймворка Spring, вследствие чего IDEпри сборке выводит предупреждения, которые по своей сущности являются одной из особенностей работы Spring.

На официальном сайте Springможно сразу же создать готовый шаблон для проекта на SpringBoot, подключив все необходимые модули Spring, в том числе для работы с базами данных [20]. Здесь можно выбрать систему сборки, язык программирования (Java-совместимые), версию фреймворка Spring, а также указать информацию о создаваемом проекте (см. рисунок 3.1).

Рисунок 3.1 - Инициализатор приложения Spring

После создания проекта таким образом, его можно скачать, разархивировать - и он уже будет готов к разработке. После сборки в любой студии для разработки на Javaпроект можно будет запустить, правда, на этот момент там ничего не будет.

Для проведения анализа текстов используется Java-библиотека GATE Embedded, которая с помощью заранее созданной программы-конвейера обрабатывает тексты. В данный конвейер интегрированы встроенные маркеры GATE, а также набор маркеров, разработанных ранее в рамках Научно-учебной лаборатории.

Создание конвейера GATE

GATEявляется довольно гибким семейством программ, позволяя работать с собой как программистам, так и исследователям-лингвистам. Для этого GATEподразделяется на несколько частей, самые важные из которых для данной работы являются GATEDeveloper и GATEEmbedded. GATEDeveloper представляет собой среду, в которой можно создавать конвейеры для обработки текстов, собственно обрабатывать корпуса текстов, проводить статистические исследования и многое другое. В сущности, GATEDeveloper является user-friendly оболочкой для GATEEmbedded (см. рисунок 3.2).

Рисунок 3.2 - Взаимодействие пользователя с GATEDeveloper

Очевидно, что практически все, что можно сделать в GATEDeveloper, можно провести и в GATEEmbedded, но при создании программы-конвейера для данного проекта был избран первый путь, так как создание в среде Developerпроще, быстрее, и позволяет на месте сериализовать полученную программу в XML.

Если использовать GATEEmbedded для этой же цели, то теоретически можно загрузить плагины GATEво время запуска сервера, но так как GATEEmbedded предоставляет возможность десериализовать XML в программу, преимущества динамического подхода для портала неясны, так как на данный момент программа-конвейер одна. В будущем, если будет принято решение добавить возможность модифицировать конвейер, то, возможно, будет рассмотрено описанное решение для динамической загрузки плагинов. Однако, как уже было упомянуто, GATEEmbedded используется внутри сайта по схеме, представленной ниже (см. рисунок 3.3).

Рисунок 3.3 - Взаимодействие программиста с GATEEmbedded

С помощью библиотеки портал десериализует XML-программу (загрузка плагинов происходит автоматически из classpath внутри jar), динамически создает документы с содержимым, загружаемым пользователями портала, и далее проводит обработку. По окончании обработки и в случае отсутствия исключений, на выход поступает XML-разметка, содержащая текст и аннотации.

Разработка слоя контроллеров

Слой контроллеров внутри приложения поделен на две независимые части: слой контроллеров для обработки поступающих HTTP запросов на получение представлений (Views), а также слой API, внутри которого разработаны REST_контроллеры, принимающие JSON-данные (для GET-запросов параметры передаются в адресной строке для кэширования), обрабатывающие их, и возвращающие JSONв ответе. Подробное описание контроллеров представлено ниже (см. таблица 3.1).

Таблица 3.1 - Описание контроллеров серверной части

Название контроллера

Тип запроса

Путь запроса

Параметры

Примечания

IndexController

GET/index

Возвращает представление стартовой страницы, с которой уже можно переместиться на все остальные страницы портала.

CorporaController

GET/corpora

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

DocumentsController

GET/documents

id

Аналогично предыдущему контроллеру, данный контроллер возвращает представление списка документов. Требует id корпуса для отображения документов.

CorpusApiController

POST/api/create_corpus

name

Данный запрос создает новый корпус с заданным именем, далее возвращает его.

GET/api/read_corpus

Считывает существующие и доступные корпуса и возвращает их в JSON-массиве.

POST/api/delete_corpus

id

Удаляет корпус с заданным IDиз системы.

DocumentApiController

POST/api/create_documents

Array of:

corpusId

content

name

Создает документs в указанном корпусе с указанным именем (в текущем проекте имя файла становится именем документа), отправляя строки с содержанием на обработку GATE. Затем система автоматически создает объектыText с размеченным текстом, и сохраняет данные в БД.

GET/api/read_document

corpusId

Считывает документы, принадлежащие к заданному корпусу.

POST/api/delele_document

corpusId

id

Удаляет документ из базы, а также удаляет его из корпуса, к которому он принадлежит.

TextApiController

GET/api/read_text

id

По idдокумента считывается размеченный текст вместе с аннотациями, и отправляется на клиентскую часть.

UserApiController

POST/api/register

login

password

Портал регистрирует нового пользователя с заданным логином и зашифрованным паролем.

POST /api/login

login

password

Портал проверяет, существует ли заданный пользователь, и далее по результату проверки авторизует его (или отказывает в авторизации).

StatisticsApiController

GET /api/statistics

corpusId

Возвращается статистика по маркерам по заданному корпусу.

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

Разработка сервисного слоя

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

Отдельно разработан сервис, инкапсулирующий GATE Core, таким образом, проводящий обработку поступающих в систему текстов с помощью встроенных в портал аннотаций. Сервис использует библиотеку GATE Embedded для обработки текстов с помощью, заранее написанной в среде GATE Developer программы, которая, в сущности, является конвейером из нескольких маркеров, каждый из которых получает результат от предыдущего маркера, обрабатывает его, и отправляет дальше (см. рисунок 3.4).

Рисунок 3.4 - Конвейер, разработанный с помощью GATEDeveloper

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

Корпус и документы для GATEсоздаются динамически, далее они обрабатываются с помощью библиотеки. Итоговая разметка передается в конструктор класса Text, где происходят преобразования, позволяющие отображать и анализировать текст внутри данного портала (подробнее об этом см.ниже).

Разработка моделей предметной области

Были разработаны модели предметной области для сохранения информации о ключевых объектах в базе данных, а также сущности, являющиеся временными при получении данных от клиентской части. Например, при создании документа создается временный объект, который содержит исходный текст, но после обработки средствами GATEэтот текст уже не требуется, так как уже создана отдельная сущность, хранящая текст с аннотациями в формате XML. Описания моделей предметной области представлены в таблице ниже (см. таблица 3.2).

Таблица 3.2- Описания моделей предметной области

Название

Поля

Примечания

Corpus

id

name

{documents}

Корпус хранит свой id, название, а также набор уникальных документов, которые являются idдокументов в их таблице.

Document

id

corpusId

name

textId

В документе хранится id документа и родительского корпуса, а также его название и idаннотированного текста.

Text

id

[nodes]

[annotationList]

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

User

id

login

password

О пользователе портал хранит минимальную информацию: id, логин, указанный при регистрации, а также пароль в зашифрованном виде.

Для работы с базой данных используется механизм репозиториев SpringData. Для каждого из классов моделей предметной области был создан репозиторий, который, в сущности, является расширением стандартного интерфейса, определенного в Spring. При запуске портала фреймворк находит все репозитории и ссылки на них и генерирует шаблонные реализации этих интерфейсов (см. листинг3.1).

Пример расширения интерфейса MongoRepository<Entity, Id>

publicinterfaceCorpusRepositoryextends MongoRepository<Corpus, String> {

Optional<Corpus>findByName(String name);

}

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

Разработка вспомогательных классов

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

Для парсингаXML-файлов, полученных от GATE, были разработаны два класса: TextHandler и AnnotationHandler, каждый из которых расширяет базовый класс DefaultHandler. Этот класс используется во встроенном в JavaSAX (SimpleAPIforXML) парсере. Механизм работы этого парсера таков, что он проходит по документу и сообщает объекту Handlerо встреченных во время прохода XML-тегах, вследствие чего не требуется конструирование дерева в памяти, и проходы выполняются довольно быстро.


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.