• Nebyly nalezeny žádné výsledky

RichardWerner Frameworkprotvorbudiagnostick´ehoznalostn´ıhosyst´emu Bakal´aˇrsk´apr´ace

N/A
N/A
Protected

Academic year: 2022

Podíl "RichardWerner Frameworkprotvorbudiagnostick´ehoznalostn´ıhosyst´emu Bakal´aˇrsk´apr´ace"

Copied!
67
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

Ing. Karel Klouda, Ph.D.

vedoucí katedry doc. RNDr. Ing. Marcel Jiřina, Ph.D.

děkan

ZADÁNÍ BAKALÁŘSKÉ PRÁCE

Název: Framework pro tvorbu diagnostického znalostního systému

Student: Richard Werner

Vedoucí: Ing. Magda Friedjungová Studijní program: Informatika

Studijní obor: Znalostní inženýrství

Katedra: Katedra aplikované matematiky Platnost zadání: Do konce zimního semestru 2019/20

Pokyny pro vypracování

Student provede rešerši v oblasti znalostních (tj. expertních) systémů, zejména diagnostických. Na základě získaných teoretických znalostí student navrhne framework pro tvorbu znalostních systémů, který bude sloužit jako podpora pro výuku předmětu Znalostní systémy na FIT ČVUT (BI-ZNS). Framework se bude skládat ze šablon tříd a grafického rozhraní. Framework umožní implementaci jednotlivých slotů jako je reprezentace znalostí, inferenční mechanismus, neurčitost a vysvětlovací modul. Student návrh implementuje v jazyce Java a demonstruje jeho použití na vhodném problému.

Seznam odborné literatury

Dodá vedoucí práce.

(2)
(3)

Bakal´ aˇrsk´ a pr´ ace

Framework pro tvorbu diagnostick´ eho znalostn´ıho syst´ emu

Richard Werner

Katedra aplikovan´e matematiky

Vedouc´ı pr´ace: Ing. Magda Friedjungov´a

(4)
(5)

Podˇ ekov´ an´ı

Chtˇel bych podˇekovat sv´e vedouc´ı Ing. Magdˇe Friedjungov´e za trpˇelivost a cenn´e rady v pr˚ubˇehu veden´ı t´eto pr´ace. Tak´e dˇekuji Ing. Zdeˇnku Bal´akovi za konzultace a rady t´ykaj´ıc´ı se zejm´ena implementace.

D´ale dˇekuji sv´e rodinˇe a pˇr´atel˚um za veˇskerou podporu bˇehem m´eho ba-

(6)
(7)

Prohl´ sen´ı

Prohlaˇsuji, ˇze jsem pˇredloˇzenou pr´aci vypracoval(a) samostatnˇe a ˇze jsem uvedl(a) veˇsker´e pouˇzit´e informaˇcn´ı zdroje v souladu s Metodick´ym pokynem o etick´e pˇr´ıpravˇe vysokoˇskolsk´ych z´avˇereˇcn´ych prac´ı.

Beru na vˇedom´ı, ˇze se na moji pr´aci vztahuj´ı pr´ava a povinnosti vypl´yvaj´ıc´ı ze z´akona ˇc. 121/2000 Sb., autorsk´eho z´akona, ve znˇen´ı pozdˇejˇs´ıch pˇredpis˚u.

V souladu s ust.§46 odst. 6 tohoto z´akona t´ımto udˇeluji nev´yhradn´ı opr´avnˇen´ı (licenci) k uˇzit´ı t´eto moj´ı pr´ace, a to vˇcetnˇe vˇsech poˇc´ıtaˇcov´ych program˚u, jeˇz jsou jej´ı souˇc´ast´ı ˇci pˇr´ılohou, a veˇsker´e jejich dokumentace (d´ale souhrnnˇe jen

”D´ılo“), a to vˇsem osob´am, kter´e si pˇrej´ı D´ılo uˇz´ıt. Tyto osoby jsou opr´avnˇeny D´ılo uˇz´ıt jak´ymkoli zp˚usobem, kter´y nesniˇzuje hodnotu D´ıla, a za jak´ymkoli

´

uˇcelem (vˇcetnˇe uˇzit´ı k v´ydˇeleˇcn´ym ´uˇcel˚um). Toto opr´avnˇen´ı je ˇcasovˇe, teri- tori´alnˇe i mnoˇzstevnˇe neomezen´e. Kaˇzd´a osoba, kter´a vyuˇzije v´yˇse uvedenou licenci, se vˇsak zavazuje udˇelit ke kaˇzd´emu d´ılu, kter´e vznikne (byt’ jen zˇc´asti) na z´akladˇe D´ıla, ´upravou D´ıla, spojen´ım D´ıla s jin´ym d´ılem, zaˇrazen´ım D´ıla do d´ıla souborn´eho ˇci zpracov´an´ım D´ıla (vˇcetnˇe pˇrekladu), licenci alespoˇn ve v´yˇse uveden´em rozsahu a z´aroveˇn zpˇr´ıstupnit zdrojov´y k´od takov´eho d´ıla ale- spoˇn srovnateln´ym zp˚usobem a ve srovnateln´em rozsahu, jako je zpˇr´ıstupnˇen zdrojov´y k´od D´ıla.

(8)

Cesk´ˇ e vysok´e uˇcen´ı technick´e v Praze Fakulta informaˇcn´ıch technologi´ı

c 2018 Richard Werner. Vˇsechna pr´ava vyhrazena.

Tato pr´ace vznikla jako ˇskoln´ı d´ılo na ˇCesk´em vysok´em uˇcen´ı technick´em v Praze, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena pr´avn´ımi pˇredpisy a mezin´arodn´ımi ´umluvami o pr´avu autorsk´em a pr´avech souvisej´ıc´ıch s pr´avem autorsk´ym. K jej´ımu uˇzit´ı, s v´yjimkou bez´uplatn´ych z´akonn´ych licenc´ı a nad r´amec opr´avnˇen´ı uveden´ych v Prohl´aˇsen´ı na pˇredchoz´ı stranˇe, je nezbytn´y sou- hlas autora.

Odkaz na tuto pr´aci

Werner, Richard. Framework pro tvorbu diagnostick´eho znalostn´ıho syst´emu.

Bakal´aˇrsk´a pr´ace. Praha: ˇCesk´e vysok´e uˇcen´ı technick´e v Praze, Fakulta in- formaˇcn´ıch technologi´ı, 2018.

(9)

Abstrakt

Tato pr´ace ˇreˇs´ı n´avrh a implementaci frameworku pro tvorbu znalostn´ıch di- agnostick´ych syst´em˚u. Pro framework je pouˇzit Java projekt s knihovnami JavaFX pro GUI. Vytvoˇren´e ˇreˇsen´ı poskytuje rozhran´ı pro znalostn´ı syst´em, ve kter´em lze jednotliv´e moduly vytvoˇrit nez´avisle na sobˇe. Je tak zajiˇstˇeno spr´avn´e fungov´an´ı syst´emu s pˇredem nespecifikovanou implementac´ı. Pro vˇet- ˇsinu modul˚u jsou vypracov´any uk´azkov´e implementace, kter´e je moˇzn´e v sys- t´emu vyuˇz´ıt, nebo se jimi inspirovat ve vlastn´ı tvorbˇe. ´Uˇcelem t´eto pr´ace je zkvalitnˇen´ı v´yuky student˚um bakal´aˇrsk´eho pˇredmˇetu Znalostn´ı syst´emy na FIT ˇCVUT a zjednoduˇsen´ı pr˚ubˇehu v´yuky samotn´ym vyuˇcuj´ıc´ım.

Kl´ıˇcov´a slova framework, znalostn´ı syst´em, Java, v´yuka, BI-ZNS

(10)
(11)

Abstract

This thesis deals with the design and implementation of a framework for creating knowledge-based diagnostic systems. The framework is designed as a Java project with the JavaFX libraries for the GUI. The solution provides an interface for a knowledge-based system in which the individual modules can be implemented independently on each other. This ensures the proper functioning of the system with a previously unspecified implementation. There are implementations for most of the modules, which may be used in the system or serve as an inspiration. The goal of this thesis is to improve the way students are taught at BI-ZNS lectures at FIT CTU in Prague and to simplify the teaching process for the teachers themselves.

Keywords framework, knowledge-based system, Java, lectures, BI-ZNS

(12)
(13)

Obsah

Uvod´ 1

I Teoretick´a ˇc´ast 3

1 Znalostn´ı syst´emy 5

1.1 Charakteristika ES . . . 5

1.2 Klasifikace a aplikace typick´ych ES . . . 6

1.3 Struktura ES . . . 8

1.3.1 B´aze znalost´ı . . . 8

1.3.2 Reprezentace znalost´ı . . . 9

1.3.3 B´aze dat . . . 12

1.3.4 Inferenˇcn´ı mechanismus . . . 12

1.3.5 Vysvˇetlovac´ı modul . . . 16

1.4 Tvorba ES . . . 16

1.5 Reˇserˇse bl´ızk´ych ˇreˇsen´ı . . . 17

II Praktick´a ˇc´ast 19 2 N´avrh 21 2.1 Modul b´aze znalost´ı . . . 22

2.2 Modul b´aze dat . . . 22

2.3 Modul inferenˇcn´ıho mechanismu . . . 22

2.4 Modul neurˇcitosti . . . 23

2.5 Modul uˇzivatelsk´eho rozhran´ı . . . 23

3 Implementace 25 3.1 Pomocn´e datov´e struktury . . . 25

3.1.1 Element interface a jeho implementace . . . 25

(14)

3.1.2 Relation enum . . . 26

3.1.3 Tˇr´ıda Answer . . . 27

3.2 Rozhran´ı b´aze znalost´ı . . . 28

3.2.1 S´emantick´a s´ıt’ . . . 29

3.2.2 Predik´atov´a logika . . . 31

3.2.3 Pravidla . . . 32

3.3 Rozhran´ı b´aze dat . . . 33

3.4 Rozhran´ı inferenˇcn´ıho mechanismu . . . 34

3.5 Rozhran´ı modulu neurˇcitosti . . . 35

3.5.1 Form´at souboru . . . 36

3.6 Uˇzivatelsk´e rozhran´ı . . . 36

4 Testov´an´ı 39 4.1 Testov´an´ı b´aze znalost´ı . . . 39

4.2 Testov´an´ı inferenˇcn´ıho mechanismu . . . 41

4.3 Testov´an´ı uˇzivatelsk´eho rozhran´ı . . . 41

Z´avˇer 43

Literatura 45

A Seznam pouˇzit´ych zkratek 47

B Obsah pˇriloˇzen´eho CD 49

xii

(15)

Seznam obr´ azk˚ u

1.1 Uk´azka jednoduch´e s´emantick´e s´ıtˇe . . . 11

1.2 Znalostn´ı inˇzen´yr jako ”tlumoˇcn´ık“ . . . 17

2.1 Komunikace modul˚u . . . 21

3.1 Element a jeho implementace . . . 26

3.2 V´yˇctov´y typ Relation . . . 27

3.3 Tˇr´ıda Answer . . . 27

3.4 Rozhran´ı BZ a jeho implementace . . . 28

3.5 Pˇr´ıklad s´emantick´e s´ıtˇe z uk´azkov´eho souboru . . . 30

3.6 Rozhran´ı b´aze dat . . . 33

3.7 Rozhran´ı inferenˇcn´ıho mechanismu . . . 34

3.8 Rozhran´ı modulu neurˇcitosti . . . 35

3.9 Rozhran´ı UI . . . 36

(16)
(17)

Seznam tabulek

1.1 Implikace . . . 12 1.2 Dedukce . . . 13

(18)
(19)

Uvod ´

Znalostn´ı syst´emy jsou takov´e syst´emy, kter´e poskytuj´ı rady, rozhodnut´ı a doporuˇcuj´ı ˇreˇsen´ı v konkr´etn´ıch situac´ıch. Jejich zp˚usob v´ypoˇctu a pod´av´an´ı v´ysledk˚u je oproti bˇeˇzn´ym program˚um velice konstruktivn´ı a probl´emy ˇreˇs´ı z nˇekolika ´uhl˚u pohledu experta. V ide´aln´ım pˇr´ıpadˇe je znalostn´ı syst´em schopn´y sv´e kroky k vyvozen´ı pr´avˇe takov´eho v´ysledku vypsat a od˚uvodnit.

V´ysledek pr´ace je urˇcen student˚um FIT ˇCVUT v Praze jako uˇcebn´ı pom˚uc- ka na cviˇcen´ıch pˇredmˇetu Znalostn´ı syst´emy. Slouˇz´ı jako ˇsablona pro vytv´aˇren´ı znalostn´ıch (tj. expertn´ıch) syst´em˚u a je moˇzn´e si v n´ı vyzkouˇset tvorbu z´akladn´ıch stavebn´ıch kamen˚u, ze kter´ych se znalostn´ı syst´em skl´ad´a.

Jelikoˇz jsem t´ımto pˇredmˇetem s´am proˇsel, motivac´ı pro v´ybˇer tohoto t´e- matu bylo m´ıt moˇznost sjednotit a zefektivnit zp˚usob, jak´ym se studenti uˇc´ı o znalostn´ıch syst´emech. Pr´ace pom˚uˇze nejen student˚um, ale i samotn´ym vyuˇcuj´ıc´ım, kter´ym zjednoduˇsˇs´ı pr˚ubˇeh cel´eho semestru.

V t´eto pr´aci se tedy zab´yv´am n´avrhem a implementac´ı frameworku a GUI pro tvorbu znalostn´ıch syst´em˚u, pro kter´e vyuˇz´ıv´am jazyk Java. Ten je vhodn´y pro ´uˇcely v´yuky student˚u FIT ˇCVUT a nebude pˇr´ıliˇs n´aroˇcn´e nav´azat na tento framework studentovou vlastn´ı prac´ı na cviˇcen´ıch.

Pr´ace se skl´ad´a ze dvou ˇc´ast´ı. Prvn´ı je teoretick´a ˇc´ast, kter´a ˇcten´aˇre sezn´am´ı s problematikou expertn´ıch syst´em˚u a to od obecn´ych informac´ı, pˇres rozebr´an´ı jednotliv´ych ˇc´ast´ı expertn´ıho syst´emu, aˇz po aplikaci a tvorbu.

Druh´a je praktick´a ˇc´ast, kter´a se zab´yv´a n´avrhem, implementac´ı a testov´an´ım samotn´eho frameworku. V pr´aci budu pro pojem

”znalostn´ı syst´em“ vyuˇz´ıvat zkratku ES (tzn. expertn´ı syst´em), kter´a je v bˇeˇzn´e praxi zakotven´a.

C´ıl pr´ ace

C´ılem pr´ace je n´avrh frameworku pro v´yuku pˇredmˇetu BI-ZNS na FIT ˇCVUT.

Ten bude slouˇzit jako ˇsablona pro tvorbu expertn´ıho diagnostick´eho syst´emu.

Po dohodˇe s vedouc´ım pr´ace se bude framework skl´adat ze ˇsablon tˇr´ıd, kter´e

(20)

Uvod´

umoˇzn´ı implementaci z´akladn´ıch souˇc´ast´ı expertn´ıho syst´emu, jako jsou: b´aze znalost´ı, inferenˇcn´ı mechanismus, neurˇcitost, uˇzivatelsk´e rozhran´ı a vysvˇelovac´ı ˇcinnost.

Podm´ınkou je, aby byl framework pochopiteln´y. Nesm´ı b´yt pˇr´ıliˇs n´aroˇcn´e pro studenty tuto ˇsablonu uchopit a implementovat potˇrebn´e souˇc´asti. Z to- hoto d˚uvodu bude cel´a pr´ace v jazyce Java, kter´y je pro studenty dobˇre sro- zumiteln´y, protoˇze maj´ı ve stejn´em semestru pˇredmˇet zamˇeˇren´y na progra- mov´an´ı v Javˇe. Tento jazyk patˇr´ı do seznamu dovednost´ı absolventa oboru Znalostn´ı inˇzen´yrstv´ı, pro kter´y je pˇredmˇet BI-ZNS povinn´y.

D´ılˇc´ım c´ılem je veˇsker´y zdrojov´y k´od ˇr´adnˇe zdokumentovat a poskytnout tak budouc´ım uˇzivatel˚um tohoto frameworku dostateˇcnou oporu pˇri vyuˇz´ıv´an´ı.

2

(21)

ˇ ast I

Teoretick´ a ˇ ast

(22)
(23)

Kapitola 1

Znalostn´ı syst´ emy

Expertn´ı syst´emy jsou poˇc´ıtaˇcov´e programy zpracov´avaj´ıc´ı a interpretuj´ıc´ı in- formace od experta, kter´e pod´avaj´ı konstruktivn´ı v´ysledky na z´akladˇe tˇechto znalost´ı a poznatk˚u o dan´e problematice. Patˇr´ı mezi jedny z nejrozˇs´ıˇrenˇejˇs´ıch aplikac´ı umˇel´e inteligence. Jejich ˇcinnost spoˇc´ıv´a v anal´yze, n´avrhu a diagn´oze nejr˚uznˇejˇs´ıch probl´em˚u, k jejichˇz vyˇreˇsen´ı jsou nutn´e rozs´ahl´e znalosti z mnoha obor˚u. Rozd´ıl oproti bˇeˇzn´ym poˇc´ıtaˇcov´ym program˚um tedy spoˇc´ıv´a v proje- vov´an´ı pr´avˇe tˇechto znalost´ı a vyhodnocov´an´ı v´ysledk˚u na z´akladˇe mnoha r˚uzn´ych faktor˚u a krit´eri´ı. V souˇcasnosti jsou pouˇz´ıv´any v mnoha oblastech lidsk´e ˇcinnosti, jako napˇr´ıklad: v technice, ve vˇedˇe, v´yrobˇe, v obchodu apod.

[1, 2]

1.1 Charakteristika ES

Charakteristika ES se vyznaˇcuje n´asleduj´ıc´ımi body [3]:

Oddˇelen´ı BZ a IM Znalosti experta jsou uloˇzeny v b´azi znalost´ı oddˇelenˇe od inferenˇcn´ıho mechanismu, aby bylo moˇzn´e tento inferenˇcn´ı mecha- nismus nasadit na jinou, libovolnou b´azi znalost´ı. Umoˇzˇnuje to tak´e tvoˇrit tzv. pr´azdn´e expertn´ı syst´emy (expert system shells), u kter´ych nen´ı pˇredem d´ano, s jak´ymi informacemi bude infereˇcn´ı mechanismus pracovat.

Neurˇcitost v b´azi znalost´ı V b´azi znalost´ı jsou zachyceny nejen pˇresn´e a jist´e informace, ale tak´e nejr˚uznˇejˇs´ı heuristiky, kter´e expert pˇri sv´e pr´aci s´am vyuˇz´ıv´a. V b´azi se pak objevuj´ı v´yrazy, jako napˇr´ıklad

”vˇetˇsinou“

nebo ”ˇcasto“, kter´e je nutn´e nˇejak´ym zp˚usobem kvantifikovat.

Neurˇcitost v datech Data o konkr´etn´ım pˇr´ıpadu mohou b´yt zat´ıˇzena neurˇci- tost´ı, kterou mohou zp˚usobit nepˇresn´a mˇeˇren´ı, nejist´e v´ysledky nebo subjektivn´ı pohled (napˇr´ıklad odpovˇed’

”nejsp´ıˇs ano“ na ot´azku, zda m´a pacient teplotu).

(24)

1. Znalostn´ı syst´emy

Dialogov´y reˇzim Nejˇcastˇeji jsou expertn´ı syst´emy konstruov´any jako tzv.

”konzultaˇcn´ı syst´emy“. Prob´ıh´a dialog mezi uˇzivatelem a poˇc´ıtaˇcem zp˚u- sobem

”dotaz syst´emu – odpovˇed’ uˇzivatele“ podobnˇe, jako s lidsk´ym expertem.

Vysvˇetlovac´ı ˇcinnost V r´amci zv´yˇsen´ı d˚uvˇery v rozhodovac´ı ˇcinnost ex- pertn´ıho syst´emu by mˇel syst´em poskytovat vysvˇetlen´ı sv´eho uvaˇzov´an´ı.

Vysvˇetlov´ana je nejˇcastˇeji pr´avˇe poloˇzen´a ot´azka, znalost relevatn´ı k nˇe- jak´emu tvrzen´ı nebo pr´avˇe zkouman´a hypot´eza.

Modularita a transparentnost BZ Pro ´uˇcinnost expertn´ıho syst´emu je nut- n´a vysok´a kvalita b´aze znalost´ı. Modularita umoˇzˇnuje snadnou ´upravu a aktualizaci b´aze znalost´ı a transparentnost jej´ı snadnou ˇcitelnost a sro- zumitelnost. Samotn´a tvorba b´aze znalost´ı prob´ıh´a iterativnˇe pˇri konzul- tac´ıch s expertem z dan´e oblasti problematiky, dokud chov´an´ı expertn´ıho syst´emu neodpov´ıd´a pˇredstav´am experta.

1.2 Klasifikace a aplikace typick´ ych ES

Pro n´asleduj´ıc´ı podkapitolu bylo ˇcerp´ano z [2].

Rozmanit´e poˇzadavky na ˇreˇsen´ı probl´em˚u vyˇzaduj´ı r˚uzn´e zp˚usoby repre- zentace znalost´ı a inference. Toto plat´ı hlavnˇe pokud chceme vytvoˇrit expertn´ı syst´em pomoc´ın´astroje pr´azdn´y expertn´ı syst´em. V ide´aln´ım pˇr´ıpadˇe staˇc´ı ta- kov´y pr´azdn´y expertn´ı syst´em

”naplnit“ dan´ymi znalostmi, abychom vytvoˇrili funkˇcn´ı syst´em. Takov´a tvorba ale m˚uˇze fungovat jen tehdy, kdy byl pr´azdn´y syst´em vytvoˇren´y pro stejnou tˇr´ıdu informac´ı a znalost´ı jako ta, kterou chceme pouˇz´ıt. Ale ani v takov´em pˇr´ıpadˇe nen´ı garantovan´e, ˇze vˇse bude fungovat tak, jak si pˇredstavujeme.

N´asleduj´ı definice z´akladn´ıch typ˚u expertn´ıch syst´em˚u, kter´e mohou slouˇzit jako z´akladn´ı rozdˇelen´ı pro pr´azdn´e ES a znalosti, kter´e vyuˇz´ıvaj´ı:

Informativn´ı syst´emy sb´ıraj´ı data od uˇzivatele o dan´em pˇr´ıpadu pomoc´ı dialogu. Tyto informace jsou jeˇstˇe s pomoc´ı znalost´ı samotn´eho syst´emu vyuˇzity k pˇred´an´ı speci´aln´ıch informac´ı uˇzivateli. Syst´emy takov´eho typu pokr´yvaj´ı rozs´ahl´y v´yˇcet aplikac´ı, napˇr´ıklad: v´ybˇer nejvhodnˇejˇs´ı a nej- kratˇs´ı trasy pˇri cestov´an´ı, nejlepˇs´ı nab´ıdka dovolen´e, anal´yzy ekono- mick´ych indik´ator˚u, nebo v´ybˇer mezi r˚uzn´ymi technick´ymi procesy.

Diagnostick´e syst´emy jsou rozs´ahlejˇs´ı syst´emy, kter´e vyˇzaduj´ı v´ıce (druh˚u) informac´ı (at’ uˇz v b´azi znalost´ı, nebo pˇr´ımo od uˇzivatele), a kter´e se daj´ı vyuˇz´ıt v medic´ınˇe ˇci technice k diagn´oze pˇr´ıˇciny nˇejak´eho probl´emu na z´akladˇe namˇeˇren´ych hodnot, symptom˚u nebo chov´an´ı a dalˇs´ıch rele- vantn´ıch informac´ı. Rozd´ıl meziinformativn´ımi a diagnostick´ymi syst´e- my nen´ı na prvn´ı pohled tak zˇrejm´y. Z´akladn´ı charakteristika diagn´ozy oproti jednoduch´e informacinen´ı jen v objemu pravidel a informac´ı, ale 6

(25)

1.2. Klasifikace a aplikace typick´ych ES sp´ıˇse v m´ıˇre zastoupen´ı neurˇcitosti/nejistoty. Z toho d˚uvodu mus´ı takov´e syst´emy obsahovat mechanismus (modul), kter´y pr´avˇe takovou nejistotu bude zpracov´avat a v˚ubec zohledˇnovat.

Opravn´e syst´emy jsou rozˇs´ıˇren´ım diagnostick´ych syst´em˚u. Mus´ı pracovat nejen se znalostmi potˇrebn´ymi k detekov´an´ı nˇejak´eho defektu, ale tak´e s informacemi, jak tento defekt

”opravit“. Jsou typicky vyuˇz´ıv´any ´u- drˇzb´aˇri, kteˇr´ı maj´ı na starost opravy sloˇzitˇejˇs´ıch syst´em˚u/mechanism˚u, pˇr´ıpadnˇe pro automatizovan´e opravy na vesm´ırn´ych zaˇr´ızen´ıch, nebo v nebezpeˇcn´ych prostˇred´ıch, jako jsou jadern´e elektr´arny. Bˇeˇznˇejˇs´ı vyuˇzit´ı si najdou v komerˇcn´ım prostˇred´ı, napˇr´ıklad opravy automobil˚u, letadel, syst´em˚u dopravy, poˇc´ıtaˇc˚u, nebo dalˇs´ıch mechanick´ych zaˇr´ızen´ı.

Lad´ıc´ı syst´emy (debugging systems) jsou speci´aln´ı podtˇr´ıdou diagnostick´ych a opravn´ych syst´em˚u, kter´e slouˇz´ı k hled´an´ı a eliminaci chyb v soft- warov´ych syst´emech. Tˇechto syst´em˚u neexistuje pˇr´ıliˇs mnoho. Jedn´ım pˇr´ıkladem je syst´em generuj´ıc´ı testy pro UNIXov´e implementace.

Interpretaˇcn´ı syst´emy jsou vyuˇz´ıv´any k anal´yze ˇreˇci nebo obr´azk˚u, vyhod- nocov´an´ı sign´al˚u a monitorov´an´ı meˇr´ıc´ıch technik. Interpretuj´ı vstupn´ı data jako symbolick´y v´yznam pro danou situaci/vstup. Pokud do t´eto skupiny expertn´ıch syt´em˚u budeme poˇc´ıtat syst´emy pro pˇreklady pˇriro- zen´eho jazyka, bude tato skupina nejsp´ıˇs tou nejstarˇs´ı. Nav´ıc jsou takov´e aplikace jedny z nejproblematiˇctˇejˇs´ıch, protoˇze maj´ı obrovsk´e n´aroky na znalosti samotn´eho syst´emu.

Prediktivn´ı syst´emy se snaˇz´ı pˇredv´ıdat v´yvoj v (bl´ızk´e) budoucnoti na z´akladˇe dat z pˇr´ıtomn´ych a minul´ych okolnost´ı a ud´alost´ı. Progn´oza m˚uˇze b´yt zaloˇzena na matematick´ych, statistick´ych, nebo

”experimen- t´aln´ıch“ pravidlech. Aplikaci si pak takov´e syst´emy najdou napˇr´ıklad v pˇredpovˇedi poˇcas´ı, skliznˇe, pˇri ekonomick´ych odhadech a tak´e pˇri pˇred- povˇedi v´yvoje dopravy, spotˇreby energi´ı atd. Tyto syst´emy jsou pak spe- cifick´e simulovan´ym, parametrick´ym a dynamick´ym modelem syst´emu, v jak´em maj´ı pˇredv´ıdat dan´y v´yvoj. Parametry jsou d´any pr´avˇe zkou- man´ym pˇr´ıpadem. S´ıla (nebo slabost) takov´eho syst´emu je d´ana pr´avˇe v modelu, kter´y pouˇz´ıv´a, protoˇze

”re´aln´y svˇet“ je pˇr´ıliˇs komplexn´ı na to, aby z nˇeho ˇsel vytvoˇrit model. Mus´ı b´yt vˇzdy do urˇcit´e m´ıry abstraktn´ı, aby bylo moˇzn´e tento model implementovat. Pr´avˇe tato abstrakce je pak d˚uvodem nepˇresnosti syst´emu.

Pl´anovac´ı syst´emy se pouˇz´ıvaj´ı pˇri pl´anov´an´ı sloˇzit´ych ´ukon˚u, zejm´ena ve vojensk´em a ekonomick´em sektoru. Jsou pak tak´e vyuˇz´ıv´any ve vˇedˇe pˇri pl´anov´an´ı experiment˚u. Pˇr´ıkladem vˇedeck´eho vyuˇzit´ı je expertn´ı syst´em Molgen, kter´y se pouˇz´ıv´a k pˇr´ıpravˇe molekul´arn´ıch genetick´ych experi- ment˚u.

(26)

1. Znalostn´ı syst´emy

Konfiguraˇcn´ı syst´emy jsou speci´aln´ım pˇr´ıpadem pl´anovac´ıch syst´em˚u. U- moˇzˇnuj´ı technickou konstrukci a konfiguraci v´yrobk˚u (napˇr. v´ypoˇcetn´ı technika a instalace) z modul´arn´ıch komponent, nebo uspoˇr´ad´an´ı ob- vod˚u na desce ploˇsn´ych spoj˚u. Tyto syst´emy jsou charakteristick´e pravi- dly v b´azi znalost´ı, kter´e ud´avaj´ı hranice a omezen´ı moˇzn´ych v´ysledk˚u.

D˚uleˇzitou ˇc´ast´ı jsou pak pravidla umoˇzˇnuj´ıc´ı optimizaci v urˇcit´em smˇeru, napˇr´ıklad minimalizace v´yrobn´ıch n´aklad˚u, ˇcasu potˇrebn´eho k v´yrobˇe, nebo rozmˇer˚u v´ysledn´eho v´yrobku.

Monitorovac´ı syst´emy porovn´avaj´ı data od uˇzivatele nebo z mˇeˇr´ıc´ıch tech- nik s referenˇcn´ımi hodnotami a pod´avaj´ı informace o stavu dan´eho pro- cesu, o pˇr´ıpadn´ych v´ykyvech oproti bˇeˇzn´ym hodnot´am a v nˇekter´ych syst´emech tak´e varov´an´ı pˇred nebezpeˇcn´ym v´yvojem. Podtˇr´ıdou mo- nitorovac´ıch syst´em˚u jsou tzv. syst´emy asistenˇcn´ı, kter´e sleduj´ı vstup nˇejak´eho bˇeˇzn´eho data-zpracuj´ıc´ıho procesu (napˇr´ıklad textov´eho pro- cesoru) a v pˇr´ıpadˇe

”potˇreby“ d´avaj´ı uˇzivateli

”inteligentn´ı“ rady. Pˇr´ı- kladem je kontrola pravopisu nebo napov´ıd´an´ı slov.

Kontroln´ı syst´emy jsou rozˇs´ıˇren´ım monitorovac´ıch syst´em˚u. Tvoˇr´ı uzavˇren´y kontroln´ı cyklus, kter´y automaticky prov´ad´ı opravn´e akce v pˇr´ıpadˇe, ˇze detekuje neoptim´aln´ı stav.

ˇSkol´ıc´ı syst´emy jsou implementovateln´e nad jak´ymkoliv z v´yˇse zm´ınˇen´ych typ˚u syst´em˚u. Jejich ´ukolem je simulovat uˇzivateli (napˇr´ıklad studen- tovi nebo budouc´ımu expertovi v oboru) konkr´etn´ı probl´em zaloˇzen´y na konkr´etn´ıch datech a pot´e asistovat tomuto uˇzivateli pˇri ˇreˇsen´ı dan´eho probl´emu. V pˇr´ıpadˇe potˇreby m˚uˇze b´yt uˇzivatel informov´an o pˇr´ıpadn´ych dopadech jeho rozhodnut´ı. Typick´ym ˇskol´ıc´ım syst´emem je syst´em

”STE- AMER“, vyvinut´y BBN pro americk´e n´amoˇrnictvo pro v´ycvik inˇzen´yr˚u v provozu lodn´ıch motor˚u. Takov´y syst´em si i ukl´ad´a souˇcasn´y stav zna- lost´ı jednotliv´ych uˇzivatel˚u a podle toho jim poskytuje vhodn´e uk´azky a vysvˇetlen´ı v pr˚ubˇehu v´yuky.

D´ale se ve sv´e pr´aci vˇenuji zejm´ena diagnostick´ym syst´em˚um, na kter´e jsou cviˇcen´ı pˇredmˇetu BI-ZNS zamˇeˇrena.

1.3 Struktura ES

V n´asleduj´ıc´ı sekci budou probr´any z´akladn´ı souˇc´asti ES a jejich funkce v r´amci syst´emu.

1.3.1 B´aze znalost´ı

Veˇsker´e znalosti experta o dan´e problematice jsou uloˇzeny v b´azi znalost´ı.

Jsou v n´ı informace od velmi obecn´ych, po ´uzce odborn´e. Speci´aln´ı kategori´ı 8

(27)

1.3. Struktura ES jsou tzv. soukrom´e znalosti (tak´e oznaˇcov´any jako heuristiky, ˇci nejist´e zna- losti). Jde o exaktnˇe nedok´azan´e znalosti, kter´e expert z´ısk´av´a bˇehem jeho praxe. Tyto znalosti pom´ahaj´ı ˇreˇsit urˇcit´e probl´emy, ale nezajiˇst’uj´ı nalezen´ı spr´avn´eho ˇreˇsen´ı. Pr´avˇe t´ımto druhem znalost´ı se odliˇsuj´ı znalosti experta v oboru od bˇeˇzn´eho pracovn´ıka (laika).

Nejnovˇejˇs´ı expertn´ı syst´emy nepracuj´ı pouze s jednou b´az´ı znalost´ı, ale pra- cuj´ı s nˇekolika b´azemi najedou – s tzv.zdroji znalost´ı[4]. Z´avˇery z jednotliv´ych b´az´ı jsou zapisov´any na spoleˇcnou

”tabuli“, tedy sd´ılenou datovou strukturu.

Tato ˇcinnost je zaloˇzena na re´aln´e pˇredstavˇe, ˇze v´ıce expert˚u s r˚uznou speci- alizac´ı pracuje dohromady na jednom probl´emu a kaˇzd´y z nich ˇreˇs´ı probl´emy bl´ızk´e jejich specializaci.

Vzhledem ke st´ale se vyv´ıjej´ıc´ım znalostem expert˚u je nutn´e, aby byla b´aze znalost´ı dostateˇcnˇe modul´arn´ı, tedy aby ji bylo moˇzn´e kdykoliv aktualizovat nebo doplnit. ES mus´ı b´yt tak´e schopen vyuˇz´ıvat nejist´e znalosti, kter´ym jsou v b´azi znalost´ı pˇriˇrazeny r˚uzn´e v´ahy, stupnˇe, nebo m´ıry d˚uvˇery stejnˇe tak, jako mus´ı zvl´adat zpracov´avat nejist´e odpovˇedi uˇzivatele (tedy nejist´e z´aznamy v b´azi dat).[4]

1.3.2 Reprezentace znalost´ı

Pˇri reprezentaci znalost´ı je nejd˚uleˇzitˇejˇs´ı vlastnost efektivn´ı reprezentace. Po- ˇ

zadavky na reprezentaci jsou [5]:

• dostateˇcnˇe pˇrirozen´a reprezentace pro danou oblast problematiky a jej´ı expresivita (zp˚usoby vyj´adˇren´ı),

• umoˇznˇen´ı aplikace efektivn´ıch deduktivn´ıch prostˇredk˚u,

• rychl´y pˇr´ıstup k b´azi znalost´ı a k b´azi dat.

1.3.2.1 Predik´atov´a logika

Predik´atov´a logika je velice dobˇre prozkouman´y syst´em pro reprezentaci a zpracov´an´ı znalost´ı. P˚uvodnˇe byla zkoum´ana pro potˇreby matematiky, ale pro jej´ı univerz´alnost se uplatnila v reprezentaci znalost´ı. Je vhodn´a pro studium odvoditelnosti (inference) mezi tvrzen´ımi a z tˇechto d˚uvod˚u slouˇz´ı predik´atov´a logika prvn´ıho ˇr´adu jako z´aklad pro symbolick´e programovac´ı jazyky (napˇr.

Prolog) [5].

Jazyk predik´atov´e logiky obsahuje [3]:

Individuov´e promˇenn´e: skupiny, do kter´ych spadaj´ı funkˇcn´ı symboly a kon- stanty.

Predik´atov´e symboly: symboly, vymezuj´ıc´ı vztahy mezi jednotliv´ymi indi- vidui.

(28)

1. Znalostn´ı syst´emy

Kvantifik´atory: nejv´yznamnˇejˇs´ı kvantifik´atory jsou ∀ (

”pro vˇsechny“) a ∃ (”existuje alespoˇn jeden“).

Logick´e spojky: konjunkce, disjunkce, negace, implikace a ekvivalence.

Funkˇcn´ı symboly a konstanty: symboly, odkazuj´ıc´ı ke konkr´etn´ım indivi- du´ım a slouˇz´ıc´ı k tvorbˇe jejich jmen.

Konkr´etn´ı jazyk pak obsahuje vˇzdy alespoˇn jeden predik´atov´y symbol.

Konstanty s funkˇcn´ımi symboly nejsou povinn´e, jsou vˇsak dobrou pom˚uckou ke zlepˇsen´ı srozumitelnosti a efektivitˇe inference. [5]

Pˇr´ıkladem v´yroku v predik´atov´e logice m˚uˇze b´yt napˇr´ıklad:

∀x: (B(x)∧Z(x)) =⇒ R(x),

kde x je promˇenn´a ovoce, predik´atov´e symboly B,Z a R oznaˇcuj´ı popoˇradˇe

”je ban´an“,

”je ˇzlut´y“ a

”je zral´y“. V pˇrekladu do pˇrirozen´eho jazyka by pak tento v´yrok znamenal:

Pro kaˇzd´e ovoce plat´ı, ˇze kdyˇz je ban´anem a souˇcasnˇe je ˇzlut´e, pak je zral´e.“

1.3.2.2 Pravidla

Pravidla v souˇcasn´e dobˇe pˇredstavuj´ı nejˇcastˇejˇs´ı zp˚usob reprezentace znalost´ı.

Jeˇstˇe spolu s predik´atovou logikou je tato reprezentace pouˇz´ıv´ana v pravi- dlov´ych expertn´ıch syst´emech. Kaˇzd´e pravidlo m´a svoji podm´ınkovou a d˚u- sledkovou ˇc´ast. Pravidlem ch´apeme v´yraz typu

IF a T HEN b,

kde ˇc´ast pravidla zaIF se naz´yv´aantecedenta ˇc´ast pravidla zaT HEN se naz´yv´akonsekvent. Lev´a strana pravidla je sloˇzena z individu´aln´ıch podm´ınek a pˇredstavuje tedy podm´ınkovou ˇc´ast pravidla. Prav´a strana potom m˚uˇze ob- sahovat akce ˇci z´avˇery a pˇredstavuje tedy d˚usledkovou ˇc´ast pravidla. Souˇc´ast´ı z´apisu pravidla m˚uˇze tak´e b´yt kontextov´a ˇc´ast, kter´a vyjadˇruje za jak´ych podm´ınek m˚uˇze b´yt pravidlo pouˇzito. Pravidlo IFT HEN je ˇcasto zapi- sov´ano ve tvaru EH, kde E je pˇredpoklad (evidence) a H je z´avˇer (hy- pot´eza). [6]

Pravidla b´yvaj´ı interpretovan´a ve v´ıce podob´ach, z nichˇz nejˇcastˇejˇs´ı jsou n´asleduj´ıc´ı:

IF situace T HEN akce;

IF pˇredpoklad T HEN z´avˇer;

IF podm´inka T HEN d˚usledek A ELSE d˚usledek B.

10

(29)

1.3. Struktura ES V prvn´ım pˇr´ıpadˇe je pravidlo interpretov´ano procedur´alnˇe, v druh´em pak deklarativnˇe. Procedur´aln´ı zp˚usob ch´ap´an´ı pravidla (jestliˇze nastane urˇcit´a situace, syst´em provede akci) je typick´y sp´ıˇse pro pl´anovac´ı expertn´ı syst´emy.

Naopak deklarativn´ı zp˚usob (jestliˇze je splnˇen urˇcit´y pˇredpoklad, syst´em uˇcin´ı pˇr´ısluˇsn´y z´avˇer) odpov´ıd´a sp´ıˇse diagnostick´ym syst´em˚um. Ve tˇret´ım pˇr´ıpadˇe doˇslo k rozˇs´ıˇren´ı pravidla oELSE ˇc´ast. [6]

1.3.2.3 S´emantick´e s´ıtˇe

S´emantick´e s´ıtˇe byly vyvinuty koncem 60. let. V roce 1968 pouˇzil tento po- jem ve sv´e disertaˇcn´ı pr´aci americk´y vˇedec Quillian k reprezentaci anglick´ych slov. S´emantick´e s´ıtˇe p˚uvodnˇe slouˇzily k vyj´adˇren´ı v´yznamu r˚uzn´ych v´yraz˚u v pˇrirozen´em jazyce, postupem ˇcasu se vˇsak staly obecnˇejˇs´ım grafick´ym n´astro- jem pro reprezentaci znalost´ı.“([6], Reprezentace znalost´ı; S´emantick´e s´ıtˇe)

Na s´emantickou s´ıt’ lze pohl´ıˇzet jako na orientovan´y graf tvoˇren´y uzly a hranami, kde uzly reprezentuj´ı jednotliv´e objekty a hrany pak vztahy (re- lace) mezi tˇemito objekty. Velmi ˇcast´e vztahy jsou IS-AN-IN ST AN CE-OF (ISA), A-KIN D-OF (AKO), neboA-P ART-OF (AP O). Vztah ISAslouˇz´ı k vyj´adˇren´ı, ˇze konkr´etn´ı objekt je instanc´ı urˇcit´e tˇr´ıdy. VztahAKOvyjadˇruje, ˇ

ze dan´a tˇr´ıda je podtˇr´ıdou jin´e tˇr´ıdy. Posledn´ı vztahAP Oˇr´ık´a, ˇze urˇcit´a tˇr´ıda objekt˚u je sloˇzena z v´ıce ˇc´ast´ı. [3]

Na obr´azku 1.1 je uk´azka, jak by mohla vypadat jednoduch´a s´emantick´a s´ıt’, kde jsou pouˇzity vˇsechny tˇri druhy relac´ı zm´ınˇen´e v´yˇse.

Dopravní prostředek

Auto

Moje auto

Benzín

Bordó Červená

Osoba

ako

isa isa

vlastník barva isa

typ_motoru apo

5

Dveře počet

Obr´azek 1.1: Uk´azka jednoduch´e s´emantick´e s´ıtˇe

(30)

1. Znalostn´ı syst´emy

1.3.3 B´aze dat

Pˇri ˇreˇsen´ı konkr´etn´ıho probl´emu je potˇreba do syst´emu ukl´adat zjiˇstˇen´a data.

Tato data se ukl´adaj´ı do b´aze dat, tedy do mnoˇziny ´udaj˚u k dan´emu pˇr´ıpadu, kter´a se pak dosazuje do b´aze znalost´ı k vyhodnocov´an´ı v´ysledku. Konkr´etn´ı data jsou z´ısk´av´ana v dialogov´em reˇzimu s uˇzivatelem. Syst´em se zde pokouˇs´ı dotazovat se co nejefektivnˇeji, analyzovat odpovˇedi uˇzivatele a na z´akladˇe tˇechto informac´ı zkonstruovat z´avˇer, nebo navrhnout ˇreˇsen´ı. [4]

1.3.4 Inferenˇcn´ı mechanismus

Inferenˇcn´ı mechanismus je programov´y modul, kter´y pˇredem ud´av´a, jak´ym zp˚usobem bude vyuˇz´ıvat data z b´aze znalost´ı a jak´ym zp˚usobem bude zpros- tˇredkov´avat komunikaci mezi b´az´ı znalost´ı a b´az´ı dat.

Podle [7, 3] jsou typy inference, ze kter´ych si vˇetˇsina z nich naˇsla uplatnˇen´ı v expertn´ıch syst´emech, tyto:

Dedukce: logick´e usuzov´an´ı, pˇri kter´em mus´ı z´avˇer plynout z pˇredpoklad˚u (modus ponens, modus tollens).

Indukce: zobecnˇen´ı konkr´etn´ıch pˇr´ıpad˚u.

Abdukce: usuzov´an´ı ze z´avˇeru k pˇredpoklad˚um, kter´e mohly tento z´avˇer splnit.

Heuristiky: pravidla nebo odhady, kter´e jsou zaloˇzeny na zkuˇsenosti.

Analogie: odvozen´ı z´avˇeru na z´akladˇe podobnosti s jinou situac´ı/probl´emem.

Defaultn´ı inference: pˇri absenci speci´aln´ıch znalost´ı se usuzuje z obecn´ych znalost´ı.

Nemonotonn´ı: pˇredch´azej´ıc´ı znalosti se mohou upravovat na z´akladˇe novˇe z´ıskan´ych poznatk˚u.

Generov´an´ı a testov´an´ı: generuj´ı se v´ysledky a testuje se, zda sed´ı na da- nou situaci (metoda pokusu a omylu).

A B A =⇒ B

0 0 1

0 1 1

1 0 0

1 1 1

Tabulka 1.1: Implikace [8]

12

(31)

1.3. Struktura ES Prvn´ı tˇri typy (dedukce, indukce a abdukce) vych´azej´ı z pojmu implikace z v´yrokov´e logiky (tabulka 1.1). Zde bych r´ad definoval, ˇze v kontextu logiky znamen´a ˇc´ıslice

”0“ nepravdu a ˇc´ıslice

”1“ pravdu.

Udedukcepˇredpokl´ad´ame, ˇze plat´ı implikace (tedy pravidlo) a pˇredpoklad, z ˇcehoˇz se d´a jednoduˇse odvodit, ˇze plat´ı z´avˇer (modus ponens). Analogicky pˇri pˇredpokladu, ˇze plat´ı implikace a neplat´ı z´avˇer, m˚uˇzeme jednoznaˇcnˇe odvo- dit nepravdivost pˇredpokladu (modus tollens – obˇe pravidla jsou zn´azornˇena v tabulce 1.2). Dedukce je tedy zp˚usob usuzov´an´ı, kter´y zachov´av´a pravdu (truth preserving reasoning).

A =⇒ B A =⇒ B

A B

A ¬B

modus ponens modus tollens Tabulka 1.2: Dedukce [8]

Pˇri abdukci pˇredpokl´ad´ame pravdivost implikace a z´avˇeru. Z tabulky 1.1 je vidˇet, ˇze pˇredpoklad m˚uˇze a nemus´ı platit, takˇze se lze jen domn´ıvat, ˇze m˚uˇze platit. Nˇekdy je abdukce oznaˇcov´ana za nejlepˇs´ı vysvˇetlen´ı v r´amci po- zorovan´ych fakt˚u. Abdukce tedy zachov´av´a nepravdu (falsity preserving reaso- ning). Kdyˇz budeme pˇredpokl´adat, ˇze plat´ı implikace a neplat´ı z´avˇer, m˚uˇzeme jednoznaˇcnˇe ˇr´ıct, ˇze neplat´ı pˇredpoklad.

Indukce z opakovan´eho souˇcasn´eho v´yskytu A a B vyvozuje, ˇze je mezi touto dvojic´ı implikace. Je to metoda vyuˇz´ıvan´a pro strojov´e uˇcen´ı a automa- tizovan´e z´ısk´av´an´ı znalost´ı z dat.

Heuristikaje oznaˇcen´ı pro druh informac´ı pouˇz´ıvan´ych v expertn´ıch syst´e- mech. Jsou zaloˇzen´e na zkuˇsenostech experta a na zobecnˇen´ı situac´ı, ve kter´ych se expert musel rozhodovat.

Analogiese pouˇz´ıv´a napˇr´ıklad pˇri pˇr´ıpadov´em usuzov´an´ı(Case-Based Re- asoning). Znalosti nemaj´ı podobu obecn´ych pravidel z´ıskan´ych od experta, ale jsou tvoˇreny souborem dˇr´ıve vyˇreˇsen´ych (typick´ych) pˇr´ıpad˚u. M´a-li syst´em po- skytnout doporuˇcen´ı, projde svoji knihovnu dˇr´ıve ˇreˇsen´ych pˇr´ıpad˚u a hled´a ten nejpodobnˇejˇs´ı tomu aktu´aln´ımu. V´yhodou je snadnˇejˇs´ı v´yvoj aplikace, jelikoˇz nen´ı nutn´e n´aroˇcn´e z´ısk´av´an´ı pravidel od experta, ale staˇc´ı

”pouze“ dostatek reprezentativn´ıch pˇr´ıpad˚u.

Usuzov´an´ı za pouˇzit´ıdefault˚u (default reasoning) b´yv´a sp´ıˇse doplnˇen´ım usuzov´an´ı na z´akladˇe pravidel. Vyuˇz´ıv´a se, kdyˇz nen´ı pro danou situaci vyuˇzi- teln´e ˇz´adn´e pravidlo. Napˇr´ıklad v ˇCesku se d´a pˇredpokl´adat, ˇze chˇripka bude mnohem ˇcastˇejˇs´ı onemocnˇen´ı, neˇz ˇzlut´a zimnice. Tedy bez jak´ychkoliv ot´azek na pacienta je moˇzn´e pˇredpokl´adat, ˇze m´a sp´ıˇse chˇripku, neˇz ˇzlutou zimnici a pokud n´am nezodpov´ı ˇz´adn´e ot´azky, poˇsleme ho s diagn´ozou chˇripky dom˚u.

(32)

1. Znalostn´ı syst´emy

Nemonot´onn´ı usuzov´an´ı je zaloˇzeno na skuteˇcnosti, ˇze pˇredchoz´ı z´ıskan´e informace je moˇzn´e

”zahodit“ pro novˇe z´ıskan´e znalosti.

Pˇri generov´an´ı a testov´an´ı se opakovanˇe generuje nov´e

”n´ahodn´e“ ˇreˇsen´ı a testuje se, zda vyhovuje vˇsem pˇredpoklad˚um. Pokud se najde takov´e, kter´e vyhovuje, cyklus konˇc´ı a syst´em pˇredloˇz´ı vygenerovan´e ˇreˇsen´ı.

1.3.4.1 Pˇr´ım´e ˇretˇezen´ı U tzv.

”odvozov´an´ı ˇr´ızen´em daty“ se zaˇc´ın´a zn´am´ymi fakty (daty), od kter´ych se postupuje pˇres aplikovateln´a pravidla na danou situaci, aˇz k z´avˇer˚um.

Pˇri pˇr´ım´em ˇretˇezen´ı se tedy postupuje b´az´ı znalost´ı od pˇredpoklad˚u pravi- del k jejich z´avˇer˚um. Tento zp˚usob odvozov´an´ı je vhodn´y pro pl´anovac´ı typy expertn´ıch ´uloh. [6]

Podle [9] spoˇc´ıv´a pˇr´ım´e ˇretˇezen´ı v opakov´an´ı n´asleduj´ıc´ıch krok˚u:

Porovn´an´ı (matching): Pravidla z b´aze znalost´ı jsou porovn´ana se zn´am´ymi fakty, aby se zjistilo, kter´a pravidla maj´ı splnˇen´e pˇredpoklady.

Reˇˇ sen´ı konfliktu (conflict resolution): Z mnoˇziny pravidel se splnˇen´ymi pˇredpoklady se vyb´ır´a pravidlo podle priority a v pˇr´ıpadˇe konfliktu podle nˇejak´e strategie. Pˇr´ıklady strategie pro ˇreˇsen´ı konflikt˚u:

• Strategie hled´an´ı do hloubky (depth search), kde jsou preferov´ana pravidla, pouˇz´ıvaj´ıc´ı aktu´alnˇejˇs´ı data – tedy data, kter´a se v b´azi znalost´ı vyskytuj´ı kratˇs´ı dobu.

• Strategie hled´an´ı do ˇs´ıˇrky (breath strategy), pˇri n´ıˇz jsou naopak preferov´ana pravidla pouˇz´ıvaj´ıc´ı starˇs´ı data.

• Strategie sloˇzitosti, resp. specifiˇcnosti (complexity strategy), kde jsou preferov´ana pravidla maj´ıc´ı v´ıce podm´ınek.

• Strategie jednoduchosti, kter´a zase naopak preferuje jednoduˇsˇs´ı pravidla – tedy ta s m´enˇe podm´ınkami.

Proveden´ı (execution): Provede se pravidlo vybran´e v pˇredchoz´ım kroku.

D˚usledkem proveden´ı m˚uˇze b´yt pˇrid´an´ı pravidla do b´aze dat, odebr´an´ı pravidla z b´aze dat, nebo tˇreba pˇr´ıd´an´ı pravidla do b´aze znalost´ı atp.

Obvykle je pˇri tomto postupu uplatˇnov´ana podm´ınka, ˇze kaˇzd´e pravidlo m˚uˇze b´yt

”aktivov´ano“ pouze jednou pro stejnou mnoˇzinu dat (fakt˚u).

Vhodn´ymi aplikacemi pro dopˇredn´e (pˇr´ım´e) ˇretˇezen´ı jsou:

• Monitorov´an´ı a diagnostika ˇr´ıd´ıc´ıch syst´em˚u pro ˇr´ızen´ı proces˚u v re´aln´em ˇcase, kde jsou data kontinu´alnˇe pˇrid´av´ana a mˇenˇena a kde existuje m´alo dopˇredu dan´ych vztah˚u mezi vstupn´ımi daty a z´avˇery.

14

(33)

1.3. Struktura ES

• Probl´emy zahrnuj´ıc´ı synt´ezu (navrhov´an´ı, konfigurace, pl´anov´an´ı, rozvrhov´an´ı, . . . ). V tˇechto aplikac´ıch existuje mnoho moˇzn´ych ˇreˇsen´ı a pravidla proto vyjadˇruj´ı znalosti jako obecn´e vzory. Pˇresn´e vztahy (inferenˇcn´ı ˇretˇezce) proto nemohou b´yt pˇredem pˇresnˇe ur- ˇ

ceny a musej´ı b´yt pouˇzity syst´emy pro porovn´av´an´ı se vzorem.

1.3.4.2 Zpˇetn´e ˇretˇezen´ı

Inference ˇr´ızen´a c´ıli (tedy zpˇetn´e ˇretˇezen´ı) je zaloˇzena na hled´an´ı informac´ı podporuj´ıc´ıch urˇcit´y z´avˇer. Pˇri tomto druhu inference se zaˇc´ın´a u c´ıle, kter´y chceme odvodit, tud´ıˇz je b´aze znalost´ı proch´azena smˇerem zpˇetnˇe od c´ıl˚u k pˇredpoklad˚um. Poˇrad´ı vyhodnocov´an´ı m˚uˇze b´yt zase stejnˇe jako u pˇr´ım´eho ˇretˇezen´ı d´ano prioritami nebo poˇrad´ım v b´azi znalost´ı. Zpˇetn´e ˇretˇezen´ı je pouˇz´ıv´ano sp´ıˇse u diagnostick´ych typ˚u ´uloh, kter´e maj´ı mal´y poˇcet c´ılov´ych hypot´ez. [6]

Dle [9] doch´az´ı pˇri zpˇetn´em ˇretˇezen´ı k opakov´an´ı n´asleduj´ıc´ıch krok˚u:

1. Vytvoˇren´ı a naplnˇen´ı z´asobn´ıku vˇsemi koncov´ymi c´ıli.

2. Shrom´aˇzdˇen´ı vˇsech pravidel schopn´ych splnit c´ıl na vrcholu z´asobn´ıku.

Pokud je z´asobn´ık pr´azdn´y, inference je ukonˇcena.

3. Zkoum´an´ı pravidel a platnosti jejich pˇredpoklad˚u z pˇredchoz´ıho kroku.

a) Pokud jsou splnˇeny vˇsechny pˇredpoklady, odvod´ı se z´avˇer (pouˇzije se pravidlo) a samotn´e pravidlo se doˇcasnˇe odloˇz´ı. Jestliˇze zkou- man´y c´ıl byl koncov´y, pak je odstranˇen ze z´asobn´ıku a vrac´ıme se ke kroku 2. Pokud to byl pouze podc´ıl, je odstranˇen ze z´asobn´ıku a je zpracov´av´ano pˇredchoz´ı pravidlo, kter´e bylo odloˇzeno.

b) Jestliˇze fakta nalezen´a v b´azi dat (fakt˚u) nesplˇnuj´ı pˇredpoklady pravidla, je zkoum´an´ı pravidla ukonˇceno.

c) Pokud pro nˇekter´y pˇredpoklad chyb´ı informace v b´azi dat, zjiˇst’uje se, zda se tato informace ned´a z nˇejak´eho pravidla odvodit. Po- kud ano, vloˇz´ı se do z´asobn´ıku jako podc´ıl, zkouman´e pravidlo se doˇcasnˇe odloˇz´ı a pokraˇcuje se krokem 2. V opaˇcn´em pˇr´ıpadˇe se in- formace zjist´ı od uˇzivatele a pokraˇcuje se krokem 3 a) zkoum´an´ım dalˇs´ıho pˇredpokladu.

4. Jestliˇze pomoc´ı ˇz´adn´eho ze zkouman´ych pravidel nebylo moˇzn´e odvodit c´ıl, pak tento c´ıl z˚ust´av´a neurˇcen. Je odstranˇen ze z´asobn´ıku a pokraˇcuje se krokem 2.

(34)

1. Znalostn´ı syst´emy

1.3.5 Vysvˇetlovac´ı modul

M´ame-li moˇznost s expertem pˇri ˇreˇsen´ı probl´emu komunikovat, oˇcek´av´ame od nˇeho, ˇze sv´e rozhodnut´ı a postup bude schopen zd˚uvodnit a vysvˇetlit. Funkce vysvˇetlovac´ıho modulu m´a tedy za ´ukol vysvˇetlit rozhodnut´ı expertn´ıho sys- t´emu a pr˚ubˇeh tohoto rozhodov´an´ı na m´ısto ˇclovˇeka. Tento modul nen´ı pod- m´ınkou kaˇzd´eho expertn´ıho syst´emu, nˇekdy je dokonce neˇz´adouc´ı.[10]

Podle [10] by v tom nejjednoduˇsˇs´ım proveden´ı mˇel b´yt vysvˇetlovac´ı modul schopen odpov´ıdat na dva n´asleduj´ıc´ı typy dotaz˚u:

• Proˇc

poˇzaduje danou informaci od uˇzivatele?

vol´ı dan´y zp˚usob odvozov´an´ı?

odvozuje dan´y fakt?

• Jak

dospˇel k odvozen´ı urˇcit´eho faktu?

dospˇel k urˇcit´emu zp˚usobu odvozov´an´ı?

dospˇel k urˇcit´emu v´ysledku?

V pˇr´ıpadˇe typu ot´azky

”Proˇc?“ bude vysvˇetlovac´ı modul vysvˇetlovat, co se dˇeje, nebo co se pˇredpokl´ad´a, ˇze se bude d´ıt v n´asleduj´ıc´ım procesu inference.

V pˇr´ıpadˇe typu ot´azky

”Jak?“ bude vysvˇetlovac´ı modul vysvˇetlovat, jak dospˇel k urˇcit´emu z´avˇeru.

1.4 Tvorba ES

Tvorbou expertn´ıch syst´em˚u se zab´yv´a vˇedn´ı obor znalostn´ı inˇzen´yrstv´ı. Jeho z´akladn´ım ´ukolem je z´ısk´an´ı znalost´ı potˇrebn´ych k ˇreˇsen´ı probl´em˚u z dan´e oblasti, coˇz zahrnuje nejen vytvoˇren´ı metod pro z´ısk´av´an´ı a modelov´an´ı zna- lost´ı, ale tak´e nalezen´ı vhodn´eho inferenˇcn´ıho mechanismu. Protoˇze jsou tyto znalosti ˇcasto ˇspatnˇe definov´any a nav´ıc zat´ıˇzeny neurˇcitost´ı, je v´yvoj ES do- prov´azen ˇcetn´ymi pot´ıˇzemi.

Tvorba ES je sloˇzit´y proces dˇel´ıc´ı se do nˇekolika v´yvojov´ych f´az´ı. Jedn´ım z prvn´ıch a nejtˇeˇzˇs´ıch rozhodnut´ı je, zda se v˚ubec do velice ˇcasovˇe (a finanˇcnˇe) n´aroˇcn´eho v´yvoje pustit. [6]

Podle [2] by se kaˇzd´y n´avrh softwaru s umˇelou inteligenc´ı mˇel ˇr´ıdit n´asle- duj´ıc´ımi metodologick´ymi kroky:

1. identifikace probl´emu,

2. v´ybˇer nebo implementace vhodn´e reprezentace (znalost´ı), 16

(35)

1.5. Reˇserˇse bl´ızk´ych ˇreˇsen´ı 3. snaha o nalezen´ı pˇrirozen´ych omezen´ı, z´akon˚u a heuristik, pomoc´ı kte-

r´ych se budou ˇreˇsit dan´e probl´emy, 4. formulace procedur ˇreˇsen´ı probl´em˚u, 5. ovˇeˇren´ı a testov´an´ı dan´eho ˇreˇsen´ı.

Cel´y proces tvorby ES vyˇzaduje spolupracuj´ıc´ı t´ym odborn´ık˚u a velk´e mnoˇzstv´ı ˇcasu. Procesu z´ısk´av´an´ı znalost´ı a tvorby b´aze znalost´ı se ´uˇcastn´ı hlavnˇe experti ze zvolen´e oblasti problematiky, znalostn´ı inˇzen´yˇri a koncov´ı uˇzivatel´e. V´yznamn´e postaven´ı zde maj´ı pr´avˇe znalostn´ı inˇzen´yˇri. Jejich prv- n´ım ´ukolem je posoudit ´uˇcelnost a vhodnost ES jeˇstˇe pˇred zaˇc´atkem vlastn´ı tvorby. Mus´ı se tedy jednat o osobu s analytick´ymi a komunikaˇcn´ımi schop- nostmi, s velk´ym nadhledem a rozvinutou schopnost´ı proniknout do podstaty vˇeci. Pr´ace znalostn´ıho inˇzen´yra m˚uˇze pˇripom´ınat pr´aci tlumoˇcn´ıka. Stejnˇe jako tlumoˇcn´ık umoˇzˇnuje komunikaci mezi dvˇema stranami, umoˇzˇnuje zna- lostn´ı inˇzen´yr komunikaci mezi expertem a b´az´ı znalost´ı. Tak´e je zapojen do procesu z´ısk´av´an´ı znalost´ı, pˇri kter´em pom´ah´a expertovi strukturovat znalosti a n´aslednˇe je zodpovˇedn´y za k´odov´an´ı znalost´ı do b´aze znalost´ı (proces zn´a- zornˇen na obr´azku 1.2). Pot´e mus´ı tak´e ovˇeˇrit, zda syst´em simuluje pˇrevzat´e znalosti spr´avnˇe. [6]

Expert

Znalostní inženýr

„tlumočník“

Expertní systém

získávání znalostí kódování znalostí

Obr´azek 1.2: Znalostn´ı inˇzen´yr jako

”tlumoˇcn´ık“ [6]

1.5 Reˇ serˇ se bl´ızk´ ych ˇ reˇ sen´ı

Vzhledem k v´yukov´e povaze t´eto pr´ace, a t´ım p´adem specifiˇctˇejˇs´ım n´arok˚um na proveden´ı, nen´ı moˇzn´e ˇz´adn´e nasazen´ı tohoto frameworku do jak´ekoliv jin´e praxe, neˇz v´yuky na FIT ˇCVUT, nebo jin´e ˇskole. Z tohoto d˚uvodu je porovn´an´ı se souˇcasn´ym ˇreˇsen´ım probl´emu obt´ıˇzn´e.

Nejbl´ıˇz tomuto probl´emu jsou tzv.

”pr´azdn´e expertn´ı syst´emy“ (napˇr´ıklad o nich mluv´ı [3], 3. ˇc´ast skript), kter´e nemaj´ı pˇredem urˇcen´e, jakou probl´emovou oblast znalost´ı budou ˇreˇsit. Maj´ı pouze implementovan´y zp˚usob, jak informace z b´aze znalost´ı z´ık´avaj´ı (tedy inferenˇcn´ı mechanismus), ale tuto b´azi znalost´ı maj´ı pr´azdnou. Vyuˇziteln´e pro v´yuku by tedy byly pouze v naplnˇen´ı b´aze zna- lost´ı, ale student by si nevyzkouˇsel implementaci ˇz´adn´e jin´e ˇc´asti. Pˇr´ıkladem pr´azdn´eho expertn´ıho syst´emu je FEL Expert [11], kter´y se pouˇz´ıv´a pro v´yuku na ˇskole FEL ˇCVUT, ale ten jen dovoluje plnˇen´ı b´aze znalost´ı pravidly a pouze

(36)

1. Znalostn´ı syst´emy

do urˇcit´e m´ıry ´upravu inferenˇcn´ıho mechanismu. To je pro ´uˇcely t´eto pr´ace nedostateˇcn´e.

Z anal´yzy vypl´yv´a, ˇze nelze nav´azat na dostupnou pr´aci a je nutn´e navrh- nout vlastn´ı zp˚usob ˇreˇsen´ı.

18

(37)

ˇ ast II

Praktick´ a ˇ ast

(38)
(39)

Kapitola 2

avrh

Cel´y framework je navrˇzen jako pˇet navz´ajem komunikuj´ıc´ıch modul˚u. Pro kaˇzd´y z modul˚u je pˇripraveno rozhran´ı (interface nebo abstraktn´ı tˇr´ıda), kter´e urˇcuje z´akladn´ı vstupy a v´ystupy kaˇzd´eho z nich. D´ıky tˇemto rozhran´ım je zajiˇstˇena modularita cel´eho syst´emu a tento syst´em bude tud´ıˇz fungovat spr´avnˇe se kter´ymikoliv implementacemi jednotliv´ych rozhran´ı.

Ve frameworku jsou pˇripraveny rozhran´ı n´asleduj´ıc´ıch modul˚u:

• B´aze znalost´ı (BZ)

• B´aze dat

• Inferenˇcn´ı mechanismus (IM)

• Modul neurˇcitosti

• Uˇzivatelsk´e rozhran´ı (UI)

Inferenční mechanismus Uživatelské rozhraní

Báze dat Báze znalostí

Modul neurčitosti

Obr´azek 2.1: Komunikace modul˚u

(40)

2. N´avrh

Na obr´azku 2.1 je zn´azornˇena komunikace mezi moduly. Inferenˇcn´ı mecha- nismus se chov´a jako mozek cel´eho syst´emu a moduly b´aze znalost´ı, neurˇcitosti a b´aze dat vyuˇz´ıv´a pouze jako datov´e struktury. Modul IM a UI jsou imple- mentov´any podle n´avrhov´eho vzoru Observer a Observable. Komunikace a moˇznosti jednotliv´ych modul˚u jsou podrobnˇeji pops´any v kapitole 3.

2.1 Modul b´ aze znalost´ı

Modul b´aze znalost´ı m´a za ´ukol uchov´avat zak´odovan´e informace o dan´e pro- blematice. Souˇcasnˇe mus´ı zvl´adat tyto informace naˇc´ıtat a parsovat ze sou- boru, protoˇze student bude vyplˇnovat BZ pomoc´ı textov´eho souboru v pˇresnˇe dan´e formˇe. Tento zp˚usob

”plnˇen´ı“ BZ bude pro studenta nejpohodlnˇejˇs´ı, je- likoˇz ps´at pravidla pomoc´ı k´odu pˇr´ımo v projektu by pˇri rozs´ahlejˇs´ı BZ bylo velice nepˇrehledn´e. Tyto soubory pro jednotliv´e formy BZ jsou souˇc´ast´ı pro- jektu a je moˇzn´e je upravovat v r´amci IDE bez nutnosti otev´ırat extern´ı tex- tov´y editor. Formy, kter´e b´aze znalost´ı podporuje jsou:

• predik´atov´a logika,

• pravidla,

• s´emantick´a s´ıt’.

D´ale je nutn´e, aby byla BZ schopna odpov´ıdat, zda je konkr´etn´ı v´yrok pravdiv´y, aby byl na z´akladˇe toho IM schopen usuzovat. Posledn´ı podm´ınkou pro fungov´an´ı IM je, aby bylo moˇzn´e z´ıskat seznam predik´at˚u (vlastnost´ı, na kter´e se bude IM dotazovat uˇzivatele), z´avˇer˚u (tedy c´ıl˚u, ke kter´ym syst´em smˇeˇruje) a pro zjednoduˇsen´ı i seznam predik´at˚u souvisej´ıc´ıch s dan´ym z´avˇerem (tedy predik´aty, kter´e maj´ı v kontextu dan´eho z´avˇeru smysl – takov´e, kter´e pro dan´y z´avˇer plat´ı).

2.2 Modul b´ aze dat

Uloha b´´ aze dat spoˇc´ıv´a v ukl´ad´an´ı informac´ı o dan´em pˇr´ıpadu, tedy v evi- dov´an´ı odpovˇed´ı uˇzivatele. Jedin´ymi funkcemi tohoto modulu jsou: uloˇzen´ı nov´e odpovˇedi, vr´acen´ı dan´e odpovˇedi a vr´acen´ı (pˇr´ıpadnˇe chronologicky se- ˇrazen´eho) seznamu vˇsech odpovˇed´ı pro vysvˇetlovac´ı ˇcinnost.

2.3 Modul inferenˇ cn´ıho mechanismu

Jelikoˇz je inferenˇcn´ı mechanismus mozkem cel´eho syst´emu, je v nˇem naim- plementovan´y algoritmus, kter´y vyuˇz´ıv´a vˇsechny ostatn´ı moduly ke sv´e pr´aci.

Vyuˇz´ıv´a tedy funkce ostatn´ıch modul˚u nez´avisle na jejich implementaci ke 22

(41)

2.4. Modul neurˇcitosti komunikaci s uˇzivatelem a k z´ısk´av´an´ı nebo ukl´ad´an´ı informac´ı o dan´e pro- blematice. Nab´ızej´ı se dvˇe implementace tohoto modulu: dopˇredn´e ˇretˇezen´ı a zpˇetn´e ˇretˇezen´ı.

2.4 Modul neurˇ citosti

Stejnˇe jako b´aze znalost´ı, i modul neurˇcitosti naˇc´ıt´a data ze souboru. Nejis- tota ze strany experta, tedy nejistota v BZ, se urˇcuje pro kaˇzdou kombinaci predik´atu a z´avˇeru zvl´aˇst’. Tud´ıˇz modul nejistoty vrac´ı hodnotu pro kaˇzdou dvojici z mnoˇziny uspoˇr´adan´ych dvojic (predik´at, z´avˇer).

2.5 Modul uˇ zivatelsk´ eho rozhran´ı

Od kaˇzd´e implementace uˇzivatelsk´eho rozhran´ı se oˇcek´av´a, ˇze se bude schopna uˇzivatele dot´azat na urˇcitou informaci (na predik´at) a ˇze bude umˇet nˇejak´ym zp˚usobem vypsat v´ysledky ES. D´ale je nutn´e, aby bylo moˇzn´e z UI zastavit a popˇr´ıpadˇe i spustit inferenci. Posledn´ım poˇzadavkem je schopnost vysvˇetlovac´ı ˇ

cinnosti, tedy aby bylo UI schopn´e uˇzivateli interpretovat vysvˇetlen´ı z infe- renˇcn´ıho mechanismu.

(42)
(43)

Kapitola 3

Implementace

Tato kapitola se zab´yv´a konkr´etn´ımi implementacemi jednotliv´ych rozhran´ı a zp˚usoby jejich vyuˇzit´ı.

3.1 Pomocn´ e datov´ e struktury

V t´eto sekci pˇredstav´ım pomocn´e datov´e struktury, kter´e jsou vyuˇz´ıv´any vˇetˇsinou modul˚u a slouˇz´ı pˇrev´aˇznˇe ke zpˇrehlednˇen´ı k´odu a t´ım i ke zjed- noduˇsen´ı orientace v nˇem.

3.1.1 Element interface a jeho implementace

Element je interface, kter´y implementuj´ı tˇr´ıdy Conclusion a Predicate (popˇr.

SemPredicate pro s´emantickou s´ıt’), kter´e slouˇz´ı k reprezentaci predik´at˚u a z´avˇer˚u skrze cel´y syst´em. Zp˚usob dˇedˇen´ı a implementace tˇr´ıd je zn´azornˇena na obr´azku 3.1.

Element je tedy interface, kter´y m´a pouze ˇclenskou promˇennouString name, kter´a uchov´av´a jm´eno predik´atu nebo z´avˇeru.

Conclusion je prvn´ı z implementac´ı a slouˇz´ı k ukl´ad´an´ı z´avˇer˚u (c´ıl˚u). Je to mal´a struktura, kter´a um´ı oproti nadtˇr´ıdˇe vracet sv´e jm´eno.

Predicate slouˇz´ı k ukl´ad´an´ı predik´at˚u a jej´ı implementace je prakticky to- toˇzn´a se tˇr´ıdou Conclusion.

SemPredicate pak reprezentuje predik´at pro s´emantickou s´ıt’ a rozˇsiˇruje tˇr´ıdu Predicate o promˇennou typu Relation, kterou popisuji v sekci 3.1.2.

(44)

3. Implementace

<<interface>>

Element + String getName()

Conclusion

- String name

+ Conclusion(String name) + String getName()

+ toString(), hashCode(), equals()

<<implements>>

Predicate

# String name

+ Predicate(String name) + String getName()

+ toString(), hashCode(), equals()

<<implements>>

SemPredicate

- Relation relation

+ SemPredicate(String name, Relation relation) + Relation getRelation()

+ toString(), hashCode(), equals()

<<extends>>

Obr´azek 3.1: Element a jeho implementace

3.1.2 Relation enum

V´yˇctov´y typ Relation (viz obr´azek 3.2) je pomocn´a

”tˇr´ıda“ pro s´emantickou s´ıt’, ale jelikoˇz je vyuˇz´ıv´ana v dalˇs´ıch pomocn´ych struktur´ach (viz sekce 3.1.1 – Element), pop´ıˇsi ji zde.

Tento v´yˇctov´y typ ud´av´a typy relac´ı, kter´e m˚uˇze s´emantick´a s´ıt’ zpra- cov´avat. N´azev kaˇzd´eho prvku je ´uzce spjat´y s n´azvem pˇr´ımo v s´emantick´e s´ıti (ale case-insensitive – nez´aleˇz´ı na velikosti p´ısmen), takˇze se v souboru pro b´azi znalost´ı typu s´emantick´a s´ıt’ mus´ı dodrˇzet n´azev. D´ale m´a kaˇzd´y z prvk˚u dvˇe vlastnosti:

boolean transitive, kter´a ud´av´a, zda je dan´a relace tranzitivn´ı, tedy jestli se pˇres tuto relaci (hranu v teorii graf˚u) pˇren´aˇs´ı vlastnosti do dalˇs´ıho uzlu.

• String translationje pˇreklad relace do pˇrirozen´eho jazyka. Slouˇz´ı pˇri komunikaci s uˇzivatelem tak, aby ot´azka, ve kter´e tato relace figuruje, byla srozumiteln´a.

26

(45)

3.1. Pomocn´e datov´e struktury

<<enumeration>>

Relation

is_a

△ does

has_property

a_kind_of

- Relation(boolean transitive, String translation)

Obr´azek 3.2: V´yˇctov´y typ Relation

Na studentovi pˇri jeho pr´aci bude, aby si pˇr´ıpadn´e dalˇs´ı relace do t´eto tˇr´ıdy doplnil podle jeho potˇreb a urˇcil jim tranzitivitu a jejich pˇreklad. Na obr´azku 3.2 jsou ˇctyˇri uk´azkov´e prvky i s konstruktorem, kter´y m´a pr´avˇe dva zm´ınˇen´e atributy.

3.1.3 Tˇr´ıda Answer

Answer - Predicate predicate - Double answer

+ Answer(Predicate predicate, Double answer) + Predicate getPredicate()

+ void setPredicate(Predicate predicate) + Double getAnswer()

+ void setAnswer(Double answer) + boolean isTrue()

+ boolean isFalse()

Obr´azek 3.3: Tˇr´ıda Answer

Tˇr´ıda Answer (viz obr´azek 3.3) je struktura ukl´adaj´ıc´ı odpovˇedi od uˇzivatele a je vyuˇz´ıv´ana zejm´ena v b´azi dat. Skl´ad´a se ze dvou promˇenn´ych a to:

(46)

3. Implementace

• Predicate predicate, kter´a ˇr´ık´a, ke kter´emu predik´atu se uˇzivatel vy- j´adˇril,

• Double answer, kter´a drˇz´ı hodnotu jeho odpovˇedi (tedy desetinn´e ˇc´ıslo v rozmez´ı od 0 do 1, kde 0 znamen´a NE a 1 ANO).

Tˇr´ıda m´a metodyisTrue()aisFalse(), kter´e vrac´ıbooleanpodle hod- noty promˇenn´eanswer. Pokud je hodnota promˇenn´e 1,isTrue()vrac´ıtrue, pokud je 0, isFalse() vrac´ıtrue. V ostatn´ıch pˇr´ıpadech vrac´ı obˇe metody false.

3.2 Rozhran´ı b´ aze znalost´ı

<<interface>>

KnowledgeBaseInterface

~ void loadFile()

~ Set<Conclusion> getAllConclusions()

~ Set<Predicate> getAllPredicates()

~ Set<Predicate> getPredicates(Conclusion conclusion)

~ boolean query(Predicate predicate, Conclusion conclusion)

SemanticKnowledgeBase - SemanticNetwork knowledgeBase

FOLKnowledgeBase - FirstOrderLogic knowledgeBase

RulesKnowledgeBase - Rules knowledgeBase

<<implements>>

<<implements>>

<<implements>>

Obr´azek 3.4: Rozhran´ı BZ a jeho implementace

Jak jiˇz bylo naznaˇceno v sekci 2.1, kaˇzd´a z implementac´ı BZ mus´ı m´ıt implementov´ano pˇet metod (viz obr´azek 3.4) a to:

void loadFile(), kter´a podle typu BZ naˇcte jeden ze soubor˚u, kter´y slouˇz´ı k plnˇen´ı BZ a podle nˇej vytvoˇr´ı tuto b´azi. Relativn´ı cesta k sou- bor˚um v˚uˇci projektu je

”src; expertsystemfw; KnowledgeBase; Files“.

Tato metoda je u vˇsech implementac´ı BZ pouˇzita v konstruktoru, takˇze se nemus´ı explicitnˇe volat pˇri vytv´aˇren´ı instance.

28

(47)

3.2. Rozhran´ı b´aze znalost´ı

• Set<Conclusion> getAllConclusions() vrac´ı mnoˇzinu vˇsech z´avˇer˚u z dan´e BZ ve formˇe strukturConclusion.

• Set<Predicate> getAllPredicates() vrac´ı mnoˇzinu vˇsech predik´at˚u z dan´e BZ ve formˇe strukturPredicate.

• Set<Predicate> getPredicates(Conclusion conslusion)zase vrac´ı mnoˇzinu predik´at˚u, tentokr´at ale pouze tˇech, kter´e jsou pravdiv´e pro zadan´y z´avˇerconclusion.

boolean query(Predicate p, Conclusion c)vrac´ıbooleanpodle to- ho, zda je zadan´y predik´at pravdiv´y pro dan´y z´avˇer. Pokud ano, vrac´ı true, jinakfalse.

Pro toto rozhran´ı jsou jiˇz ve frameworku implementov´any tˇri typy b´aze znalost´ı a to: s´emantick´a s´ıt’, predik´atov´a logika a pravidla. Na studentovi pˇri v´yuce bude, aby spr´avnˇe vyplnil soubory, ze kter´ych se jednotliv´e BZ vytv´aˇr´ı.

V n´asleduj´ıc´ıch ˇc´astech pˇredstav´ım jednotliv´e druhy BZ a jejich pouˇzit´ı.

Vnitˇrn´ı implementace by standardnˇe nemˇely b´yt mˇenˇeny, a proto bude jejich popis m´enˇe obs´ahl´y. D˚uleˇzit´ymi sekcemi je form´at soubor˚u, kter´e implemen- tace BZ vyuˇz´ıvaj´ı.

3.2.1 S´emantick´a s´ıt’

S´emantick´a s´ıt’ je vnitˇrnˇe reprezentov´ana jako orientovan´y graf, ve kter´em uzly reprezentuj´ı predik´aty a z´avˇery. Hrany pak jednotliv´e relace mezi nimi.

Z´avˇer je kaˇzd´y uzel, kter´y nem´a ˇz´adn´e vstupn´ı hrany (je tedy zdroj v teorii graf˚u) a ostatn´ı jsou predik´aty. Tˇr´ıda SemanticNetwork, kter´a reprezentuje orientovan´y graf, vyuˇz´ıv´a dvˇe tˇr´ıdy a to:

public class Node pro reprezentaci uzl˚u a

public class Edge pro reprezentaci hran.

Tˇr´ıda Nodev sobˇe nese n´azev uzlu a seznam hran, kter´e z nˇeho vych´azej´ı.

Metody t´eto tˇr´ıdy pak umoˇzˇnuj´ı vr´atit seznam hran a tak´e seznam uzl˚u, na kter´e dan´y uzel

”ukazuje“, tedy s jak´ymi uzly je v relaci.

Tˇr´ıda Edge nese informaci o tom, z jak´eho uzlu vych´az´ı, do jak´eho uzlu vede a jak´ym typem relace je. Typ relace je urˇcen pomoc´ı v´yˇctov´eho typu Relation, kter´y je pops´an v sekci 3.1.2.

Souˇc´ast´ı tˇr´ıdy jsou metody pro zpracov´av´an´ı (parsov´an´ı) souboru, ze kte- r´eho s´emantick´a s´ıt’ naˇc´ıt´a uzly a hrany. Form´at tohoto souboru je pops´an v n´asleduj´ıc´ı sekci.

(48)

3. Implementace

3.2.1.1 Vytv´aˇren´ı b´aze ze souboru

S´emantick´a b´aze znalost´ı se vytv´aˇr´ı ze souboru SemanticNetworkKnowledge- Base. Soubor se nach´az´ı v bal´ıˇcku expertsystemfw.KnowledgeBase.Files a m´a pˇredepsan´y form´at, kter´y vypad´a n´asledovnˇe:

#comment

edge_from, relation_name, edge_to edge_from; relation_name; edge_to

a kde plat´ı, ˇze:

edge from je n´azev uzlu, ze kter´eho hrana vych´az´ı, relation name je n´azev relace mezi uzly (sekce 3.2) a edge to je uzel, do kter´eho hrana smˇeˇruje.

Jako oddˇelovaˇc mezi ˇretˇezci funguje ˇc´arka (,) nebo stˇredn´ık (;). Mezery na zaˇc´atku a na konci ˇr´adku jsou ignorov´any a mezery kolem ˇretˇezc˚u t´eˇz. Pr´azdn´e ˇr´adky jsou ignorov´any. ˇR´adky zaˇc´ınaj´ıc´ı znakem

”#“ slouˇz´ı jako koment´aˇre a jsou tak´e ignorov´any. D´ale plat´ı, ˇze parser mus´ı detekovat pr´avˇe tˇri ˇretˇezce pˇri rozdˇelen´ı ˇr´adku podle jednoho z oddˇelovaˇc˚u, tud´ıˇz jeden ˇr´adek mus´ı vˇzdy obsahovat pr´avˇe dva stejn´e oddˇelovaˇce.

S tˇemito pravidly by se z n´asleduj´ıc´ıho souboru:

#Ukazkovy soubor

jablko, a_kind_of, ovoce broskev, a_kind_of, ovoce ovoce, has_property, sladke

vytvoˇrila s´emantick´a s´ıt’ v podobˇe obr´azku 3.5.

jablko

broskev

ovoce sladke

a_kind_of

a_kind_of

has_property

Obr´azek 3.5: Pˇr´ıklad s´emantick´e s´ıtˇe z uk´azkov´eho souboru

30

(49)

3.2. Rozhran´ı b´aze znalost´ı 3.2.2 Predik´atov´a logika

Vnitˇrn´ı reprezentace predik´atov´e logiky je zaloˇzena na extern´ıch knihovn´ach od Tweety [12]. Pro reprezentaci jazyka slouˇz´ı tˇr´ıda FolBeliefSet.

K dotazov´an´ı se na b´azi znalost´ı slouˇz´ı tˇr´ıda FolTheoremProver, kter´a vyuˇz´ıv´a extern´ı bin´arn´ı soubor k vyhodnocov´an´ı tvrzen´ı. Pˇri spouˇstˇen´ı pro- jektu z OS Windows i z UNIX-based OS se vyuˇz´ıv´a program

”Eprover“ [13].

Windows varianta pak nav´ıc ke sv´e pr´aci potˇrebuje dynamicky linkovanou knihovnu (DLL)cygwin1.dll [14], kter´a je souˇc´ast´ı projektu.

Pro tvorbu BZ ze souboru je pak vyuˇz´ıv´ana tˇr´ıda FolParser.

3.2.2.1 Vytv´aˇren´ı b´aze ze souboru

BZ pro predik´atovou logiku se vytv´aˇr´ı ze souboru FOLKnowledgeBase, kter´y se nach´az´ı v bal´ıˇckuexpertsystemfw.KnowledgeBase.Files. Jeho form´at je podle BNF (Backusova-Naurova forma) n´asledovn´y:

KB ::== SORTSDEC DECLAR FORMULAS DECLAR ::== (PREDDEC)*

SORTSDEC ::==

( SORTNAME "=" "{" (CONSTANTNAME ("," CONSTANTNAME)*)? "}" "\n" )*

PREDDEC ::==

"type" "(" PREDICATENAME ("(" SORTNAME ("," SORTNAME)* ")")? ")" "\n"

FORMULAS ::== ( "\n" FORMULA)*

FORMULA ::== ATOM | "forall" VARIABLENAME ":" "(" FORMULA ")" |

"exists" VARIABLENAME ":" "(" FORMULA ")" |

"(" FORMULA ")" | FORMULA "&&" FORMULA |

FORMULA "||" FORMULA | "!" FORMULA | "+" | "-"

ATOM ::== PREDICATENAME ("(" TERM ("," TERM)* ")")?

TERM ::== VARIABLENAME | CONSTANTNAME

kdeSORTNAME(n´azev skupiny konstant),PREDICATENAME(n´azev predik´atu), CONSTANTNAME (n´azev konstanty) aVARIABLENAME (n´azev promˇenn´e) jsou al- fanumerick´e ˇretˇezce zaˇc´ınaj´ıc´ı p´ısmenem a KB je startovn´ım symbolem. Tento BNF form´at souboru byl pˇrevzat z Tweety technick´e API dokumentace ([15], net.sf.tweety.logics.fol.parser; FolParser) a byla z nˇej odebr´ana definice funk- tor˚u, kter´e nemaj´ı v b´azi znalost´ı tohoto frameworku upotˇreben´ı.

(50)

3. Implementace

Pro lepˇs´ı pochopen´ı, jak se podle v´yˇse uveden´eho pˇredpisu b´aze vytv´aˇr´ı, uvedu uk´azkov´y soubor:

Plody={jablko, broskev, okurka}

type (sladke(Plody)) type (zdrave(Plody))

type (barva_zelena(Plody)) type (barva_cervena(Plody)) type (ovoce(Plody))

type (zelenina(Plody))

forall Plody: (zdrave(Plody)) barva_zelena(okurka)

barva_zelena(jablko) barva_cervena(jablko) ovoce(broskev)

ovoce(jablko) zelenina(okurka)

Soubor se dˇel´ı na tˇri ˇc´asti:

1. Definice skupin konstant, kter´e se v dalˇs´ıch ˇc´astech pouˇz´ıvaj´ı jako pro- mˇenn´e. Pro tyto skupiny plat´ı, ˇze jedna konstanta nem˚uˇze b´yt ve dvou skupin´ach najednou, tedy skupiny mus´ı b´yt disjunktn´ı.

2. Definice predik´at˚u, kter´e budou vyuˇz´ıv´any v tvrzen´ıch. V tomto n´avrhu frameworku budou spr´avnˇe fungovat pouze un´arn´ı predik´aty, takˇze ne- jdou definovat vztahy mezi jednotliv´ymi konstantami.

3. Seznam tvrzen´ı, kter´a plat´ı o jednotliv´ych konstant´ach a promˇenn´ych.

Daj´ı se vyuˇz´ıt predik´aty, kvantifik´atory (foralla exists), negace (!), konjunkce (&&), disjunkce (||), popˇr. tautologie (+) a kontradikce (-).

Je potˇreba si uvˇedomit, ˇze syst´em je v souˇcasn´em n´avrhu schopn´y se do- tazovat uˇzivatele pouze na jednoduch´e predik´aty (s v´yjimkou s´emantick´e s´ıtˇe, kde je v potaz br´ana relace, coˇz je ale v pojet´ı s´em. s´ıtˇe jedin´a moˇznost), tud´ıˇz nemaj´ı smysl ne-un´arn´ı predik´aty v b´azi znalost´ı (bin´arn´ı, tern´arn´ı atp.).

3.2.3 Pravidla

Vnitˇrn´ı reprezentace pravidel tak´e z ˇc´asti spol´eh´a na knihovny Tweety [12], d´ıky kter´ym tentokr´at ukl´ad´a jednotliv´e v´yroky a dotazuje se na jejich pravdˇe- podobnost. K reprezentaci formul´ı jsou vyuˇzity dvˇe knihovn´ı tˇr´ıdyFormulaa PropositionalFormula. Pro vytvoˇren´ı formule z ˇretˇezce je pak vyuˇzita tˇr´ıda PlParser.

32

Odkazy

Související dokumenty

V teoretick´ e ˇ c´ asti pr´ ace jsou pops´ any moˇ znosti pouˇ zit´ı jazyka Kotlin pˇ ri v´ yvoji aplikac´ı pro Android a pˇ ri v´ yvoji serverov´ ych aplikac´ı

Chtˇ el bych podˇ ekovat m´ emu vedouc´ımu bakal´ aˇ rsk´ e pr´ ace za jeho konstruktivn´ı rady a potˇ rebnou kritiku pr´ ace a Honzovi Sixtovi, kter´ y mi i pˇ ri r˚

Tento konektor slouˇ z´ı pro pˇ ripojen´ı nap´ ajen´ı k arduinu a pro pˇ riveden´ı dvou sign´ aln´ıch vodiˇ c˚ u pro motor vidlice, kter´ e maj´ı stejn´ y charakter

Napˇ r´ıklad by bylo vhodn´ e rozˇ s´ıˇ rit knihovnu o dalˇ s´ı form´ aty ukl´ ad´ an´ı ˇ r´ıdk´ ych matic, pˇ ridat dalˇ s´ı funkcionalitu pr´ ace s ˇ r´ıdk´

Pˇredmˇ etem t´ eto bakal´ aˇrsk´ e pr´ ace je odvozen´ı diferenci´ aln´ıch rovnic obecn´ e teorie relativity vhodn´ ych pro jejich numerick´ e ˇreˇsen´ı.

C´ılem pˇ redloˇ zen´ e bakal´ aˇ rsk´ e pr´ ace je popis teˇ cen´ı uhl´ıkov´ eho kompozitu vhodn´ ym analytick´ ym mo- delem na z´ akladˇ e optick´ ych mˇ eˇ ren´ı

C´ılem pˇ redloˇ zen´ e pr´ ace je n´ avrh a implementace vizualizaˇ cn´ı metody, kter´ a kombinuje obraz z barevn´ e a term´ aln´ı kamery.. Pˇ redpokl´ ad´ a se, ˇ

Prvn´ım c´ılem t´ eto pr´ ace je proto identi- fikovat poˇ zadavky, kter´ e se mˇ en´ı kaˇ zd´ ym rokem a dok´ azat navrhnout aplikaci tak, aby ji bylo moˇ zn´ e lehce