1 / 26

Tudásalapú rendszerek

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.

didier
Download Presentation

Tudásalapú rendszerek

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tudásalapú rendszerek Gyakorlat - CLIPS

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

  3. 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. • HAfeltétel AKKORmű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.

  4. 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ő.

  5. 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.

  6. 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 Csipikemadá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.

  7. 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.

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

  9. A CLIPS rendszer Neve aCLanguage Integrated Production System kifejezésrövidítése. Már a névből is több dologra következtethetünk: • a productionsystemutal 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.

  10. Ki Csipike? • Azt, hogy Csipike veréb azt úgy is írhatjuk, hogy • (Csipikevereb) • (verebCsipike) • (Csipike egy vereb) • Megj: A program szövegében nem érdemes ékezetes betűket használni.

  11. 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.

  12. Csipike veréb • Tehát a CLIPS programját elindítva az (assert (verebCsipike)) 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.

  13. Ú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áta deffactskulcsszóval, melyet a tényekelnevezésekövet, s majd a tények maguk.

  14. 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.clpfáljban találhatóak, ezeket a (load "csipike.clp") paranccsal lehet betölteni.

  15. 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.

  16. (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.

  17. 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-bena következőképpen néz ki: (defrule hello "Helloworld" (initial-fact) => (printout t "Hello" crlf) )

  18. „Minden veréb madár.” • 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-benkérdőjellel kezdődnek.

  19. „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.

  20. defrulevereb-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: (defrulevereb-madar "Minden veréb madár" (vereb ?x) => (assert (madar ?x)) )

  21. (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.

  22. (run)+ facts • A factsparancs 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: (defruleallathirdetes "Kiirjuk az állatok neveit" (allat ?x) => (printout t ?x " állat." crlf) )

  23. 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?

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

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

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

More Related