Платформа GATE для обработки естественного языка

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

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

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

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

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

Содержание

  • Введение
  • Глава 1. Платформа GATE для обработки естественного языка
  • 1.1 Лингвистический процессор GATE
  • 1.2 Язык для описания лексико-семантических шаблонов JAPE
  • 1.3 Критерии обзора существующих решений
  • 1.4 Редактор создания структур баз данных "WWW SQL Designer"
  • 1.5 Веб-редактор для создания UML диаграмм "CodeUML"
  • 1.6 Онлайн редакторы "Pencilcode" и "Scratch" для визуальных языков
  • 1.7 Настольные редакторы для языка JAPE
  • 1.8 Сводная таблица сравнения аналогов
  • 1.9 Выбор инструмента для визуализации диаграмм
  • 1.10 Выбор платформы для разработки
  • Глава 2. Проектирование визуальных конструкций на основе языка JAPE и выявление требований к веб-редактору для них
  • 2.1 Проектирование визуальных конструкций
  • 2.2 Разработка визуального представления
  • 2.3 Выявление требований для веб-редактора
  • 2.4 Архитектура веб-приложения
  • 2.4 Проектирование веб-редактора
  • 2.5 Проектирование интерпретатора
  • Глава 3. Разработка веб-редактора для описания лексико-семантических шаблонов на визуальном языке
  • 3.1 Реализация клиентской части приложения
  • 3.2 Реализация графического представления объектов
  • 3.3 Реализация алгоритма соединения объектов линией
  • 3.4 Реализация основных функций веб-редактора
  • 3.5 Выводы по результатам реализации редактора
  • Заключение
  • Список сокращений и условных обозначений
  • Библиографический список
  • Приложение А. Грамматика языка JAPE
  • Приложение Б. Диаграмма классов клиента
  • Приложение В. Функции соединения и перемещения объектов
  • Приложение Г. Функции соединения и перемещения объектов

Введение

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

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

Для обработки текстов существуют специализированные программные средства и библиотеки, такие как: "АОТ" [1], WordSmith Tools [2], AntConc [3] и GATE [4]. Последняя система решает практически любые задачи анализа текста. С помощью JAPE [5] она обрабатывает текст на основе регулярных выражений и позволяет разрабатывать лексико-семантические шаблоны, по которым ведется поиск. Однако большая часть пользователей - это лингвисты, и разработка подобных шаблонов вызывает у них затруднения из-за сложности языка. Решением может являться создание визуального языка, который станет проще для пользователей, в этом и заключается актуальность работы.

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

Для достижения цели исследования были выделены следующие задачи:

1. Провести обзор платформы GATE и ее инструмента для аннотирования текста.

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

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

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

5. Сформулировать и описать функциональные требования к веб-редактору.

6. Создать исследовательский прототип веб-редактора для визуального языка, разработанного на основе JAPE, который позволит создавать, редактировать диаграммы и сохранять их на локальном компьютере.

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

Для рассмотрения существующих редакторов использовались такие методы морфологического анализа. При проектировании веб-редактора для визуального DSL языка, разработанного на основе JAPE, использовалось, прежде всего, предметно-ориентированное моделирование информации, которую необходимо записать в терминах DSL, методы объектно-ориентированного проектирования (UML). Для разработки - технологии объектно-ориентированного и веб-программирования.

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

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

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

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

платформа gate обработка язык

Глава 1. Платформа GATE для обработки естественного языка

1.1 Лингвистический процессор GATE

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

Среди преимущество данной платформы перед другими разработчики выделяют:

1. Комплексность. GATE включает в себя все необходимые инструменты для анализа текстов.

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

3. Открытость, расширяемость и возможность многократного использования. Благодаря стандартам, описанным на базе опыта работы с пользователями системы и открытому (хорошо документированному) исходному коду, систему очень просто переиспользовать. Разработчикам представляется расширяемое API и веб-службы для дальнейшего использования.

4. Прозрачность. Благодаря раздельным компонентам системы и дополнительным плагинам, пользователю понятнее алгоритм анализа, т.к. он видит, что нужно подавать на вход каждому из компонент и что получается на выходе.

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

6. Устойчивый коэффициент полезного действия.

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

Рисунок 1.1 Компоненты платформы для анализа текста GATE

1.2 Язык для описания лексико-семантических шаблонов JAPE

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

Например, на рисунке 1.2 представлен пример шаблона, определяющего спортивные категории.

Рисунок 1.2 Лексико-семантический шаблон для определения категорий спорта, описанный на языке JAPE

Первой строкой описывается название фазы, оно должно быть уникальным. "Input" определяет, на какого типа аннотации будет направлено описываемое правило. По умолчанию устанавливается "Token" (буква), "Lookup" (область текста) или "SpaceToken" (лексема пробела). "Options" определяет, метод соответствия правилу с помощью элемента "control". Так же в этой строке может быть указан способ запуска: в режиме отладки или нет (по умолчанию стоит "debug = false", что значит, что запуск правила производится не в режиме отладчика). Далее, в четвертой строке определено название правила, а в пятой - приоритет его выполнения. Последовательность выполнения правил определяется проставленными приоритетами.

После идентифицирующих строк, описывается сам шаблон: седьмая и восьмая строки описывают правило "найти все аннотации, соответствующие шаблону Lookup. majortype == "Sports” и присвой им имя label. Символ "-->" является границей, после которой описывается правая часть правила. Строка 10 посылает команду для JAPE Transducer о переименовании label (определенной на строке 8) в "Sport". А правило, по которому она была определена, именуется "SportsCategory".

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

1.3 Критерии обзора существующих решений

В главе рассмотрены существующие решения веб-редакторов, позволяющих создавать разного типа диаграммы и генерировать на их основе программный код. Так же рассмотрены рекомендованные разработчиками [5] редакторы для языка JAPE. Главная цель создания веб-редактора для описания лексико-семантических шаблонов - максимально упростить работу пользователей с языком JAPE посредством визуального представления зыка, кроме того, необходимо, чтобы он работал непосредственно в браузере, без установки дополнительного программного обеспечения. Поэтому критериями сравнения существующих решений были выделены:

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

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

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

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

5. Возможность создания диаграмм, на основе которых будет сгенерирован программный код. Будет выяснено, возможно, ли, изменяя визуальное представление (диаграмму), генерировать программный код, а не наоборот.

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

1.4 Редактор создания структур баз данных "WWW SQL Designer"

"WWW SQL Designer" позиционируется как абсолютно бесплатный, доступный для пользователей, универсальный веб-редактор, значительно упрощающий процесс создания структуры хранилищ и баз данных для более известных и популярных СУБД [6]. Упрощение работы достигается путем автоматического генерирования скриптов на основе построенной ER-диаграммы. Однако для создания массивных хранилищ такой редактор не подойдет, ввиду того, что создавать их в визуальном представлении гораздо проблематичнее, чем описать скриптами или создать с помощью СУБД.

Для работы с "WWW SQL Designer" пользователю необходимо лишь открыть его в браузере (разработчики гарантируют правильную работу на Mozilla Firefox, IE, Safari и Opera, работа основных функций была проверена на Google Chrome). Для корректной работы не нужно устанавливать никаких дополнительных библиотек или расширений для браузера, достаточно только включить разрешение на выполнение JavaScript команд. Генерация кода реализована под наиболее популярные СУБД: MS SQL, MySQL, SQLite, Oracle, PostgresSQL и другие. Все эти функции делают данный редактор универсальным и общедоступным. Более того, в нем реализованы все необходимые для построения структур баз данных функции: создание уникальных полей (ключей), внешних ключей, добавление комментариев, типизирование полей и т.д.

Для последующего использования разработанной схемы, пользователь может сохранить ее в своем браузере, на предоставленном сервере под ключевым словом, в виде xml файла или экспортировать в виде SQL скрипта. SQL скрипт генерируется прямо в окне браузера, так что его можно скопировать и сохранить в любой удобный формат. Импорт схем так же возможен из XML файла или сохраненной ранее схемы (доступ открыт ко всем ранее сохраненным на сервере базам).

По сути, вся работа веб-редактора строится на генерации кода, на основе уже готовых шаблонов, которые пользователь только добавляет на диаграмму. Ему вообще не нужно работать с кодом на протяжении всего процесса создания диаграммы, только получив в результате скрипт, применить его в нужной СУБД. Такая изоляция гарантирует правильность конечного результата, т.к. весь код находится под управлением программы. Так же она будет наиболее удобна для пользователей, ранее не работавших со скриптами. Возможности же обратной генерации - ER-диаграммы на основе введенного скрипта - нет. Импорт возможен только из сохраненного ранее файла в формате. xml.

1.5 Веб-редактор для создания UML диаграмм "CodeUML"

Проект CodeUML.com является частью проекта PlantUML, созданного одноименной командой разработчиков. Это проект с открытым исходным кодом, который позволяет быстро создавать различные UML диаграммы в браузере, не устанавливая дополнительного программного обеспечения [7]. Точных данных, на каких браузерах проект будет работать, не найдено, но проверено, что основные функции он выполняет на таких браузерах, как IE, Google Chrome, Mozilla Firefox и Safari. Распространяется он бесплатно, можно лишь по желанию пользователя поддержать проект.

Разработчики позиционируют редактор как доступный любому, значительно ускоряющий процесс создания UML диаграмм инструмент. Однако для его использования необходимо изучить язык PlantUML, с помощью которого и достигается увеличение эффективности работы. Таким образом, можно предположить, что этот инструмент наоборот, создавался для программистов, которым легче описать диаграмму в текстовом виде, чем в визуальном, т.к. девиз проекта звучит как "design UML diagrams as fast as you can code", что значит "создавай UML диаграммы так быстро, насколько ты можешь запрограммировать".

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

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

1.6 Онлайн редакторы "Pencilcode" и "Scratch" для визуальных языков

Веб-редакторы "Pencilcode.net" [8] и "Scratch" [9] позиционируются как обучающие или редакторы для начинающих программировать. Их целесообразно рассмотреть в данном исследовании для выявления методов упрощения понимания пользователем языка программирования. "Pencilcode" был создан командой "Pencil Code", он визуализирует язык Coffeescript, но так же поможет изучить Javascript, HTML, и CSS. Так же для обучения языку издано множество книг и учебников. Scratch создан "Lifelong Kindergarten Group", визуализирует одноименный язык, который тоже содержит переменные, ветвления, циклы и др. С помощью этого языка можно создавать интерактивные истории, игры и анимации. Оба редактора направлены на максимальное упрощение обучения программированию.

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

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

1.7 Настольные редакторы для языка JAPE

Ввиду того, что для языка JAPE не предусмотрен специализированный редактор, разработчики рекомендуют использовать Vim [10] или Eclipse [11], ассоциировав файлы с расширением. jape с одной из этих программ. Vim - это продвинутый текстовый редактор, подобный Notepad++, Sublime и другим, который позволяет лишь подсветить ключевые слова и помочь в организации скобок. Eclipse так же не предназначен для JAPE, хотя поддерживает множество языков. Как и Vim, эта среда может быть использована как текстовый редактор.

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

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

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

1.8 Сводная таблица сравнения аналогов

В ходе исследования, было рассмотрено шесть редакторов. Два из них - веб-редакторы, позволяющие разрабатывать диаграммы и генерировать на их основе программный код и наоборот. Еще два - редакторы, рекомендованные разработчиками для редактирования лексико-семантических шаблонов на языке JAPE. Последние не предоставляют возможности визуализации языка, поэтому требуют длительной подготовки пользователя для работы. "WWW SQL Designer" позволяет полностью сгенерировать готовый программный код на основе составленной пользователем диаграммы, а "CodeUML" наоборот, на основе текстового языка PlantUML генерирует UML диаграммы различного типа. "Pencilcode" и "Scratch" вообще не дают доступа пользователя к коду, что исключает возможность появления ошибок и весь процесс создания программы контролируется, а диаграммы сохраняются в виде файлов с уникальным расширением специально для этих редакторов. Прежде чем был проведен обзор, были выделены критерии сравнения аналогов, приведенные в пункте 1.1 Результаты сравнения приведены в таблице 1.1.

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

Рассмотренные веб-редакторы, не предназначенные для языков для описания лексико-семантических шаблонов, выявило ряд полезных функций, которые помогли бы упростить изучение языка JAPE и ускорить знакомство и начало работы с ним, а также, дальнейшее использование. Так, была выявлена особенность веб-редакторов "WWW SQL Designer", "Pencilcode" и "Scratch", что полностью исключает появление ошибок в коде, который будет получен в результате, за счет полной изоляции пользователя от него. В веб-редакторе "CodeUML" выявлена функция использования уже готовых шаблонов - блоков, вставив которые, пользователь уже может использовать полученный код или дорабатывать его. Эта функция опять же, ускорит работу и поможет избежать ошибок, которые может сделать пользователь.

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

Таблица 1.1 Сравнение аналогов и существующих редакторов для JAPE

WWW SQL Designer

CodeUML

Vim/Eclipse

Pencilcode

Scratch

Целевые языки

SQL скрипты

PlantUML

Java

Coffescript, Javascript, HTML, CSS

Scratch

Доступность

Бесплатно, доступ из браузера без дополнительных надстроек

Бесплатно, доступ из браузера без дополнительных надстроек

Бесплатно, необходимо скачать установочный файл

Бесплатно, доступ из браузера без дополнительных надстроек, нужна регистрация.

Бесплатно, доступ из браузера без дополнительных надстроек

Обработка ошибок

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

С помощью встроенного компилятора вместо диаграммы отображается ошибка.

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

Выявление ошибок при запуске программы в виде сообщения

Исключено появление ошибок

Функция визуализации программного кода

-

+

-

+

+

Функция конвертирования визуального отображения в текстовое

+

-

-

-

-

Наличие готовых шаблонов

+

+

-

-, но есть подсказки и примеры

-, но есть подсказки и примеры

Поддерживаемые форматы файлов

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

Сохранение диаграммы - сохранение картинки из браузера (. png). Загрузка кода - копирование и вставка текста в окно браузера.

Можно ассоциировать файлы. jape.

-

. sb2

Функции импорта/экспорта кода

-/+

+/+

+/+

-/-

-/-

Таким образом, было решено создать веб-редактор, который бы не требовал установки дополнительного программного обеспечения для корректной работы, т.к. это наиболее простой вариант начала использования редактора пользователем. Редактор будет обеспечен справочной системой, однако она будет реализована на последующих итерациях разработки. Главная задача - визуализация языка, поэтому веб-редактор будет обладать функцией генерации программного кода на основе диаграммы, но не наоборот. Это оградит пользователя от возможных ошибок в коде. Результатом работы программы будет текстовый файл в формате. jape, в котором будет описан код на JAPE, сгенерированный по разработанной пользователем диаграмме. В дальнейшем этот файл будет храниться в облачном хранилище. Чтобы диаграммы можно было переиспользовать, необходимо реализовать функции сохранения и импорта. Для разработки веб-редактора для языка JAPE была выбрана платформа Java, т.к. на данный момент это наиболее широко используемая платформа для разработки веб-приложений [12], к тому же, позволяет создавать проекты с открытым исходным кодом.

1.9 Выбор инструмента для визуализации диаграмм

Для визуализации диаграмм потребуется инструмент, который позволил бы создавать растровые или векторные изображения на веб-странице. Графический API WebGL не рассматривался, т.к. он используется для решения более сложных задач, в основном, для создания интерактивной 3D-графики. Выбор производился из двух наиболее популярных на данный момент вариантов: Canvas [13] или SVG [14]. В таблице 1.2 представлено сравнение этих двух инструментов.

Canvas - это элемент HTML5, он предназначен для создания растровых изображений при помощи языка JavaScript. Имеет возможность добавления на холст видео, однако для создания диаграмм этой функции не потребуется. Для рисования можно использовать два разных подхода: 2D или 3D (WebGL). Все картинки, реализованные с помощью canvas, состоят из пикселей, это означат, что разработчику не нужно концентрироваться на ограничениях сложности изображения, однако у этой характеристики есть и отрицательная сторона. Не существует каких-либо файловых форматов, рисование возможно только с помощью скриптов.

SVG же имеет векторный графический формат, это язык разметки, основанный на XML. Это значит, что мы сможем сохранить созданные диаграммы в формальном виде и затем, сгенерировать на их основе код на JAPE. Он поддерживает и декларативную и скриптовую графику. Однако, не имеет функции 3D отрисовки. Однако, этой функции и не требуется для рисования диаграммы Вирта.

Предполагается, что по завершении работы будет создан веб-редактор, который позволит пользователю создавать диаграммы, которые, в последствии, можно будет трансформировать в код на языке JAPE. Это значит, что необходимо использовать SVG, т.к. Canvas не может быть сохранен в формате XML, т.к. предназначен для других целей. Так же, Canvas не подходит для динамических проектов, поэтому было решено использовать SVG.

Таблица 1.2 Сравнение инструментов для рисования на веб-странице

Canvas

SVG

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

Не зависит от разрешения изображения, подходит для кроссплатформенных веб-проектов.

Полученное изображение можно сохранить в форматах. JPG или. PNG.

Изображение можно сохранить в формальном виде, т.к. SVG - язык разметки, основанный на XML.

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

Позволяет получить полный контроль над каждым объектом (элементом).

Нет API для анимации.

Поддерживает анимацию.

Не подходит для создания интерактивных сайтов. При перерисовывании одного объекта перерисовывается всё полотно.

Элементы могут быть динамическими с помощью JavaScript или описательного синтаксиса. При изменении положения элемента меняются только его координаты, полотно перерисовывать не нужно.

Объекты нельзя связать с обработчиками событий, т.к. они являются частью полотна.

Каждый графический объект - часть модели DOM.

1.10 Выбор платформы для разработки

Ввиду того, что в качестве инструмента для описания графики был выбран SVG, клиентская часть приложения будет разрабатываться на JavaScript. Существует множество библиотек, которые позволяют упростить работу с SVG [15], среди них была выбрана Raphael. js [16], т.к. это наиболее широко используемая библиотека с открытым исходным кодом, которую можно свободно использовать в соответствии с лицензией Apache2, и пользоваться исходным кодом с GitHub. Так же, ее отличительной особенностью является то, что она направлена на будущие разработки, поддерживает новейшие функции SVG (такие как управление группами объектов, что важно для данной разработки). Соответственно, для описания стилей будет использован язык CSS.

Реализация серверной части приложения будет производиться на языке Java, т.к. на сегодняшний момент этот язык наиболее популярен, а значит, востребован [17]. Так же преимуществами этой платформы является свободно-распространяемое программное обеспечение для разработки (среда разработки Eclipse, сервер Tomcat) и открытый исходный код, что позволит переиспользовать уже разработанные модули для нового проекта.

Глава 2. Проектирование визуальных конструкций на основе языка JAPE и выявление требований к веб-редактору для них

2.1 Проектирование визуальных конструкций

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

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

2.2 Разработка визуального представления

Как было описано выше, на первом этапе разработки, будут описаны только самые часто-используемые конструкции языка JAPE. Таким образом, в соответствии с грамматикой языка (см. приложение А), левая часть правила может быть описана как "PatternElement".

Этот элемент и является шаблоном для извлечения информации из текста.

Это может быть как обычный идентификатор, так и "BasicPatternElement" или "ComplexPatternElement". Диаграмма Вирта для "BasicPatternElement" (объединенная с "Constraint") описана на рисунке 2.1:

Рисунок 2.1 Диаграмма Вирта для описания конструкции "BasicPatternElement", объединенная с "Constraint"

"AttrVal" в этой диаграмме - значение атрибута, которое может быть конечного числа типов: "<string> | <ident> | <integer> | <floatingPoint> | <bool>". Таким образом, идентификатор и значение атрибута можно преобразовать в атрибут и его значение для объекта, идетификатор которого пишется перед точкой. Например, Token. kind == "number" будет преобразован в объект с идентификатором Token, у которого будет атрибут (свойство)"kind" со значением "number". При чем, тип значения будет "ident", т.к. в случае этого примера, шаблон извлекает из текста числа. На рисунке 2.2 с помощью UML нотации описан класс Token с его атрибутами, его визуальное представление и описание на языке XML (с опущением некоторых атрибутов, таких как координаты фигуры и его размеры).

Рисунок 2.2 Объект "Token", его визуальное представление и писание в формате XML

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

Одна визуальная диаграмма будет представлять собой одну фазу ("Phase"). С одним правилом ("Rule"). Такое решение было принято в связи с тем, что данный вид шаблонов наиболее читаем для начинающих пользователей, а значит, понятен, и, позволит максимально упростить процесс их создания. Таким образом, фаза ("Phase"), описанная в виде диаграммы Вирта на рисунке 2.3 Будет преобразована в объект, который и будет представлять собой поле для создания диаграммы. Так как было решено использовать SVG для генерации графики, "полотном" для создания всех объектов будет тэг "<svg>", он и будет представлять собой описание фазы и правила в ней. Таким образом, описание фазы с рисунка 2.4 на языке XML будет выглядеть следующим образом (атрибуты тэга, необходимые для визуализации опущены): "<svg … phase = "firstpass" rule = "TwoPatterns" priority = "20” />". Атрибуты описывающие "Input" и "Options" будут опущены, т.к. было решено оставить их по умолчанию, т.к. для начинающих пользователей эти атрибуты вызывают непонимание. В последующих итерациях разработки они могут быть лего добавлены.

Рисунок 2.3 Описание фазы языка JAPE в виде диаграммы Вирта

Рисунок 2.4 Шаблон, описанный на языке JAPE, аннотирующий названия и имена людей

Правая часть шаблона описывает действие именования выделенных ранее меток "person" и "title" в "Person" и "Title" соответственно посредством правила "TwoPatterns". Данное действие описано в грамматике языка в форме БНФ как "AssignmentExpression", однако, помимо него в правой части может стоять либо блок кода на языке Java (именованный или нет) либо идентификатор. На диаграмме визуального языка, основанного на JAPE, для описания этой части правила будет использован "вход" и "выход" для описываемой диаграммы. Объект "вход" будет иметь атрибут "label", куда будет записываться название метки ("title" или "person" из примера на рисунке 2.4). Объект "выхода" будет иметь атрибут "ident" для описания наименования определенных ранее меток. Если пользователю будет необходимо добавить блок с кодом на Java, он сможет это сделать добавив объект на диаграмму.

Таким образом, на рисунке 2.5 представлен пример с рисунка 2.4, описанный на визуальном языке.

Оба прямоугольника - объекты типа "Lookup", ведущие поиск по документу в поисках уже аннотированного текста, где свойство "majorType" эквивалентно значению в прямоугольнике. Кроме того, сам объект svg имеет атрибуты, описанные выше. Их пользователь вводит при создании диаграммы.

Рисунок 2.5 Шаблон на визуальном языке, аннотирующий названия и имена людей

Некоторые правила могут содержать отрицание, как описано в БНФ, представленной в приложении А. Поэтому, было решено ввести понятие "негативного выхода", т.е. чтобы пользователь мог определить нежелательный шаблон. Таким образом, на рисунках 2.6 и 2.7 можно увидеть как шаблон для аннотирования названий, не начинающихся на S (или s) будет выглядеть на языке JAPE и визуальном языке соответственно. Сначала будут найдены все совпадения "Lookup. majortype == "Title”", а после этого, выявлены те, что начинаются на S будут исключены.

Рисунок 2.6 Шаблон на языке JAPE, аннотирующий названия, не начинающиеся на S или s

Конструкция "MacroDef" будет преобразована в объект-ссылку на другую диаграмму. Таким образом, были трансформированы все конструкции языка JAPE, которые могут быть использованы начинающими пользователями.

Рисунок 2.7 Шаблона на визуальном языке, аннотирующий названия, не начинающиеся на S или s

2.3 Выявление требований для веб-редактора

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

Рисунок 2.8 IDEF0 для модуля веб-редактора для описания лексико-семантических шаблонов на визуальном языке

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

2.4 Архитектура веб-приложения

На рисунке 2.9 изображена архитектура будущего веб-приложения.

Рисунок 2.9 Архитектура веб-редактора для описания лексико-семантических шаблонов

Все операции по рисованию диаграммы будут выполняться на клиентской части приложения посредством обработчиков событий на JavaScript. Это позволит ускорить работу по созданию диаграмм. Сервер будет выполнять операции по сохранению/загрузке диаграмм в/из облачного хранилища соответственно. Для добавлен этих функций будет реализован Web Service client, который позволит осуществить связь с WCF сервисом. Для того, чтобы созданные диаграммы можно было использовать при анализе текстов, их необходимо преобразовать в язык JAPE. Эту функцию будет выполнять интерпретатор, который будет осуществлять трансформацию визуального языка в JAPE, и обратно. Таким образом, все диаграммы будут храниться в облачном хранилище в виде. jape файлов, чтобы их можно было без проблем использовать в других модулях системы SFTA.

2.4 Проектирование веб-редактора

Для реализации веб-редактора визуального языка описания лексико-семантических шаблонов была выбрана платформа Java (web-application), для генерации графики инструмент SVG и библиотека Raphael. js, которая позволит оперировать визуальными объектами. На рисунке 2.10 представлена диаграмма прецедентов, описывающая сценарии, по которым пользователь будет обращаться к разрабатываемому продукту:

Рисунок 2.10. Диаграмма прецедентов для веб-редактора описания лексико-семантических шаблонов на визуальном языке

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

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

Для реализации генерации диаграммы, так же необходимо построить диаграмму классов. Для того, чтобы редактор был расширяем, и в него можно было добавить большее количество объектов, необходимо создать универсальный объект, от которого будут унаследованы все остальные. Конструкции языка "Lookup" и "Token" имеют общие свойства: objectType, propertyName, propertyValue, operation. Эти свойства необходимы для описания шаблонов. Однако, таким образом, можно строить любые объекты, присваивая им различный внешний вид. Таким образом, будет создан абстрактный объект - "AbstracrShapeObject".

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

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

Слева представлена панель, на которой находятся объекты для создания диаграммы лексико-семантического шаблона. Два элемента, которые используются как "Input" в шаблонах на JAPE по умолчанию: "Token" и "Lookup". Так же добавление начала правила (вход), его конца (выход) и негативного выхода, необходимость которого была описана выше. Далее представлена кнопка создания объекта с кодом на языке Java, объекты "string" и "ident", необходимые для описания некоторых вариаций шаблонов. Справа представлен лист, на котором будет генерироваться изображение диаграммы.

Рисунок 2.12. Общая концепция дизайна веб-редактора

2.5 Проектирование интерпретатора

Для того, чтобы интерпретировать XML представление в язык JAPE, был использован язык преобразования XSLT [18]. Данный язык и будет служить транслятором, с его помощью исходный код диаграммы возможно модифицировать по усмотрению разработчика. Как было показано на рисунке 2.9, синтаксический анализ исходной страницы XML будет проводиться на стороне сервера.

Для того, чтобы преобразование было возможным на стороне сервера, необходимо использовать XSLT API, TransformerFactory. Метод newTransformer (stylesource) позволяет создать трансформер, на основе переданного набора шаблонов на языке XSLT. Далее, для запуска трансформации, необходимо запустить метод transform (source, result), в который передается файл для трансформации и переменная, в которую необходимо поместить результат преобразования [19].

Так, на сервер будет отправлен файл в формате. txt, далее он будет преобразован в формат. jape и сохранен в облачное хранилище. Для преобразования XML представления необходимо опустить все атрибуты стиля, такие как: цвет границы, тип и размер шрифта; опустить позиционирующие объект атрибуты (координаты и трансформации над фигурой). В связи с тем, что все необходимые атрибуты для описания лексико-семантического шаблона на языке JAPE находятся именно в фигурах (обозначаемых тегами <rect> и <ellipse>), было решено пропускать теги <text> в виду их не информативности, т.к. они предназначены лишь для работы с пользователем. Все фигуры, связанные линиями (элементы с тэгом <path>) последовательно, будут преобразованы в правила, объединенные логическим "И". Если будут найдены линии, у которых второй объект (obj2) будет совпадать, это означает, что два этих правила будут объединены логическим "ИЛИ". Одна диаграмма (начинающаяся с элемента "Start" и заканчивающаяся "Finish"), будет объединена в фигурные скобки и выделена как отдельное правило JAPE.

С помощью XSLT были разработаны средства для извлечения нужных атрибутов для формирования правил на языке jape. Например, ниже представлен отрывок из. xml документа, в котором описан " Lookup" со всеми необходимыми для отображения этого объекта на диаграмме атрибутами:

<div id="svgout" priority="5" phase="ExtractTitle" rule="ExtractWithoutSs" onclick="getEventElement ()"> <svg height="760" version="1.1" width="1000">

<rect x="204" y="76" width="37.25" height="40" rx="10" ry="10" fill="#0000ff" stroke="#0000ff" style="-webkit-tap-highlight-color: rgba (0, 0, 0, 0); fill-opacity: 0; cursor: move; " stroke-width="2" fill-opacity="0" indexInArray="8" ident="id_1464204248325" objectType="Lookup" propertyName="majorType" propertyValue="Title" operation="==" propertyType="String"></rect>

</svg> </div>

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

<xsl: stylesheet …>

<xsl: template match="div">

Phase: <xsl: value-of select="@phase"/>

Rule: <xsl: value-of select="@rule"/>

Priority: <xsl: value-of select="@priority"/>

<xsl: apply-templates/>

</xsl: template>

<xsl: template match="svg">

(<xsl: apply-templates select="rect"/>)

</xsl: template>

<xsl: template match="rect">

<xsl: if test="@objectType= 'Lookup'">{

<xsl: value-of select="@objectType"/>.

<xsl: value-of select="@propertyName"/>

<xsl: value-of select="@operation"/>

<xsl: value-of select="@propertyValue"/>}

</xsl: if>

</xsl: template>

</xsl: stylesheet>

Первый шаблон обращен к корневому элементу (<div>), из которого можно извлечь необходимые для описания лексико-семантического шаблона на языке JAPE атрибуты: название фазы, название правила и приоритет правила. После этого к элементу применяется ("xsl: apply-templates") следующий шаблон - template match="svg". При помощи него мы опускаемся на ступень ниже по иерархии тегов в <svg> элемент.

Под тэгом <svg> и будут находиться все объекты диаграммы, например <rect>. Однако, в связи с тем, что все типы объектов ("Lookup", "Token") представлены одинаковым тегом, необходимо различать их по атрибуту "objectType". Для этого добавлен оператор сравнения "if", который проверяет атрибут на эквивалентность со строкой "Lookup". В результате трансформации представленного отрывка. xml файла при помощи шаблонов из. xsl, будет получен следующий результат:

Phase: ExtractTitle Rule: ExtractWithoutSs Priority: 5

({ Lookup. majorType==Title})

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

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

Глава 3. Разработка веб-редактора для описания лексико-семантических шаблонов на визуальном языке

3.1 Реализация клиентской части приложения

На языке JavaScript, в соответствии с диаграммой классов, представленной в приложении Б, были разработаны объекты клиентской части приложения. В ходе разработки, возникла необходимость в создании класса "WebForm", который содержит обработчики событий для кнопок и объектов веб-редактора. Так же необходим метод "init", который, при запуске веб-формы связывает компоненты с их обработчиками событий. Так, всем кнопкам были назначены функции обработки события "onClick", а так же инициализирован обработчик события выделения графического объекта на диаграмме.

3.2 Реализация графического представления объектов

Библиотека для генерации векторных изображений Raphael. js предоставляет возможности по рисованию таких объектов как прямоугольник, эллипс, текст или линию. Однако, для создания объектов в соответствии с рисунком 2.7 необходимо соединить два объекта - прямоугольник и текст. Для этого используется "set", он объединяет объекты в массив, при этом, в XML представлении, они объединяются в тэг <g> или <group>. Даже после такого объединения фигуры будут вести себя как два отдельных объекта, поэтому было необходимо разработать алгоритм по их совместному передвижению при перетаскивании по холсту при нажатой кнопке мыши.


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

  • Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.

    курсовая работа [276,1 K], добавлен 19.07.2014

  • Ознакомление с ситуацией распространения на рынке языков программирования. Определение плюсов и минусов Pascal, C++, VBA. Сравнение и анализ синтаксиса программ на основе одной задачи. Выявление лучшего языка для освоения первоначальных навыков.

    курсовая работа [1022,0 K], добавлен 13.10.2014

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

    реферат [13,0 K], добавлен 26.11.2004

  • История происхождения языков Веб-программирования. Исторические факты появления самого первого из них. Сущность современного, актуального в настоящее время, языка HTML, история появления языка PHP, применение языка JavaScript и его использование.

    реферат [23,1 K], добавлен 23.02.2013

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

    дипломная работа [2,4 M], добавлен 02.06.2013

  • Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.

    курсовая работа [738,1 K], добавлен 17.05.2010

  • Понятия языка программирования, разновидности и характеристика языков. Исторический обзор их создания и применения. Классификация, примеры использования. Характеристики языков программирования с точки зрения элементов объектной модели, их популярность.

    реферат [463,6 K], добавлен 07.09.2009

  • Обзор существующих технологий разработки программного обеспечения. Описание платформы NET Framework. Принцип работы платформы: компиляция исходного кода; процесс загрузки и исполнения кода; IL-код и верификация. Новые возможности платформы NET Framework.

    реферат [30,7 K], добавлен 01.03.2011

  • История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.

    курсовая работа [795,9 K], добавлен 14.12.2012

  • Исследование возможностей и областей использования языка программирования JavaScript. Сравнительный анализ языков программирования JavaScript и PHP. Разработка интерактивного Web-приложения на примере теста по теме "Программирование на языке Delphi".

    практическая работа [26,0 K], добавлен 04.02.2015

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