СОДЕРЖАНИЕ
ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ 5
ВВЕДЕНИЕ 6
1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ 7
2. ПРОЕКТИРОВАНИЕ РЕДАКТОРА ИСХОДНЫХ ТЕКСТОВ БАЗ ЗНАНИЙ. 14
3. РАЗРАБОТКА РЕДАКТОРА ИСХОДНЫХ ТЕКСТОВ БАЗ ЗНАНИЙ 20
ЗАКЛЮЧЕНИЕ 30
БИБЛИОГРАФИЧЕСКИЙ УКАЗАТЕЛЬ 31
ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ
БЗ – База знаний
ИСС – Интеллектуальная справочная система
ЭС – Экспертная система
SCg –Semantic Code graphical
SCp – Semantic Code Programming
OSTIS – Open Semantic Technology for Intelligent Systems
KBE – Knowledge Base source Editor
ВВЕДЕНИЕ
Knowledge Base source Editor[1] является приложением, которое направлено на помощь в создании и редактировании исходных текстов баз знаний интеллектуальных систем, проектирование которых основано на технологии OSTIS[2]. В основу данного редактора положен принцип визуализации данных, хранящихся в базе знаний, что намного упрощает процесс их редактирования и ускоряет процесс проектирования баз знаний.
На данный момент KBE позволяет редактировать информацию, хранящуюся в следующих форматах:
- GWF – формат для хранения sc.g-конструкций
- M4SCP – формат для хранения sc.p-программ
Все редактируемые конструкции могут быть экспортированы в следующие форматы изображений:
- BMP – WindowsBitmap;
- ICO – WindowsIcon;
- JPEG, JPG - Joint Photographic Experts Group;
- PNG – PortableNetworkGraphics;
- PPM – PortablePixmap;
- SVG – ScalableVectorGraphics;
- TIF, TIFF - Tagged Image File Format;
- XBM - X11 Bitmap;
- XPM - X11 Pixmap;
- и др.
Целью данной курсовой работы является разработка средств редактирования sc.g– текстов.
В соответствии с поставленной целью, были сформулированы следующие задачи:
- исправление уже выявленных ошибок, а также выявление и исправление новых ошибок в KBE;
- улучшение имеющего и доработка нового функционала;
- добавление примеров по редактированию конструкций в документацию, и её обновление.
1 АНАЛИЗ ПРДЕМЕТНОЙ ОБЛАСТИ
KBE не является единственным и уникальным редактором баз знаний. Существует целый ряд аналогов. Наиболее известными и конкурентно-способными являются следующие программы:
- Диэкс;
- DyNet;
- Semantic network of Flickr user tags;
- Xebece;
- FreeMind;
- Text2mindmap.
1.1 Диэкс
Диэкс[3] - редактор БЗ предназначен для создания, обновления и редактирования баз знаний путем автоматизированного занесения создаваемых или редактируемых гипотез в БЗ.
Знания организованы в виде фреймов и хранятся на диске в двух файлах типа .DEF и .ТХТ.
В файле типа .DEF содержится информация, которая определяет:
- имя, тип и подтип вновь создаваемой или редактируемой гипотезы;
- априорную вероятность байесовских гипотез либо значение для констант;
- список блокирующих гипотез для редактируемой гипотезы, представленный в виде последовательности имен этих гипотез и соответствующих им нижних и верхних границ фактора уверенности (НФУ и ВФУ);
- список гипотез, являющихся посылками для редактируемой гипотезы, представленный в виде последовательности имен этих гипотез и соответствующих им WPF и WAF.
Информация в файле типа .ТХТ предназначена для организации диалога с пользователем.
Для каждой прикладной задачи в системе ДИЭКС создаются файлы восьми типов:
- .DEF, .ТХТ – исходные файлы базы знаний, необходимые для генерации и модификации файлов .DBA, .TXT;
- .DBA, .TXT – файлы БЗ, необходимые для проведения консультации;
- .LST – листинг базы знаний;
- .SCR – файл БЗ, необходимый для генерации и модификации файла .FCT;.
- .FCT – исходный файл базы фактов.
Система ДИЭКС состоит из трех основных модулей: генератора базы правил; генератора базы фактов; подсистемы консультаций.
Генератор базы правил дает возможность создавать, корректировать и документировать базы правил с проверкой синтаксических ошибок.
Генератор базы фактов создает программу управления базой фактов из базы правил, которая позволяет вводить и сохранять необходимые для консультаций фактические данные об объектах. Факты в базе представлены в виде фреймов.
База правил в совокупности с базой фактов составляют базу знаний для конкретной предметной области. Подсистема консультаций дает возможность проводить отладку базы знаний, а также проводить консультации по отдельным приложениям и их использованию.
Генератор баз правил содержит следующие подсистемы: редактор правил, текстовый процессор, компилятор правил и подсистему вывода листинга базы правил.
1.2 DyNet
DyNet[5] – продукт компании ATA, занимающейся разработкой программного обеспечения, баз знаний.
DyNet – программа для создания/редактирования баз знаний. Огромный плюс данного приложения то, что вся работа со знаниями происходит визуально.
Ядро программы написано на языке программирования Java. Это позволяет использовать DyNet на многих платформах. Приложение обладает хорошим анализатором и словарём, давая пользователю уверенность, что анализ любого текста будет произведён качественно. Способно выделить основные аспекты сетевой структуры, избавляя пользователей от избыточной информации. Есть функция масштабирования, благодаря которой можно сосредоточиться на важных элементах, оставляя менее важные без внимания.
В качестве содержимого узлов можно использовать строковую информацию, графическую и числовую (рисунок 1.1).
Рисунок 1.1 – Программа DyNet
1.3 Semantic network of Flickr user tags
CiroCattuto написал программу Semantic network of Flickr user tags[4], которая автоматически строит и визуализирует сеть семантических отношений между атрибутами, которые пользователи прикрепляют к своим фотографиям. Результат приложения – ориентированных граф, который хранится в формате dot.
В программе предусмотрено несколько тонкостей, что бы сделать граф «читаемым». Часто используемые узлы подсвечены яркими цветами, редко использующиеся – скрыты.
На рисунке 1.2 представлена работоспособность системы SNFUT.
Рисунок 1.2 – Программа SNFUT
1.4 Xebece
Xebece - это многофункциональная программа для визуализации и организации знаний[14].
Она разрабатывалась в рамках open source-проектов Calientra и Ontographics.
Xebece можно использовать для построения насыщенных презентаций, которые позволяют изложить материал компактно и наглядно. Приложение дает возможность дополнить лекции схемами и показать внутреннюю взаимосвязь явлений и событий.
Программу также удобно использовать для организации структурированного хранения документов. Схемы, генерируемые с помощью Xebece, — это не просто картинки. Вы можете помещать на них PDF-файлы или изображения. Файл, генерируемый Xebece (*.cal), инкапсулирует все присоединенные документы.
Возможность интеграции каталогов, создание XML-документов позволяют перевести результаты мозгового штурма в бизнес-материалы, удобные для анализа.
И наконец, главное назначение Xebece — это построение моделей знаний. Программа помогает оптимизировать сбор и представление информации, визуализацию знаний и обмен мнениями, обеспечивая коммуникацию при составлении моделей. На рисунке 1.3 проиллюстрирован пример работы с данной программой.
Рисунок 1.3 – ПрограммаXebece
1.5 FreeMind
FreeMind – свободная бесплатная программа для создания диаграмм связей (правильное название понятия, чаще известного как «карты памяти», «mind maps»)[7]. FreeMind написана на Java и распространяется согласно GNU General Public License. Программа обладает расширенными возможностями экспортирования. Экспорт XHTML позволяет создать карту-схему с разветвленной структурой и ссылками на внешние источники.
Возможности программы:
- наглядность представления информации;
- поддержка импорта и экспорта в форматы: png, jpeg, xml, html, svg;
- наглядность полученных карт;
- графическое связывание узлов;
- поиск по отдельным ветвям;
- шифрование документа.
Программа может использоваться в следующих областях:
- управление проектами (включая создание структуры подзадач, анализ состояния подзадач и отслеживание времени их исполнения);
- представление структуры проекта (ссылки на необходимые файлы, исполняемые модули, исходные коды, источники информации и т.п.);
- средство проведения интернет-исследований (структуризация результатов поиска);
- организация хранения коллекции небольших записей со структурой ссылок;
- средство брейнсторминга (программа позволяет показать цветом какая ветвь рассуждений открыта, закрыта, не получила развития и т.п.);
- организация небольшой базы данных, которая удобна в случае, если структура данных динамично меняется, или в случае, когда эта структура заранее не известна;
- создание комментированных интернет-закладок (internet favorites).
Работоспособность программы отображена на рисунке 1.4.
Рисунок 1.4 –ПрограммаFreeMind
1.6 Text2mindmap
Text2mindmap — это легкое веб-приложение, которое преобразует текст в ментальную карту. Достаточно ввести структурированный список слов или словосочетаний, после чего сервис построит ментальную карту и отобразит связи между понятиями[15].
Сервис имеет возможности: менять цвет и толщину соединяющих линий, размер и цвет текста. Все связи на карте можно перемещать. Для просмотра схем существует полноэкранный режим просмотра. Можно сохранить готовую схему в файл с расширением JPG.
На рисунке 1.5 изображен графический интерфейс редактора баз знаний Text2mindmap.
Рисунок 1.5 – Интерфейс программы Text2mindmap
2 ПРОЕКТИРОВАНИЕ РЕДАКТОРА ИСХОДНЫХ ТЕКСТОВ БЗ
KBE должен предоставлять те же основные возможности, как и любые другие редакторы, будь они текстовые или графические. В KBE можносоздать, открыть, редактировать или сохранить документ. Так же он предоставляет свой интерфейс для работы с Sc.g текстами.
Рисунок 2.1 – Диаграмма использования
Ключевыми интерфейсами в проекте являются EditorObserverInterface, EditorInterface, EditorFactoryInterface и PluginInterface
EditorObserverInterface – интерфейс, который предоставляет перечисление состояний событий редактора, а также виртуальный метод для обработки событий. Реализует паттерн Observer(Наблюдатель).
EditorInterface предоставляет интерфейс для окна редактора.
Рисунок 2.2 - Интерфейсы окон редакторов
EditorFactoryInterface реализует паттерн Factory(Фабричный метод) для создания множества окон редактора.
Рисунок 2.3 - Интерфейс EditorFactoryInterface
PluginInterface предоставляет интерфейс для плагинов.
Рисунок 2.2 – Диаграмма классов расширения SCg
Ключевые классы в плагине SCg-редактора
SCgObject – базовый класс для любого SCg-объекта(SCgPair, SCgNode, SCgBus и тд). Наследован от QObject и QGraphicsItem, поэтому может быть помещен на SCgScene, так как она в свою очередь отнаследована от QGraphicScene.
SCgAlphabet – хранит в себе свойства SCg-объектов, таких как константность, временность и тд. Используется для правильного отображения SCgNode, SCgPair и так далее.
SCgBaseCommand – класс, который является родителем для всех комманд. Реализует паттерн «Command» и используется в работе SCgUndoStack.
Наследники класса SCgBaseCommand:
- SCgCommandAllContentVisibility – отображение контента у всех SCgNode;
- SCgCommandClone – создание копии объекта SCgObject;
- SCgCommandContentChange – изменение контента у объекта SCgNode;
- SCgCommandContentVisibility – отображение контента у объекта SCgNode;
- SCgCommandCreateBus – создание объекта SCgBus(шины);
- SCgCommandCreateContour – создание объекта SCgContour(контура);
- SCgCommandCreateNode – создание объекта SCgNode;
- SCgCommandCreatePair – создание объекта SCgPair;
- SCgCommandDeleteContour – удаление объекта SCgContour;
- SCgCommandIdtfMove – перемещение идентификатора SCgObject на SCgScene;
- SCgCommandInsert – вставка SCgObject;
- SCgCommandMinimizeContour – минимизация размеров объекта SCgContour;
- SCgCommandObjectDelete – удаление объекта SCgObject;
- SCgCommandObjectIdtfChange – изменение идентификатора объекта SCgObject;
- SCgCommandObjectMove – перемещение объекта SCgObject на SCgScene;
- SCgCommandObjectTypeChange – изменение типа объекта SCgNode или SCgPair;
- SCgCommandSelectedObjectMove – перемещение выделенных объектов SCgObject на SCgScene;
- SCgCommandSwapPairOrient – изменение направления объекта SCgPair.
SCgContent – класс реализующий возможность наличия контента у объекта SCgNode. Работа с контентом осуществляется посредством класса SCgContentFactory, который создает, паттерном «Фабричный метод», диалоговые окна и виджеты для отображения контента.
КлассSCgModeявляетсябазовымклассомдлярежимовSCgScene, реализуетпаттерн «Command». Режими у SCgScene определяют действие, которое следует выполнить при событиях QMouseEvent у SCgScene. Является родителем для классов(режимов):
- SCgBusMode – добавление на SCgScene объекта SCgBus;
- SCgCloneMode – копирование объектов SCgObject;
- SCgInsertMode – вставка объекта SCgNode на SCgScene;
- SCgPairMode – соединение объектов SCgObject объектом SCgPair;
- SCgSelectMode – выделение объектов SCgObject.
3 РАЗРАБОТКА РЕДАКТОРА ИСХОДНЫХ ТЕКСТОВ БЗ
3.1 Инструментарий
В ходе реализации курсовой работы был использован язык программирования С++ с использованием фреймворкаQt[8].
C++ — компилируемый статическитипизированный язык программирования общего назначения.
Поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования[9].
Qt — кросс-платформенный инструментарий разработки ПО на языке программирования C++. Есть также «привязки» ко многим другим языкам программирования: Python — PyQt, PySide; Ruby — QtRuby; Java — QtJambi; PHP —PHP-Qt и другие. Позволяет запускать написанное с его помощью ПО в большинстве современных операционных систем, путём простой компиляции программы для каждой ОС без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.
Так же были использованы такие инструменты как:
Bash (от англ. Bourneagainshell) — усовершенствованная и модернизированная вариация командной оболочки Bourneshell. Одна из наиболее популярных современных разновидностей командной оболочки UNIX. Особенно популярна в среде Linux, где она часто используется в качестве предустановленной командной оболочки[12].
Fedora (англ. «мягкая фетровая шляпа», произносится «федо́ра», ранее FedoraCore) — дистрибутив операционной системы GNU/Linux. Этот дистрибутив спонсируется фирмой RedHat и поддерживается сообществом.
Проект служит для тестирования новых технологий, которые в дальнейшем включаются в продукты RedHat и других производителей. Компания RedHat не предоставляет поддержку пользователям Fedora, поддержка осуществляется открытым сообществом[13].
CMake (от англ. crossplatformmake) — это кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода. CMake не занимается непосредственно сборкой, a лишь генерирует файлы управления сборкой из файлов CMakeLists.txt:
- Makefile в системахUnix для сборки с помощью make;
- файлы projects/workspaces (.dsp/.dsw) в Windowsдля сборки с помощью Visual C++;
- проекты XCode в Mac OS X.
Git (произн. «гит») — распределённая система управления версиями файлов. Проект был создан ЛинусомТорвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года. На сегодняшний день поддерживается ДжуниоХамано[11].
GitHub — самый крупный веб-сервис для хостинга IT-проектов и их совместной разработки. Основан на системе контроля версий Git и разработан на RubyonRails и Erlang компанией GitHub, Inc (ранее LogicalAwesome)[9].
Сервис абсолютно бесплатен для проектов с открытым исходным кодом и предоставляет им все возможности (включая SSL), а для частных проектов предлагаются различные платные тарифные планы.
nano — консольный текстовый редактор для UNIX и Unix-подобных операционных систем, основанный на библиотеке curses и распространяемый под лицензией GNUGPL[7].
3.2 Выполненные задания
3.2.1 Шаблоны типовых констуркций
В проекте в папке “construction” содержаться файлы в формате gwf. Эти файлы содержат в себе шаблоны типовых конструкций. Любой из файлов пользователь может загрузить при последовательности: new file-> scg->construction (рисунок 3.1). Данный метод хранения и добавления типовых конструкций является наиболее удобным, т.к. любой, кто работает с редактором KBE может сам добавлять, изменять gwf-файлы.
Рисунок 3.1 – Окно при выборе «new file»
Рисунок 3.2 – Окно при выборе «scg»
При выборе «new» пользователь начнёт создание фрагмента базы знаний с «нуля».
При выборе «construction» пользователю будет представлен список имеющихся шаблонов типовых конструкций (рисунок 3.3).
Рисунок 3.3 – Список доступных шаблонов
Рисунок 3.4 – Загружена 3-ёх элементная конструкция
3.2.2 Написана стартовая страница
В проекте был полностью переписан класс GuideDialog. В заголовочном файле, помимо конструктора класса и деструктора, подключен класс QTextBrowser и объявлена переменная, использование которой и будет отображать в стартовом окне информацию, представленную в формате html (рисунок 3.5). В заголовочном файле также объявляются два слота. Первый – showStateChanged(intstate), второй – openRef(QUrlurl).
- showStateChanged(intstate) используется при изменении состояния checkbox, отвечающего за настройку «показывать ли стартовый диалог при запуске».
- openRef(QUrlurl) – используется для перехода по ссылке (url).
Рисунок 3.4 – Стартовая страница KBE
В файле исходных текстов класса находится код конструктора класса GuideDialog, который наследуется от класса QDialog и создаёт новое окно с фиксированными параметрами. За отображение содержания стартового окна отвечает экземпляр класса QTextBrowser. Содержание представляет собой html-страничку (с подключенным к ней CSS-файлом) с описанием новых возможностей KBE, описанием основных возможностей, а также со ссылками на блог проекта OSTIS, сайт ostis.net, лицензию, лог изменений, readme файл и пошаговую инструкцию по созданию sc.g–текстов. Каждая из этих ссылок открывается в браузере по умолчанию компьютера пользователя.
Рисунок 3.5 – Страница с логом изменений
Рисунок 3.6 – Пошаговая инструкция по созданию sc.g-текстов
3.2.3 Ошибка, приводящая к незапланированному закрытию приложения
При поиске в scg-файле, если узел по заданному идентификатору был не найден, то кнопки «следующий» и «предыдущий» оставались кликабельными (рисунок 3.7). В данной ситуации при нажатии на кнопку «следующий» прекращалась работа приложения с ошибкой (рисунок 3.8). В результате моей работы, данная ошибка была исправлена, а кнопка «следующий», при отсутствии результата, становится некликабельной (рисунок 3.9).
Рисунок 3.7 – Результат поиска
Рисунок 3.8 – Прекращение работы приложения
Рисунок 3.9 – Решение проблемы
Так же приложение завершалось с ошибкой доступа при обращении к памяти, когда пользователь перебирал все узлы путём «поиска следующего» (рисунок 3.10).
Рисунок 3.10 – Ошибка в приложении
В такой ситуации было решено оповестить пользователя о проблеме, возникшей в результате данных действий и инициировать «мирное» завершение программы (рисунок 3.11).
Рисунок 3.11 – Информационное сообщение
ЗАКЛЮЧЕНИЕ
В ходе работы над курсовым проектом мною было выполнены задания, которые ставились в рамках курсового проекта. Была исправлена ошибка, приводящая к закрытию приложения. Добавлена возможность загрузки шаблонов типовых конструкций из внешних файлов.
Помимо этого, в результате работы нашей команды, в редактор исходных текстов баз знаний были внесены следующие изменения:
- Добавили возможность выбора типа узлов и дуг по умолчанию.
- Создана документация по sc.g , sc.n, sc.s языкам.
- Реализовали механизм упрощённого создания типовых трёхэлементных конструкций.
- Изменили параметр прозрачности sc.g - контура.
- Были добавлены всплывающие подсказки для каждого из основных объектов sc.g текста с подробным описанием объекта.
- Добавлена команда отмены выделения.
- Реализовали альтернативный вариант выбора типа элемента.
- Реализовали механизм упрощённого создания типовых пятиэлементных конструкций.
- Исправили Cmake правила автоматической кроссплатформенной сборки.
- Исправлена кодировка исходных файлов sc.g-плагина.
- Добавлена возможность изменения размера текста идентификатора в sc.g-плагине.
БИБЛИОГРАФИЧЕСКИЙ УКАЗАТЕЛЬ
1. KBE [Электронный ресурс]. – Режим доступа: https://github.com/deniskoronchik/kbe/ – Дата доступа: 01.04.2014.
2. OSTIS [Электронный ресурс]. – Режим доступа: http://www.ostis.net/ – Дата доступа: 01.04.2014.
3. Оболочка ДИЭКС [Электронный ресурс]. – Режим доступа: http://www.lnup.ru/dieks/ – Дата доступа: 01.04.2014.
4. Компьютерная система Semantic network of Flickr user tags [Электронный ресурс]. – Режим доступа: http://www.visualcomplexity.com/ – Дата доступа:01.04.2014.
5. Компьютерная система DyNet [Электронный ресурс]. – Режим доступа: http://dunet.du.edu/ – Дата доступа:01.04.2014.
6. QtProject [Электронный ресурс]. – Режим доступа: http://qt-project.org/ – Дата доступа: 01.04.2014.
7. Справочно-информационный портал Википедия [Электронный ресурс]. – Режим доступа: http://ru.wikipedia.org – Дата доступа: 01.04.2014.
8. Github [Электронный ресурс]. – Режим доступа: https://github.com/ - Дата доступа: 01.04.2014.
9. Учебник по работе с Git [Электронный ресурс]. – Режим доступа: http://www.git-scm.com/book/ - Дата доступа: 01.04.2014.
10. Документация по Qt[Электронный ресурс]. – Режим доступа: http://doc.crossplatform.ru/qt/ –Дата доступа: 01.04.2014
11. Документация по CMake[Электронный ресурс]. – Режим доступа: http://www.cmake.org/cmake/help/documentation.html –Дата доступа: 01.04.2014
12. Учебник по работе с Bash[Электронный ресурс]. – Режим доступа: http://www.gnu.org/software/bash/manual/bashref.html –Дата доступа: 01.04.2014
13. FedoraProject[Электронный ресурс]. – Режим доступа: http://fedoraproject.org/–Дата доступа: 01.04.2014
14. Xebece [Электронный ресурс]. – Режим доступа: http:// xebece.sourceforge.net/– Дата доступа: 01.04.2014.
15. Text2MindMap [Электронный ресурс]. – Режим доступа: http://www.text2mindmap.com/ – Дата доступа: 01.04.2014.
ПРОЕКТИРОВАНИЕ РЕДАКТОРА ИСХОДНЫХ ТЕКСТОВ БАЗ ЗНАНИЙ
Курсовая работа по предмету «Программирование»