Tudásalapú rendszerek

Slides:



Advertisements
Hasonló előadás
Egy szélsőérték feladat és következményei
Advertisements

Szerver oldali programozás
Weblapkészítési tudnivalók 2: Útmutató az elnevezésekhez Pék Ágnes © 2009.
Statisztika 2008 Az elektronikus program használata.
A Powerpoint használata (gyorstalpaló)
NEMMONOTON KÖVETKEZTETÉS (NONMONOTONIC REASONING).
Az OpenOffice Writer Választott téma Választott téma:Az OpenOffice Writer Név Név:Sipka Gergő Felkészítő tanár Felkészítő tanár:Balla Norbert Csaba Iskola.
Számítógépes ismeretek 5. óra
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Takács Béla Tanulási VÁZ (lat). Mit várok a szóbeli feleletnél? Gondosan felépített, végiggondolt feleletet! A továbbiakban ehhez kívánok segítséget.
A Venn-diagram használata
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
Kétértékűség és kontextusfüggőség Kijelentéseink igazak vagy hamisak (mindig az egyik és csak az egyik) Kijelentés: kijelentő mondat (tartalma), amivel.
Számitástechnikai alapismeretek
Bevezetés a Java programozásba
Prezentációkészítés Microsoft PowerPoint.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Halmazok, relációk, függvények
CCleaner Skyman ™.
Adatbáziskezelés az MSAccess programmal Makány György 2. rész: Adattáblák létrehozása külső adatforrásból.
A körlevél készítésének menete
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
A HTML alapjai Havlik Barnabás Készítette:
Minden levelemet az inboxomból szabályokkal és kézzel millió kis almappába rendezgettem naponta Amikor ez elkészült, mindig úgy éreztem, tényleg készen.
Szélességi bejárás A szélességi bejárással egy irányított vagy irányítás nélküli véges gráfot járhatunk be a kezdőcsúcstól való távolságuk növekvő sorrendjében.
Programozás alapismeretek
„Doctor” szakértő rendszer
Természetes és formális nyelvek Jellemzők, szintaxis definiálása, Montague, extenzió - intenzió, kategóriákon alapuló gramatika, alkalmazások.
Szintaktikai, szemantikai szabályok
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
Portálrendszerek és biztonság Bártházi András Első Magyarországi PHP Konferencia március 29. Copyright PHP Konferencia, 2003,
A képernyő kezelése: kiíratások
Ekvivalenciák nyitott mondatok között Két nyitott mondatot ekvivalensnek mondunk, hha tetszőleges világban ugyanazok az objektumok teszik őket igazzá.
A kondicionális törvényei
A prezentációkészítés alapjai
Eu-háló Partnerszervezeti Kommunikációs Center január 17.
Programozás Imagine Logo.
1. Feladat Hozzunk létre egy olyan programot amely számokat ír ki és a felhasználónak időre be kell gépelni ezeket.
Logikai programozás 6.. Problémafelvetés: diak(jani, 3.3, pecs). diak(laci, 3.7, kaposvar). diak(matyi, 4.1, pecs). diak(kati, 2.3, barcs). diak(jeno,
Logikai programozás 8.. Adatok: ISMÉTLÉS: ADATBÁZISKEZELÉS A külső adatok a hatására bekerülnek a memóriába Lekérdezés: Ahogy eddig – pl.: szereti(jani,
Objektum orientált programozás
1. MATEMATIKA ELŐADÁS Halmazok, Függvények.
Az algoritmuskészítés alapjai
Az informatika logikai alapjai
5. gyakorlat Fleiner Rita.
Az informatika logikai alapjai
Bertrand Russell ( ). Problems of Philosophy – 1912 The Principles of Mathematics – 1903 logicizmus: a matematika nem más, mint továbbfejlesztett.
Kördokumentumok 1..
Az m70.hu Szaknévsor adatlapjának kitöltési folyamatát követheti végig illusztrálva – klikkeivel. Minden kattintásra változik a kép, beúszik a magyarázó.
Az internetes keresési módszerek
ProgramozásProgramozás célja hosszabb számítások elvégzése ill. kiíratása akkor érdemes programot írni, ha sok számolni való van illetve ha ugyanazt az.
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
Fórum használata A fórum főoldala alapállapotban.
Programozás III ÖTLETEK A FELADATMEGOLDÁSHOZ. A HF-EK APROPÓJÁN Néhány javaslat: 1. Jó lenne, ha a feladatmegoldás előtt átnéznék az előadás-anyagokat.
Számítógépes programok használata
A Mozilla magyar nyelvű szerkesztőjének használata
E-HÓD HÓDítsd meg a biteket!.
Adatbázisok 1. SQL (alkérdések). Az IN használata Emlékezzünk vissza: Az IN után szereplő multihalmaz elemei lekérdezéssel is megadhatók SELECT nev FROM.
Lekérdezések Adott tulajdonságú adatok listázásának módja a lekérdezés. A lekérdezések segítségével az adatbázisból megjeleníthetjük, módosíthatjuk, törölhetjük.
Adatstruktúrák Algoritmusok Objektumok
Logikai programozás 7..
Szakértő redszerek készítése CLIPS-ben
Tudásalapú rendszerek
Cím elrendezés alcím.
A CLIPS keretrendszer
Cím elrendezése képpel
Bankszámlatranzakciók feldolgozása és könyvelése Gyorsan és egyszerűen
Informatikai gyakorlatok 11. évfolyam
Cím és kép elrendezés Alcím
Előadás másolata:

Tudásalapú rendszerek Gyakorlat - CLIPS

Tartalom Szabályalapú leírás A CLIPS rendszer Ki Csipike? Születésnap Rendezett és nem rendezett tények Feladatok Keretrendszer Források

Szabályalapú leírás Szabályalapú leírás esetén Ha . . . akkor . . . alakú szabályok segítségével írhatjuk le az ismereteket. HA feltétel AKKOR művelet A hétköznapi nyelvben a szabályokat rendszerint a következő formában fogalmazzuk meg (pl): Minden veréb madár. Ezt a szabályt úgy fogalmazhatjuk át, hogy ha egy élőlény veréb, akkor az az élőlény madár is.

Legyenek adottak a következő tények (1-3.) és szabályok (4-9): Ká kígyó. Szilvia elefánt. Csipike veréb. Minden veréb madár. Minden hüllő állat. Minden madár állat. Minden pingvin madár. Minden madár tojással szaporodik. Minden kígyó hüllő.

Előreláncolásos következtetés A felsorolt szabályokat és tényeket két módon is felhasználhatjuk. Első esetben az itt megadott tényekből indulunk ki, és a szabályokat felhasználva újabb és újabb tényeket generálunk. Ezt a módszert előreláncolásos következtetésnek nevezzük.

Lássuk, hogyan működik ez a módszer az itt megadott tényekkel és szabályokkal! A „Minden veréb madár.” érvényes Csipikére is, azaz Ha Csipike veréb akkor Csipike madár is. Mivel Csipike veréb, így Csipike madár. A „Minden madár állat.” érvényes Csipikére is, azaz Ha Csipike madár akkor Csipike állat is. Mivel Csipike madár az előzőek alapján, így Csipike állat.

Cél Az előreláncolásos következtetés feladata a tények, szabályok következményeinek megkeresése. Mivel a folyamat során újabb és újabb tények keletkeznek, és ezek határozzák meg a soron következő alkalmazandó szabályt, így a módszer adattal irányított.

A másik módszer a visszafele láncolás. Lásd később.

A CLIPS rendszer Neve a C Language Integrated Production System kifejezés rövidítése. Már a névből is több dologra következtethetünk: a production system utal a ha-akkor szabályokra, tehát ez a rendszer nem más mint egy szabályokon alapuló szakértő rendszer; a C nyelv pedig arra utal, hogy a rendszert a NASA valamikor C-ben kezdte el fejleszteni, s jelenleg többek között ebben a formában is hozzáférhetünk a programhoz. Ennek megfelelően ezt az ingyenes rendszert szinte minden operációs rendszeren futtathatjuk. Épp ezért ez az általános program a mai Windowsos programokhoz képest kicsit fapadosnak tűnik, de azért igen jól használható.

Ki Csipike? Azt, hogy Csipike veréb azt úgy is írhatjuk, hogy (Csipike vereb) (vereb Csipike) (Csipike egy vereb) Megj: A program szövegében nem érdemes ékezetes betűket használni. Ugorjunk egyből mindennek a közepébe! A korábban már szereplő feladatot oldassuk meg ezzel a rendszerrel. Természetesen ehhez a feladatot át kell alakítani a program szájíze szerint. Nem véletlenül rímel a CLIPS a LISP-re: a LISP-re jellemző írásmódban kell a tényeinket, szabályainkat megfogalmazni. Ez azt is jelenti, hogy rengeteg zárójelet kell használnunk. A CLIPS bizonyos korlátai miatt én most a második variánst fogom használni. (Elvileg ilyen esetekben, amikor egy relációt, vagy egy tulajdonságot kell leírni, akkor a reláció vagy tulajdonság elnevezése kerül az első helyre, s ezt követik az objektumok elnevezései.)

Csipike veréb Ezt a tényt a rendszer tudomására kell hozni. A Prologhoz hasonlóan a rendszer adatbázisához az assert utasítással tudunk új dolgokat hozzáadni, s a retract utasítással tudunk onnan valamit törölni. Hozzáadás assert Törlés retract

Csipike veréb Tehát a CLIPS programját elindítva az (assert (vereb Csipike)) hatására veszi tudomásul ezt a tényt a rendszer. A rendszer által ismert tények lekérdezése: (facts) utasítással. A tények előtt álló számok azért lényegesek, mert egy tévesen megadott tényt az azonosítási száma segítségével lehet törölni. Például (retract 0) törli az elsőként megadott tényt.

Új tények generálása, törlése A program működése során az általunk megadott tények és szabályok alapján újabb tényeket generál. Új programfuttatás esetén rendszerint ki kell törölnünk a gép által generált tényeket. Több száz tény esetén reménytelen feladat egyenként kitörölni ezeket a tényeket. Épp ezért létrehozhatjuk a kiinduló tények csoportját a deffacts kulcsszóval, melyet a tények elnevezése követ, s majd a tények maguk.

Betöltés Ezek a csoportok begépelhetők az előbbi módon, vagy akár egy külső fájlból is beolvashatóak. (Ez utóbbi természetesen sokkal kényelmesebb.) A Csipikére és a többiekre jellemző tények a csipike.clp fáljban találhatóak, ezeket a (load "csipike.clp") paranccsal lehet betölteni.

Mentés Ha valaki a rendszeren belül definiálja a kiinduló tényeket vagy szabályokat, akkor a save paranccsal mentheti ki. Ez nem menti a generált tényeket. Azokat a save-facts segítségével menthetjük, és a load-facts segítségével tölthetjük vissza.

(reset) A szabályok betöltése még nem elegendő ahhoz, hogy egyből használatba vegyük a tényeket. Ehhez előbb ki kell adni a (reset) parancsot, amely aktivizálja a kiinduló tényeinket, illetve még létrehoz egy (initial-fact) tényt is.

Hello world! Ez utóbbi tényt felhasználva bemutatjuk a Hello world! programot, mellyel sok programnyelv ismertetése elkezdődik. Ez a program a CLIPS-ben a következőképpen néz ki: (defrule hello "Hello world" (initial-fact) => (printout t "Hello" crlf) ) Ez a program nem más mint egy szabály. Első látásra csak a nyíl tűnik ismerősnek. Az előtte és a mögötte álló sor alkotja a magát a szabályt. Előttük a szabályt definiáló kulcsszó, a szabály elnevezése (hello), s idézőjelek között egy rövidebb megjegyzés található, amely emlékeztetni hivatott a program íróját, vagy felhasználóját arra, hogy mi is volt a szabály célja. A nyíl előtt a feltétel, vagy a feltételek szerepelnek. Ha ez vagy ezek mind igazak lesznek, akkor végrehajtódik a nyíl mögötti műveletlista. Ez most egyetlen műveletből áll, s abban pedig egy kiírás szerepel. A t arra szolgál, hogy a képernyőre írjon a rendszer, a crlf pedig a soremelésről gondoskodik.

„Minden veréb madár.” ∀x(v(x) ⊃ m(x)) A szabályok a Prologban sem tartalmazták kiírva a kvantorokat, de oda kellett volna gondolni azokat. Itt szintén ugyanaz a helyzet. A Minden veréb madár. szabály formalizáltja a ∀x(v(x) ⊃ m(x)) volt. Innen első lépésben el kell hagyni a kvantort, a másodikban a ⊃ jel helyett a => jeleket kell írni, harmadikként a változók a CLIPS-ben kérdőjellel kezdődnek.

(vereb ?x) => (madar ?x) „Minden veréb madár.” Ezzel eljutottunk a (vereb ?x) => (madar ?x) alakhoz, ami már majdnem jó, csak meg kell mondani, hogy mit szeretnénk csinálni a következményben szereplő ténnyel. Esetünkben a rendszer tudomására hozni, azaz alkalmazni rá az assert parancsot.

defrule vereb-madar Ezzel kész a szabály, csak adni kell neki egy nevet (pl. vereb-madar), és esetleg egy kis magyarázó szöveget (Minden veréb madár). Összességében a parancs a következőképpen néz ki: (defrule vereb-madar "Minden veréb madár" (vereb ?x) => (assert (madar ?x)) ) Az eredeti feladatban szereplő összes szabály hasonlóképpen írható fel. Érdemes ezt a tagozást megtartani, mert így a későbbiekben is jól olvashatóak lesznek a szabályaink. Ha egy másik szabály is ugyanezt a nevet kapja, akkor az majd felülírja ezt.

(run) Ha már adott az összes szabály meg a tények, akkor a (run) paranccsal indítható el a következtetés. Megj: Ha nem akarjuk indítani, csak látni, hogy hogyan indulna el az egész, akkor az agenda parancsot kell használni. Mindebből persze nem látunk semmit.

(run)+ facts A facts parancs kiadásával láthatjuk, hogy miről bizonyíthatjuk be a tények és szabályok alapján, hogy valóban állat. Persze ezt is lehet automatizálni. Készíthetünk egy olyan szabályt, amely kiírja az állatok neveit: (defrule allathirdetes "Kiirjuk az állatok neveit" (allat ?x) => (printout t ?x " állat." crlf) )

Feladatok Adjuk hozzá az adatbázishoz (ezután adjuk ki a run parancsot)! Vilit, aki veréb Palit, aki madár Listázzuk ki a tényeket! Töröljük ki a 7-dik tényt! Töröljük a tényeket 3-tól 6-ig! Mit tapasztalunk a sorszámokra vonatkozóan?

Feladatok Töröljük az adatbázist (clear)! Adjuk hozzá a következő tényeket az adatbázishoz! …

Feladatok Autójavítás Rendőrségi nyilvántartás Sör Házasságközvetítő

Források http://www.inf.unideb.hu/~aszalos/diak/mik/mik_clips.htm http://www.inf.unideb.hu/~aszalos/diak/mik/mik.pdf