Разработка системы сбора статистики использования маркеров стиля в научных публикациях на английском языке
Анализ бизнес-процесса сбора статистики и создания отчета. Сравнительный анализ средств обработки языка. Обзор существующих плагинов для программы Gate Developer. Проектирование и разработка программного модуля для сбора статистики и генерации отчетов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 03.07.2017 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Как было сказано выше, язык программирования, используемый в данной разработке это Java, следовательно, рассмотрим наиболее популярные IDE для разработки программ на выбранном языке. По итогам анализа информации в сети Интернет, можно выделить три среды разработки: Eclipse IDE for Java Developers, NetBeans IDE и IntelliJ IDEA. Достоинства и недостатки каждой из них сформулированы на основе, как личного опыта использования, так и отзывов других пользователей. Рассмотрим каждую из них более детально.
2.3.2.1 Среда разработки Eclipse IDE for Java Developers
Eclipse IDE for Java Developers - это программная платформа с открытым кодом, разработанная компанией Eclipse Foundation и предоставляемая в открытом доступе [22]. Программная среда является полностью бесплатной, при полном функционале, что сильно повышает ее популярность. Основными достоинствами данного инструмента являются:
- Кроссплатформенность, возможность работать с Windows, Linux, Solaris и Mac OS X.
- Возможность разработки расширений для программного обеспечения.
- Оснащенность полнотекстовой интерактивной документацией, с помощью которой легко ориентироваться в информации.
- Возможность интеграции с GIT.
- Огромное количество подгружаемых плагинов, которые значительно расширяют функционал программы.
Несмотря на достоинства среды разработки, ее недостатки могут периодически осложнять работу над разработкой программы. Можно выделить несколько слабых сторон данного программного обеспечения:
- Медленная скорость работы среды, из-за старых версий Java Virtual Machine, на которой основывается работа IDE [22].
- Вероятность возникновения конфликта между плагинами в ходе загрузки.
- Необходимость настройки среды перед применением.
2.3.2.2 Среда разработки NetBeans IDE
IDE NetBeans- это интегрированная среда разработки, поддерживаемая компанией Oracle. Данный инструмент поддерживает разработку на многих языках, таких как Java, Python, PHP, JavaScript, C, C++ и т.д. IDE позволяет разрабатывать настольные, мобильные и веб-приложения. Программное средство предоставляется с открытым исходным кодом бесплатно на официальном сайте [23].
Рассматриваемая среда обладает следующими достоинствами:
- Скорость работы, быстрее, чем Eclipse IDE, но медленнее, чем Intellij IDEA.
- Удобное и простое средство для построения пользовательского интерфейса GUI Builder.
- Поддержка различных стандартов Java (Enterprise Edition, Standard Edition, Mobility).
- Редактор кода заканчивает код при написании и предлагает список элементов.
Из недостатков можно отметить недостаточную документацию данного продукта, чтобы найти информацию о том или ином компоненте, необходимо потратить достаточно много времени и сил. Также пользователи жалуются на то что авто-завершение текста не всегда предлагает то что подразумевалось программистом [24].
2.3.2.3 Среда разработки Intellij IDEA
IntelliJ IDEA - это программное обеспечение, разработанное компанией JetBrains, которое позволяет программистам создавать программные продукты. Среда разработки поддерживает большое количество языков - Java, JavaScript, CoffeeScript, HTML/XHTML/HAML, CSS/SASS/LESS, XML/XSL/XPath, YAML, ActionScript/MXML, Python, Ruby, SQL, PHP, Kotlin, Clojure, C, C++. IntelliJ IDEA имеет две формы поставки: бесплатная Community Edition и платная Ultimate Edition. Первая версия предназначена для JVM и Android разработки, вторая - для производственной и веб-разработки. Среда разработки IntelliJ IDEA обладает следующими достоинствами:
- Функция «умное автодополнение», данное выражение означает, что система предоставляет список подходящих символов, основываясь не только на общей частоте употреблений, но и на «стиле» программирования разработчика, на его личной частоте использования тех или иных символов.
- Подсветка синтаксиса при вводе строк на других языках программирования, таких как SQL, HTML, CSS и JavaScript.
- Рефакторинг одинаковых фрагментов кода.
- Интеграция с системами контроля версий, такими как Git.
Несмотря на выше описанные преимущества, система имеет и недостатки, некоторые из которых вытекают из преимуществ. Перечислим некоторые из них:
- Неоправданно высокая стоимость в рамках академической разработки - приблизительно $500 в год [25].
- Долгое время выполнения компиляции.
- При подключении дополнительных модулей, многие из них могут «конфликтовать».
- Частые поломки при обновлении плагинов среды разработки.
2.3.2.4 Итоги обзора
По итогам рассмотрения вышеописанных сред разработки можно сделать вывод, что наиболее подходящей является Eclipse. Если составить рейтинг трех описанных IDE, не учитывая специфику разрабатываемого продукта, то он будет выглядеть так:
- Средство разработки IntelliJ IDEA.
- Программное средство NetBeans.
- Среда разработки Eclipse IDE for Java Developers.
Данное расположение элементов списка объясняется тем, что по скорости работы и по качеству обработки кода, Eclipse уступает NetBeans и IntelliJ IDEA. Но в рамках данной работы, данная система является наиболее подходящей по ряду причин:
1. Генератор отчетов BIRT, выбранный ранее, является продуктом Eclipse, что означает, что процессы интеграции и взаимодействия между этими двумя компонентами будут выполняться эффективнее, чем в остальных средах разработки. Также стоит отметить, что существует документация, описывающая работу системы BIRT в рамках Eclipse IDE, что значительно облегчит работу.
2. Несмотря на то, что выбранная система не может предоставить пользователю повышенную производительность, она подходит для разработки программного модуля, так как программа не предполагает подключения большого количества плагинов и объёмного кода, поэтому данный недостаток не является критичным.
3. Средство предоставляется бесплатно с полным функционалом в отличие от других рассмотренных сред разработки, что является важным фактором при академической разработке.
4. Средства для разработки графического интерфейса Eclipse IDE, на порядок ниже, чем у NetBeans и IntelliJ IDEA, но так как визуализация в программном модуле осуществляется с помощью генератора отчетов BIRT, данный недостаток не является существенным.
5. Необходимость настройки среды разработки перед первым применением также не является критичным фактором, так как данный процесс тщательно описан в документации программы.
Выводы по второй главе
В ходе второй главы были сформированы функциональные требования к разрабатываемому продукту, посредством обработки списка пожеланий заказчика. При рассмотрении процесса сбора статистики и генерации отчетов было выявлено, что программный модуль должен предоставлять пользователю возможности отображения по заданным параметрам.
Разработка программного продукта без предварительного моделирования структуры является крайне неэффективной. Поэтому в данной главе была построена архитектура программного модуля, в соответствии с которой будет выполняться разработка. Элементами структуры программы являются компоненты, выбранные и описанные в первой главе.
После того как были определены функции, которые должен выполнять программный модуль и построена его архитектура, был произведен сравнительный анализ инструментов разработки, таких как язык программирования и интегрированная среда разработки. В частности, язык разработки - Java - был выбран на основании средства обработки естественного языка, описанного в первой главе, системы Gate Developer, которая также реализована на этом языке. Были рассмотрены популярные среды разработки на выбранном языке программирования и выбрана Eclipse IDE for Java Developers, которая повысит удобство разработки за счет того, что генератор отчетов является программным компонентом для интеграции в данную среду. Таким образом, на данном этапе выделены функциональные требования к программному модулю, а также выбраны инструмент необходимые для разработки.
Глава 3. Разработка программного модуля
В данной главе описывается процесс разработки программного модуля, предназначенного для сбора статистики и генерации отчета о полученных данных. Программный модуль представляет собой плагин для программы Gate Developer, который применяется к уже размеченному тексту.
3.1 Описание параметров входа и выхода
Перед тем как приступить к непосредственной разработке программного модуля, необходимо описать какие параметры должны быть использованы. Так как плагин должен генерировать отчет на основе шаблона и экспортировать готовый отчет, в качестве входных параметров необходимо получать путь до файла с шаблоном отчета и путь до директории, в которой необходимо сохранить отчет. Схема передачи параметров изображена на рисунке 3.1.
Рисунок 3.1. Входные и выходные параметры программного модуля
Опишем каждый из вышеуказанных параметров подробнее (табл. 3.1).
Таблица 3.1. Характеристика параметров входа и выхода
Параметр |
Название параметра |
Обязательность |
Тип данных |
Описание |
|
URL путь до файла с шаблоном отчета |
templateFileURL |
- |
URL |
Содержит в себе путь до файла с шаблоном отчета |
|
URL путь до директории результирующего файла |
outputfileURL |
+ |
URL |
Содержит в себе путь до директории в которой необходимо сохранить отчет |
|
Список маркеров для сбора статистики |
Вводятся при создании обрабатывающего ресурса |
+ |
Список полей типа Boolean |
Список маркеров для которых необходимо собрать статистику |
|
Список корпусов для сбора статистики |
corpList |
- |
List<String> |
Список корпусов для которых необходимо собрать статистику |
|
Формат экспортируемого файла |
outputFormat |
- |
String |
Формат файла экспорта, если он не указан, то по умолчанию выгружается файл в формате HTML |
|
Указатель необходимости создания нового отчета |
isNeededNewTemplate |
+ |
Boolean |
Параметр указывает на необходимость создания нового отчета. Если значение параметра - true, то плагин открывает BIRT RCP Report Designer. |
Для того чтобы параметры отобразились в редакторе их необходимо добавить, используя средства Gate Embedded. Рассмотрим на примере добавления параметра «URL путь до файла с шаблоном отчета», для этого необходимо добавить следующие строки в программный код:
//Путь до шаблона-отчета
public URL getTemplateFileURL()
{
return templateFileURL;
}
@gate.creole.metadata.RunTime //указывается тип параметра
@gate.creole.metadata.Optional //указывается необязательность параметра
@CreoleParameter(
comment = "Filename of template report",
suffixes = ".rpttemplate",//так как тип параметра - путь к файлу - указывается тип файла
priority = 1)
public void setTemplateFileURL(URL source)
{
this.templateFileURL = source;
}
protected URL templateFileURL;
Листинг 3.1. Добавление параметра templateFileURL
Полный листинг добавления параметров можно увидеть в приложении Б. В результате выполнения плагина, в окне редактора параметров обрабатывающего ресурса отображаются добавленные параметры (рис. 3.2) и список необходимых маркеров (рис. 3.3).
Рисунок 3.2. Входные параметры обрабатывающего ресурса
Рисунок 3.3. Список маркеров для сбора статистики
3.2 Описание процесса создания плагина
Согласно документации разработчиков Gate [2], разработку нового плагина необходимо начинать с вызова Bootstrap Wizard. Это инструмент, который создает директорию будущего плагина согласно введенным параметрам (рис. 3.4).
Рисунок 3.4. Инструмент Bootstrap Wizard
После нажатия кнопки “Finish”, в указанном месте файловой системы создается папка, содержимое которой представлено на рисунке 3.5.
Рисунок 3.5. Корневая папка плагина
Для того чтобы плагин заработал, необходимо добавить данную папку в папку “plugins” в директории Gate Developer, а также загрузить *.jar файл с кодом плагина. Далее необходимо добавить плагин в систему через Creole Manager (рис. 3.6).
Рисунок 3.6. Окно CREOLE Manager
После этого плагин появляется в системе. Но так как никаких классов еще реализовано не было, плагин только отображается и не выполняет никаких практических функций.
3.3 Особенности реализации плагина в среде Gate Developer
Ранее было сказано, что в системе Gate Developer уже существует плагин для сбора статистических данных. На данный момент StatsCollector, программный компонент по сбору статистики, экспортирует результат работы в виде файла в формате *.txt. Данный формат не удобен для дальнейшей обработки, к тому же результирующий файл не обладает необходимой для этого структурой. Таким образом, в плагине необходимо реализовать алгоритм, который бы выгружал аннотированные тексты в структурированную форму (XML) и передавал их в генератор отчетов, в качестве источника данных. В зависимости от значения параметра corpList, плагин формирует .xml документ с данными корпуса или же документ с данными из нескольких корпусов, с помощью функции getcorp(). В качестве входного параметра getcorp() принимает название корпуса, и формирует строку с данными. Для работы с XML и его обработкой, была использована библиотека DOM4J. В случае, если плагин применяется к нескольким корпусам, метод применяется к каждому из них и формирует общую строку для набора корпусов.
Размеченные корпуса в формате XML после обработки обладают структурой, изображенной на рисунке 3.7.
Рисунок 3.7. Структура аннотированного текста
Следующим этапом работы программного модуля является выгрузка XML документа в генератор отчетов в качестве DataSource. Для этого используется класс ReportGenerator, который определяет формат экспорта, генерирует отчет и выгружает его в указанную пользователем директорию. Все эти операции осуществляются посредством библиотеки BIRT API, которая позволяет внести в шаблон отчета информацию об источнике данных, с помощью класса OdaDataSourceHandle.
Чтобы редактировать программный код плагинов Gate, необходимо открыть соответствующую папку в папке “plugins” директории Gate Developer и запустить *.jar файл через какой-либо редактор, в нашем случае IDE Eclipse. Листинг программы представлен в Приложении Б.
3.3 Разработка шаблонов для генерации отчетов
Для того чтобы сгенерировать отчет, пользователю необходимо передать в плагин URL адрес расположения шаблона отчета. В текущем контексте шаблон рассматривается как спроектированная структура отчета. Для создания и редактирования шаблонов отчетов существует независимый от среды разработки Eclipse интерфейс, к которому можно получить доступ посредством введения значения true во входной параметр isNeededDrawTemplate. После введения данного параметра необходимо нажать кнопку “Run Application”, после чего пользователь видит окно, изображенное на рисунке 3.8.
Рисунок 3.8. Интерфейс BIRT Report Designer
С помощью данного интерфейса пользователь может добавлять элементы из палитры и таким образом заполнять отчет. Так как на основе этого шаблона в дальнейшем будет генерироваться плагин необходимо, чтобы в нем была указана структура данных. Рассмотрим добавление данных на примере вышеуказанного xml-документа.
Сначала необходимо создать шаблон (.rpttemplate) или дизайн(.rptdesign),в данном случае это будет шаблон. После этого перейти на вкладку Data Explorer и с
помощью контекстного меню вызвать окно создания источника данных (рис. 3.9).
Рисунок 3.9. Создание источника данных
Далее необходимо последовательно выбрать «XML Data Source», а затем указать путь до самого источника данных (рис. 3.10). Схему данных программа определяет автоматически.
Рисунок 3.10. Указание источника данных
Далее необходимо создать DataSet, так же как для предыдущего действия, для этого необходимо воспользоваться контекстным меню. После того как заданы название и другие настройки набора данных, необходимо создать структуру колонок, выбрав их из структуры xml-файла (рис. 3.11).
Рисунок 3.11. Выбор колонок из структуры документа
После добавления данных пользователь может выполнять действия с ними, а также использовать различные элементы для создания шаблона. В конце работы необходимо сохранить шаблон в формате *.rpttemplate (или *.rptdesign). Указанные процедуры являются необходимыми, так как структура данных, включенная в шаблон, позволяет загрузить результаты вычисления статистики в отчет и отобразить их, так как было задано пользователем.
На рисунке 3.12 представлен пример шаблона. На нем мы можем увидеть функцию Aggregation, которая позволяет выполнять стандартные математические функции, а также функции математической статистики, что является применимым к данной работе.
Рисунок 3.12. Шаблон отчета в программе BIRT RCP Designer
3.4 Результаты реализации программного модуля
В рамках данной работы был реализован плагин, который позволяет сгенерировать отчет о собранной статистике. Для того чтобы убедиться в полноте реализации, необходимо протестировать работу программы. В качестве примеров были выбраны два текста. Задачей является загрузить их в плагин и сгенерировать отчет по шаблону. Для анализа выбран один маркер - «Noun» - так как, данные можно будет проверить посредством подсчётов «вручную». Для визуализации была выбрана столбчатая диаграмма (рис. 3.13), на которой можно увидеть разницу между частотностью использования маркера в пределах каждого из текстов.
Рисунок 3.13. Диаграмма частотности маркера "Noun"
Выведенные данные полностью совпадают с теми, что были подсчитаны вручную. Таким образом, можно сделать вывод, что программный модуль работает корректно. Так как использование плагина в рамках системы Gate Developer является достаточно трудоемким процессом, было разработано руководство пользователя, которое представлено в Приложении В.
Заключение
Подводя итоги проделанной работы можно сказать, что исследования в сфере компьютерной лингвистики являются важными не только в академических рамках, но также могут применяться и в практических разработках. В ходе данной работы была описана теоретическая составляющая исследования, а также процессы моделирования и проектирования разработки.
С помощью анализа существующих средств обработки языка была выбрана среда для интегрирования плагина - Gate Developer. Анализируя генераторы отчетов, представленные на рынке, было выявлено наиболее подходящее для данной разработки средство - система BIRT. Для того чтобы при разработке лучше ориентироваться в среде Gate Developer, был произведен обзор плагинов, интегрированных в систему, которые будут использованы в ходе написания программного модуля.
В ходе моделирования программного продукта были сформулированы функциональные требования, на основе требований заказчика. А также построена архитектура разрабатываемого плагина, которая содержит все описанные компоненты. Выбор языка программирования Java для реализации был основан на решении использовать систему Gate Developer в качестве среды для интеграции модуля. Так как был определен язык реализации, выбор интегрированной среды разработки свелся к трем, наиболее популярных Java IDE. ПО результатам анализа была выбрана среда Eclipse IDE.
В рамках данной работы был разработан программный модуль, который позволяет генерировать отчет о статистике на основе шаблона, а также предоставляет доступ к интерфейсу для создания нового. В дальнейшем данная разработка будет усовершенствована, планируется расширить функционал дополнительными модулями, а также протестировать имеющийся на более нестандартных ситуациях использования.
Библиографический список
1. Трофимов С. Варианты использования (Use Case) [Электронный ресурс]. URL: http://www.caseclub.ru/articles/use_case.html (дата обращения: 24.05.2017).
2. Cunningham H. [и др.]. Developing language processing components with GATE (a user guide) // University of Sheffield. 2001. № Gate 2 (2006). C. 1-457.
3. Laurence Anthony's Homepage [Электронный ресурс]. URL: http://www.laurenceanthony.net/ (дата обращения: 24.05.2017).
4. GATE.ac.uk - index.html [Электронный ресурс]. URL: https://gate.ac.uk/ (дата обращения: 24.05.2017).
5. The Stanford Natural Language Processing Group [Электронный ресурс]. URL: https://nlp.stanford.edu/software/tagger.shtml (дата обращения: 24.05.2017).
6. Лингвистический Энциклопедический Словарь. Кореферентность [Электронный ресурс]. URL: http://tapemark.narod.ru/les/243a.html (дата обращения: 24.05.2017).
7. Чанкер для русского языка [Электронный ресурс]. URL: http://web-corpora.net/wsgi/chunker.wsgi/npchunker/ (дата обращения: 24.05.2017).
8. Strinyuk S. A., Shuchalova Y., Lanin V. Academic Papers Evaluation Software, in: Application of Information and Communication Technologies (AICT), 2015 9th International Conference on,14-16 Oct. 2015. Rostov-on-Don : IEEE, 2015. doi P. 506-510.
9. генератор отчетов - это... Что такое генератор отчетов? [Электронный ресурс]. URL: http://dic.academic.ru/dic.nsf/eng_rus/56647/генератор (дата обращения: 24.05.2017).
10. Crystal Reports [Электронный ресурс]. URL: https://msdn.microsoft.com/ru-ru/library/bb126227(v=vs.90).aspx (дата обращения: 24.05.2017).
11. Генератор отчетов для Java. Экспорт отчетов в PDF, MS Office, Open Office и т.д.?:: Стимулсофт [Электронный ресурс]. URL: https://www.stimulsoft.com/ru/products/reports-java (дата обращения: 24.05.2017).
12. Бизнес аналитика. Генератор отчетов для JavaScript, .NET, ASP.NET, WPF, Flex, PHP, Silverlight, Java, ASP.NET MVC, WinRT, HTML5. Дизайнер отчетов. Создание отчетов. Сервер отчетов. Бизнес-аналитика.?:: Стимулсофт [Электронный ресурс]. URL: https://www.stimulsoft.com/ru (дата обращения: 24.05.2017).
13. JasperReports® Library | Jaspersoft Community [Электронный ресурс]. URL: http://community.jaspersoft.com/project/jasperreports-library (дата обращения: 24.05.2017).
14. Business reporting software - NextReports Designer, Engine and Server [Электронный ресурс]. URL: http://www.next-reports.com/ (дата обращения: 24.05.2017).
15. BIRT Home [Электронный ресурс]. URL: http://www.eclipse.org/birt/ (дата обращения: 24.05.2017).
16. About [Электронный ресурс]. URL: http://www.eclipse.org/birt/about/project-organization/ (дата обращения: 24.05.2017).
17. Hardie A. The IMS Open Corpus Workbench ( CWB ) CQPweb System Administrator ' s Manual 2014. C. 1-45.
18. Scott M. WordSmith Tools step by step 2010.
19. Talk T., Diachronic T., Corpus E. A Guide to using AntConc C. 1-9.
20. Сравнение утилит анализа корпусов -- NLPub [Электронный ресурс]. URL: https://nlpub.ru/Сравнение_утилит_анализа_корпусов (дата обращения: 24.05.2017).
21. Каталог лингвистических программ и ресурсов в Cети, ч.1 / Linguistics Software Catalogue, ch.1 [Электронный ресурс]. URL: http://rvb.ru/soft/catalogue/c01.html (дата обращения: 24.05.2017).
22. Sketch Engine | language corpus management and query system [Электронный ресурс]. URL: https://www.sketchengine.co.uk/ (дата обращения: 24.05.2017).
23. Обзор платформы Eclipse - как её использовать | Статьи о программном обеспечении [Электронный ресурс]. URL: https://hightech.in.ua/content/art-eclipse-platform (дата обращения: 24.05.2017).
24. Welcome to NetBeans [Электронный ресурс]. URL: https://netbeans.org/ (дата обращения: 24.05.2017).
25. Обзор NetBeans IDE | Обзор IDE [Электронный ресурс]. URL: https://aboutide.wordpress.com/2011/03/23/обзор-netbeans-ide/ (дата обращения: 24.05.2017).
26. IntelliJ IDEA [Электронный ресурс]. URL: http://jetbrains.ru/products/idea/ (дата обращения: 24.05.2017).
27. SAP Crystal Reports 2011 User вЂTM s Guide SAP Crystal Reports 2011 2012
67
Приложение А. UseCase диаграмма для описания функциональных требований
Рисунок А.1. Диаграмма описания функциональных требований
Приложение Б. Листинг программы
/*
* StatsCollector.java
*
* Copyright (c) 2000-2012, The University of Sheffield.
*
* This file is part of GATE (see http://gate.ac.uk/), and is free
* software, licenced under the GNU Library General Public License,
* Version 3, 29 June 2007.
*
* A copy of this licence is included in the distribution in the file
* licence.html, and is also available at http://gate.ac.uk/gate/licence.html.
*
* Maria, 20/3/2017
*
* For details on the configuration options, see the user guide:
* http://gate.ac.uk/cgi-bin/userguide/sec:creole-model:config
*/
package jsh.academic.tagger;
import gate.util.Out;
import java.net.URL;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.*;
import org.eclipse.birt.report.model.api.*;
import org.w3c.dom.*;
import gate.*;
import gate.creole.*;
import gate.creole.metadata.*;
import gate.util.*;
import java.awt.Desktop;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.eclipse.birt.core.exception.BirtException;
/**
* This class is the implementation of the resource STATSCOLLECTOR.
*/
@CreoleResource(name = "StatsCollector",
comment = "Collecting statistics in corpus and documents")
public class StatsCollector extends AbstractLanguageAnalyser
implements ProcessingResource {
boolean DEBUG_MODE = true;
//Указатель необходимости создания шаблона отчета
public Boolean getisNeededNewTemplate() {
return isNeededNewTemplate;
}
@gate.creole.metadata.RunTime
@CreoleParameter(
comment = "If it's needed to create new template",
priority = 1)
public void setisNeededNewTemplate(Boolean source) {
this.isNeededNewTemplate = source;
}
protected Boolean isNeededNewTemplate;
//Формат экспорта
public String getoutputFormat() {
return outputFormat;
}
@gate.creole.metadata.RunTime
@gate.creole.metadata.Optional
@CreoleParameter(
comment = "Output File Format",
priority = 1)
public void setoutputFormat(String source) {
this.outputFormat = source;
}
protected String outputFormat;
//Корпуса для сравнения
public List getCorpList() {
return corpList;
}
@gate.creole.metadata.RunTime
@gate.creole.metadata.Optional
@CreoleParameter(
comment = "List of corporas to execute",
priority = 1)
public void setCorpList(List source) {
this.corpList = source;
}
protected List corpList;
//Путь до шаблона-отчета
public URL getTemplateFileURL() {
return templateFileURL;
}
@gate.creole.metadata.RunTime
@gate.creole.metadata.Optional
@CreoleParameter(
comment = "Filename of template report",
suffixes = ".rpttemplate",
priority = 1)
public void setTemplateFileURL(URL source) {
this.templateFileURL = source;
}
protected URL templateFileURL;
//Путь до файла экспорта
public URL getOutputfileURL() {
return outputfileURL;
}
@gate.creole.metadata.RunTime
@CreoleParameter(
comment = "Filename where results will be written",
suffixes = ".txt",
priority = 1)
public void setOutputfileURL(URL source) {
this.outputfileURL = source;
}
protected URL outputfileURL;
public Boolean getAllNouns() {
return AllNouns;
}
@CreoleParameter(
comment = "Count abstract semantic verbs")
public void setAllNouns(Boolean bool) {
this.AllNouns = bool;
}
/* check to count this type of annotation */
protected Boolean AllNouns = true;
public Boolean getAbstractSemanticVerbs() {
return AbstractSemanticVerbs;
}
@CreoleParameter(
comment = "Count abstract semantic verbs")
public void setAbstractSemanticVerbs(Boolean bool) {
this.AbstractSemanticVerbs = bool;
}
/* check to count this type of annotation */
protected Boolean AbstractSemanticVerbs = true;
public Boolean getAbstractSuffixNouns() {
return AbstractSuffixNouns;
}
@CreoleParameter(
comment = "Count nouns with abstract suffixes")
public void setAbstractSuffixNouns(Boolean bool) {
this.AbstractSuffixNouns = bool;
}
/* check to count this type of annotation */
protected Boolean AbstractSuffixNouns = true;
public Boolean getArchaisms() {
return Archaisms;
}
@CreoleParameter(
comment = "Count nouns with abstract suffixes")
public void setArchaisms(Boolean bool) {
this.Archaisms = bool;
}
/* check to count this type of annotation */
protected Boolean Archaisms = true;
public Boolean getDesemantisizedVerbs() {
return DesemantisizedVerbs;
}
@CreoleParameter(
comment = "Count desemantisized verbs")
public void setDesemantisizedVerbs(Boolean bool) {
this.DesemantisizedVerbs = bool;
}
/* check to count this type of annotation */
protected Boolean DesemantisizedVerbs = true;
public Boolean getComplexConjunctions() {
return ComplexConjunctions;
}
@CreoleParameter(
comment = "Count complex conjunctions")
public void setComplexConjunctions(Boolean bool) {
this.ComplexConjunctions = bool;
}
/* check to count this type of annotation */
protected Boolean ComplexConjunctions = true;
public Boolean getComplexPrepositions() {
return ComplexPrepositions;
}
@CreoleParameter(
comment = "Count complex prepositions")
public void setComplexPrepositions(Boolean bool) {
this.ComplexPrepositions = bool;
}
/* check to count this type of annotation */
protected Boolean ComplexPrepositions = true;
public Boolean getIWePronouns() {
return IWePronouns;
}
@CreoleParameter(
comment = "Count I/We pronouns")
public void setIWePronouns(Boolean bool) {
this.IWePronouns = bool;
}
/* check to count this type of annotation */
protected Boolean IWePronouns = true;
public Boolean getIntensifyingAdverbs() {
return IntensifyingAdverbs;
}
@CreoleParameter(
comment = "Count intensifying adverbs")
public void setIntensifyingAdverbs(Boolean bool) {
this.IntensifyingAdverbs = bool;
}
/* check to count this type of annotation */
protected Boolean IntensifyingAdverbs = true;
public Boolean getOrSuffixNouns() {
return OrSuffixNouns;
}
@CreoleParameter(
comment = "Count nouns with -OR suffix")
public void setOrSuffixNouns(Boolean bool) {
this.OrSuffixNouns = bool;
}
/* check to count this type of annotation */
protected Boolean OrSuffixNouns = true;
public Boolean getPassiveVoice() {
return PassiveVoice;
}
@CreoleParameter(
comment = "Count verbs in passive voice")
public void setPassiveVoice(Boolean bool) {
this.PassiveVoice = bool;
}
/* check to count this type of annotation */
protected Boolean PassiveVoice = true;
public Boolean getPersonalPronouns() {
return PersonalPronouns;
}
@CreoleParameter(
comment = "Count personal pronouns")
public void setPersonalPronouns(Boolean bool) {
this.PersonalPronouns = bool;
}
/* check to count this type of annotation */
protected Boolean PersonalPronouns = true;
public Boolean getPostpositiveAtrributes() {
return PostpositiveAtrributes;
}
@CreoleParameter(
comment = "Count postpositive attributes")
public void setPostpositiveAtrributes(Boolean bool) {
this.PostpositiveAtrributes = bool;
}
/* check to count this type of annotation */
protected Boolean PostpositiveAtrributes = true;
public Boolean getPrepositiveAtrributes() {
return PrepositiveAtrributes;
}
@CreoleParameter(
comment = "Count prepositive attributes")
public void setPrepositiveAtrributes(Boolean bool) {
this.PrepositiveAtrributes = bool;
}
/* check to count this type of annotation */
protected Boolean PrepositiveAtrributes = true;
public Boolean getThatThoseOf() {
return ThatThoseOf;
}
@CreoleParameter(
comment = "Count that of / those of")
public void setThatThoseOf(Boolean bool) {
this.ThatThoseOf = bool;
}
/* check to count this type of annotation */
protected Boolean ThatThoseOf = true;
public Boolean getVerbTense() {
return VerbTense;
}
@CreoleParameter(
comment = "Count verb tenses")
public void setVerbTense(Boolean bool) {
this.VerbTense = bool;
}
/* check to count this type of annotation */
protected Boolean VerbTense = true;
public Boolean getYouHeShe() {
return YouHeShe;
}
@CreoleParameter(
comment = "Count you/he/she")
public void setYouHeShe(Boolean bool) {
this.YouHeShe = bool;
}
/* check to count this type of annotation */
protected Boolean YouHeShe = true;
public String getCorp(String corpName) {
String outstr = "<Corpus name=\"" + corpName + "\">";
String filenamecorp = "C:/Users/gorbunova.m/Desktop/" + corpName + ".xml";
SAXReader reader = new SAXReader();
try {
org.dom4j.Document document = reader.read(filenamecorp);
org.dom4j.Element root = document.getRootElement();
outstr += "<Document name = \"" + filenamecorp + "\">";
for (Iterator x = root.elementIterator("AnnotationSet"); x.hasNext();) {
org.dom4j.Element annotationSet = (org.dom4j.Element) x.next();
for (Iterator z = annotationSet.elementIterator("Annotation"); z.hasNext();) {
org.dom4j.Element annotation = (org.dom4j.Element) z.next();
annotation.addAttribute("fileName", filenamecorp);
annotation.addAttribute("corpusName", corpName);
outstr += annotation.asXML();
}
}
outstr += "</Document>";
} catch (DocumentException ex) {
Logger.getLogger(StatsCollector.class.getName()).log(Level.SEVERE, null, ex);
}
outstr += "</Corpus>";
return outstr;
}
public void execute() {
if(isNeededNewTemplate)
{
File filercp = new File("C:\\Users\\gorbunova.m\\Desktop\\birt\\BIRT.exe");
try {
Desktop.getDesktop().open(filercp);
} catch (IOException ex) {
Logger.getLogger(StatsCollector.class.getName()).log(Level.SEVERE, null, ex);
}
}else{
String outstr = "<?xml version='1.0' encoding='windows-1251'?>";
String filename1 = "corpora";
FileWriter fw1 = null;
if (corpList.size() != 0&&corpList.size()!=1) {
filename1 = "corpora";
outstr += "<Corporas>";
for (Iterator w = corpList.iterator(); w.hasNext();) {
String vv = (String) w.next();
outstr += getCorp(vv);
}
outstr += "</Corporas>";
} else {
Corpus corp = getCorpus();
//outstr+=getCorp(corp.getName());
FileWriter fw = null;
FeatureMap cf = corp.getFeatures();
int s = corp.size(); //size of corpus
gate.Document currDoc = getDocument();
int d = corp.indexOf(currDoc); //index of current document
if (d == 0) //if first - create the features
{
try {
outstr += "<Corpus name=\"" + corp.getName() + "\">";
for (int i = 0; i < corp.size(); i++) {
String filename = "C:/Users/gorbunova.m/Desktop/" + corp.get(i).getName() + ".xml";
File f = new File(filename);
if (f.exists()) {
f.delete();
}
f.createNewFile();
fw = new FileWriter(f, true);
PrintWriter pw = new PrintWriter(fw);
String str = corp.get(i).toXml();
pw.print(str);
pw.close();
fw.close();
SAXReader reader = new SAXReader();
try {
org.dom4j.Document document = reader.read(filename);
org.dom4j.Element root = document.getRootElement();
outstr += "<Document name = \"" + filename + "\">";
for (Iterator x = root.elementIterator("AnnotationSet"); x.hasNext();) {
org.dom4j.Element annotationSet = (org.dom4j.Element) x.next();
for (Iterator z = annotationSet.elementIterator("Annotation"); z.hasNext();) {
org.dom4j.Element annotation = (org.dom4j.Element) z.next();
annotation.addAttribute("fileName", filename);
annotation.addAttribute("corpusName", corp.getName());
outstr += annotation.asXML();
}
}
outstr += "</Document>";
} catch (DocumentException ex) {
Logger.getLogger(StatsCollector.class.getName()).log(Level.SEVERE, null, ex);
}
}
outstr += "</Corpus>";
filename1 = "C:/Users/gorbunova.m/Desktop/" + corp.getName() + ".xml";
} catch (IOException ex) {
Logger.getLogger(StatsCollector.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
File f1 = new File(filename1);
try {
if (f1.exists()) {
f1.delete();
}
f1.createNewFile();
fw1 = new FileWriter(f1, true);
PrintWriter pw1 = new PrintWriter(fw1);
pw1.print(outstr);
pw1.close();
fw1.close();
} catch (IOException ex) {
Logger.getLogger(StatsCollector.class.getName()).log(Level.SEVERE, null, ex);
}
try {
ReportGenerator report =new ReportGenerator(outputfileURL, templateFileURL, outputFormat);
} catch (BirtException ex) {
Logger.getLogger(StatsCollector.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
} // class StatsCollector
class ReportGenerator {
public ReportGenerator(URL outputfileURL, URL templatefileURL, String outputFormat) throws BirtException {
boolean DEBUG_MODE = true;
EngineConfig config = new EngineConfig();
config.setEngineHome("C:\\Users\\gorbunova.m\\Downloads\\birt-runtime-4.6.0-20160607\\ReportEngine");
Platform.startup(config);
ReportEngine engine = new ReportEngine(config);
if (DEBUG_MODE) {
Out.pr(outputfileURL + "/StatsXML.xml");
}
templatefileURL.getPath();
IReportRunnable reportRunnable = engine.openReportDesign(templatefileURL.getPath());
IRunAndRenderTask runAndRender = engine.createRunAndRenderTask(reportRunnable);
ReportDesignHandle report = (ReportDesignHandle) reportRunnable.getDesignHandle();
ElementFactory ef = report.getElementFactory();
OdaDataSourceHandle datasource = (OdaDataSourceHandle) ef.newOdaDataSource("DataSource", outputfileURL.getPath() + "StatsXML.xml");
RenderOption option = new RenderOption();
switch (outputFormat) {
case "HTML":
option.setOutputFormat("HTML");
break;
case "PDF":
option.setOutputFormat("PDF");
break;
case "TXT":
option.setOutputFormat("TXT");
break;
case "WORD":
option.setOutputFormat("WORD");
break;
default:
option.setOutputFormat("HTML");
}
option.setOutputFileName(outputfileURL.getPath()+"testReport."+option.getOutputFormat());
runAndRender.setRenderOption(option);
runAndRender.run();
runAndRender.close();
engine.destroy();
Platform.shutdown();
}
}
Приложение В. Руководство пользователя по установке и настройке программного модуля StatsCollector
Краткое руководство пользования плагином и шаблоном отчета.
Файлы необходимые для работы плагина прикреплены к выпускной работе.
1. Скопировать папки из StatsCollector в C:\Program Files (x86) \GATE_Developer_8.0\plugins (C:\Program Files (x86) может быть заменено на место установки GATE Developer).
2. Запустить GATE Developer и выбрать File> Manage CREOLE Plugins.
3. Загрузить плагин, нажимая на значок "+" и указывая путь к папке, содержащей ресурс.
4. В окне CREOLE Plugins Manager поставить галочку напротив StatsCollector.
5. Обрабатывающий ресурс для приложения создаётся через Processing Resources> New> StatsCollector. Необходимо указать входные данные, а именно маркеры, статистику для которых необходимо собрать.
6. Плагин должен быть применен к уже аннотированным корпусам, корпусу или документу.
7. Указать Runtime параметры.
8. Запустить плагин через нажатие кнопки “Run this Application”.
9. Если параметр isNeededNewTemplate установлен в значении true, то откроется BIRT RCP Report Designer, через который можно построить новый шаблон отчета (процесс был описан ранее).
10. В противном случае, плагин начнет работу, и экспортирует файл со сгенерированным отчетом в указанную директорию.
Для работы с реализованными плагинами использовалась Java Version 8 Update 20 (build 1.8.0_20-b26).
Подробнее о создании приложений и загрузке корпусов в GATE Developer можно узнать на сайте gate.ac.uk и в руководстве пользователя.
Размещено на Allbest.ru
...Подобные документы
Разработка структурной схемы системы. Выбор и обоснование не указанных в задании элементов. Анализ временных параметров системы. Разработка файла конфигурации для системы сбора-обработки данных на языке AHDL. Моделирование цифровой части системы.
курсовая работа [1,1 M], добавлен 26.10.2014Проектирование и функционирование системы сбора и обработки статистической информации с применением экономико-математических методов. Использование средств вычислительной и организационной техники и средств связи в органах государственной статистики.
контрольная работа [117,4 K], добавлен 11.04.2015Анализ платформы GATE и ее инструмента для аннотирования текста. Обзор существующих редакторов для визуальных языков и языка JAPE, их возможности, преимущества и недостатки. Проектирование визуальных конструкций на основе языка программирования JAPE.
дипломная работа [770,5 K], добавлен 08.02.2017Создание автоматизированной системы по сбору и анализу статистических данных сайта. Принципы сбора статистических данных. Исследование информационных потоков. Обзор современных СУБД и языков программирования. Логическая и физическая модель базы данных.
дипломная работа [3,0 M], добавлен 08.07.2012Разработка программного продукта для ведения статистики спортивного мероприятия с удобным интерфейсом для оператора. Выбор среды разработки, дополнительных библиотек. Создание базы данных, виды проектирования. Руководства для пользователя и программиста.
курсовая работа [6,5 M], добавлен 20.03.2012Порядок сбора данных с помощью программного обеспечения "ПРОЛОГ". Языки программирования VBA и HTML, их характерные особенности. Web-сервера Apache, принцип работы серверной системы. Реализация сбора данных и разработка сайта с показаниями приборов.
дипломная работа [4,4 M], добавлен 24.09.2014Описания порядка генерации программного кода на языке С++ для информационной подсистемы. Исследование добавления деталей к описаниям операций и определения атрибутов классов. Характеристика сбора, хранения, обработки информации о ходе лечебного процесса.
курсовая работа [626,9 K], добавлен 29.06.2011Проектирование программного комплекса на языке С++ с использованием принципов объектно-ориентированного программирования. Разработка разных меню, помогающих пользователю работать с программой. Описание процесса формирования статистики по памятникам.
курсовая работа [799,9 K], добавлен 01.12.2016Разработка программно-аппаратного модуля, предназначающегося для сбора и анализа собранных данных в беспроводной сенсорной сети. Изготовление макета устройства. Внесение собираемых данных в базу. Расположение протокола MQTT в модели OSI приложения.
дипломная работа [3,9 M], добавлен 18.11.2017Технология сбора информации традиционными методами. Правила сбора оффлайновой информации. Технические средства сбора информации. Операции для быстрого восстановления данных в системах хранения. Технологический процесс и процедуры обработки информации.
курсовая работа [304,5 K], добавлен 02.04.2013Обзор контроллеров и модулей ввода-вывода отечественных и зарубежных фирм. Разработка системы АСТРК-СХК нового поколения. Возможные области применения OPC-серверов в АСУ предприятия. Оценка эффективности разработки системы удаленного сбора информации.
дипломная работа [4,5 M], добавлен 07.09.2013Проектирование схемы сбора информации со ста двадцати восьми датчиков на основе микроконтроллера. Разработка листинга программы для контроллера, обрабатывающей поступающие данные с накоплением их во Flash-памяти с учетом точного времени и текущей даты.
курсовая работа [891,8 K], добавлен 24.12.2012Разработка устройства последовательного сбора и обработки информации с последующим выводом. Выбор элементной базы. Расчет характеристик элементов функциональной схемы. Определение разрядности АЦП и количества бит, передаваемых в информационном кадре.
курсовая работа [160,9 K], добавлен 05.05.2013Разработка структурной схемы и обобщенного алгоритма работы прибора. Оценка максимальной погрешности линейного датчика давления и нормирующего усилителя. Разработка элементов принципиальной электрической схемы микропроцессорной системы сбора данных.
курсовая работа [2,1 M], добавлен 08.02.2015Разработка базы данных для торговой компании АО "Рамстор". Подготовка и выпуск отчетности, формирование статистики по товарам и покупателям. Формирование и выгрузка статических документов в табличный процессор MS Excel. Описание средств проектирования.
дипломная работа [997,1 K], добавлен 07.04.2014Анализ использования автоматизированной системы управления материально-техническим снабжением и средств программирования. Разработка программы на языке Visual FoxPro, процесс ее работы и отладки. Мероприятия по технике безопасности при работе на ЭВМ.
дипломная работа [1,0 M], добавлен 29.06.2012Выбор технологии, языка и среды программирования. Анализ процесса обработки информации и оценка структур данных для ее хранения. Разработка основных алгоритмов решения и структурной схемы программного продукта. Проектирование интерфейса пользователя.
курсовая работа [449,8 K], добавлен 14.01.2011Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.
курсовая работа [782,4 K], добавлен 26.05.2014Выбор технологии, языка и среды программирования. Анализ процесса обработки информации и выбор структур данных для ее хранения, разработка основных алгоритмов. Проектирование интерфейса пользователя. Выбор стратегии тестирования и разработка тестов.
курсовая работа [332,3 K], добавлен 09.12.2014Описание программного продукта, решающего задачу по автоматизации сбора данных, связанных с деятельностью кружка по программированию. Изучение и совершенствование навыков программирования на различных языках среди студентов и школьников старших классов.
дипломная работа [418,3 K], добавлен 10.07.2017