Программная обработка текстов на естественном языке
Функциональные возможности, преимущества и недостатки существующих лингвистических процессоров. Проектирование интерфейса взаимодействия облачного хранилища с лингвистическим процессором и компонентов доступа к сервисам. Программный продукт IKVM.NET.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 21.09.2016 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
protected void ContentTable_RowCommand(object sender, GridViewCommandEventArgs e)
{
string objType = ContentTable.Rows[Convert.ToInt32(e.CommandArgument)].Cells[2].Text;
int objID = Convert.ToInt32(ContentTable.Rows
[Convert.ToInt32(e.CommandArgument)].Cells[3].Text);
...
// Загрузка и (или) удаление объектов
...
}
В этом событии аргумент CommandArgument используется для получения из таблицы типа скачиваемого/удаляемого объекта. Пример элемента управления GridView с настраиваемыми шаблонами для столбцов представлен на рисунке 3.3. Здесь пользователь выбрал функцию «Скачать» файл с названием «oplotnikova»:
Рисунок 3.3 Элемент управления GridView с настраиваемыми шаблонами
Как было сказано в начале главы, структура находящихся в хранилище объектов представлена в веб-приложении в виде дерева с помощью элемента управления TreeView. Для построения дерева был создан метод GetTree(), который выполняется при загрузке страницы, а также при добавлении/удалении объектов. Этот метод практически полностью состоит из конструкций «if-else» и оператора «foreach». Метод GetTree() полностью можно просмотреть в приложении Г. Код программы. На рисунке 3.4 показано, как выглядит дерево объектов после получения данных из хранилища и их структурирования.
Рисунок 3.4 Дерево объектов
Вывод: в главе «разработка программных компонентов» представлены основные моменты реализации программного продукта. Разработка каждого из трех компонентов (GATE API, взаимодействие с пользователем, взаимодействие с облачным хранилищем) описана в отдельном пункте. При создании модуля для GATE API использовался дополнительный инструментарий - программа IKVM, с помощью которой Java-библиотека GATE Embedded была конвертирована в .NET_библиотеку. Во время разработки компонента для взаимодействия с хранилищем использовался веб-сервис «User Service», осуществлен доступ к информации в хранилище, реализована возможность просмотра, удаления, загрузки объектов. Компонент для взаимодействия с пользователем - это веб-приложение, реализующее пользовательский интерфейс. Интерфейс создан по аналогии с проводником Windows - на левой панели находится дерево объектов, на правой панели пользователь может выполнять работу с каждым конкретным объектом. Для этого используется сторонний элемент управления - сплиттер от компании «Obout Suite».
Заключение
Данная работа описывает этапы создания компонентов прикладного уровня облачного хранилища корпусов текстов. Цель работы - реализация программных компонентов для доступа к сервисам лингвистического процессора при разработке облачного хранилища. Облачное хранилище - программный продукт, реализованный Р.Н. Бушуевым. Работа является частью большой системы компьютерной обработки естественного языка, которую создают четыре разработчика. На основе обзора и анализа наиболее популярных лингвистических процессоров было решено создавать компоненты прикладного уровня на основе лингвистического процессора GATE. Часть целой системы, описанная в данной работе, состоит из трех компонентов: модуль для взаимодействия с облачным хранилищем, модуль для GATE API и модуль для взаимодействия с пользователем.
Модуль для GATE API осуществляет доступ к лингвистическому процессору GATE при помощи подключения к библиотеке GATE Embedded, специально оптимизированной для использования в различных приложениях. Для реализации данного компонента использовался программный продукт IKVM, с помощью его инструментариев была выполнена конвертация Java-библиотеки GATE Embedded в библиотеку для платформы .NET, после чего GATE Embedded был внедрен в приложение.
Модуль для взаимодействия с облачным хранилищем осуществляет обмен информацией между хранилищем и остальными компонентами. Доступ к хранилищу получен путем использования веб-сервиса «UserService». Реализованы все необходимые функции для работы с данными: пользователю доступны просмотр, загрузка и удаление информации. Кроме этого, существует возможность скачивания файлов из хранилища на компьютер пользователя.
Модуль для взаимодействия с пользователем является веб-приложением и предоставляет интерфейс, с помощью которого конечный пользователь системы использует, изменяет и добавляет информацию, существующую в хранилище, выполняет семантическую аннотацию документов. Веб-приложение реализовано технологией ASP.NET Web Forms, при проектировании интерфейса наряду со стандартными элементами управления использовались сторонние элементы от компании «Obout Suite».
Таким образом, во время работы изучена информация о лингвистических процессорах, рассмотрены наиболее популярные их разработки. Использован инструмент ikvmc для конвертации Java-библиотеки в .NET-библиотеку. Изучены и применены на практике возможности использования веб-сервисов, спроектирован и реализован интерфейс приложения.
Результаты работы представлены на конференции «Математика и междисциплинарные исследования - 2016», проходящей в рамках форума «Математика и глобальные вызовы XXI века», посвященного столетию Пермского государственного национального исследовательского университета и опубликованы в статье «Система для обработки корпусов текстов» [20].
Библиографический список
1. Андреев А.М., Березкин Д.В., Брик А.В., Смирнов Ю.М. Об одном способе построения синтаксического анализатора текстов на естественном языке. Известия ВУЗов «Приборостроение», 1997. Т. 40, № 5. С. 34--42.
2. Рыков В.В. Прагматически ориентированный корпус текстов. Таруса: Диалог_99, 1999.
3. Рыков В.В. Труды конференции по лексикографии // Корпусная лингвистика и лексикография - проблема репрезентативности. 2002.
4. Энциклопедия информационного общества. Глоссарий по стандартам платформы XML. URL: http://wiki.iis.ru/wiki/Аннотация_семантическая (дата обращения 15.04.2016).
5. The University of Sheffield. GATE - General Architecture for Text Engineering. URL: https://gate.ac.uk (дата обращения 04.04.2016).
6. Сокирко А.В. «АОТ» - Автоматическая Обработка. URL: http://www.aot.ru/history.html (дата обращения 04.04.2016).
7. Сокирко А.В. Берлинская и Бранденбургская Академия наук // Морфологические модули на сайте www.aot.ru. 2004.
8. Сокирко А.В., Толдова С.Ю. Сравнение эффективности двух методик снятия лексической и морфологической неоднозначности для русского языка (скрытая модель Маркова и синтаксический анализатор именных групп). М.: Интегрум-техно, 2005.
9. Скотт М. WordSmith Tools - Windows software for finding word patterns. URL: http://www.lexically.net/wordsmith/ (дата обращения 04.04.2016).
10. Cathleen K., Kutter A. How to get rid of the Noise in the Corpus: Cleaning Large Samples of Digital Newspaper Texts. University of Stuttgart, Dept of International Relations & European Integration International Relations Online Working Paper Series, 2011.
11. Wilcock G. Linguistic Annotation and Text Analytics. Univesity of Helsinki. 2009. С. 95.
12. Laurence A. AntConc HomePage. URL: http://www.laurenceanthony.net/software/antconc/ (дата обращения 04.04.2016).
13. Anthony L. Developing AntConc for a new generation of corpus linguists. Proceedings of the Corpus Linguistics Conference. UK: Lancaster University, 2013. С. 14-16.
14. Microsoft ASP.NET. Get Started with ASP.NET Web Sites. URL: http://www.asp.net/get-started/websites (дата обращения: 20.04.2016).
15. MSDN. Использование веб-служб ASP.NET. URL: https://msdn.microsoft.com/ru-ru/library/t745kdsh(v=vs.100).aspx (дата обращения 17.04.2016).
16. Microsoft DreamSpark. Бесплатные возможности для участников программы DreamSpark. URL: www.dreamspark.ru/ (дата обращения: 18.04.2016).
17. MSDN. Инструмент языка описания веб-служб. URL: https://msdn.microsoft.com/ru-ru/library/7h3ystb6(v=vs.100).aspx (дата обращения: 22.04.2016).
18. Obout software inc. High performance and simplicity #1 Suite for ASP.NET. URL: https://www.obout.com (дата обращения: 24.04.2016).
19. Cunningham H., Maynard D., Bontcheva K., et al.: Developing Language Processing Components with GATE Version 7 (a User Guide). The University of She?eld, 2013.
20. Бармина Е.И., Бушуев Р.Н., Котельникова Н.В., Ланин В.В., Плотникова О.А. Сборник докладов всероссийской научно-практической конференции молодых ученых «МАТЕМАТИКА И МЕЖДИСЦИПЛИНАРНЫЕ НАУКИ - 2016» // Система для обработки корпусов текстов. 2016. С. 245-251.
Основные обозначения и сокращения
1. СУБД - система управления базами данных.
2. XML - eXtensible Markup Language, расширяемый язык разметки.
3. WSDL - Web Services Description Language, язык описания веб-сервисов.
4. LGPL - GNU Lesser General Public License, ослабленная версия GPL, предназначенная для некоторых библиотек программного обеспечения.
5. IDE - Integrated Development Environment, интегрированная среда разработки.
6. API - Application Programming Interface, интерфейс программирования, интерфейс создания приложений.
7. JAR - Java ARchive, представляет собой ZIP-архив, в котором содержится часть программы на языке Java.
8. WCF - Windows Communication Foundation, программный фреймворк, используемый для обмена данными между приложениями, входящий в состав .NET Framework.
Приложение А
Рисунок А.1 Диаграмма вариантов использования разрабатываемой системы
Приложение Б
Рисунок Б.1 Диаграмма компонентов разрабатываемой системы
Приложение В. Скриншоты программы
Рисунок В.1 Главная страница приложения
Рисунок В.2 Выбор корпуса, в котором содержатся файлы
Рисунок В.3 Выбор файла без семантических аннотаций
Рисунок В.4 Выбор файла, у которого есть семантические аннотации
Приложение Г. Код программы
Г.1. Метод «GetUser», получает пользователя из базы данных по логину и паролю
private void GetUser()
{
UserServiceClient client = null;
try
{
client = new UserServiceClient();
_currentUser = client.GetByLoginPassword(USER_LOGIN, USER_PASSWORD);
}
catch (FaultException ex)
{
string exception =
string.Format("<script type=\"text/javascript\">alert({0});</script>", ex.Message);
Response.Write(exception);
}
finally
{
client.Close();
}
}
Г.2. Метод «GetTree», получает объекты из хранилища и выстраивает элемент управления TreeView
private void GetTree()
{
TreeView.Nodes.Clear();
TreeView.Nodes.Add(new TreeNode("Главная страница"));
foreach (UserTextCorpus x in _currentUser.TextCorpora)
{
int corporaID = x.TextCorpus.Id;
TreeNode corporaNode = new TreeNode();
corporaNode.Value = "Корпус: " + "\"" + x.TextCorpus.Name + "\"" +
" ID: " + x.TextCorpus.Id;
List<int> files = x.TextCorpus.Files.Select(y => y.Id).ToList();
if (files.Count != 0)
{
foreach (UserTextCorpusFile tcf in _currentUser.TextCorpusFiles)
if (files.Contains(tcf.TextCorpusFile.Id))
{
TreeNode fileNode = new TreeNode();
fileNode.Value = "Файл: " + "\"" + tcf.TextCorpusFile.Name + "\"" +
" ID: " + tcf.TextCorpusFile.Id;
List<int> annotations = tcf.TextCorpusFile.Annotations.Select(y => y.Id).ToList();
if (annotations.Count == 0) corporaNode.ChildNodes.Add(fileNode);
else
{
foreach (UserAnnotation ann in _currentUser.Annotations)
if (annotations.Contains(ann.Annotation.Id))
{
TreeNode annNode = new TreeNode();
annNode.Value = "Аннотация: " + "\"" + ann.Annotation.Name + "\"" +
" ID: " + ann.Annotation.Id;
List<int> templates = ann.Annotation.Template.Select(y => y.Id).ToList();
if (templates.Count == 0)
fileNode.ChildNodes.Add(annNode);
else
{
foreach (UserTemplate templ in _currentUser.Templates)
if (templates.Contains(templ.Template.Id))
{
TreeNode templNode = new TreeNode();
templNode.Value = "Шаблон: " + "\"" + templ.Template.Name + "\"" +
" ID: " + templ.Template.Id;
annNode.ChildNodes.Add(templNode);
corporaNode.ChildNodes.Add(fileNode);
}
fileNode.ChildNodes.Add(annNode);
}
}
corporaNode.ChildNodes.Add(fileNode);
}
}
}
TreeView.Nodes.Add(corporaNode);
TreeView.DataBind();
}
}
Г.3. Часть события, которое происходит при щелчке на кнопку «Удалить» или «Скачать» в элементе управления GridView
protected void ContentTable_RowCommand(object sender, GridViewCommandEventArgs e)
{
string objType = ContentTable.Rows[Convert.ToInt32(e.CommandArgument)].Cells[2].Text;
int objID = Convert.ToInt32(ContentTable.Rows
[Convert.ToInt32(e.CommandArgument)].Cells[3].Text);
switch (objType)
{
case "Файл":
{
TextCorpusFile tcf = _currentUser.TextCorpusFiles.FirstOrDefault
(x => x.TextCorpusFile.Id == objID).TextCorpusFile;
if (e.CommandName == "Download")
{
#region Скачиваем файл
UserServiceClient client = null;
try
{
client = new UserServiceClient();
tcf.File = client.DownloadFile(_currentUser, tcf);
using (var fileStream = new FileStream(@"C:\temp\downloads\files\" +
tcf.Name +
"." +
tcf.FileType,
FileMode.Create,
FileAccess.ReadWrite))
{
tcf.File.WriteTo(fileStream);
fileStream.Close();
MessageLabel.Text = "Файл \"" + tcf.Name + "\"" + @" загружен в C:\temp\downloads\files\";
}
}
catch (FaultException ex)
{
MessageLabel.Text = "Ошибка при скачивании: " + ex.Message;
}
finally
{
client.Close();
}
#endregion
}
else if (e.CommandName == "Delete")
{
#region Удаляем файл
UserServiceClient client = null;
try
{
client = new UserServiceClient();
client.RemoveFile(_currentUser, tcf);
MessageLabel.Text = "Файл \"" + tcf.Name + "\" удалён";
}
catch (FaultException ex)
{
MessageLabel.Text = "Ошибка при удалении: " + ex.Message;
}
finally
{
client.Close();
}
#endregion
}
} break;
...
...
Г.4. HTML-разметка элемента управления GridView с настраиваемыми шаблонами для столбцов
<asp:GridView ID="ContentTable" OnRowCommand="ContentTable_RowCommand"
OnRowDeleting="ContentTable_RowDeleting"
HorizontalAlign="Center"
Font-Names="Trebuchet MS" Font-Size="10pt"
runat="server" CellPadding="2">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="Download" runat="server"
CommandName="Download"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Скачать" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="Delete" runat="server"
CommandName="Delete"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Удалить" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Размещено на Allbest.ru
Подобные документы
Преимущества и недостатки облачного хранилища данных. Установление приложения на компьютер, устройство Android, iOS. Создание аккаунта. Начало работы с Google диском. Способы загрузки файлов на него. Предоставление доступа к файлам другим пользователям.
курсовая работа [1,3 M], добавлен 31.05.2016Понятие семантики; обзор и анализ существующих средств семантического разбора естественно-языковых текстов. Разработка алгоритма работы системы на основе семантического анализа, его реализация на языке программирования; проектирование интерфейса системы.
дипломная работа [1,7 M], добавлен 18.03.2012Описание ДСМ-метода автоматического порождения гипотез. Исследование результатов влияния компонентов ДСМ-метода на качество определения тональности текстов. Алгоритм поиска пересечений. N-кратный скользящий контроль. Программная реализация ДСМ-метода.
курсовая работа [727,0 K], добавлен 12.01.2014Разработка программного продукта, предназначенного для имитации физического взаимодействия между объектами на основе игрового симулятора. Проектирование программы "LonelySpaceRanger", код которой представлен на языке VisualС++. Разработка интерфейса.
дипломная работа [3,2 M], добавлен 30.11.2011Анализ платформы GATE и ее инструмента для аннотирования текста. Обзор существующих редакторов для визуальных языков и языка JAPE, их возможности, преимущества и недостатки. Проектирование визуальных конструкций на основе языка программирования JAPE.
дипломная работа [770,5 K], добавлен 08.02.2017Особенности процесса взаимодействия пользователя с компьютером. Графический интерфейс ОС Windows, его преимущества и недостатки. Основы простейшего SILK-интерфейса. Основные черты и специфика структуры WIMP-интерфейса. Общепринятые соглашения для меню.
реферат [26,8 K], добавлен 02.10.2012Обеспечение непосредственной связи контроллера прямого доступа к памяти (ПДП) и памяти микроЭВМ. Совместное использование шин системного интерфейса процессором и контроллером. Последовательность и алгоритм программирования контроллера прямого доступа.
реферат [122,6 K], добавлен 13.11.2009Этапы проектирования и программная реализация интернет-магазина. Методы разработки его интерфейса - элементов и компонентов программы, которые способны оказывать влияние на взаимодействие пользователя с программным обеспечением. Защита интернет-магазина.
контрольная работа [28,7 K], добавлен 02.10.2010Понятие таблицы, анализ способов ее формирования и организации, особенности создания доступа по имени. Сущность хеширования данных. Преимущества и недостатки связывания. Применение бинарного (двоичного) поиска и характеристика интерфейса программы.
курсовая работа [307,6 K], добавлен 16.06.2012Составление программного продукта для автоматизированного доступа к учебным материалам, создания удобного пользовательского интерфейса и навигации. Обучение автовладельца работы и ориентации на сайтах. Программная документация и руководство оператора.
курсовая работа [448,2 K], добавлен 20.06.2011