Научная статья на тему 'Разработка и реализация системы представления гибридных знаний knowledge. Net'

Разработка и реализация системы представления гибридных знаний knowledge. Net Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
185
49
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Новиков А. В.

Проработаны и задокументированы теоретические аспекты Knowledge.NET. Разработанный прототип системы управления знаниями Knowledge.NET (http://www.knowledge-net.ru) может быть использован для создания широкого круга интеллектуальных решений. Язык Knowledge.NET интегрирован в среду разработки MS Visual Studio 2005. Поддерживается синтаксическая раскраска исходного кода. Библиотека классов Knowledge. NET предоставляет доступ к наборам правил через специализированные интерфейсы, что позволяет инженерам знаний разрабатывать свои собственные машины вывода. В настоящее время ведутся работы по развитию и практическому внедрению системы. Библиогр. 17 назв.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Implementation of knowledge-management toolkit Knowledge.NET

The paper describes knowledge-management toolkit for the platform Microsoft.NET. The paper proposes an extension of C# by hybrid knowledge representation language based on the concept of ontology. The paper outlines a concept and principles of the proposed toolkit.

Текст научной работы на тему «Разработка и реализация системы представления гибридных знаний knowledge. Net»

А. В. Новиков

РАЗРАБОТКА И РЕАЛИЗАЦИЯ СИСТЕМЫ ПРЕДСТАВЛЕНИЯ ГИБРИДНЫХ ЗНАНИЙ KNOWLEDGE.NET

1. Введение. Инженерия знаний - одно из важных направлений в области современного программирования, занимающееся развитием языков, методов и систем представления знаний с помощью компьютеров. Данное направление получило развитие в 1950-х годах как один из разделов искусственного интеллекта. Оказалось, что при решении задач творческого характера необходимо не только разрабатывать программы, реализующие некоторые процедуры и алгоритмы (например, стратегию поиска решения в глубину), но и явным образом хранить и пополнять базы знаний, содержащих информацию, нужную для решения задач в заданной предметной области. Таким образом, знания, необходимые для решения нетривиальных практических задач, часто носят гибридный характер. Обычно выделяют следующие виды знаний:

• процедурные знания - это программные реализации алгоритмов и типовых процедур решения задач. Современные языки программирования, такие как С#, Java, позволяют удобно описывать процедурные знания с высокой степенью выразительности;

• концептуальные знания - определяют концепции предметной области и отношения между ними;

• фактуальные знания - устанавливают конкретные факты и связи между ними;

• эвристические знания - неформальные правила рассуждений, отражающие практический опыт решения задач в данной проблемной области.

Для представления каждого из вышеперечисленных видов знаний удобно использовать определенную форму представления знаний. Среди них такие:

1) продукции - представляют знания в виде набора правил: ЕСЛИ условие ТО действие. Набор правил используется для вывода некоторого целевого утверждения. Продукции удобны для представления эвристических знаний. Пролог [1] - один из наиболее широко известных языков логического программирования для описания эвристических знаний;

2) фреймы - представляют знания в виде иерархических структур. Фрейм содержит в себе набор слотов и может быть унаследован от других фреймов. Значение каждого из слотов может быть как простым типом, так и ссылаться на другой фрейм. Фреймовый подход был предложен М. Minsky [2] (США) в 1970-х годах. Одна из наиболее известных экспертных систем (ЭС), реализующих фреймовую структуру представления данных, это система КЕЕ (Knowledge Engineering Environment) [3];

3) онтологии. Термин «онтология» был заимствован из философии в самом начале 1990-х годов. Наиболее широко известное определение онтологии было сформулировано в работе [4, с. 1]: «Онтология есть явная спецификация концептуализации». Другими словами, онтология - это описание предметной области в терминах ее концептов и их связей. Наиболее популярным языком описания онтологий является OWL [5], разработанный W3C консорциумом. Также в Лаборатории экспертных систем (Knowledge Systems Laboratory) Стэндфордского университета был создан

© А. В. Новиков, 2008

визуальный редактор Protégé [6], который позволяет представлять в графическом виде и редактировать базы знаний, описанные на языке OWL. Онтологии дают возможность эффективно описывать фактуальные и концептуальные знания. Методы представления знаний получили особенно широкое распространение начиная с 1970-х годов, когда весьма популярным направлением искусственного интеллекта стали экспертные системы (expert systems) - интеллектуальные программы, основанные на использовании отдельно хранимой, пополняемой базы знаний о предметной области и играющие в данной области роль эксперта, умеющего решать в ней, как правило, достаточно узкий, ограниченный применимостью конкретных, представленных в базе знаний, крут задач диагностики, планирования, прогнозирования и т. д.

Развитие методов и инструментов представления знаний и их последующего анализа приобретает особую актуальность в связи с активным ростом глобальной сети Интернет. В настоящее время Интернет содержит более 7 млрд документов, которые используют более 300 млн пользователей в разных частях света, и объем информации продолжает расти. Все это делает невероятно сложными задачи классификации, организации поиска и доступа к релевантной информации.

В п. 2 рассматриваются проблемы интеграции методов инженерии знаний и программной инженерии, а также подход, используемый в системе Knowledge.NET [7-10] для решения данных проблем. В п. 3 кратко описываются принципы построения и компоненты системы Knowledge.NET. В п. 4 формулируются основные достижения и планы развития системы Knowledge.NET.

2. Проблема интеграции методов инженерии знаний и программной инженерии. Методы и технологии, используемые для инженерии знаний, существенно отличаются от инструментария, применяемого в инженерии программного обеспечения. Основными языками программирования в области инженерии знаний являются Lisp и Пролог. Такой выбор мотивируется удобством их использования в задачах искусственного интеллекта. В то же время данные языки имеют достаточно непривычную семантику для обычных программистов, которые применяют в работе, как правило, процедурные или объектно-ориентированные языки программирования (С, С#, Java и др.). Таким образом, к настоящему времени образовался существенный разрыв между инженерией знаний и инженерией программного обеспечения. Сложно найти специалиста, который в совершенстве владел бы как объектно-ориентированными, так и логическими языками программирования. Однако на практике часто возникает необходимость использовать именно сочетание методов программной инженерии и методов инженерии знаний. Например, задача оптимальной загрузки операторов контакт-центра при обзвоне по списку телефонных номеров (predictive outbound campaigns) требует применения алгоритмических методов дискретного программирования совместно с методами искусственного интеллекта. Описанный семантический разрыв между методами инженерии программ и инженерии знаний все более препятствует успешному решению многих реальных практических задач с помощью компьютеров и, по нашему мнению, должен быть преодолен в будущих системах. В связи с этим в лаборатории проф. В. О. Сафонова разрабатываются методы интеграции инженерии знаний и инженерии программ. Впервые данная интеграция была реализована в языке ТурбоЭксперт (1991 г.) [11] - расширении Турбо-Паскаля средствами представления гибридных знаний. Позднее был разработан язык C# Expert (2004 г.) [12] - расширение языка Сф средствами представления фреймовых и продукционных знаний, который лег в основу Knowledge.NET. Только сочетание методов и конструкций «традиционного» программирования (т. е. инженерии программ) с методами и конструкциями

инженерии знаний в одной системе программирования (платформе для разработки программ) позволит, наконец, создавать с их помощью гибкие, удобные, эффективные, понятные пользователю и адекватные для сопровождения и развития интеллектуальные решения (intelligent solutions) для реальных практических задач. Исходя из таких требований, мы разработали систему представления гибридных знаний Knowledge.NET для платформы Microsoft .NET 2.0. В п. 3 рассмотрим основные компоненты системы.

3. Архитектура системы Knowledge.NET

3.1. Интеграция в MS Visual Studio 2005. Так же, как и система Aspect.NET [13, 14], созданная в лаборатории Java-технологий проф. В. О. Сафонова, Knowledge.NET интегрируется в среду разработки MS Visual Studio .NET 2005 в виде расширения (add-in). Таким образом, разработчик может пользоваться полным спектром инструментов, предоставляемых MS Visual Studio 2005, при работе с исходным кодом, отладке и профилировании программ, написанных на Knowledge.NET. Следующие компоненты интегрируются в среду разработки MS Visual Studio .NET 2005:

1) редактор знаний Knowledge Editor;

2) раскраска кода и IntelliSense для языка Knowledge.NET;

3) новый тип проекта Knowledge.NET;

4) конвертер в формат KIF.

3.2. Язык представления гибридных знаний. Язык Knowledge.NET является расширением языка Сф средствами представления гибридных знаний, основанными на концепции онтологии, предложенной в начале 1990-х годов в работах Стэндфорд-ского университета (США). Онтология - это разновидность спецификации предметной области, выраженной в терминах ее концептов (понятий) и их взаимосвязей. В качестве основы языка представления знаний Knowledge.NET используются фреймовые языки Сф Expert и Turbo Expert. Однако, в отличие от обычных фреймовых языков, Knowledge.NET расширен языковыми конструкциями для представления онтологических знаний. Семантика онтологии Knowledge.NET схожа с концепцией языка представления знаний OWL. Также следует отметить, что в Knowledge.NET используется терминология, принятая в онтологических системах (Концепт-Свойство-Экземиляр), вместо терминологии фреймовых систем (Фрейм-Слот-Экземпляр).

3.3. Общая структура программы на Knowledge.NET. Программа на Knowledge.NET состоит из таких частей:

1) исходный код Сф;

2) исходный код, специфичный Knowledge.NET (Концепты, Свойства, Экземпляры) .

Исходный код на Сф разделяется с исходным кодом на Knowledge.NET с помощью ключевого слова ”#ontology”:

using System;

// C# native code namespace HelloWorld { class Hello {

[STAThread]

static void Main(string[] args)

{

Console.out.WriteLine ("Vehicle: " + Lada.HasName);

}

}

}

// Knowledge.NET specific code #ontology "Vehicles" #concepts Vehicle { is_subconcept_of Thing;

some_values_from HasName string; cardinality HasName 1;

}

#properties functional datatype property HasName { domain Vehicle; range string;

}

functional datatype property HasMaxSpeed { domain Vehicle; range uint;]

}

#individuals individual Lada { is_a Vehicle;

HasName = "Lada";

} #end_of_ontology "Vehicles

3.4■ Язык запросов. Он позволяет выбирать из онтологии экземпляры по некоторому заданному критерию (запросу). Все запросы можно разделить на следующие основные типы:

1. Запросы, критерий которых основан на некоторой коллекции концептов и значениях их свойств.

2. Запросы, критерий которых основан только на значениях свойств без указания концептов.

3. Запросы, критерий которых содержит только перечисление концептов без указания свойств и их значений.

Следует отметить, что сами по себе запросы не являются онтологическими знаниями. Язык запросов скорее это инструмент, который позволяет осуществлять экспертную деятельность на заданной онтологии.

В качестве примера рассмотрим запрос первого типа в онтологии Vehicles (транспортные средства): «Все транспортные средства, максимальная скорость которых больше, чем 100 км/ч»:

Individuals of concepts Vehicle where HasMaximumSpeed > 100

Результатом его выполнения будет набор экземпляров концепта Vehicle (транспортное средство), у которых значение свойства HasMaximumSpeed (ИмеетМаксималъную Скорость) превышает 100 км/ч.

Язык запросов поддерживается с помощью класса QueryEngine, определенного в библиотеке классов Knowledge.NET.

3.5. Наборы правил. Набор правил задает совокупность продукций, используемых для логического вывода. Основные компоненты набора правил:

1) локальные переменные, объявленные в наборе правил в Сф нотации;

2) целевая переменная;

3) правила, составляющие набор.

Форма представления набора правил близка к принятой в системе GURU [15]. Контекстом набора правил является онтология, в которой объявлен данный набор.

Библиотека классов Knowledge.NET предоставляет доступ к наборам правил через специальные интерфейсы, что позволяет разработчику при необходимости реализовать собственные машины вывода.

3.6. Редактор знаний. Помимо языка представления знаний Knowledge.NET, мы также предлагаем пользователю графический редактор и визуализатор знаний Knowledge Editor. С его помощью инженер знаний может просматривать базу знаний, редактировать и создавать новые онтологии в интерактивном режиме. Редактор знаний разработан Д. Г. Черепановым.

3.7. Конвертор в формат KIF. Конвертор в формат KIF (Knowledge Interchange Format) [7] позволяет получить доступ к базе знаний Knowledge.NET из внешних систем, поддерживающих традиционный формат KIF [16]. Конвертор разработан М. В. Сигалиным.

3.8. Knowledge Prospector. Knowledge Prospector [7] дает возможность извлекать знания из текстов на естественных языках. Общая схема работы Knowledge Prospector:

1) морфологический анализ исходного текста и построение множества сущностей;

2) семантический анализ множества сущностей и построение графа знаний;

3) анализ графа знаний.

Knowledge Prospector разработан А. Л. Смоляковым.

3.9. Компиляция программы. Написанная на Knowledge.NET программа конвертируется с помощью специального метакомпилятора (конвертора) в программу на Сф. Полученная программа, в свою очередь, компилируется компилятором Сф в запускаемый файл платформы .NET. При последней стадии используется библиотека Knowledge.Core.dll, поставляемая в составе системы Knowledge.NET.

Общая схема работы конвертора:

1. Синтаксический разбор программы на Knowledge.NET и построение промежуточного кода. Промежуточное представление используется не только метакомпилятором, но и другими компонентами системы, такими как KIF конвертор и Knowledge Editor. Синтаксический анализатор написан с помощью инструмента построения компиляторов «СоСо/R Compiler Generator» [17]. Используется грамматика Сф, расширенная конструкциями языка Knowledge.NET.

2. Генерация программы Сф из промежуточного кода.

При генерации результирующего кода все элементы базы знаний (концепты, свойства, наборы правил и т. д.) представляются в виде объектов.

4. Заключение. В настоящее время детально проработаны и задокументированы теоретические аспекты Knowledge.NET, создан рабочий прототип системы. Все материалы доступны на Интернет-сайте проекта [7]. Полученные результаты были представлены на международных научных конференциях, а также опубликованы в зарубежных и отечественных изданиях.

В будущем планируется реализация поддержки аспектов по средствам интеграции Knowledge.NET с Aspect.NET.

Summary

Novikov А. V. Implementation of knowledge-management toolkit Knowledge.NET.

The paper describes knowledge-management toolkit for the platform Microsoft .NET. The paper proposes an extension of С# by hybrid knowledge representation language based on the concept of ontology. The paper outlines a concept and principles of the proposed toolkit.

Литература

1. Deransart P., Ed-Dbali A., Cervoni L. Prolog: The Standard. Berlin et al.: Springer-Verlag, 1996. 272 p.

2. Minsky M. A framework for representing knowledge. Cambridge: MIT-AI Laboratory Memo 306, 1974. 76 p.

3. Florentin J. J. Software Review: KEE // Expert Systems. 1987. Vol. 4, N 2. P. 118-120.

4. Gruber T. R. A translation approach to portable ontology specifications. Stanford: Stanford University Computer science department, knowledge systems laboratory 1993. 24 p.

5. OWL Web Ontology Overview // W3C Consortium // http://www.w3.org/ TR/owlfeatures/.

6. Horridge М., Knublauch H., Rector A. et al. A practical guide to building OWL ontologies using the Protege-OWL plugin and CO-ODE tools. 1st ed. Manchester: The University of Manchester, 2004. 117 p.

7. Система управления знаниями Knowledge.NET // http://www.knowledge-net.ru.

8. Safonov V., Novikov V. et al. Knowledge.NET ontology-based knowledge management toolkit for Microsoft.NET //.NET Technologies 2006. Plzen, Czech Republic, 2006. P. 1-4. ISBN 80-86943-12-7.

9. Сафонов В. О., Новиков А. В., Сигалин М. JI. и др. Интеграция методов программной инженерии и инженерии знаний: система управления знаниями Knowledge.NET (ч. I) // Компьютерные инструменты в образовании. 2005. № 5. С. 52-68.

10. Сафонов В. О., Новиков А. В., Сигалин М. Л. и др. Интеграция методов программной инженерии и инженерии знаний: система управления знаниями Knowledge.NET (ч. II) // Компьютерные инструменты в образовании. 2005. № 6. С. 34-46.

11. Сафонов В. О. ТИП-технология и ее применение при разработке компиляторов и экспертных систем для высокопроизводительных вычислительных комплексов. Л.: Изд-во Ле-нингр. ун-та, 1991. 123 с.

12. Новиков А. В. Сф Expert - расширение языка Сф средствами представления знаний: Дипломная работа. СПб.: С.-Петерб. ун-т, математико-механический факультет, 2004. 39 с. // www.knowledge-net.ru.

13. Safonov V. Aspect.NET: a new approach to aspect-oriented programming j j NET Developer’s Journal. 2003. N 4. http://dotnet.sys-con.com/read/113337.htm.

14. Safonov V. Aspect.NET: concepts and architecture j j NET Developer’s Journal. 2004. N 10. http://dotnet.sys-con.com/read/46616.htm.

15. Building expert systems using GURU. Savitar Corporation. 2004. 162 p.

16. KIF language specification j j http://logic.stanford.edu/kif/dpans.html.

17. Mossenbock H., Coco R. A generator for fast compiler front-ends. Techn. Report. ETH Zurich, 1990. 28 p.

Статья рекомендована к печати проф. С. В. Чистяковым.

Статья принята к печати 21 февраля 2008 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.