I. rész. A Prolog programozási nyelv. Tanítsuk gondolkodni a gépet. SugóParti TudósParty

Hasonló dokumentumok
Legyen Ön is milliomos, kedves Számítógép!

Elsőrendű logika. Mesterséges intelligencia március 28.

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Szemantikus világháló a BME-n

matematikus-informatikus szemével

Az informatika logikai alapjai

III. rész. Prolog alapok. Programozási nyelvek osztályozása. A logikai programozás alapgondolata. Deklaratív programozási nyelvek

Logikai programozás ADMINISZTRATÍV KÉRDÉSEK KÖVETELMÉNYRENDSZER FŐBB PONTOK NÉHÁNY BIZTATÓ SZÓ

BASH script programozás II. Vezérlési szerkezetek

A szemantikus világháló oktatása

Programozási nyelvek 6. előadás

Operátorok: zárójelezés

Logikai ágensek. Mesterséges intelligencia március 21.

Deklaratív programozás

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

FUNKCIONÁLIS PROGRAMOZÁS

VII. Keretalapú ismeretábrázolás

Deklaratív programozás KÖVETELMÉNYEK, TUDNIVALÓK. Deklaratív programozás: tudnivalók (folyt.) Deklaratív programozás: tudnivalók

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Negáció igazságtáblája. Propozicionális logika -- levezetések. Diszjunkció igazságtáblája. Konjunkció igazságtáblája. Kondicionális igazságtáblája

Matematikai logika és halmazelmélet

MATEMATIK A 9. évfolyam. 2. modul: LOGIKA KÉSZÍTETTE: VIDRA GÁBOR

LOGIKA ÉS ÉRVELÉSTECHNIKA

Hatékony keresés a szemantikus világhálón

A matematika nyelvéről bevezetés

Diszkrét matematika I.

Logika es sz am ıt aselm elet I. r esz Logika M asodik el oad as 1/26

Programozás alapjai (ANSI C)

Diszkrét matematika I.

Adatbázis rendszerek. dr. Siki Zoltán

1. A matematikai logika alapfogalmai. 2. A matematikai logika műveletei

Knoch László: Információelmélet LOGIKA

Bevezetés. Dr. Iványi Péter

Név: Neptun kód: április

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

A matematika nyelvér l bevezetés

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Ismeretalapú modellezés XI. Leíró logikák

A logikai következmény

Deklaratív programozás KÖVETELMÉNYEK, TUDNIVALÓK. Deklaratív programozás: tudnivalók. Deklaratív programozás: tudnivalók (folyt.)

A TANTÁRGY ADATLAPJA

Logika es sz am ıt aselm elet I. r esz Logika Harmadik el oad as 1/33

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája?

Összefüggések. kondicionális jelentése

Készítette: Nagy Tibor István

Válogatott fejezetek a logikai programozásból ASP. Answer Set Programming Kelemen Attila

Bevezetés az informatikába

I. rész Bevezetés. Deklaratív Programozás. A tárgy témája. Tartalom. Szeredi Péter 1 Hanák Péter ősz

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák.

Adatok szűrése, rendezése

Bevezetés a Formális Logikába Érveléstechnika-logika 7.

A logika, és a matematikai logika alapjait is neves görög tudós filozófus Arisztotelész rakta le "Analitika" című művében, Kr.e. IV. században.

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Ítéletkalkulus. 1. Bevezet. 2. Ítéletkalkulus

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Komputeralgebra Rendszerek

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Visszalépéses keresés számintervallum felsorolása

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

Programok értelmezése

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)

Logika es sz am ıt aselm elet I. r esz Logika Hatodik el oad as 1/33

Matematikai logika. 3. fejezet. Logikai m veletek, kvantorok 3-1

AZ INFORMATIKA LOGIKAI ALAPJAI

Lekérdezések az SQL-ben 1.rész

Dr. Jelasity Márk. Mesterséges Intelligencia I. Előadás Jegyzet (2008. október 6) Készítette: Filkus Dominik Martin

Lekérdezések az SQL-ben 1.rész

S z á m í t ó g é p e s a l a p i s m e r e t e k

Java II. I A Java programozási nyelv alapelemei

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Bemutatkozás. Bemutatkozás. Bemutatkozás. Bemutatkozás. 1. előadás. A tárgy címe: A programozás alapjai 1

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Predikátumkalkulus. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. Vizsgáljuk meg a következ két kijelentést.

C programozás. 1 óra Bevezetés

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Magyarok: Bereczki Ilona, Kalmár László, Neumann, Péter Rózsa, Pásztorné Varga Katalin, Urbán János, Lovász László

Excel 2010 függvények

Logika és informatikai alkalmazásai

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

ALGEBRAI KIFEJEZÉSEK, EGYENLETEK

INFORMATIKAI ALAPISMERETEK

LOGIKA. Magyarok: Bereczki Ilona, Kalmár László, Neumann, Péter Rózsa, Pásztorné Varga Katalin, Urbán János, Lovász László.

Az IBM WebSphere Multichannel Bank Transformation Toolkit V7.1 felgyorsítja a többcsatornás alkalmazásfejlesztést

Programozási technológia 1.

Logika és informatikai alkalmazásai

Kijelentéslogika, ítéletkalkulus

Kijelentéslogika, ítéletkalkulus

Logika és informatikai alkalmazásai

Bizonytalanság. Mesterséges intelligencia április 4.

Szoftver-modellellenőrzés absztrakciós módszerekkel

Alapszintű formalizmusok

2019/02/11 10:01 1/10 Logika

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

1. Alapok. #!/bin/bash

Operációs Rendszerek II. labor. 2. alkalom

Adatbázisok MSc. 12. téma. Ontológia és SPARQL

Átírás:

Tanítsuk gondolkodni a gépet avagy hogyan nyert a számítógép a "Mindent vagy semmit" vetélkedő amerikai változatában Szeredi Péter I. rész szeredi@cs.bme.hu BME Számítástudományi és Információelméleti Tanszék NJSZT Mesterséges Intelligencia Szakosztály Baja, 2012. március 30. 1 2 Egy nagyobb Prolog példa SugóParti TudósParty 3 Revision 583M Generated: Thu Mar 29 22:21:02 CEST 2012 Programozási nyelvek osztályozása Deklaratív programozási nyelvek Imperatív Fortran Algol C C++... Programozási nyelvek stílusok Funkcionális LISP Erlang... Deklaratív Logikai SQL Prolog CLP nyelvek... A funkcionális nyelvek alapja a matematika függvényfogalma A logikai nyelvek alapja a matematika relációfogalma Közös tulajdonságaik A program jelentése egy matematikai állításként olvasható ki (deklaratív szemantika) Matematikai változó egyetlen egyelőre ismeretlen értéket jelöl, vö. egyszeres értékadás Jelmondat MIT inkább mint HOGYAN (WHAT rather than HOW): a megoldás módja (a HOGYAN rész) helyett inkább a megoldandó feladat leírását (a MIT részt) kell megadni A gyakorlatban mindkét szemponttal foglalkozni kell kettős szemantika: MIT (milyen feladatot) old meg a program (deklaratív rész) HOGYAN oldja meg a program a feladatot (procedurális rész) (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 3 / 32 (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 4 / 32

Egy példa családi kapcsolatok 1 % szülője(gy, Sz):Gy szülője Sz. % Tényállításokból álló predikátum szülője( Imre, István ). % (sz1) szülője( Imre, Gizella ). % (sz2) szülője( István, Géza ). % (sz3) szülője( István, Sarolt ). % (sz4) szülője( Gizella, Civakodó Henrik ). % (sz5) szülője( Gizella, Burgundi Gizella ). % (sz6) % Gyerek nagyszülője Nagyszülő. % Egyetlen szabályból álló predikátum nagyszülője(gyerek, Nagyszülő) :- szülője(gyerek, Szülő), szülője(szülő, Nagyszülő). % (nsz1) % Kik Imre nagyszülei??- nagyszülője( Imre, NSz). NSz = Géza? ; NSz = Sarolt? ; NSz = Civakodó Henrik? ; NSz = Burgundi Gizella? ; no % Kik Géza unokái??- nagyszülője(u, Géza ). U = Imre? ; no (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 5 / 32 A klózok logikai alakja A klóz szabály vagy tényállítás lehet A szabály alakja fej :- törzs., ahol a törzs célok konjunkciója ( és kapcsolata) A tényállítás alakja fej., a törzs üres, azonosan igaz A fej és a cél tetszőleges Prolog kifejezés (term) lehet A szabály jelentése implikáció: a törzsbeli célok konjunkciójából következik a fej. Példa: nagyszülője(u,n) :- szülője(u,sz), szülője(sz,n). Logikai alak: UNSz(nagyszülője(U, N) szülője(u, Sz) szülője(sz, N)) azaz minden U, N, Sz esetén nagyszülője(u, N) fennáll, ha szülője(u, Sz) és szülője(sz, N) egyaránt fennáll. Ekvivalens alak: UN (nagyszülője(u, N) Sz(szülője(U, Sz) szülője(sz, N))) A tényállítás feltétel nélküli állítás, pl. Példa: szülője( Imre, István )., logikai alakja ugyanez A tényállításban is lehetnek változók, ezekre is vonatkozik az univerzális ( minden) kvantor (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 7 / 32 (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 6 / 32 1 (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 8 / 32

Operátorok olvashatóbb kód Ha az aaa nevet infix operátornak deklaráljuk, akkor aaa(u, V) helyett U aaa V írható: :- op(700, xfx, [szülője,nagyszülője]). Infix operátorfajták: yfx (balra köt), xfy (jobbra köt), xfx (nem ismételhető) A korábbi példa: Unoka nagyszülője Nagyszülő :- % ha Unoka szülője Szülő, % és Szülő szülője Nagyszülő. Ha az aaa nevet prefix ill. posztfix operátornak deklaráljuk, akkor aaa(u) helyett aaa U ill. U aaa írható: :- op(700, xf, [férfi,nő]). Gyerek anyja Anya :- Gyerek szülője Anya, Anya nő. Prefix/posztfix fajták: fy/yf (ismételhető), fx/xf (nem ismételhető) Az operátordeklarációban megadunk egy 1 és 1200 közé eső prioritást. A kisebb prioritású operátor erősebben köt. Pl. :- op(500, yfx, +), op(400, yfx, *) (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 9 / 32 Diszjunkció Tegyük fel, hogy tároljuk a felesége kapcsolatokat is: :- op(700, xfx, [felesége,házastársa]). Géza István... felesége Sarolt. felesége Gizella. A házastársa kapcsolat definiálhatjuk így: X házastársa Y :- X felesége Y. X házastársa Y :- Y felesége X. Egyetlen szabályként is definiálhatjuk, ha diszjukciót használunk X házastársa Y :- ( X felesége Y ; Y felesége X % vagy ). A diszjunkció mindig kiküszöbölhető, segédpredikátummal (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 11 / 32 1 (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 10 / 32 Negáció, feltételes szerkezet Amikor a nő fogalmát definiáljuk, kihasználhatjuk azt a háttértudást, hogy minden feleség nő. Emellett tényállításokban felsoroljuk a nem házas nőket: Y nő :- _Bárki felesége Y. Judit nő.... A férfi fogalmának definiálásakor az ún. meghiúsulásos negációt használhatjuk: \+ Cél: lefuttatja Cél-t, ha ez sikerül, akkor a negáció meghiúsul, és fordítva, ha Cél meghiúsul, akkor \+ Cél sikerül. X férfi :- \+ X nő % nem igaz, hogy Az X férfi célt csak úgy érdemes meghívni, hogy az X változó már ismert, sőt, X ember kell legyen. A diszjunkcióval és negációval rokon a feltételes szerkezet: ( felt -> akkor ( felt, akkor ; egyébként ; \+ felt, egyébként ) ) (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 12 / 32

, a Prolog kifejezés konstans (atomic) számkonstans (number) egész vagy lebegőp, pl. 1, -2.3, 3.0e10 névkonstans (atom), pl. István, szuloje, +,, <, tree_sum 1 összetett- vagy struktúra-kifejezés (compound) ún. kanonikus alak: struktúranév ( arg 1,..., arg n ) a struktúranév egy névkonstans, az arg i argumentumok tetszőleges Prolog kifejezések pl.: személy(civakodó,henrik,951), <(X,Y), is(x, +(Y,1)) szintaktikus édesítőszerek, operátorok, listák: [X L].(X,L) változó (var) pl. X, Szulo, X2, _valt, _, _123 a változó alaphelyzetben behelyettesítetlen, értékkel nem bír, az egyesítés (mintaillesztés) művelete során egy tetszőleges Prolog kifejezést vehet fel értékül (akár egy másik változót) (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 13 / 32 (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 14 / 32 Néhány beépített predikátum Kifejezések egyesítése X = Y: az X és Y szimbolikus kifejezések változók behelyettesítésével azonos alakra hozhatók, azaz egyesíthetők X \= Y: az X és Y kifejezések nem hozhatók azonos alakra Aritmetikai predikátumok X is Kif: A Kif aritmetikai kifejezés értékét egyesíti X-szel. Kif1<Kif2: Kif1 aritmetikai értéke kisebb Kif2 értékénél. Hasonlóan: Kif1=<Kif2, Kif1>Kif2, Kif1>=Kif2, Kif1=:=Kif2 (aritmetikailag egyenlő), Kif1=\=Kif2 (aritmetikailag nem egyenlő) Fontos aritmetikai operátorok: +, -, *, /, rem, // (egész-osztás) Fontos: az aritmetikai operátorokkal (+,-,... ) képzett kifejezések struktúra-kifejezések. Csak az aritmetikai beépített predikátumok értékelik ki ezeket! A Prolog kifejezések szimbolikusak, az aritmetikai kiértékelés a kivétel. 1 (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 15 / 32 (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 16 / 32

visszalépéses keresés a 4-kapus doboz modell Példa: jó számok keresése A feladat: keressük meg azokat a kétjegyű számokat amelyek négyzete háromjegyű és a szám fordítottjával kezdődik A program: % dec1(j): J egy pozitív decimális számjegy. dec1(1). dec1(2). dec1(3). dec1(4). dec1(5). dec1(6). dec1(7). dec1(8). dec1(9). % dec(j): J egy decimális számjegy. dec(0). dec(j) :- dec1(j). % Az Sz szám négyzete háromjegyű és az Sz fordítottjával kezdődik. joszam(sz):- dec1(a), dec(b), Sz is A * 10 + B, Sz * Sz // 10 =:= B * 10 + A. dec1 és dec a between könyvtári predikátummal definiálható: :- use_module(library(between)). dec1(j) :- between(1, 9, J). dec(j) :- between(0, 9, J). (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 17 / 32 joszam(sz):- dec1(a), dec(b), Sz is A * 10 + B, Sz * Sz // 10 =:= B * 10 + A. Call Fail joszam dec1(a) A=1.. 2... 9.. dec(b) B=0.. 1... 9.. Sz is A*10+B Sz*Sz//10 =:= B*10+A hamis igaz Exit. Redo (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 18 / 32 Lovagok és lókötők Egy nagyobb Prolog példa II. rész Egy nagyobb Prolog példa 1 2 Egy nagyobb Prolog példa 3 A feladat Egy szigeten minden bennszülött lovag vagy lókötő. A lovagok mindig igazat mondanak. A lókötők mindig hazudnak. Egy vagy több bennszülöttnek saját magukra vonatkozó kijelentése alapján meg kell határozni a bennszülött típusát. Példa: Találkozunk két bennszülöttel Alfréd-dal és Bélával. Alfréd azt mondja: van köztünk lókötő. Milyen típusú Alfréd és Béla? Irodalom: Raymond Smullyan: Mi a címe ennek a könyvnek?, A hölgy és a tigris, Typotex kiadó. Továbbfejlesztés: a szigeten lehetnek normális emberek is, akik néha hazudnak, néha igazat mondanak. (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 20 / 32

Egy nagyobb Prolog példa Lovagok és lókötők a megoldás elvei Egy nagyobb Prolog példa Lovagok és lókötők: Prolog program Készítünk egy egyszerű formális nyelvet a bennszülöttek kijelentéseire, pl. Alfréd mondja Alfréd = lókötő vagy Béla = lókötő A bennszülöttek nevei (pl. Alfréd) Prolog változók, amelyek a lovag vagy lókötő értéket veszik fel. A nyelv egyetlen alap-relácója az =. Az összekötő jeleket (mondja, és, vagy, nem) Prolog operátornak deklaráljuk. Egy egyszerű Prolog programmal definiáljuk a bennszülött logikát, azaz a nyelv állításainak igazságértékét. A feladat: egy adott mondat esetén megkeresni azokat a változó-behelyettesítéseket, amelyekre a mondat a bennszülött logika szerint igaz lesz. (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 21 / 32 III. rész 1 2 Egy nagyobb Prolog példa 3 :- op(700, fy, nem). :- op(900, yfx, vagy). :- op(800, yfx, és). :- op(950, xfy, mondja). % Az A bennszülött mondhatja az Áll állítást. A mondja Áll :- értéke(a mondja Áll, 1). % értéke(áll, Érték): Áll igazságértéke Érték (1 = igaz, 0 = hamis). értéke(x = X, 1). értéke(x = Y, 0) :- különböző(x, Y). értéke(lovag mondja M, E) :- értéke(m, E). értéke(lókötő mondja M, E) :- értéke(nem M, E). értéke(m1 és M2, E) :- értéke(m1, E1), értéke(m2, E2), E is E1/\E2. értéke(m1 vagy M2, E) :- értéke(m1, E1), értéke(m2, E2), E is E1\/E2. értéke(nem M, E) :- értéke(m, E1), E is 1-E1. % különböző(a, B): A és B különböző típusú bennszülöttek. különböző(lovag, lókötő). különböző(lókötő, lovag).?- Alfréd mondja Alfréd = lókötő vagy Béla = lókötő. Béla = lókötő, Alfréd = lovag? ; no (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 22 / 32 A kérdés-válasz rendszerekről általában A megoldandó feladatok A tudás ábrázolása egyre inkább logikai alapokon (elsőrendű logika, leíró logika, stb.) Tények, adatok (adatdoboz): akár adatbázisban is tárolható Szabályok, háttértudás (terminológiai doboz): valamilyen logikai formalizmus Természetes nyelvi interfészek Szöveges információ nyelvtani elemzése elemzési fa logikai alak (mind az eltárolandó állítások, mind a kérdések esetén ) Eredmények szöveggé alakítása: logikai eredmény szöveg Válasz kinyerése logikai következtetés Példák az előadás fennmaradó részének tartalomjegyzéke Egy nagyon egyszerű magyar nyelvű kérdés-válasz rendszer Prologban ( Beszélgető ) Hogyan végzik a nyelvtani elemzést a Watson rendszerben (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 24 / 32

Magyar nyelvű tudáskezelő program egy beszélgetés 3?- párbeszéd. : Magyar legény vagyok én. : Ki vagyok én? Magyar legény : Péter kicsoda? Nem tudom. : Péter tanuló. : Péter jó tanuló. : Péter kicsoda? tanuló jó tanuló : Boldog vagyok. : Én vagyok Jeromos. : Te egy Prolog program vagy. : Ki vagyok én? Magyar legény Boldog Jeromos : Okos vagy. : Ki vagy te? egy Prolog program Okos : Valóban? Nem értem : Unlak. Én is. (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 25 / 32 Magyar nyelvű tudáskezelő a mondatszerkezet elemzése Ez a kóddarab a teljes kód kb. 25%-a, három további dián elfér a többi. % mondat(alany, Áll, L0, L): L0-L kielemezhető egy Alany alanyból és Áll % állítmányból álló mondattá. Alany lehet első vagy második személyű % névmás, vagy egyetlen szóból álló (harmadik személyű) alany. mondat(alany, Áll) --> {én_te(alany, Ige)}, én_te_perm(alany, Ige, Áll). mondat(alany, Áll) --> szó(alany), szavak(áll). % én_te(alany, Ige): % Az Alany első/második személyű névmásnak megfelelő létige az Ige. én_te("én", "vagyok"). én_te("te", "vagy"). % én_te_perm(ki, Ige, Áll, L0, L): L0-L kielemezhető egy Ki % névmásból, Ige igealakból és Áll állítmányból álló mondattá. én_te_perm(alany, Ige, Áll) --> ( szó(alany), szó(ige), szavak(áll) ; szó(alany), szavak(áll), szó(ige) ; szavak(áll), szó(ige), szó(alany) ; szavak(áll), szó(ige) ). (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 27 / 32 (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 26 / 32 3 (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 28 / 32

A gép és az ember vetélkedője Nyelvtani elemzés a Watson rendszerben egy példakérdés A vetélkedő: Jeopardy Magyarországon Mindent vagy semmit 1964 óta sugározzák (megszakításokkal) Bajnokok (össznyeremények): Ken Jennings $2.520.700, Brad Rutter $3.455.102 A kihívó: a Watson számítógéprendszer Hardver: 90 db IBM Power 750 szerver, egyenként 4 chip, chipenként 8 db 3.5 GHz mag; 16 Terabyte RAM Szoftver: A DeepQA (mély kérdés-válasz) tudáskezelő rendszer SUSE Linux Enterprise Server 11 operációs rendszer fő nyelvek: Java, C++, de fontos részekben Prolog is A meccs: 2011. február 14-16, résztvevők: Jennings, Watson, Rutter 1. forduló: Jennings $4.800, Watson $35.734, Rutter $10.400. Vége: Jennings $24.000, Watson $77.147, Rutter $21.600. (febr. 28.-án: 5 kongr. képviselő $30.000, Watson $40.300.) További információ: http://www.research.ibm.com/deepqa/deepqa.shtml (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 29 / 32 Nyelvtani elemzés a Watson rendszerben a tények kezelése Tegyük fel, hogy a Watson rendszer háttértudásában szerepel ez a mondat: Songs of a Sourdough by Robert W. Service. Az authorof Prolog predikátumhoz több szabály is tartozik, köztük ez: authorof(author, Composition) :-% Az Author a Composition mű szerzője ha composition(composition), % Composition egy szerzemény. argument(composition, Preposition), % Composition a Preposition argumentuma, lemma(preposition, "by"), % a Preposition szöveges alakja "by", objectofpreposition(preposition, Author), % Author ennek az elöljárószónak a tárgya, author(author), % Author egy szerző. A fenti példamondat elemzését ezzel a szabállyal elvégezve egy olyan állítást nyerünk, amellyel a "Robert W. Service" egy plauzibilis válasz. A mintaillesztésre korábban több saját eszközt fejlesztett az IBM. These frameworks tend to end up replicating some of the features of Prolog but lack the full feature set of Prolog or the efficiency of a good Prolog implementation. Using Prolog for this task has significantly improved our productivity in developing new pattern matching rules and has delivered the execution efficiency necessary in order to be competitive in a Jeopardy! game. (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 31 / 32 Példa kérdésre a POETS & POETRY kategóriában: He was a bank clerk in the Yukon before he published Songs of a Sourdough in 1907. Az elemzési fa Prolog tényállítások formájában (a számok a fa csomópontjainak felelnek meg): lemma(1, "he"). lemma(2, "publish"). lemma(3, "Songs of a Sourdough"). partofspeech(1, pronoun). partofspeech(2, verb). partofspeech(2, noun). subject(2, 1). object(2, 3). A szerzője kapcsolat leírása Prolog szabályokkal (leegyszerűsítve): authorof(author, Composition) :-% Az Author a Composition mű szerzője ha publishing(verb), % Verb egy publikálást kifejező ige, subject(verb, Author), % Author ennek az állításnak az alanya, author(author), % Author egy szerző, object(verb, Composition), % Composition ennek az állításnak a tárgya, composition(composition). % Composition egy szerzemény. publishing(verb) :- % Verb egy publikálást kifejező ige ha partofspeech(verb, verb), % Verb szófaja ige lemma(verb, VerbLemma), % Verb szöveges alakja VerbLemma member(verblemma, ["write","publish",...]). % VerbLemma szerepel az adott listában. (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 30 / 32 Összefoglalás A jövő: intelligens, emberközeli, tudásalapú informatika a tudásábrázolás régen jelen levő formája: (matematikai) logika a tudáskezelés: (logikai) következtetés Logika a jelenben néhány példa: Logikai programozás magasszintű, jól párhuzamosítható (többmagos processzorok) korlát-kiterjesztései (constraint) kiugróan erős következtetést adnak (pl. ILOG IBM) Szemantikus technológiák Szemantikus világháló a keresők, ne csak olvassák, értsék is a világhálót! Szemantikus integráció alkalmazások automatikus összeépítése Tudásalapú (szakértő) rendszerek pl. az orvostudományban (Watson javasolt alkalmazása) (BME SZIT, NJSZT MI Szakosztály) Tanítsuk gondolkodni a gépet Baja, 2012. március 30. 32 / 32