Диссертация (1137159), страница 22
Текст из файла (страница 22)
Рассмотрим компоненты данной подсистемы болеедетально.База знаний для поддержки поиска содержит в себе словарь словиндикаторов, базу целей и базу множеств. Структура базы знаний представленана рисунке 4.6.Таблица GoalFact содержит в себе информацию о фактах достижения целейи привязанные к ним шаблоны семантических трансформаций (таблицаTransformationRule).ТаблицаSetEntityсодержитинформациюорассматриваемых множествах, их компонентах (таблица SetComponent) ииндикаторах изменений в составе множеств (таблица ChangeIndicator). ТаблицаIndicatorWord хранит в себе информацию о словах-индикаторах, являясь, посути, словарем.Рисунок 4.6. Структура базы знаний для поддержки поиска.Модуль анализа и расширения поисковых запросов содержит в себе логику,реализующую разработанные алгоритмы определения типа и объектов интересапоисковых запросов, а также алгоритмы построения расширенного множества130данных запросов.
При работе модуль использует базу знаний для поддержкипоиска, а также клиенты к веб-сервисам лингвистической базы знаний (ЛБЗ) иаспектно-ориентированной базы знаний (АОБЗ). Взаимодействие с вебсервисами происходит стандартными средствами выбранной платформыреализции.Модуль взаимодействия с поисковой системой является независимым иможет быть использован как компонент любой другой системы. В данномслучае в модуле реализована логика взаимодействия с поисковой системойЯндекс посредством Яндекс.XML API.
Компонент предоставляет простойинтерфейс для получения результатов поисковой системы.Модульуправленияявляетсяядромподсистемыикоординируетвзаимодействие модуля веб-интерфейса пользователей с другими модулями. Вданном модуле происходит первоначальная обработка запроса, затем запроспередается в модуль анализа и расширения, на выходе из которогопроанализированный запрос проверяется на возможность передачи в поисковуюсистему. После этого модуль управления передает множество запросов в модульвзаимодействия с поисковой системой. Полученные результаты ранжируются ипередаются в модуль веб-интерфейса.Модуль веб-интерфейса предоставляет в той или иной мере стандартныйдля поисковых систем интерфейс с небольшими дополнениями, позволяющимиувидеть, как был преобразован запрос.
Стартовая страница поисковой системывыглядит следующим образом (рисунок 4.7):Рисунок 4.7. Стартовая страница AOS Engine.1314.1.2.5 Выбор платформы реализацииОсновываясь на разработанной архитектуре программного комплекса,определим список необходимых библиотек, компонентов и программныхрешений, позволяющих реализовать данную архитектуру.Требования к Лингвистической Базе Знаний: (1) поддержка взаимодействияс базой данных; (2) наличие системы ORM; (3) поддержка пула соединений сбазой данных; (4) поддержка сетевого взаимодействия; (5) поддержка работы сфайловой системой; (6) поддержка веб-сервисов.Требования к Аспектно-Ориентированной Базе Знаний: (1) поддержкавзаимодействия с базой данных; (2) наличие системы ORM; (3) поддержка пуласоединений с базой данных; (4) поддержка сетевого взаимодействия; (5)поддержка работы с форматом Microsoft Excel; (6) поддержка веб-сервисов; (7)наличие веб-интерфейса.Требования к подсистеме AOS Engine: (1) поддержка взаимодействия сбазой данных; (2) наличие системы ORM; (3) поддержка пула соединений сбазой данных; (4) поддержка сетевого взаимодействия; (5) поддержкавзаимодействия с веб-сервисами; (6) поддержка обработки формата XML; (7)наличие веб-интерфейса.Учитываяперечисленныетребованияитребованиеккросс-платформенности, а также принимая во внимание наличие разнообразных вебкомпонентов и нескольких баз данных, в качестве платформы реализации,удовлетворяющей разработанной архитектуре, была выбрана Java SE 6.Рассмотрим существующие решения для данной платформы, удовлетворяющиепоставленным требованиям (таблица 4.4).Таблица4.4.СоответствиепрограммныхрешенийпредъявляемымтребованиямТребованиеРешение Описание решенияВзаимодействия JDBCПлатформенно-независимыйс базой данныхстандартвзаимодействияпромышленныйJava-приложенийс132различными СУБД, реализованный в виде пакетаjava.sql, входящего в состав Java SE [69].Система ORMHibernate Библиотека для языка программирования Java,предназначенная для решения задач объектнореляционногопроецированияmappingORM).-(object-relationalДаннаябиблиотекапредоставляет лёгкий в использовании каркас(фреймворк)дляотображенияобъектно-ориентированной модели данных в традиционныереляционные базы данных [86].Пул соединений c3p0Простойс базой данныхинтегрированный с Hibernate [43].Сетевоевиспользованиипулсоединений,java.net.* Пакет для сетевого взаимодействия, входящий ввзаимодействиестандартный комплект поставки JDK.РаботаПакет для работы с файловой системой, входящийс java.io.*файловойв стандартный комплект поставки JDK.системойВеб-сервисыJAX-WS Прикладной программный интерфейс языка Javaдля создания веб-сервисов, являющийся частьюплатформыJava.JAX-WSпредоставляетдокументо-ориентированную модель сообщений иупрощаетразработкувеб-сервисовзасчётиспользования аннотаций [71].Работас POIНабор библиотек Apache Foundation, написанныхдокументамина Java и предназначенных для обработки иMicrosoft Excelсоздания файлов формата Microsoft Office, такихкак Word, PowerPoint и Excel [34].Обработка XML JDOMCвободнаяJava-реализацияDOMдляXML,133созданнаясучетомособенностейязыкаиплатформы Java.
JDOM интегрируется с DocumentObject Model (DOM) и Simple API for XML (SAX),поддерживает XPath и XSLT [70].Веб-интерфейсGWTGoogle Web Toolkit (GWT) - Java-фреймворк,который позволяет веб-разработчикам создаватьAjax-приложения на основе Java [66].Помимочастныхкомпонентов,необходимыхдляобеспеченияфункциональности подсистем программного комплекса, также необходимысервер баз данных и контейнер для обработки HTTP-запросов к компонентам,предоставляющим доступ по HTTP.
В качестве сервера баз данных был выбранMySQL Server [77], поскольку он является бесплатным и разрабатывается темже производителем, что и платформа Java. Помимо этого, сервер выдерживаетвысокие нагрузки и поддерживает различные модели репликации. В качествевеб-контейнера был выбран Apache Tomcat[35] в силу того, что данный продуктуспешно используется в промышленной эксплуатации и имеет простуюнастройку при больших возможностях.Впроцессеразработкибудетиспользоватьсяцентрализованныйрепозиторий исходного кода code.google.com с установленной системойконтроля версий Git[65].
Также при разработке программного комплекса будетиспользоваться система автоматизированной сборки приложений Maven [33]для обеспечения большей стабильности и переносимости исходного кода.Исходные коды подсистем Лингвистической Базы Знаний и AOS Engineдоступныпоадресуhttp://code.google.com/p/aosengine/.Исходныекодыподсистемы Аспектно-Ориентированая База Знаний доступны по адресуhttp://code.google.com/p/aokb/.4.2 Разработка итогового алгоритма построения расширенногомножества запросов и ранжирования результатовВ предыдущих главах упоминались алгоритмы извлечения данных из134аспектно-ориентированной базы знаний, лингвистической базы знаний, а такжеиз базы целей и базы множеств.
Данные подалгоритмы, используемые восновных алгоритмах расширения запросов, представляют собой обращения квеб-сервису,которыйосуществляетвыборкуизбазыданных,либонепосредственно к самой базе данных. В таблице 4.5 приведены ссылки наисходный код алгоритмов для ознакомления с тем, каким образом данныеизвлекаются из базы данных.Таблица 4.5.
Ссылки на исходный код подалгоритмов извлечения данныхиз базы.АлгоритмСсылка на исходный кодПолучение аспектов для http://code.google.com/p/aokb/source/browse/server/srпонятияc/main/java/ru/agiledev/akb/ws/AKBServiceImpl.javaПолучениеhttp://code.google.com/p/aosengine/source/browse/wikiконцептуального/wikiservice/src/main/java/ru/agiledev/wikiservice/Wikокружения слова, а также tionaryServiceImpl.javaстемминг словаИзвлечение информации http://code.google.com/p/aosengine/source/browse/coreиз базы целей и базы /src/main/java/ru/agiledev/aos/analyzer/QueryExtender.множествjavaРассмотрим итоговый алгоритм анализа и расширения поисковых запросоваспектно-ориентированного типа, вопросов достижения целей и вопросовизменения состава множеств.Внешняя спецификация алгоритма «Анализ_и_Расш_Запр»Вход: Текст - Цепочка W ∈ Linput - входной запрос; Словарь_Старт_Слов— словарь стартовых слов, содержащий типы запросов, которые могутначинаться с того или иного слова; РассмТипы — массив, содержащий строки,соответствующие всем типам запросовВыход: ExtSet — множество семантически преобразованных запросов.135Внутренние переменные: Тип_Запр — тип запроса; Допустимые_Типы —массив,содержащийстроки,соответствующиетипамзапросов;Отличит_Слово — слово-индикатор, по которому был определен тип запроса;ОИ — массив элементов типа Расш_Слово, представляющий объект интереса;ОИ2 — массив элементов типа Расш_Слово, представляющий второй объектинтереса; Доп_ОИ — дополнительный значимый объект интереса, влияющийна смысл запроса.Алгоритм «Анализ_и_Расш_Запр»начПредОбр_Запр := Первичная_Обработка_Запроса(Текст)Доп_Типы := Опр_Тип_Запр_По_СТ_С(ПредОбр_Запр(0))Тип_Запр := nilесли Доп_Типы <> nil тоТип_Запр := Опр_ТЗ(ПредОбр_Запр, Доп_Типы, ХС)иначеТип_Запр := Опр_ТЗ(ПредОбр_Запр, РассмТипы, ХС)кеслиесли Тип_Запр == nil то выходОтличит_Слово := ОИ := ОИ2 := Доп_ОИ := nilесли Тип_Запр == В_ДЦРасширение_В_ДЦ(Отличит_Слово, ОИ, ОИ2, Доп_ОИ, ExtSet)иначе если Тип_Запр == В_ИМРасширение_В_ИМ(Отличит_Слово, ОИ, ОИ2, Доп_ОИ, ExtSet)иначеРасширение_АО_Запр(Тип_Запр, Отличит_Слово, ОИ, ОИ2, Доп_ОИ,ExtSet)кесликонРезультаты тестирования итогового алгоритма приведены в приложении 8 идемонстрируют высокое качество работы алгоритма на достаточно большом136объемеразличныхзапросов.Ссылкинаисходныйкодпрограммы,реализующий представленные алгоритмы, представлены в таблице 4.6.Таблица 4.6.
Ссылки на исходный код алгоритмовАлгоритмОпределениеСсылкатипа http://code.google.com/p/aosengine/source/browse/core/srзапросаc/main/java/ru/agiledev/aos/analyzer/QueryAnalyzer.javaОпределение объектов http://code.google.com/p/aosengine/source/browse/core/srинтереса запросаc/main/java/ru/agiledev/aos/analyzer/QueryParser.javaПостроениеhttp://code.google.com/p/aosengine/source/browse/core/srсемантическогоc/main/java/ru/agiledev/aos/analyzer/QueryExtender.javaрасширения запросовРанжированиеhttp://code.google.com/p/aosengine/source/browse/core/srрезультатовc/main/java/ru/agiledev/aos/core/ResultsRanker.javaАлгоритм ранжирования результатов в силу его простоты не приводится.Алгоритм определяет релевантность следующим образом: итерируя по массивувозвращенных поисковой системой документов, алгоритм сначала определяетналичие объектов интереса в представленном системой сниппете, а затемопределяет повторные вхождения одного и того же документа в выборку,используя в качестве уникального ключа URL страницы.
Если былообнаружено повторное вхождение, то повышается рейтинг документа, которыйуже содержится в выборке. После этого полученное множество сортируется позначению данного рейтинга.Разработанный программный комплекс в настоящее время развернут ифункционирует. Доступ к подсистемам можно получить по следующим URLадресам (таблица 4.7):Таблица 4.7. URL-адреса разработанных подсистемПодсистема/КомпонентURLAOS Enginewww.aosengine.ruЛингвистическая База Знаний (веб-сервис)www.aosengine.ru/wikiser137viceАспектно-ориентированная база знаний (интерфейс) www.aosengine.ru/akbАспектно-ориентированная база знаний (веб-сервис) www.aosengine.ru/akb/ws4.3 Исследование полученных результатовНеобходимо исследовать полученные результаты разработки методапреобразованияпоисковыхзапросовразличныхтипов(аспектно-ориентированные запросы, запросы о достижении целей, запросы обизменениях в составе множеств).