Прототип системы интеллектуального поиска документов на основе онтологии предметной области
Создание и развитие университетской информационной системы как тематической электронной библиотеки и базы для исследований и учебных курсов. Общее описание системы. Пользовательский графический интерфейс. Программное обеспечение, руководство пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 24.01.2016 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
- Выполнение поиска по коллекциям документов;
- Формирование списка результатов поиска;
- Предоставление доступа к документам-результатам поиска.
Уровень подготовки пользователя
Пользователь системы должен:
- уметь работать с web-браузером, предоставляющим доступ к информационно-поисковой системе;
- иметь возможность сформулировать поисковой запрос к системе в виде текстовой строки;
- знать название предметной области, в которой необходимо осуществлять поиск документов;
Дополнительные (не обязательные) знания пользователя:
- URL дополнительных онтологий, отсутствующих в системе, которые можно использовать в процессе поиска;
- направления расширения запроса - элементы, которыми необходимо расширить запрос.
Администратор системы должен:
- иметь навыки работы с операционной системой Debian Linux;
- иметь представление об устройстве системы;
- уметь пользоваться программным обеспечением, используемым в системе: Sphinx search engine, OntoLoader, Apache Tomcat, MySQL.
- уметь пользоваться программным обеспечением и скриптами, предназначенными для установки и конфигурирования (настройки) системы.
Перечень эксплуатационной документации
В состав эксплуатационной документации входит:
- Настоящая Рабочая Документация к системе;
- Рабочая документация к программному обеспечению, обеспечивающему функционирование системы
- Debian Linux 6.0 x86;
- Web-сервер Apache;
- Контейнер сервлетов Tomcat 6.0;
- СУБД MySQL 5.3;
- Sphinx Search Engine 2.0;
- Java EE 1.7;
- Apache Ant 1.8.3;
- Система морфологии УИС "РОССИЯ".
Назначение и условия применения
Программные и аппаратные требования к ссистеме
Требования к аппаратному обеспечению сервера системы:
- Процессор с тактовой частотой не менее 800 МГц;
- Жесткий диск объемом не менее 20 Гб;
- Оперативная память объемом не менее 512 Мб;
- Сетевое соединение (сетевая карта), скоростью подключения к сети не менее 100 Мбит\сек.
Требования к программному обеспечению сервера системы:
- Операционная система Debian Linux x86 версии 6.0;
- Web-сервер Apache версии 2.0;
- Контейнер сервлетов Tomcat версии 6.0;
- Система полнотекстового поиска Spring версии 2.0
- Cервис морфологии УИС "РОССИЯ";
- СУБД MySQL версии 5.3;
Подготовка к работе
Состав дистрибутива
В состав дистрибутива системы входят:
- Программные компоненты системы в формате WAR-файла;
- SQL-скрипт создания базы данных системы;
- Дистрибутив операционной системы Debian Linux 6.0 x86;
- Дистрибутив web-сервера Apache версии 2.0;
- Дистрибутив контейнера сервлетов Tomcat версии 6.0;
- Дистрибутив СУБД MySQL версии 5.3;
- Дистрибутив Java JDK, Java EE версии 1.7;
- Дистрибутив системы полнотекстового поиска Sphinx версии 2.0;
- Дистрибутив системы морфологии УИС "РОССИЯ";
- Дистрибутив утилиты автоматизации Apache Ant версии 1.8.3
- Конфигурационный файл системы полнотекстового поиска Sphinx;
- Конфигурационный файл СУБД MySQL;
- Конфигурационный файл компонентов системы;
- Настоящая рабочая документация системы;
- Скрипт автоматизированной установки и конфигурации (настройки) системы;
- Скрипт самотестирования системы;
- Скрипт тестового набора данных;
- Тестовая коллекция документов;
- Тестовая онтология предметной области.
Запуск системы
Для запуска функционирования системы необходимо:
- Установить на каждый сервер операционную систему Debian Linux 6.0 x86;
- Обеспечить к каждому из серверов доступ по протоколу SSH;
- Установить на сервер баз данных СУБД MySQL 5.3 Допускается установка как с диска с дистрибутивом, так и из специального сетевого репозитория операционной системы;
- Установить на сервер баз данных Web-сервер Apache 2. Допускается установка как с диска с дистрибутивом, так и из специального сетевого репозитория операционной системы;
- Установить на сервер приложения виртуальную машину Java EE 1.7;
- Установить на сервер приложений контейнер сервлетов Tomcat 6.0. Допускается установка как с диска с дистрибутивом, так и из специального сетевого репозитория операционной системы;
- Установить на сервер приложений систему полнотекстового поиска Sphinx 2.0;
- Запустить скрипт установки и конфигурирования системы с диска с дистрибутивом системы. Следовать указания скрипта;
- После успешного завершения работы скрипта установки и конфигурирования системы запустить скрипты заполнения тестовыми данными и самотестирования системы.
В случае успешной установки и конфигурирования системы web-интерфейс системы будет доступен по адресу: [сервер]: 8080/OntoSearcher
После ввода запроса, указания онтологии предметной области и искомых элементов запустить поиск. В случае успешной установки и конфигурации системы будет выдан список найденных по запросу документов.
Контрольный пример
Для проверки работы системы необходимо открыть web-страницу формирования запроса, после чего:
- Ввести текст запроса "Оплата жилья";
- Выбрать онтологию предметной области "Государственное управление: Жилищная политика";
- Выбрать искомые типы элементов: Суперклассы, Эквивалентные классы, Субклассы;
- Нажать "Поиск"
В результате выполненных действий будет осуществлен поиск документов и, в результате которого будет представлен список документов-результатов поиска по двум запроса:
- "Оплата жилья" - введенный пользователем запрос;
- "Оплата жилья | Оплата недвижимости | Оплата жилища | Жилищный кредит жилья | Жилищный кредит недвижимости | Жилищный кредит жилища | Ипотека жилья | Ипотека недвижимости | Ипотека жилища | Ипотечный кредит жилья | Ипотечный кредит недвижимости | Ипотечный кредит жилища
При этом, каждый из запросов будет соответствовать списку документов-результатов поиска.
Заключение
В результате работы был разработан прототип системы интеллектуального поиска документов на основе онтологии предметной области, включающий в себя регламентированные в Настоящем Документе разработанные программную архитектуру системы и алгоритм расширения исходного пользовательского поискового запроса. Данный прототип системы предназначается для проведения дальнейших исследований в области применения онтологий предметной области в задачах информационного поиска.
Оценка показателей релевантности результатов поиска производится при помощи используемого системой внешнего программного обеспечения.
Оценка показателей пертинентности результатов поиска будет производиться при помощи статистического анализа результатов работы пользователя с системой методом отметки открытых пользователем системы ссылок на документы-результаты поиска по поисковому запросу.
Список используемой литературы
1. ГОСТ 34.601-90. Информационная технология. Автоматизированные системы. Стадии создания.
2. ГОСТ 34.602-89 Информационная технология. Техническое задание на создание автоматизированной системы
3. Требования к оформлению квалификационных работ: метод. указания для студентов по направлению 230200 "Информационные системы" / Сост.: А.П. Власов, Н.А. Марчук: Иван. гос. хим. - технол. ун-т. - Иваново, 2010, 35 с.
4. Требования к содержанию квалификационных работ: метод. указания для студентов по направлению 230200 "Информационные системы" / сост.: А.П. Власов, С.П. Бобков, Н.И. Терехин: Иван. гос. хим. - технол. ун-т. - Иваново, 2010. - 40 с.
5. Леоненков А.В. Нотация и семантика языка UML - http://www.intuit.ru/department/pl/umlbasics (28.03.2012) Сайт "intuit.ru"
6. Н.В. Лукашевич. Тезаурусы в задачах информационного поиска, М.: Издательство Московского Университета, 2011. - 512 с.
7. О.И. Россеева, Ю.А. Загорулько. Организация эффективного поиска на основе онтологий. Труды Международного семинара Диалог'2001 по компьютерной лингвистике и ее приложениям, т.2, 2001. - http://www.dialog-21.ru/materials/archive. asp? id=7029&y=2001&vol=6078 (01/04/2012)
8. "Введение в поисковые системы" / Ю. Лифшиц. - http://yury. name/modern/05modernnote. pdf (01.04.2012);
9. "Архитектура Google" / Александр Азаров, Ист. Вебпланета - http://www.i2r.ru/static/334/out_22655. shtml (01.04.2012);
10. "Профессиональный поиск в Интернете: планирование поисковой процедуры" / Михаил Талантов - http://citforum.ru/internet/search/prof_search02. shtml (10.04.2012)
11. "Пертинентность поиска - новый тренд в конкуренции поисковых систем" - http://www.seonews.ru/analytics/detail/121831. php (10.04.2012)
12. "Университетская Информационная Система РОССИЯ. Краткое описание" - http://uisrussia. msu.ru/is4/main. jsp (10.04.2012)
13. "Интеллектуальный поиск изнутри" - http://compsciclub.ru/courses/informationretrieval (10.04.2012)
14. "Information Technology - Database Language SQL (Proposed revised text of DIS 9075)" / Digital Equipment Corporation, Maynard, Massachusetts - http://www.contrib. andrew. cmu.edu/~shadow/sql/sql1992. txt (01.04.2012);
15. "RFC 2616 - Hyper Transfer Protocol - HTTP/1.1" / R. Fielding, UC Irvine, J. Gettys, Compaq/W3C, J. Mogul, etc. - http://tools. ietf.org/html/rfc2616 (01.04.2012);
16. "HTML5 - A vocabulary and associated APIs for HTML and XHTML - W3C Working Draft 29 March 2012" / Ian Hickson, Google, Inc. - http://dev. w3.org/html5/spec/ (01.04.2012)
17. "Теория и практика использования SSH" / Vsevolod Stakhov - http://www.opennet.ru/base/sec/ssh_intro. txt.html (01.04.2012)
18. POSIX
19. "Документация к системе морфологии, разработанной в рамках системы УИС РОССИЯ"
20. "Документация к MySQL" - http://www.mysql.ru/docs/ (01.04.2012)
21. "OWL, язык веб-онтологий. Руководство" - http://sherdim.ru/pts/semantic_web/REC-owl-guide-20040210_ru.html (01.04.2012)
22. "Uniform Resource Locators (URL)" - http://tools. ietf.org/html/rfc1738 (01.04.2012)
23. "Apache HTTP Server Documentation" - http://httpd. apache.org/docs/ (01.04.2012)
24. "OpenSSH Manual pages" - http://www.openssh.com/manual.html (01/04/2012)
25. "Apache Tomcat 6.0 Documentation Index" - http://tomcat. apache.org/tomcat-6.0-doc/index.html (01.04.2012)
26. "Java SE Specifications" - http://docs. oracle.com/javase/specs/ (01.04.2012)
27. "Документация Debian Linux" - http://www.debian.org/support#doc (01.04.2012)
28. "Центр справки Java" - http://www.java.com/ru/download/help/index. xml (01.04.2012)
29. "JavaServer Pages Technology" - http://www.oracle.com/technetwork/java/javaee/jsp/index.html (01.04.2012)
30. "Справочник с примерами по языку SQL" - http://sql. itsoft.ru/ (01.04.2012)
31. "RFC 2616 - Hyper Transfer Protocol - HTTP/1.1" / R. Fielding, UC Irvine, J. Gettys, Compaq/W3C, J. Mogul, etc. - http://tools. ietf.org/html/rfc2616 (01.04.2012);
32. "JavaScript Tutorial" - http://www.w3schools.com/js/ (01.04.2012)
33. "Documents associated with UML Version 2.4.1" - http://www.omg.org/spec/UML/2.4.1/ (01.04.2012)
34. "Visual Paradigm for UML 9.0 Model-Code-Deploy Platform FAQ" - http://www.visual-paradigm.com/product/vpuml/faq. jsp (01.04.2012)
35. "Embarcadero Technologies Product Documentation - ER/Studio" - http://docs. embarcadero.com/products/er_studio_enterprise/ (01.04.2012)
36. "Net Beans - Documentation, Training, & Support" - http://netbeans.org/kb/index.html (01.04.2012)
37. "Sphinx Online HTML Documentation" - http://sphinxsearch.com/docs/ (01.04.2012)
38. "Sphinx Online HTML Documentation" - http://sphinxsearch.com/docs/ (01.04.2012)
39. "MySQL Connector/J" - http://dev. mysql.com/doc/refman/5.1/en/connector-j.html (01.04.2012)
40. "Apache Log4j 1.2.16 API" - http://logging. apache.org/log4j/1.2/apidocs/index.html (01.04.2012)
Приложения
Приложение А
Фрагмент программного кода модуля онтологической обработки запроса:
/*
* Project: Domain Ontology Driven Retrieval System
* Organization: SRCC MSU, CIR
* Author: Krylov Al.
*
* Name: Ontology module
* Version: 1.0.0.0
* Date: Marth 2012
*
* Description: This class process ongology-query semantic
*/
package search. modules;
import java. util. ArrayList;
import java. util. Iterator;
import java. util. List;
import java. util. Set;
import java. util. Properties;
import java. io. *;
import search. *;
import org. apache. log4j. *;
import org. semanticweb. owlapi. apibinding. OWLManager;
import org. semanticweb. owlapi. io. *;
import org. semanticweb. owlapi. model. *;
import org. semanticweb. owlapi. reasoner. *;
import org. semanticweb. owlapi. util. SimpleIRIMapper;
import org. semanticweb. owlapi. util. DefaultPrefixManager;
import org. semanticweb. owlapi. io. *;
import org. semanticweb. owlapi. model. *;
import org. semanticweb. owlapi. reasoner. *;
import org. semanticweb. owlapi. util. SimpleIRIMapper;
import org. semanticweb. owlapi. util. DefaultPrefixManager;
/**
*
* @author blook
*/
public class OntologyModule
{
private static Logger logger = Logger. getLogger (SearchModule. class. toString ());
public int FillOntologyQueryElements (SearchObject so)
{
int res = 0;
int onto_elements = 0;
so. _ontoElements = new OntologyElementsCollection [16];
// for each ontologies in list.
for (String ontology_url: so. _usedOntologies)
{
OWLOntology ontology = this. GetOntology (ontology_url);
if (ontology == null)
{
return 6101; // error in ontology loading
}
// for each ontology elements type in list.
for (String query_element: so. _queryElements)
{
for (String onto_type: so. _ontoTypes)
{
OntologyElementsCollection onto_el_col = new OntologyElementsCollection ();
res = this. FillQueryElementsByOntology (onto_el_col, onto_type, query_element, ontology);
if (res! = 0) { return res; };
so. _ontoElements [onto_elements] = onto_el_col;
onto_elements++;
}
}
}
so. _ontoElemQuantity = onto_elements;
return res;
}
public int FillQueryElementsByOntology (OntologyElementsCollection onto_el_col,
String onto_type, String element_name, OWLOntology ontology)
{
int res = 0;
// OntologyElementsCollection onto_el_col = new OntologyElementsCollection ();
if (onto_type. equals ("SUB"))
{
onto_el_col. _elements = this. GetSubClassesForElement (element_name, ontology);
}
else if (onto_type. equals ("EQU"))
{
onto_el_col. _elements = this. GetEquivalentClassesForElement (element_name, ontology);
}
else if (onto_type. equals ("SUP"))
{
onto_el_col. _elements = this. GetSuperClassesForElement (element_name, ontology);
}
else
{
logger. error ("Error in ontology elements type list - unknown type: [" + onto_type + "] ");
return 6102; // error in ontology elements type list (unknown type)
}
onto_el_col. _type = onto_type;
onto_el_col. _sourceElement = element_name;
onto_el_col. _ongology = ontology. getOntologyID (). toString (). substring (1, ontology. getOntologyID (). toString (). length () - 1);
return res;
}
public OWLOntology GetOntology (String ontology_url)
{
logger. info ("stat GetOntology. [" + ontology_url + "] ");
IRI onto_iri = IRI. create (ontology_url);
OWLOntology ontology = null;
OWLOntologyManager manager = OWLManager. createOWLOntologyManager ();
try
{
ontology = manager. loadOntology (onto_iri);
}
catch (OWLOntologyCreationException ex)
{
logger. error ("Error loading ontology: [" + ontology_url + "] ");
}
return ontology;
}
// finction for filling list of subclsses by ontology element name and ontology object
public List<String> GetSuperClassesForElement (String element_name, OWLOntology ontology)
{
logger. info ("start GetSuperClassesForElement. [" + element_name + "] ");
int res = 0;
List<String> sup_elements = new ArrayList<String> (); // FIXME! we mast allocated memory in function body
// fixme
// ConsoleProgressMonitor progressMonitor = new ConsoleProgressMonitor ();
// OWLReasonerConfiguration config = new SimpleConfiguration (progressMonitor);
OWLOntologyManager manager = OWLManager. createOWLOntologyManager ();
OWLDataFactory fac = manager. getOWLDataFactory ();
String onto_id = ontology. getOntologyID (). toString (). substring (1, ontology. getOntologyID (). toString (). length () - 1);
IRI cls1Iri = IRI. create (onto_id + "#" + element_name);
OWLClass cls1 = fac. getOWLClass (cls1Iri);
Set<OWLClassExpression> classes = cls1. getSuperClasses (ontology);
for (OWLClassExpression cls: classes)
{
// logger. info ("Equivalent class: " + cls. toString (). substring (cls. toString (). indexOf ("#") +1, cls. toString (). length () - 1));
sup_elements. add (cls. toString (). substring (cls. toString (). indexOf ("#") +1, cls. toString (). length () - 1));
}
return sup_elements;
}
// finction for filling list of super clsses by ontology element name and ontology object
public List<String> GetSubClassesForElement (String element_name, OWLOntology ontology)
{
logger. info ("start GetSubClassesForElement. [" + element_name + "] ");
int res = 0;
List<String> sub_elements = new ArrayList<String> (); // FIXME! we mast allocated memory in function body
// fixme - -
// ConsoleProgressMonitor progressMonitor = new ConsoleProgressMonitor ();
// OWLReasonerConfiguration config = new SimpleConfiguration (progressMonitor);
OWLOntologyManager manager = OWLManager. createOWLOntologyManager ();
OWLDataFactory fac = manager. getOWLDataFactory ();
String onto_id = ontology. getOntologyID (). toString (). substring (1, ontology. getOntologyID (). toString (). length () - 1);
IRI cls1Iri = IRI. create (onto_id + "#" + element_name);
OWLClass cls1 = fac. getOWLClass (cls1Iri);
Set<OWLClassExpression> classes = cls1. getSubClasses (ontology);
for (OWLClassExpression cls: classes)
{
// logger. info ("Equivalent class: " + cls. toString (). substring (cls. toString (). indexOf ("#") +1, cls. toString (). length () - 1));
sub_elements. add (cls. toString (). substring (cls. toString (). indexOf ("#") +1, cls. toString (). length () - 1));
}
return sub_elements;
}
// function for filling list of equivalent classes by ontology element name and ontology object
public List<String> GetEquivalentClassesForElement (String element_name, OWLOntology ontology)
{
logger. info ("start GetEquivalentClassesForElement. [" + element_name + "] ");
int res = 0;
List<String> equ_elements = new ArrayList<String> (); // FIXME! we mast allocated memory in function body
// fixme - -
// ConsoleProgressMonitor progressMonitor = new ConsoleProgressMonitor ();
// OWLReasonerConfiguration config = new SimpleConfiguration (progressMonitor);
OWLOntologyManager manager = OWLManager. createOWLOntologyManager ();
OWLDataFactory fac = manager. getOWLDataFactory ();
String onto_id = ontology. getOntologyID (). toString (). substring (1, ontology. getOntologyID (). toString (). length () - 1);
IRI cls1Iri = IRI. create (onto_id + "#" + element_name);
OWLClass cls1 = fac. getOWLClass (cls1Iri);
Set<OWLClassExpression> classes = cls1. getEquivalentClasses (ontology);
for (OWLClassExpression cls: classes)
{
// logger. info ("Equivalent class: " + cls. toString (). substring (cls. toString (). indexOf ("#") +1, cls. toString (). length () - 1));
equ_elements. add (cls. toString (). substring (cls. toString (). indexOf ("#") +1, cls. toString (). length () - 1));
}
return equ_elements;
}
// module testing
public static void main (String [] args)
{
String onto_url = "http://budgetrf.ru/Publications/Ontology/Ontology1321427863687. owl";
// String z = localPizza. getOntologyID (). toString (). substring (1, localPizza. getOntologyID (). toString (). length () - 1);
SearchObject test_so = new SearchObject ();
test_so. getResources ();
test_so. _query = "Оплата жилья";
test_so. _queryElements. add ("Р-РёР"СЊРµ");
test_so. _queryElements. add ("РћРїР"ата");
test_so. _ontoTypes. add ("SUB");
test_so. _ontoTypes. add ("EQU");
test_so. _ontoTypes. add ("SUP");
test_so. _usedOntologies. add (onto_url);
OntologyModule test_onto_mod = new OntologyModule ();
int res = test_onto_mod. FillOntologyQueryElements (test_so);
for (int i = 0; i < test_so. _ontoElemQuantity; i++)
{
// System. out. println ("Ontology: " + test_so. _ontoElements [i]. _ongology);
for (int j = 0; j < test_so. _ontoElements [i]. _elements. size (); j++)
System. out. println (test_so. _ontoElements [i]. _elements. get (j));
}
test_so. clearResources ();
}
}
Размещено на Allbest.ru
Подобные документы
Развитие информационного бизнеса, электронной коммерции на основе Интернет. Описание предметной области, процессов и типичного хода событий при создании информационной системы виртуального предприятия. Калькуляция разработки электронной торговли.
курсовая работа [872,8 K], добавлен 22.05.2015Разработка программной системы для регистратуры поликлиники; создание базы данных. Описание предметной области: сведения о врачах, пациентах, учет обращений, регистрация обследований и назначенных препаратов. Содержимое таблиц, пользовательский интерфейс.
курсовая работа [6,2 M], добавлен 30.07.2012Логическая и физическая структура базы данных. Аппаратное и программное обеспечение системы. Создание представлений, хранимых процедур, пользовательских функций, триггеров. Описание основной структуры ASP.NET документов. Пользовательский интерфейс.
курсовая работа [4,2 M], добавлен 21.05.2013Программирование полнофункциональной системы учета для предметной области "Концертный зал": построение концептуальной и реляционной моделей базы данных, описание способов реализации запросов и вывода отчета на экран, разработка интерфейса пользователя.
курсовая работа [1,5 M], добавлен 22.11.2010Техническое задание на разработку автоматизированной системы и складского учета управления универсальной торговой базы. Проектирование информационной системы и выбор среды для создания программного продукта. Создание интерфейса и руководство пользователя.
дипломная работа [2,1 M], добавлен 11.07.2015Обоснование выбора метода извлечения ключевых слов. Анализ предметной области, проектирование информационной системы поиска релевантных документов. Реализация запросов к электронным библиотекам. Реализация интерфейса системы поиска релевантных документов.
дипломная работа [1,1 M], добавлен 21.09.2016Реализация базы данных и серверной части информационной системы склада средствами СУБД Microsoft SQL Server. Анализ предметной области, информационных задач, пользовательской системы. Программа реализации проекта. Выработка требований и ограничений.
курсовая работа [2,4 M], добавлен 15.11.2015Анализ предметной области. Обеспечение качества проектной документации. Построение инфологической (концептуальной) модели предметной области. Проектирование физической структуры базы данных. Разработка интерфейса, организация ввода и поиска данных.
курсовая работа [2,5 M], добавлен 10.01.2016Моделирование предметной области. Состав программного модуля. Разработка логической структуры единой базы данных банковской информационной системы "БИС". Создание экранных форм для ввода и корректировки информации. Разработка интерфейса пользователя.
курсовая работа [1,8 M], добавлен 17.05.2016Анализ предметной области, главных функций организации. Разработка макета внутренней структуры программного обеспечения информационной системы в виде диаграммы классов. Составление схемы базы данных. Разработка интерфейса и руководства пользователя.
курсовая работа [866,3 K], добавлен 02.06.2015