Indrumator Laborator PLIA

  • Upload
    rnprnp

  • View
    104

  • Download
    2

Embed Size (px)

DESCRIPTION

PROGRAMAREA LOGICĂ ȘI INTELIGENȚA ARTIFICIALĂ

Citation preview

Ministerul Educaiei si Tineretului

al Republicii Moldova

UNIVERSITATEA TEHNIC A MOLDOVEI

Catedra Informatica Aplicatndrumar de laborator

PROGRAMAREA LOGIC I INTELIGENA ARTIFICIALChiinu U.T.M., 2013

ndrumarul de laborator include noiuni introductive i sarcini practice corespunztoare, menite s iniieze studentul, att n domeniul programrii logice, ct i n domeniul inteligenii artificiale. Tipul sarcinilor este unul generic, care urmrete reiterarea materialului studiat prin implementare metodelor descrise i demonstrate n lucrare. O caracteristic definitorie a lucrrilor este studiul i analiza detaliat a ndeplinirii sarcinilor utiliznd limbajul de programare Prolog.

Sunt elucidate teme, care au ca subiect sintaxa unui limbaj de programare logic i structurile lui de date fundamentale, baze de cunotine, sisteme expert, reele neuronale i aplicarea lor practic n recunoaterea imaginilor i a vorbirii.

ndrumarul este destinat studenilor specialitilor Calculatoare i Tehnologii Informaionale pentru nsuirea disciplinei Programarea Logic i Inteligena Artificial.

Autori: conf. univ., dr. L. Luchianova, lec.sup V.LazuRedactor responsabil

Recenzent -

U.T.M., 2013Cuprins:

5CAPITOL I

5LUCRAREA DE LABORATOR 1

5Introducere n Limbajul Prolog

5PARTEA 1: Noiuni Teoretice

51.1 Entitile limbajului PROLOG

13Observaii:

16Observaii:

19PARTEA 2: Desfurarea lucrrii

20LUCRAREA DE LABORATOR 2

20Mecanisme de control al procesului de backtracking

20PARTEA 1: Noiuni Teoretice

27PARTEA 2: Desfurarea lucrrii

29LUCRAREA DE LABORATOR 3

29Structuri de date n Prolog

29PARTEA 1: Noiuni Teoretice

293.1. Listele n Prolog

313.2 Exemple de utilizare

35PARTEA 2: Desfurarea lucrrii

38CAPITOL II

38Exemple i Probleme n Limbajul Prolog

38LUCRAREA DE LABORATOR 4

38Sisteme Expert

38PARTEA 1: Noiuni Teoretice

384.1 Scopul i structura general a sistemelor expert

394.2 Determinarea rezultatului (rspunsului) expert

404.3 Sistem Expert, bazat pe reguli i realizarea lui.

434.4 Sistem Expert bazat pe logic i realizarea lui.

47PARTEA 2: Desfurarea lucrrii

49LUCRAREA DE LABORATOR 5

49Prelucrarea Limbajului Natural

49PARTEA 1: Noiuni Teoretice

495. 1 Prelucrarea Limbajului Natural

565.2 Modele de analiz sintactic a propoziiilor

1PARTEA 2: Desfurarea lucrrii

2LUCRAREA DE LABORATOR 6

2Algoritmi de recunoatere

2PARTEA 1: Noiuni Teoretice

8PARTEA 2: Desfurarea lucrrii

9LUCRAREA DE LABORATOR 7

9Algoritmi de recunoatere a imaginilor

9PARTEA 1: Noiuni Teoretice

117.1 Recunoatere n dependen de unghiul dintre vectori

127.2 Recunoaterea imaginilor dup produsul lor scalar

137.3 Recunoaterea imaginilor dup apartenena acestora la o zon de spaiu dat

16PARTEA 2: Desfurarea lucrrii

17LUCRAREA DE LABORATOR 8

17Reelele Neuronale Hamming

17PARTEA 1: Noiuni Teoretice

30PARTEA 2: Desfurarea lucrrii

31LUCRAREA DE LABORATOR 9

31Reelele Neuronale Hebb

31PARTEA 1: Noiuni Teoretice

319.1 Neuroni formali ai reelelor neuronale artificiale

379.2 Rezolvarea problemelor pe baz de neuroni independeni. Regula Hebb

459.3 Reeaua neuronal Hebb

48PARTEA 2: Desfurarea lucrrii

49BIBLIOGRAFIE

50ANEXA 1

58ANEXA 2

63ANEXA 3

CAPITOL ILUCRAREA DE LABORATOR 1

Introducere n Limbajul Prolog

Scopul: nsuirea principiilor fundamentale de programare a limbajului Prolog

PARTEA 1: Noiuni Teoretice 1.1 Entitile limbajului PROLOG

Prolog este un limbaj logic, descriptiv, care permite specificarea spaiului problemei i a soluiei acesteia, opernd n termeni de fapte cunoscute despre obiectele universului problemei i a relaiilor existente ntre aceste obiecte. Execuia unui program Prolog const n deducerea implicaiilor dintre aceste fapte i relaii, programul definind astfel o mulime de consecine ce reprezint nelesul sau semnificaia declarativ a programului.

Un program Prolog conine urmtoarele entiti:

fapte despre obiecte i relaiile existente ntre aceste obiecte;

reguli despre obiecte i relaiile dintre acestea, care permit deducerea

(inferarea) unor fapte noi pe baza celor cunoscute;

ntrebri, numite i scopuri, despre obiecte i relaiile acestora, la care programul rspunde n baza faptelor i regulilor existente.

1.1.1 Fapte

Faptele sunt predicate de ordinul nti de aritate n considerate adevrate (reprezint cea mai simpl forma de predicat din Prolog). Ele stabilesc relaiile ntre obiectele universului problemei. Numrul de argumente ale faptelor este reprezentat prin aritatea corespunztoare a predicatelor.

Exemple:

Fapt:Aritate:

cine(bobi).1

place(ion, ioana).2

place(ion, ana).2

frumoas(ana).1

bun(daniel).1

deplaseaz(cub, camera1, camera2).3

Interpretarea particular a predicatului i a argumentelor acestuia depinde de programator. Ordinea argumentelor este important, i odat fixat trebuie pstrat pentru orice utilizare ulterioar a faptului cu aceeai semnificaie. Mulimea faptelor i regulilor unui program Prolog formeaz baza de cunotine Prolog.

1.1.2 Scopuri

Obinerea consecinelor sau a rezultatului unui program Prolog se face prin stabilirea unor scopuri care n funcie de coninutul bazei de cunotine pot fi adevrate sau false. Scopurile sunt predicatele pentru care se dorete aflarea valorii de adevr n contextul faptelor existente ale unei baze de cunotine. Rezultatul unui program Prolog este rspunsul la o ntrebare (sau la o mbinare de ntrebri). Acest rspuns poate fi afirmativ - yes, sau negativ - no. n cazul unui rspuns afirmativ la o ntrebare, un program Prolog poate furniza n continuare i alte informaii din baza de cunotine.

Exemplu:

Considernd baza de cunotine specificat anterior, se pot stabili diverse ntrebri, cum ar fi:

?- place(ion, ioana).

Yes % deoarece acest fapt exist n baza de cunotine

?- papagal(ion).

No % deoarece acest fapt nu exist n baza de cunotine

n exemplele prezentate de pn acum, argumentele faptelor i ntrebrilor au fost obiecte particulare, numite i constante sau atomi simbolici. Predicatele Prolog (ca i orice predicate n logica cu predicate de ordinul I), permit argumente n form de obiecte generice, numite variabile. n mod convenional, n Prolog numele argumentelor variabile ncepe cu o majuscul iar numele constantelor simbolice ncep cu o minuscul. O variabil poate fi instaniat (legat) dac exist un obiect asociat acestei variabile, sau neinstaniat (liber) dac nu se tie nc ce obiect va desemna variabila.

Iniial, la fixarea unui scop Prolog care conine variabile, acestea sunt neinstaniate, iar sistemul ncearc satisfacerea acestui scop cutnd n baza de cunotine un fapt care se poate identifica cu scopul printr-o instaniere adecvat a variabilelor din scopul dat. Eventual, se deruleaz un proces de unificare a predicatului scop cu unul din predicatele fapte existente n baza de cunotine. La ncercarea satisfacerii scopului cutarea pornete ntotdeauna de la nceputul bazei de cunotine. Dac se stabilete un fapt cu un simbol predicativ identic cu cel al scopului, variabilele din scop se instaniaz conform algoritmului de unificare i valorile variabilelor astfel obinute sunt afiate ca rspuns la satisfacerea acestui scop.

Exemple:

?- caine(CineEste).

CineEste = bobi

?- deplaseaza(Ce, DeUnde, Unde).

Ce = cub, DeUnde = camera1, Unde = camera2

?- deplaseaza(Ce, Aici, Aici).

No

n cazul n care exist mai multe fapte n baza de cunotine care se unific cu ntrebarea pus, deci exist mai multe rspunsuri la ntrebare, care corespund mai multor soluii ale scopului fixat, limbajul Prolog procedeaz n felul urmtor: prima soluie rezult din prima unificare i exist attea soluii cte combinaii de unificri exist. La realizarea primei unificri este marcat faptul care a unificat i care reprezint prima soluie. La obinerea urmtoarei soluii, cutarea este reluat de la marcaj, descendent n baza de cunotine. Obinerea primei soluii este de obicei numit satisfacerea scopului iar obinerea celorlalte soluii, re-satisfacerea scopului. La satisfacerea unui scop cutarea se face ntotdeauna de la nceputul bazei de cunotine. La re-satisfacerea unui scop, cutarea se face ncepnd de la marcajul stabilit de satisfacerea anterioar a aceluiai scop.

Sistemul Prolog, fiind un sistem interactiv, permite utilizatorului obinerea fie a primului rspuns, fie a tuturor rspunsurilor. n cazul n care, dup afiarea tuturor rspunsurilor, un scop nu mai poate fi re-satisfcut, sistemul rspunde no.

Exemple:

?- place(ion, X).

X = ioana;

X = ana;

no

1.1.3 Reguli

O regul Prolog exprim un fapt care depinde de alte fapte i are forma:

S :- S1, S2, Sn.

Fiecare Si, i =1,n i S au forma faptelor Prolog, deci sunt predicate cu argumente constante, variabile sau structuri. Faptul S care definete regula, se numete antet de regul, iar S1, S2, Sn formeaz corpul regulii i reprezint conjuncia (unificarea) scopurilor care trebuie satisfcute pentru satisfacerea ulterioar a antetul regulii..

Fie urmtoarea baz de cunotine Prolog:

Ana este frumoas. frumoasa(ana). % Ipoteza 1

Ion este bun. bun(ion). % Ipoteza 2

Ion o cunoate pe Maria. cunoaste(ion, maria). % Ipoteza 3

Ion o cunoate pe Ana. cunoaste(ion, ana). % Ipoteza 4

Mihai o place pe Maria. place(mihai, maria). % Ipoteza 5 Dac dou persoane X i Y se cunosc i persoana X este bun i persoana Y este frumoas, atunci cele dou persoane, X i Y, se plac. place(X, Y) :- bun(X), cunoaste(X, Y), frumoasa(Y). % Ipoteza 6

Enunul de la ipoteza 6 definete o regul Prolog. Relaia place(Cine, PeCine), este definit att printr-un fapt (Ipoteza 5) ct i printr-o regul (Ipoteza 6). n condiiile existenei regulilor n baza de cunotine Prolog, satisfacerea unui scop se face printr-un procedeu similar cu cel prezentat n seciunea b), iar unificarea scopului se ncearc att cu fapte din baza de cunotine, ct i cu antetul regulilor de baz. La unificarea unui scop cu antetul unei reguli, pentru satisfacerea acest scop trebuie satisfcut i regula. Aceasta, se reduce la satisfacerea tuturor faptelor din corpul regulii, deci conjuncia scopurilor. Scopurile din corpul regulii devin subscopuri a cror satisfacere se va ncerca printr-un mecanism similar cu cel al satisfacerii scopului iniial.

Pentru baza de cunotine descris mai sus, satisfacerea scopului

?- place(ion, ana). se va produce astfel: scopul se unific cu antetul regulii (6) i duce la instanierea variabilelor din regula (6): X = ion i Y = ana. Pentru ca acest scop s fie ndeplinit, trebuie ndeplinit regula, deci fiecare subscop din corpul acesteia. Aceasta revine la ndeplinirea scopurilor bun(ion), care este satisfcut prin unificare cu faptul (2) cunoaste(ion, ana), care este satisfcut prin unificare cu faptul (4) i a scopului frumoasa(ana), care este satisfcut prin unificare cu faptul (1). n consecin, regula a fost ndeplinit, deci i ntrebarea iniial este satisfcut (adevrat), iar sistemul rspunde yes.n continuare s observm ce se ntmpl dac se pune ntrebarea:

?- place(X, Y).

Prima soluie a acestui scop este dat de unificarea cu faptul (5), iar rspunsul este:

X = mihai, Y = maria

Sistemul Prolog va pune un marcaj n dreptul faptului (5) care a satisfcut scopul. Urmtoarea soluie a scopului place(X, Y) se obine ncepnd cutarea de la acest marcaj n continuare n baza de cunotine. Scopul unific cu antetul regulii (6) i se vor fixa trei noi subscopuri de ndeplinit, bun(X), cunoaste(X, Y) i frumoasa(Y). Scopul bun(X) este satisfcut de faptul (2) i variabila X este instaniat cu valoarea ion, X=ion. Se ncearc apoi satisfacerea scopului cunoaste(ion, Y), care este satisfcut de faptul (3) i determin instanierea Y = maria. Se introduce n baza de cunotine un marcaj asociat scopului cunoaste(ion, Y), care a fost satisfcut de faptul (3). Se ncearc apoi satisfacerea scopului frumoasa(maria). Acesta eueaz. n acest moment sistemul intr ntr-un proces de backtracking n care se ncearc re-satisfacerea scopului anterior satisfcut, cunoaste(ion, Y), n sperana c o noua soluie a acestui scop va putea satisface i scopul curent care a euat, frumoasa(Y). Re-satisfacerea scopului cunoaste(ion, Y) se face pornind cutarea de la marcajul asociat scopului n jos, deci de la faptul (3) n jos. O nou soluie (re-satisfacere) a scopului cunoaste(ion, Y) este dat de faptul (4) care determin instanierea Y = ana. n acest moment se ncearc satisfacerea scopului frumoasa(ana). Cnd este vorba de un scop , cutarea se face de la nceputul bazei de cunotine i scopul frumoasa(ana) este satisfcut de faptul (1). n consecin, a doua soluie a scopului place(X, Y) este obinut i sistemul rspunde:

X = ion, Y = ana, urmnd un mecanism de backtracking, descris intuitiv n Figura 1.1 prin prezentarea arborilor de deducie construii de sistemul Prolog.

La ncercarea de re-satisfacere a scopului place(X, Y), printr-un mecanism similar, se observ c nu mai exist alte soluii. n concluzie, fiind dat baza de cunotine Prolog anterioar, rspunsul sistemului Prolog la ntrebarea place(X, Y) este:

?- place(X, Y).

X = mihai, Y = maria;

X = ion, Y = ana;

No

Observaii:

La satisfacerea unei conjuncii de scopuri n Prolog, se ncearc satisfacerea fiecrui scop pe rnd, de la stnga la dreapta. Prima satisfacere a unui scop determin plasarea unui marcaj n baza de cunotine n dreptul faptului sau regulii care a determinat satisfacerea scopului.

Dac un scop nu poate fi satisfcut (eueaz), sistemul Prolog re-itereaz i ncearc re-satisfacerea scopului din stnga, pornind cutarea n baza de cunotine de la marcaj n mod descendent. nainte de re-satisfacerea unui scop se elimin toate instanierile de variabile determinate de ultima satisfacere a acestuia. Dac cel mai din stnga scop din conjuncia de scopuri nu poate fi satisfcut, ntreaga conjuncie de scopuri eueaz.

Aceast comportare a sistemului Prolog n care se ncearc n mod repetat satisfacerea i re-satisfacerea scopurilor din conjunciile de scopuri se numete backtracking.

Figura 1.1 - Algoritmul de satisfacere a scopurilor n Prolog.

La general, o regul are urmtoarea sintax:

nume_rel(arg1, , argN) :- nume_rel_1(), , nume_rel_M().

Exemplu:

Putem defini predicatul so astfel Brbat este ot dac este brbat i este cstorit cu o femeie (Femeie). Aceast definiie va fi codificat prin urmtoarea regul:sot(Barbat, Femeie):-

barbat(Barbat), cuplu_casatorit(Barbat, Femeie).

Similar,

sotie(Femeie, Barbat):-

femeie(Femeie), cuplu_casatorit(Barbat, Femeie).

Partea stng a operatorului :- este numit capul regulii (head), iar cea din dreapta corpul regulii (body).

Observaii:

Un fapt poate fi vzut ca o regul fr corp (fr condiie).

Regulile i faptele care definesc aceeai relaie (au acelai nume de relaie la seciunea capului) trebuie grupate n sursa programului.

n Prolog, relaiile sunt numite de obicei predicate.

Dup adugarea celor dou reguli, devine posibil introducerea interogrii:

?- sot(Barbat,Femeie), writeln(Barbat),fail.

Ca rezultat va aprea un rspuns n care se vor conine toate numele de brbai din baza de cunotine (de exemplu: ion, andrei, gheorghe, gabriel, mihai.)

Pentru a putea urmri modul n care este rezolvat interogarea poate fi utilizat comanda trace. Pe ecran vor apare diferite subscopuri care trebuie rezolvate de programul Prolog pentru a obine rspunsul la interogare.

Urmtoarea regul definete faptul c persoan este printele unui copil.

parinte(Parinte,Copil):-tata(Parinte,Copil); mama(Parinte,Copil).

n aceast regul, punctul i virgula (;) desemneaz operatorul logic SAU.

Mai departe putem utiliza regula parinte pentru a crea o nou regul ce verific dac o persoan este copilul unei persoane anume.

Figura 1. 2 - Graful pentru relaiile bunic- nepot utiliznd relaii deja definite

copil(Copil,Parinte):-parinte(Parinte,Copil).

Pn la acest moment, am definit reguli bazate pe relaii directe dintre persoanele ce alctuiesc baza de cunotine. n continuare, vom defini dou reguli care prezint relaii indirecte ntre persoanele din baza de cunotine. Vom defini regula bunic i regula nepot utiliznd relaiile prezentate n Figura 1. 2 .

Pentru a afla bunicul Z unei persoane X procedm astfel:

Cine este printele lui X? (presupunem c este Y).

Cine este printele lui Y? (presupunem c este Z).

Deci, Z va fi bunicul lui X.

Relaia sora, de exemplu, poate fi descris de urmtorul algoritm:

Pentru orice X i Y,

X este sora lui Y dac

(1) X i Y au acelai printe, i

(2) X este femeie.

O posibil implementare n Prolog a algoritmului prezentat mai sus este urmtoarea:

sora(X,Y):-parinte(Z,X), parinte(Z,Y), femeie(X), XY.

Menionm faptul c modalitatea n care X i Y au acelai printe a fost prezentat anterior. n Prolog, operatorul are sensul de diferit.PARTEA 2: Desfurarea lucrrii

1. Se va citi breviarul teoretic. Se atrage atenia asupra faptului c toate cunotinele din aceast lucrare vor fi necesare i n derularea celorlalte lucrri.

2. Se vor studia exemplele propuse , ncercnd gsirea altor posibiliti de soluionare a acestora. Se vor utiliza i alte scopuri (interogri) pentru a testa definiiile predicatelor introduse

3. Se va elabora un arbore genealogic i o baz de cunotine Prolog care ar descrie relaiile existente n familia Dumneavoastr proprie care ar permite cercetarea acestor relaii prin utilizarea scopurilor externe. Arbore genealogic elaborat trebuie s conin cel puin trei nivele. Pentru cercetarea relaiilor existente n familie se vor utiliza nu mai puin de ase scopuri.

4. Se va prezenta darea de seam .

LUCRAREA DE LABORATOR 2Mecanisme de control al procesului de backtrackingScopul: nsuirea ideilor despre mecanisme specifice limbajului Prolog pentru controlul procesului de backtracking: cut i failPARTEA 1: Noiuni Teoretice

Sistemul Prolog se implic automat ntr-un proces de backtracking atunci cnd acest lucru este necesar pentru satisfacerea unui scop. n unele situaii acest comportament poate fi deosebit de util, pe cnd n atele poate deveni foarte ineficient. Se consider urmtorul exemplu de program n care se definesc valorile unei funcii:

f(X, 0) :- X < 3.% 1

f(X, 2) :- 3 =< X, X < 6.% 2

f(X, 4) :- 6 =< X.% 3

La ntrebarea:

?- f(1, Y).

Y = 0rspunsul sistemului indic faptul c valoarea funciei pentru X=1 este Y=0. Dac se pune ntrebarea format din conjuncia de scopuri:

?- f(1, Y), 2 < Y.

nosistemul semnaleaz un eec. Arborii de deducie corespunztori sunt prezentai n Figura 2.1 :

Figura 2.1 - Arbori de deducie a scopurilor f(1,Y) i f(1,Y),2 Y.

min2(X, Y, X) :- X =< Y, !.% cut rou min2(X, Y, Y).

n definiia predicatului min1 se utilizeaz un cut verde; acesta se folosete pentru creterea eficienei programului, dar ordinea clauzelor de definire a lui min1 poate fi schimbat fr nici un efect asupra rezultatului programului. n cazul predicatului min2 se utilizeaz un cut rou, asemntor structurii daca_atunci_altfel. Dac se schimb ordinea clauzelor de definire a predicatului min2: rezultatul programului va fi incorect pentru valori X < Y.

Oportunitatea utilizrii unui cut rou sau a unui cut verde este, dintr-un anumit punct de vedere, similar cu cea a utilizrii sau nu a salturilor n limbajele de programare clasic. Dac s-ar rescrie predicatul daca_atunci_altfel folosind un cut verde, definiia lui ar fi:

daca_atunci_altfel(Cond, Act1, Act2) :- Cond, !, Act1.

daca_atunci_altfel(Cond, Act1, Act2) :- not (Cond),!,Act2 unde predicatul not(Cond) este satisfcut dac scopul Cond nu este satisfcut. O astfel de definiie implic evaluarea lui Cond de dou ori i, dac Cond se definete ca o conjuncie de scopuri, posibil sofisticate, atunci ineficiena utilizrii unui cut verde n acest caz este evident. De la caz la caz, programatorul n Prolog trebuie s aleag ntre claritate, deci pstrarea corespondenei semnificaiei declarative cu cea procedural, i eficien.

Limbajul Prolog permite exprimarea direct a eecului unui scop cu ajutorul predicatului fail. Predicatul fail este un predicat standard, fr argumente, care eueaz ntotdeauna. Datorit acestui lucru introducerea unui predicat fail ntr-o conjuncie de scopuri (de obicei la sfrit) determin intrarea n procesul de backtracking.

Atunci cnd fail este plasat dup predicatul cut, atunci nu se apeleaz backtracking-ul. Enunul "Un individ este ru dac nu este bun." se poate exprima astfel:

bun(gelu). bun(vlad). bun(mihai.

rau(X) :- bun(X), !, fail. rau(X).

?-rau(gelu).

no

?- rau(petru).

yes

n cazul n care predicatul fail este folosit pentru a determina un eec, cum i n cazul exemplului de mai sus, acesta este de obicei precedat de predicatul cut, deoarece procesul de backtracking pe scopurile care l preced este inutil, scopul eund oricum datorit lui fail.

Exist cazuri n care predicatul fail este introdus intenionat pentru a genera procesul de backtracking pentru scopurile care l preced, proces interesant nu att din punctul de vedere al posibilitii de re-satisfacere a scopului ce conine fail, ct din punctul de vedere al efectului lateral al acestuia.

rosu(mar). rosu(cub). rosu(soare.

afisare(X) :- rosu(X), write(X),fail.

afisare( _ ).

Scopul afisare(X) va afia toate obiectele roii cunoscute de programul Prolog datorit procesului de backtracking generat de fail; astfel, cu ajutorul lui fail se realizeaz o iteraie pentru faptele rosu(). Clauza afisare( _ ) se adug pentru ca rspunsul final la satisfacerea scopului s fie afirmativ. n acest caz, introducerea unui cut nainte de fail ar fi determinat numai afiarea primului obiect rou din program.

Analiznd combinaia !,fail, se consider n continuare implementarea n Prolog a afirmaiei: "Mihai iubete toate sporturile cu excepia boxului". Aceast afirmaie poate fi exprimat n pseudocod sub forma:

dac X este sport i X este box atunci Mihai iubete X este fals altfel dac X este sport

atunci Mihai iubete X este adevrat

i tradus n Prolog astfel:

iubeste(mihai, X) :- sport(X), box(X), !, fail. iubeste(mihai, X) :- sport(X)

Predicatul cut utilizat aici este un cut rou. Combinaia !, fail este deseori utilizat n Prolog i are rolul de negaie. Se mai spune c limbajul Prolog modeleaz negaia ca eec al satisfacerii unui scop (negaia ca insucces), aceasta fiind de fapt o particularizare a ipotezei lumii nchise. Combinaia !, fail este echivalent cu un predicat standard existent n Prolog - predicatul not. Predicatul not permite drept argument un predicat Prolog i reuete dac predicatul argument eueaz. Utiliznd acest predicat, ultimul exemplu dat se poate exprima n Prolog astfel:

iubeste(mihai, X) :-sport(X),not(box(X)).

iubeste(mihai, X) :- sport(X).

Un alt predicat standard este predicatul call, care permite drept argument un predicat Prolog i are ca efect ncercarea de satisfacere a predicatului argument. Predicatul call reuete dac predicatul argument reuete i eueaz n caz contrar. Utiliznd acest predicat, se poate explicita efectul general al predicatului standard not n urmtorul mod:

not(P) :- call(P), !,fail. not(P).

Att predicatul not ct i predicatul call sunt predicate de ordinul II n Prolog (metapredicate) deoarece admit ca argumente alte predicate.

PARTEA 2: Desfurarea lucrrii

1. Citii breviarul teoretic. Se atrage atenia asupra faptului c toate cunotinele din aceast lucrare vor fi necesare i n derularea celorlalte lucrri.

2. Lansai la executare programul elaborat n lucrarea 1 i cercetai schimbrile semanticii procedurale :

prin schimbarea ordinii propoziiilor fapte;

prin schimbarea ordinii propoziiilor reguli; (dou variante)

prin schimbarea subscopurilor n reguli; (dou variante)

Facei concluzii.

3. Rezolvai urmtoarele probleme propuse i se va urmri execuia lor corect.

3.1 Elaborai i testai un program pentru determinarea unei valori minime din dou numere (X i Y), fr utilizarea predicatului cut.

3.2 Elaborai i testai un program pentru determinarea unei valori minime din dou numere (X i Y), utiliznd predicatul cut rou i cut verde.

3.3 Care vor fi rspunsurile programului

( 1).( 2) :- !.

( 3).

Facei o analiz comparativ ntre utilizarea predicatelor cut n spaiul bazei de cunotine i spaiul scopurilor pentru ntrebrile formulate n lista de scopuri ce urmeaz:( X).

( X), p(Y).

( X), !, p(Y).

3.4 Doi copii pot juca un meci ntr-un turneu de tenis dac au aceeai vrst. Fie urmtorii copii i vrstele lor:

copil(peter,9). copil(paul,10). copil(chris,9). copil(susan,9).

Definii un predicat din care rezult toate perechile de copii care pot juca un meci ntr- un turneu de tenis.

4. Introducei schimbri corespunztoare n program (punct 2.1), utiliznd cut verde cel puin n dou reguli din baza de cunotine.

5. Introducei schimbri corespunztoare n program (punct 2.1), utiliznd cut rou n reguli din baza de cunotine. Facei concluzii.

6. Prezentai darea de seam.

LUCRAREA DE LABORATOR 3

Structuri de date n PrologScopul: Folosirea listelor, un instrument puternic al Prologului.

PARTEA 1: Noiuni Teoretice

3.1. Listele n PrologLista reprezint unul dintre tipurile cele mai utilizate de structuri de date, att n Prolog, ct i n alte limbaje declarative. O list este o secven ordonat de obiecte de acelai tip. n PROLOG, elementele unei liste se separ ntre ele prin virgul i ntreaga secven este nchis ntre paranteze drepte.

Exemple:

[] lista vid;[X, Y, Y] list ale crei elemente sunt variabilele X, Y i Z; [[0, 2, 4], [1, 3]] list de liste de numere ntregi;Tipurile de liste utilizate ntr-un program PROLOG trebuie declarate n seciunea domains sub forma:

tip_lista = tip*

unde tip este un tip standard sau definit de utilizator. O list este compus conceptul din dou pri:

cap (head), care desemneaz primul element din list;

rest (tail), care desemneaz lista elementelor rmase dup eliminarea primului element.

Restul unei liste se mai numete corpul sau coada unei liste, i este ntotdeauna o list. Exemplele urmtoare ilustreaz modul n care se structureaz o list:

Tabel 3.1 Exemple de structurare a listelorListaCapCoada

['a','b','c']'a'['b','c']

['a']'a'[]

[]nedefinitnedefinit

[[1,2,3],[2,3,4],[]][1,2,3][[2,3,4],[]]

Aceast dihotomie este utilizat in predicatele care prelucreaz liste folosindu-se de avantajul regulii de unificare (identificare, substituire):

singurul termen care se identifica cu [] este []. o list de forma [H1|T1] se va identifica numai cu o list de forma [H2|T2] daca H1 se poate identifica cu H2 i T1 se poate identifica cu T2.Urmtorul tabel, prezint cteva exemple care ilustreaz aceast regula de unificare:Tabel 3.2 Exemple ce ilustreaz regula de unificareLista1Lista2Legarea variabilelor

[X,Y,Z][Ion, Maria, Vasile]X=Ion, Y=Maria, Z=Vasile

[7][X,Y]X=7, Y=[]

[1,2,3,4][X,Y|Z]X=1, Y=2, Z=[3,4]

[1,2][3|X]esec

3.2 Exemple de utilizare

Majoritatea predicatele care utilizeaz (proceseaz) liste sunt recursive i sunt definite pentru:

cazul de baza: lista vida []

cazul recursiv: pentru o lista de forma [H|T], se efectueaz anumite aciuni asupra capului H, i ulterior se apeleaz predicatul recursiv cu coada T.

Utiliznd listele, putem acumula informaii i/sau date ntr-un singur obiect PROLOG. De exemplu, fie faptele:

luna (1, ianuarie). luna(2, februarie). luna(3, martie). luna(4, aprilie). luna(5, mai). luna(6, iunie).

pot fi redate folosind o singur list sub forma faptului:

luni_prima_jumatate_an([ianuarie, februarie, martie, aprilie, mai, iunie]).

Pentru o comparaie mai ampl, considerm urmtoarele dou programe i cteva interogri asupra lor:

/* program_1 */

predicates

luna(integer,symbol)

afis

afis_p(integer)

afis_n(integer)

clauses

luna(1,ianuarie). luna(2, februarie). luna(3, martie).

luna(4, aprilie). luna(5, mai). luna(6, iunie).

afis:-luna(_,X),write(X),nl,fail.

afis.

afis_p(1):-luna(1,X), write(X),nl.

afis_p(N):-N1=N1,afis_p(N1),N2=N1+1,

luna(N2,X),write(X),nl.

afis_n(N):-luna(N, X), write(X),nl.

Goal: afis

ianuarie februarie martie aprilie mai iunie

yes

Goal: afis_p(1)

ianuarie

yes

Goal: afis_p(3)

ianuarie februarie martie

yes

Goal: afis_n(3)

Martie

yes

Figura 3.1 Cod listing. Exemplu de folosire a listelor

/* program_2 */

Domains

luni=symbol*

predicates

prima_jumat_an(luni)

clauses

prima_jumat_an([ianuarie,februarie,martie,aprilie,mai,iunie]).

Goal: prima_jumat_an(X)

X = [ianuarie, februarie, martie, aprilie, mai,iunie]

1 Solution

Goal: prima_jumat_an([X1, X2, X3, X4, X5, X6])

X1 = ianuarie, X2 = februarie, X3 = martie, X4 = aprilie, X5 = mai, X6 = iunie

1 Solution

Goal: prima_jumat_an([X|Y])

X = ianuarie, Y = [ februarie, martie, aprilie, mai, iunie]

1 Solution

Goal: prima_jumatate_an([X|_])

X = ianuarie

1 Solution

Goal: prima_jumat_an([X,Y,Z| R])

X = ianuarie, Y = februarie, Z = martie, R = [aprilie, mai, iunie]

1 Solution

Goal: prima_jumat_an([X,Y,Z |_])

X = ianuarie, Y = februarie, Z =martie

1 Solution

Goal: prima umat_an([_,_,X|_])

X = martie

1 Solution

Figura 3.2 Cod listing. Exemplu de folosire a listelor eterogeneDin exemplele prezentate mai sus limbajul Prolog permite sa se aleag nu doar primul element al unei liste, ci mai multe. De asemenea, se permite lucrul cu listele n care elementele nu sunt de acelai tip.

n exemplul ce urmeaz obiectele de tip lista sunt liste ale cror elemente pot fi numere ntregi, reale sau complexe.

domains

complex=z(real,real)

numar=r(real);i(integer);c(complex)

lista=numar*

predicates

p(lista)

clauses.

p([r(2.8),i(9),r(0.89),i(77),c(z(2,6))]).

Goal: p([X|Y])

X = r(2.8), Y = [i(9),r(0.89),i(77),c(z(2,6))]

1 Solution

Goal: p([X|_]) X = r(2.8)

1 Solution

Goal: p([X, i(9) |Y])

X = r(2.8), Y = [r(0.89),i(77),c(z(2,6))]

1 Solution

Goal: p([X, r(0.89) |Y])

No Solution

Figura 3.3 Cod listing. Exemplu de folosire a listelor cu numere intregi, reale i complexe

PARTEA 2: Desfurarea lucrrii

Se propun spre rezolvare urmtoarele probleme (precizai varianta corespunztoare la profesor):

1. Liniarizarea listelor. Scrie predicatul liniar (ListaListe, Lista), unde ListaListe este o list de elemente care pot fi la rndul lor liste, iar n Lista se construiete liniarizarea listei ListaListe. Astfel, liniar([1, 2, [3, 4], [5, [6, 7], [[8], 9]]], L) va returna in L lista [1, 2, 3, 4, 5, 6, 7, 8, 9].2. Scriei un predicat descomp(N, Lista) care primete un numr ntreg N i ntoarce o list a factorilor primi ai numrului N; de exemplu: descomp(12, [2, 2, 3]) este adevarat.

3. Scriei un predicat invers(Lista, ListaInversata) care inverseaz elementele unei liste; s se scrie dou variante ale predicatului de inversare a unei liste: o variant n care lista inversat este calculata pe ramura de revenire din recursivitate i o variant n care lista inversat este calculat pe ramura de avans n recursivitate.

4. Scriei un predicat palindrom(Lista) care verific dac o list este palindrom (Un palindrom este o secven care, dac este parcurs de la stnga la dreapta sau de la dreapta la stnga, este identica, de

exemplu: [a, b, c, b, a] sau [a, b, c, c, b, a]). S se modifice predicatul anterior astfel nct s genereze liste palindrom cu elemente 0 i 1.

5. Scriei un predicat rotire(Lista, Directie, Nr, ListaRez) care rotete Lista cu un numr de Nr elemente la stnga (dac_ Directie = stg) sau la dreapta (dac_ Directie = dr), depunnd rezultatul n ListaRez.

6. S se scrie predicatul substitutie(X, Y, L1, L2), unde L2 este rezultatul substituirii tuturor apariiilor lui X din lista L1 cu Y. Ex: substitutie(a, x, [a, [b,a,] c], L2) va produce: L2 = [x, [b, x], c].

7.S se scrie predicatul imparte(L, L1, L2) care mparte lista L n dou sub-liste L1 i L2, care au un numr de elemente aproximativ egal, fr a calcula lungimea listei L. Ex: imparte([a, b, c, d, e], L1, L2) va produce: L2 = [a, b, c] si L3 = [d, e].

8. S se scrie un predicat evenmember(Elem,Lista) care spune daca Elem se afl n Lista pe poziie par. De exemplu, apelul evenmember(X,[1,5,3,4]) va returna pe rind solutiile X = 5; X = 4.

9. S se scrie un predicat imparte(L1,L2,L3) care mparte lista L1 n dou liste L2 i L3, coninnd elementele de pe poziiile impare iar L3 pe cele de pe poziilii pare.Ex: imparte([a,b,c,d,e],L2,L3) va produce L2=[a,c,e] si L3=[b,d].10. S se scrie un program Prolog care s calculeze media numerelor unei liste.

11. S se scrie un program Prolog care calculeaz i afieaz cel mai mare divizor comun al tuturor numerelor dintr-o list.

12. S se scrie un program Prolog care s sorteze descresctor numerele unei liste.

14. Scriei un program care utilizeaz predicatul listaPara, care are conine dou argumente: o list de numere ntregi, iar al doilea argument returneaz o list cu toate numerele pare din prima list.

15. S se elimine primele N elemente de la nceputul unei liste. Numrul elementelor pentru eliminare se va introduce utiliznd predicatul readln al limbajului Prolog.

16. S se elimine ultimele N elemente a unei liste. Numrul elementelor pentru eliminare se va introduce utiliznd predicatul readln al limbajului Prolog. CAPITOL IIExemple i Probleme n Limbajul Prolog

LUCRAREA DE LABORATOR 4Sisteme ExpertScopul: Studierea principiile de proiectare i de organizare a sistemelor expert bazate pe logic i reguli.

PARTEA 1: Noiuni Teoretice

4.1 Scopul i structura general a sistemelor expertSistemul expert (SE) este un program (pachet de programe), care simuleaz ntr-o oarecare msur activitatea unui expert uman ntr-un anumit domeniu. Mai mult dect att, acest domeniu este strict limitat. Principalul scop al SE este de a consulta n domeniul pentru care acest SE este proiectat.

Un SE este format din trei componente principale (Fig. 4.1):

1) Baza de cunotine (BC). BC este partea central a sistemului expert. Aceasta conine o colecie de fapte i de cunotine (regulile) pentru extragerea altor cunotine. Informaiile coninute n baza de cunotine sunt folosite de ctre SE pentru determinarea rspunsului n timpul consultrii. De obicei, BC sunt separate de programul principal sau stocate pe alte mijloace fixe.

2) Mecanismul (motorul) de inferen. MI conine descrieri ale modului de aplicare a cunotinelor cuprinse n baza de cunotine. n timpul consultrii, MI iniiaz SE s nceap procesrile, ndeplinind regulile determin admisibilitatea soluiei gsite i transmite rezultatele la Interfaa sistemului (System User Interface).3) Interfaa sistemului utilizatorului (ISU) este parte a SE, care interacioneaz cu utilizatorul. Funciile ISU includ: primirea informaiilor de la utilizator, transferul rezultatelor n forma cea mai convenabil utilizatorului, explicarea rezultatelor primite de SE (ofer informaii cu privire la atingerea rezultatelor).

Figura 4.1 - Structura general a SE

n funcie de metoda de clasificare i plasare a informaiei exist mai multe tipuri de Baze de cunotine: de producie, de reea i de cadru (frame-uri) modele de reprezentare a cunotinelor.

Modelul de reea se bazeaz pe reprezentarea cunotinelor n forma unei reele ale crei noduri corespund conceptelor iar arcele relaiilor dintre ele.

La baza modelului pe cadre (frame-uri) se afl o grupare logic de atribute a obiectului, precum i depozitarea i prelucrarea grupurilor logice care sunt descrise n cadre.

Modelul de producie se bazeaz pe regulile de forma "dac-atunci" i permite introducerea fragmentelor de cunotine faptice n regulile limbajului Prolog. Anume astfel sunt construite SE bazate pe reguli. La punerea n aplicare a SE bazat pe logic, baza de cunotine reprezint un set de afirmaii, fapte. Elaborarea concluziei unui expert n acest caz se bazeaz pe mijloacele standard de lucru cu listele.

4.2 Determinarea rezultatului (rspunsului) expert

Prin concluzia SE, se subnelege dovada faptului c n setul de ipoteze se conine concluzia cutat. Logica de obinere a rspunsului (concluziei) sunt specificate de regulile de inferen. Concluzia (rezultatul) este efectueaz prin cutare i comparare a modelului.

n SE, bazat pe reguli, ntrebrile (scopurile) utilizatorului sunt transformate ntr-o form care este comparabil cu normele de forma BC. Motorul de inferen iniiaz procesul de corelare de la regula de "top" (vrf). Recursul la reguli este numit "apelare". Apelarea regulilor relevante n procesul de corelare continu atta timp ct nu exist o comparaie sau nu este epuizat toat BC, iar valoarea nu este gsit. n cazul n care MI detecteaz c pot fi apelate mai mult dect o regul, ncepe procesul de soluionare a conflictului. n soluionarea conflictului prioritate se d, de obicei regulilor care sunt mai specifice, sau regulilor ce in de mai multe date actuale.

n SE, bazate pe logic, interogrile sunt transformate n valori care sunt comparate cu listele de valori prezente n BC.

Procesul de unificare n programele Turbo Prolog i Visual Prolog ajut la rezolvarea problemei de gsire i comparare dup exemplu, i nu necesit scrierea unor reguli suplimentare. Ca i n sistemele bazate pe reguli, ntr-acel bazat pe logic, utilizatorul primete rspunsuri la interogrile (scopurile) sale, n conformitate cu logica stabilit n SE. Pentru punerea n aplicare a mecanismului de extragere a rspunsului expertului este suficient s se scrie specificaiile necesare.

4.3 Sistem Expert, bazat pe reguli i realizarea lui.

SE pe baza regulilor, permite proiectantului de a construi regulile care sunt n mod natural combinate n grupuri de fragmente de cunotine. Independena reciproc a regulilor de producie face ca baza de reguli s fie semantic modular i capabil de dezvoltare.

Realizarea n Turbo Prolog (sau Visual Prolog) a SE bazat pe reguli conine un set de reguli care sunt invocate de ctre datele de intrare n momentul de corelare (comparare). mpreun regulile MI, SE este compus dintr-un interpretator, care selecteaz i activeaz diferite sisteme. Activitatea acestui interpretator este descris de o succesiune de trei etape:

1) Interpretatorul compar un exemplu de regul cu elementele de date n baza de cunotine.

2) n cazul n care este posibil apelarea mai multor reguli, pentru a selecta o regul se utilizeaz mecanismul de soluionare a conflictelor.

3) Regula selectat este folosit pentru a gsi un rspuns la aceast ntrebare.

Acest proces n trei etape este ciclic i se numete ciclul de detectare-aciune. Rspunsul afirmativ a SE este rezultatul uneia din regulile de producie, selecia regulii se efectueaz, n conformitate cu datele de intrare.

Elaborarea a SE n Turbo Prolog (sau Visual Prolog), bazat pe reguli, ncepe cu declaraia bazei de fapte. Baza de fapte stocheaz (pstreaz) rspunsurile utilizatorului la ntrebrile ISU. Aceste date sunt rspunsurile pozitive sau negative. n continuare, se vor construi regulile de producie care vor descrie fragmente de cunotine actuale. Exemplu (SE de identificare i selectare a rasei cinilor):

dog_is(buldog englez): -

it_is(cu par scurt),

positive(are,mai mic de 22 inch),

positive(are, coada atrnata),

positive(are, caracter bun), !.

/ * n mod similar sunt descrise cunotinele cu privire la alte rase de cini * /

. . .dog_is(cocher-spaniel): -

it_is(cu par lung),

positive(are, mai mic de 22 inch),

positive(are, coad atrnat),

positive(are, urechi lungi),

positive(are, caracter bun), !.

Mai mult dect att, n scopul de a limita spaiul de cutare care descrie fragmentele de cunotine de reguli, ultimele pot fi grupate n baz prin introducerea de reguli auxiliare pentru identificarea sub-categoriilor. De exemplu, n SE alegerea rasei de cine va fi regula it_is, care identific rasa de cine pe motive de apartenen la un grup de cini cu prul lung sau cu prul scurt:

it_is(cu par scurt):-

positive(cinele are, par scurt), !.

it_is(cu par lung):

positive(cinele are, par lung), !.

n exemplul considerat aici, datele pentru selectarea rasei de cini sunt cunoscute, deoarece sunt selectate rasele de cini comune. Setul de caracteristici de clasificare a speciilor este selectat n baza urmtoarelor criterii:

Toate atributele utilizate sunt necesare pentru a identifica rasa.

Nici unul dintre atribute nu este comun pentru toate speciile simultan.

Regulile MI compar datele utilizatorului cu datele ce se conin n regulile de producie (regulile pozitive i negative n acest SE), precum i pstrarea n continuare "a traseului" rspunsurilor afirmative i negative (regula remember pentru adugarea n baza de date a rspunsurilor 1 (da) i 2 (nu)), care sunt utilizate n comparare cu modelul:

/ * Mecanismul de determinarea (gsirea) rspunsului

xpositive (X, Y) i xnegative (X, Y) predicatele bazei dinamice de date pstreaz respectiv, rspunsurile afirmative i negative a utilizatorului la ntrebrile care ISU le pune pe baza faptelor argumentelor predicatului positive n corpul regulii dog_is * /

positive(X, Y):

xpositive(X,Y), !. positive(X, Y):

not(negative(X,Y)), !, ask(X,Y). negative(X, Y):

xnegative(X,Y), !.

/ * Mecanismul de consultare. Predicatul dlg_Ask creeaz o fereastr standard de dialog pentru a primi rspunsul utilizatorului la ntrebarea Da/Nu * /

ask(X, Y):

concat(Intrebare : X, Temp), concat(Temp, , Temp1), concat(Temp1, Y, Temp2), concat(Temp2, ?, Quest),

Reply1=dlg_Ask(Consultare, Quest, [D, Nu]), Reply=Reply1+1,

remember(X, Y, Reply).

/* Introducerea rspunsurilor utilizatorului n baza de date dinamic */

remember(X, Y, 1): !,assertz(xpositive(X, Y)).

remember(X, Y, 2): !, assertz(xnegative(X, Y)), fail.

4.4 Sistem Expert bazat pe logic i realizarea lui.

n acest caz, BC const n declaraii sub form de enunuri n logica predicatelor. O parte din afirmaii descrie obiectele, iar cealalt parte a afirmaiilor descrie condiiile i atributele, care caracterizeaz diferite obiecte. Numrul de trsturi determin gradul de precizie de clasificare. Interpretatorul n cadrul sistemului ndeplinete funciile sale pe baza schemei urmtoare:

1) Sistemul conine n baza de cunotine enunuri (fapte) care guverneaz (conduc) cutarea i compararea. Interpretatorul compar aceste enunuri cu elementele aflate n baza de date.

2) n cazul n care este posibil apelarea a mai multor dect unei singure reguli pentru a rezolva conflictul sistemul utilizeaz mecanismul intern de unificare a Prolog-ului.

3) Sistemul primete rezultatele procesului de unificare n mod automat, de aceea ele sunt trimise pe dispozitivul necesar (logic) pentru output-ul informaiei.

La fel ca n SE, bazat pe reguli, acest proces ciclic este procesul de detectare-aciune. Principala diferen n structura SE, bazat pe logic este n descrierea obiectelor i atributelor sub forma de fapte:

/ * Condiii-caracteristici de rase diferite .* /

cond(1, rasa cu par lung).

cond(2, rasa cu par lung).

cond(3, maimic de 22 inch).

cond(4, mai pare de 30 inch).

cond(5, coada atrnata).

cond(6, urechi lungi).

cond(4, caracter bun).

cond(8, greutate mai mare de 100 pounds)./* Datele despre tipurile de rase */

topic(cu par scurt).

topic(cu par lung).

/* Datele despre rasele concrete */

rule(1, cine, cu par scurt, [1]).

rule(2, cine, cu par lung, [2]).

rule(3, cu par scurt, buldog englez, [3,5,4]).

rule(4, cu par scurt, copoi, [3,6,4]).

rule(5, cu par scurt, dog danez, [5,6,4,8]).

rule(6, cu par scurt, foxterier american, [4,6,4]).

rule(4, cu par lung, cocher-spaniel, [3,5,6,4]).

rule(8, cu par lung, setter irlandez, [4,6]).

rule(9, cu par lung, colli, [4,5,4]).

rule(10, cu par lung, senbernar, [5,4,8]).

Al treilea argument al predicatului rule reprezint o list de numere ntregi - condiii, din enunurile tipului cond. Fiecare enun (fapt) specific tipul de cond i stabilete condiia de selecie a clasificrii de rase de cini utilizate aici. n SE, bazate pe logic, interpretatorul utilizeaz aceste numere de condiie s fac alegerile (seleciile) adecvate.

MI conine regulile de tratarea listelor de atribute n descrierea obiectelor. Prin utilizarea predicatului go MI verific afirmaiile BC rule i cond pentru a clarifica cu ajutorul regulii check existena sau lipsa de valori adecvate de date:

/ * Regula iniial a mecanismul de determinare a rspunsului * /

go(_, Mygoal):

not(rule(_, Mygoal, _, _)), !, concat(Rasa recomandata : , Mygoal, Temp), concat(Temp, ., Result),

dlg_Note(Concluzia expertului : , Result).

go(History, Mygoal):

rule(Rule_number, Mygoal, Type_of_breed, Conditions), check(Rule_number, History, Conditions), go([Rule_number|History], Type_of_breed).

/*Compararea datelor de intrare a utilizatorului cu listele de atribute a raselor aparte de cini*/

check(Rule_number, History, [Breed_cond|Rest_breed_cond_list]):

yes(Breed_cond), !,

check(Rule_number, History, Rest_breed_cond_list).

check(_, _, [Breed_cond|_]):

no(Breed_cond), !, fail.

check(Rule_number, History, [Breed_cond|Rest_breed_cond_list]):

cond(Breed_cond, Text),

ask_question(Breed_cond, Text),

check(Rule_number, History, Rest_breed_cond_list).

check(_, _, [ ]). do_answer(Cond_number, 1): !,

assertz(yes(Cond_number)).

do_answer(Cond_number, 2): !, assertz(no(Cond_number)), fail.

/* Solicitarea si primirea rspunsurilor da si nu de la utilizator */

ask_question(Breed_cond, Text): concat(Intrebare : , Text, Temp),concat(Temp, , Temp1),concat(Temp1, ?, Quest),

Response1=dlg_Ask(Consultare, Quest, [Da,Nu]), Response=Response1+1,

do_answer(Breed_cond, Response).

Regula go ncearc s potriveasc obiectele care sunt clasificate prin numrul de condiii. Dac potrivirea se produce, modulul programului ar trebui s adauge la baza de cunotine valorile potrivite i s continue procesul cu noile date primite din partea utilizatorului. n cazul n care potrivirea nu se produce, mecanismul oprete procesul actual i alege o alt cale. Cutarea i compararea continu, pn cnd, toate posibilitile sunt epuizate.

Avantajul SE, bazat pe logic, este capacitatea de a stoca faptele bazei de cunotine n afirmaiile bazei de date dinamice. Baza de cunotine poate fi plasat ntr-un fiier pe disc, ceea ce o face independent de codul surs.PARTEA 2: Desfurarea lucrrii

1. Pe baza materialului de la curs i exemplului discutat anterior se va studia realizarea ambelor tipuri de sisteme de expert prin intermediul limbajului Prolog.

2. Se va elabora un sistem expert pentru un anumit domeniu selectat n conformitate cu numrul variantei din Tabelul 4.1, sau n orice alt domeniu corelat cu profesorul. Numrul de obiecte descrise ar trebui s fie cel puin 12, i descrierea atributele lor, nu mai puin de 8.3. Se va analiza realizarea unui sistem expert bazat pe logic i sistem expert care se bazeaz pe reguli, realiznd mecanismul deductiv i inductiv.

Tabelul 4.1 - Domeniul pentru sistemul expert

VariantaDomeniul

1,5Microprocesoare

2,6Dispozitive mobile

3,10Sisteme operaionale

4,11Limbaje de programare

7,12,19Jocuri pe computere

8,15,20Virui de computere

9,16Reele de calculatoare

13,17Algoritmi de sortare

14,18Algoritmi de cutare

Raportul trebuie s conin:

1) Formularea scopului i obiectivelor de cercetare;

2) Descrierea caracteristicilor sistemului expert elaborat;

3) Diagramele datelor de intrare i diagrama structural a Sistemului Expert, att bazat pe reguli, ct i bazat pe logic;

4) Listing-ul programului cu comentarii i explicaii, justificri;

5) Descrierea mecanismelor de determinarea rspunsului n sistemul expert;

6) Concluzii cu privire la experimentele efectuate.

LUCRAREA DE LABORATOR 5

Prelucrarea Limbajului NaturalScopul: nsuirea principiilor fundamentale de Prelucrarea Limbajului Natural.

PARTEA 1: Noiuni Teoretice

5. 1 Prelucrarea Limbajului Natural

Prelucrarea limbajului natural (PLN) reprezint o tehnologie (un ansamblu de procese, metode operaii) care creeaz modaliti de a executa diferite sarcini referitoare la limbajul natural, cum ar fi construcia unor interfee bazate pe limbaj natural - ca baze de date, traducere automat, etc.. Procesarea limbajului Natural reprezint i astzi o problem dificil i n cea mai mare parte nerezolvat. Gsirea unei tehnologii adecvate este extrem de grea datorit naturii multidisciplinare a problemei fiind implicate urmtoarele tiine i domenii: lingvistic, lingvistica computaional, informatic i inteligen artificial.

Aplicaiile procesrii limbajului natural se nscriu n trei mari categorii:

a. Aplicaiile bazate pe text:

clasificarea documentelor (gsirea documentelor legate de anumite subiecte);

regsirea informaiei (cutarea unor cuvinte-cheie);

extragerea informaiei (legate de un anumit subiect);

nelegerea textelor (ce presupune o analiz profund a structurii acestora);

traducerea automat i traducerea asistat de calculator dintr-o limb n alta;

alctuirea de sinteze;

achiziia de cunotine.

b. Aplicaiile bazate pe dialog, care implic comunicarea ntre om i main, aplicaii cum ar fi sistemele de nvare, sistemele de interogare i rspuns la ntrebri, rezolvarea problemelor etc.

c. Procesarea vorbirii.

Comunicarea este schimbul intenionat de informaie generat de producerea i perceperea semnelor dintr-un sistem partajat de semne convenionale.

Pentru comunicare trebuie folosit un limbaj, ce poate fi de mai multe tipuri: verbal (auditiv), text, mimic, etc.

5.1.1 Componentele comunicrii

Schema de baz a comunicrii:

E emitor

C - bloc de codificare

Z - zgomot extern

D - bloc de decodificare

R receptor

M - mesaj

f(M) mesajul codificat n limbaj

f1(M) codificarea modificat de zgomot

M1 mesajul nou

Emitor:

Intenie - dorina emitorului de a transmite un mesaj ctre un receptor;

Generare - crearea inteniei de a comunica i a coninutului ei ntr-un limbaj;

Sintez - procesul efectiv de trimitere a mesajului.

Receptor:

Percepie - procesul de primire al mesajului;

Analiza - interpretarea mesajului din punct de vedere lexical, sintactic, semantic, pragmatic

Dezambiguizarea selecia dintre posibilele rezultate ale analizei

ncorporare introducerea coninutului mesajului

Actul de comunicare:Acesta conine mai multe interpretri/sensuri:

Locuia fraza, aa cum e spus de locutor (emitor);

Ilocuie nelesul frazei ce se dorete a fi comunicat;

interlocuiune aciunea ce rezult din locuie.

Exemplu:

Maria i-a spus lui Gigel: "Te rog nchide ua"

locuie

ilocuie

interlocuiune ua nchis

Categorii locuionale:

Asertive asculttorul e informat n legtur cu fraza;

Directive asculttorul efectueaz o aciune dup aflarea informaiei;

Comisive (angajamente) asculttorul afl de aciuni viitoare;

Expresive mesaje ce exprim atitudinea emitorului legat de un fapt.

5.1.2 Definirea unui limbaj

Un prim element ntr-un limbaj e lexiconul. Acesta conine termenii vocabularului pentru limbajul respectiv.

Exemplu:

Lexicon:

Noun breeze | wumpus | ballVerb is | see | smell | hitAdjective right | left | smelly Adverb here | there | ahead Pronoun me | you | I | itRelPronoun that | whoName John | Mary Article the | a | an Preposition to | in | on Conjunction and | or | but

Pe baza lexiconului se construiesc propoziii/fraze n limbajul respectiv. Aceste fraze se construiesc pe baza unor gramatici.

Aceste fraze (construcii lexicale) se pot analiza din mai multe perspective.

analiza lexical procesul de conversie a frazei n atomi (realizat de un procesor)

analiza semantic procesul de asociere a unui sens pentru fiecare atom; sens folosit ulterior pentru a reine cunotine dobndite din fraz

analiza pragmatic - procesul de considerare al contextului n analiza unei fraze. E necesar pentru a elimina ambiguitile (apar ambiguiti cnd un cuvnt poate avea mai multe sensuri, cel efectiv depinznd de fraz sau de contextul dialogului).

Gramaticile definesc regulile pe care o fraz trebuie s le respecte, din punct de vedere al structurii, pentru a face parte dintr-un limbaj.

Ele se pot defini n mai multe moduri, unul dintre ele folosind urmtoarele concepte:

a) Neterminali expresii care se substituie cu alte expresii/ elemente din gramatic sau lexicon

sentence S

noun phrase NP

verb phrase VP

prepositional phrase PP

Exemplu:

S NP VP | S Conjunction SNP Pronoun | Noun | Article Noun | NP PP VP Verb | VP NP | VP Adjective | VP PP | VP AdverbPP Preposition NP

b) Terminali expresii care nu se mai substituie cu alte expresii din gramatic (ei reprezint direct categoriile din lexicon).

Noun | Verb | Adjective | Adverb | Pronoun

c) Reguli de rescriere regulile de extindere a gramaticii.

d) Simbol de nceput neterminal din care poate fi derivat orice fraz corect din punct de vedere gramatical.

5.1.3 Analiza sintactic

Procesul de recunoatere a structurii unei propoziii de ctre un calculator se numete parsing (procesare). Se poate realiza n mai multe moduri:

top-down parsing (de sus n jos)

bottom-up parsing (de jos n sus)Top-Down parsing se pleac de la regulile gramaticii pn cnd se identific fraza.

Exemplu: "John hit the ball"

1. S

2. S NP, VP

3. S Noun, VP

4. S John, Verb, NP

5. S John, hit, NP

6. S John, hit, Article, Noun

7. S John, hit, the, Noun

8. S John, hit, the, ball

Bottom down parsing - se pleac de la fraz i se ncearc obinerea simbolului de nceput al gramaticii.

Exemplu:

1. John, hit, the, ball

2. Noun, hit, the, ball

3. Noun, Verb, the, ball

4. Noun, Verb, Article, ball

5. Noun, Verb, Article, Noun

6. NP, Verb, Article, Noun

7. NP, Verb, NP

8. NP, VP

9. S

5.1.4 Definite Clause Grammar (DCG)

Exist mai multe tipuri de reprezentare pentru gramatici prezentate n continuare:

a) Gramatici n forma BNF (Backus Normal Form sau BackusNaur Form modul formal matematic de descriere a limbajului).

Sunt gramatici dependente de context, bazate pe expresii de forma:

::= _expresie_

Unde,

- un neterminal, iar _expresie_- o secven de simboluri (terminali i non-terminali)

Exemplu: : : = |

: : =

: : = | etc.

BNF este o gramatic dependent de context (GDC), ceea ce e dificil de transpus ntr-un program automat

b) Gramatici cu clauze definite DCG Definite Clause Grammar n modul implicit DCG sunt gramatici independente de context, ce sunt folosite pentru prelucrarea de limbaje formale sau naturale, cu proprietatea c se pot integra foarte uor n limbaje de programare logic (cum e PROLOG de ex.). Aceasta se realizeaz prin faptul c DCG se bazeaz pe FOPL (First Order Predicate Logic) n reprezentare.

n DCG:

Fiecare regul din gramatica poate fi vzut ca o regul din DCG

Fiecare categorie sintactic se reprezint printr-un predicat cu un argument ir.Proprieti :

Aceeai gramatic se folosete i pentru analiz (recunoatere) i pentru generare.

Procesul de analiz lexical (parsing) se realizeaz exclusiv prin inferene logice

Ca abordare:

a. Bottom-up parsing forward chaining

b. Top-down parsing backward chaining

Folosirea predicatelor are loc astfel:

NP(s) este adevrat dac s este NP

deci,

S NP VP

va deveni,

NP(s1) VP(s2) S(append(s1,s2))

n BNF:

S NP VPn LP / DGC:

NP(s1) VP(s2) S(append(s1, s2))

n BNF: NP Pronoun | Noun n LP / DGC:

Pronoun(s) Noun(s) NP(s)

n BNF:

Noun ball | bookn LP / DGC

(s = ball s = book) Noun(s)

Tabel 1 - Soluia comparativ cu limbajul PROLOG.

BNFFOPL/DCGPROLOG

S NP VP

NP Noun

Noun stench

Noun wumpus

VP Verb

Verb smells

Verb killsNP(s1) VP(s2) S(append(s1,s2))

Noun(s) NP(s)

(s = stench s = wumpus) Noun(s)

Verb(s) VP(s)

(v = smells v = kills) Verb(v)sentence([S1, S2]) :- np(S1), vp(S2).

np(S):- noun(S).

noun(stench).

noun(wumpus).

vp(S):- verb(S).

verb(smells).

verb(kills).

?- sentence([wumpus, smells]).

?-sentence([S1, S2]).

5.2 Modele de analiz sintactic a propoziiilor

5.2.1 Reele de tranziie cu stri finite - Finite State Transition Network.

MODEL: Moldova has a rich culture.

English is the most widespread language.

I enjoy learning new things.

Pentru a implementa o reea de tranziie cu stri finite RTSF n limbajul PROLOG este nevoie s realizm o descriere a reelei, precum i a modului n care se efectueaz parcurgerea ei. O descriere a RTSF const din trei componente: numele reelei, o mulime de declarri i o mulime de descrieri ale arcelor. Exemplu de reea este dat prin automatul de mai jos.

Automat:

Acest automat are 8 stri, starea 1 fiind starea iniial i starea 8 starea final. Cele opt stri sunt conectate prin 10 arce etichetate.

Numele reelei nu joac un rol anume i nici o alt component nu face referire la el. El este introdus din motive de consisten i joac un rol important n definirea reelelor de tranziie recursive. Cea de-a doua component const dintr-o unic declarare obligatorie a unor stri iniiale i finale. Cea de-a treia component major a reprezentrii const dintr-o mulime alctuit din una sau mai multe descrieri ale arcelor, fiecare din acestea avnd aceeai form.

n PROLOG, RTSF-urile vor fi prezentate ca reelele n mod declarativ, ca pe nite structuri de date (fapte din baza de fapte), care pot fi examinate i manipulate. Avnd o astfel de descriere se vor putea scrie programe generale de recunoatere i de generare.

Reprezentarea RTSF ca structuri de date se va specifica: nodurile iniiale, nodurile finale, arcele unde fiecare arc este definit prin nodul de plecare, nodul de destinaie i eticheta arcului.

Aceste informaii pot fi comunicate n PROLOG utiliznd predicatele de forma:

initial(Nod).

final(Nod).

arc(Nod_Plecare,Nod_Destinaie,eticheta).

Exemplu:

initial(1).

final(8).

arc(1,n,2).

arc(1,pron,2).

arc(2,v,3).

Desigur descrierea reelei trebuie completat prin specificarea semnificaiei abrevierii pe care o reprezint cel de-al treilea argument al predicatului arc. Aceasta va fi indicat prin utilizarea predicatului:

word(moldova,n).

word(has,v).

word(a,art).

Atunci cnd reeaua este utilizat pentru recunoatere fiecare moment al parcurgerii ei este caracterizat de dou elemente:

R1. numele unui nod (locaia curent)

R2. irul de intrare rmas Exemplu:

recognize([i,enjoy,learning,new,things]).

Figura 5. 1 Rezultatul execuiei recognize().Atunci cnd reeaua este utilizat pentru generare aceste elemente vor fi nlocuite cu urmtoarele

G1. numele unui nod (locaia curent)

G2. irul de ieire generat pn la acel momentExemplu:

recognize(X).Figura 5. 2 Rezultatul execuiei recognize(X).Lexicon:

Noun (n) - Moldova | culture | language | things | english

Verb (v) - has | is | enjoy |

Participle (part) - learning

Article (art) a | the | I

Adjective (adj) rich | most | widespread | new

Gramatica:

S NP VP

NP N | Adj N | Art Adj Adj N |

VP V | V Part

Codul surs:

config([],State):-final(State).

config([Word|Rest],State):-

word(Word,Cat),

arc(State,Cat,State1),

config(Rest,State1).

recognize(String):-

initial(State),

config(String,State).

initial(1).

final(8).

arc(1,n,2).

arc(1,pron,2).

arc(2,v,3).

arc(3,part,6).

arc(3,art,4).

arc(4,adj,5).

arc(5,n,8).

arc(6,adj,5).

arc(4,adv,7).

arc(7,adj,5).

word(moldova,n).

word(has,v).

word(a,art).

word(rich,adj).

word(culture,n).

word(english,n).

word(is,v).

word(the,art).

word(most,adv).

word(widespread,adj).

word(language,n).

word(i,pron).

word(enjoy,v).

word(learning,part).

word(new,adj).

word(things,n).

?- recognize([i,enjoy,learning,new,things]).

Yes.

5.2.3 Analiza propoziiei bazat pe cadre - Sentence Frame Grammars.

MODEL: Moldova has a rich culture.

English is the most widespread language.

I enjoy learning new things.

Codul surs pentru sfg_rec.pl:

/*a recognizer based on the sentence frame grammar notation*/

/*drive predicate*/

recognize(String):-

transform(String,CatString),

frame(CatString).

/*transform a string of words into a string of lexical categories*/

transform([],[]).

transform([Word|String],[Cat|CatString]):-

word(Word,Cat),

transform(String,CatString).

Codul surs pentru lex.pl: /*a lexical database giving the lexical category of each word*/

word(moldova,n).

word(has,v).

word(a,art).

word(rich,adj).

word(culture,n).

word(english,n).

word(is,v).

word(the,art).

word(most,adv).

word(widespread,adj).

word(language,n).

word(i,pron).

word(enjoy,v).

word(learning,part).

word(new,adj).

word(things,n).

Codul surs pentru sf.pl:

/*a list of sentence frame*/

frame([n,v,art,adj,n]).

frame([pron,v,part,adj,n]).

frame([n,v,art,adv,adj,n]).

Deschidei fiierul sfg_rec.pl

/*load the lexical and sentence frame files*/

?-consult(lex.pl).

?-consult(sf.pl).

?- transform([english,is,the,most,widespread,language],CatString).

CatString=[n,v,art,adj,n]5.2.4 Definite Clause Grammars (DCG)

Conversia regulilor structurii propoziiei (phrase structure PS) n clauze PROLOG este att de simpl, nct ea se poate efectua n mod automat. PROLOGul include o facilitate pentru a realiza acest lucru i anume o extindere a notaiei numit notaie DCG (Definite-Clause Grammar). Aceasta reprezint o notaie special pentru regulile unei gramatici. Exemple de clauze scrise prin notaia DCG sunt:

s --> np, vp.

np --> adj, n.

n --> [elev].

Aceste clause vor fi automat convertite, n faza de consultare, la:

s(X,Z):-np(X,Y),vp(Y,Z).

np(X,Z):-adj(X,Y), n(Y,Z).

n([elev|X],X).

Sistemul DCG reprezint un compilator pentru regulile gramaticii pe care le traduce direct n clauze PROLOG executabile.

Prin gramatici DC se nelege acele gramatici ale cror reguli de rescriere sunt exprimate n notaia DCG. O gramatic scris n DCG reprezint un program de parsing pentru ea nsi.

Un program PROLOG poate conine att reguli DCG, ct i clauze PROLOG obinuite. Translatorul DCG afecteaz numai clauzele ce conin functorul -->. Toate celelalte clauze sunt presupuse a fi clauze PROLOG obinuite i sunt lsate neschimbate. Translatorul transform regulile DCG n clauze PROLOG prin adugarea a dou argumente suplimentare corespunztor fiecrui simbol care nu se afl inclus ntre paranteze sau acolade. Argumentele sunt n mod automat aranjate astfel nct s poat fi corect utilizate n procesul de analiz sintactic.

O regul DCG este de forma

Simbol neterminal --> extindere

unde extindere const n unul dintre urmtoarele elemente:

un simbol neterminal (ex. np);

o list de simboluri terminale (ex. [husband] sau [husband, drinks]);

un scop PROLOG inclus ntre acolade cum ar fi {write (Gasit NP)};

un element vid reprezentat prin [ ];

o serie de oricare dintre aceste elemente, separate prin virgule.

n ce privete sintaxa DCG, de notat c simbolurile neterminale nu se mai afl ntre paranteze, n timp ce simbolurile terminale sunt incluse ntre paranteze drepte, ceea ce le transform n liste PROLOG. Simbolurile sunt separate prin virgule i fiecare regul se ncheie prin punct.

Fiecare regul DCG este tradus ntr-o clauz PROLOG conform urmtoarei scheme:

dac regula DCG conine n membrul drept numai simboluri neterminale este de forma:

n->n1,n2,...,nn cu n1,n2,...,nn simboluri neterminale, atunci ea este tradus n clauza PROLOG

n(X,Y):-n1(X,Y1), n2(Y1,Y2),..., nn(Yn-1,Y).

Dac regula DCG conine n membrul drept att simboluri neterminale, ct i terminale, este forma: n-->n1, [t2],n3, [t4].

Cu n1,n3 simboluri neterminale i t2,t4 simboluri terminale, atunci ea este tradus n clauza PROLOG

n(X,Y):-n1(X, [t2|Y1]), n3(Y1, [t4|Y])

Codul surs:

s(s(GN1,GV))-->gn1(GN1),gv(GV).

gn1(gn1(PRON,N))-->pron(PRON),n(N).

gv(gv(V,GN3,GN2))-->v(V),gn3(GN3),gn2(GN2).

gn3(gn3(ADJ1,N1,PREP1,ADJ2,N2))-->adj1(ADJ1),n1(N1),prep1(PREP1),adj2(ADJ2),n2(N2).

gn2(gn2(PREP2,ART,N3))-->prep2(PREP2),art(ART),n3(N3).

pron(pron(my))-->[my].

n(n(husband))-->[husband].

v(v(drinks))-->[drinks].

adj1(adj1(innumerable))-->[innumerable].

n1(n1(cups))-->[cups].

prep1(prep1(of))-->[of].

adj2(adj2(black))-->[black].

n2(n2(coffee))-->[coffee].

prep2(prep2(during))-->[during].

art(art(the))-->[the].

n3(n3(day))-->[day].

?-phrase(s(X),[my, husband, drinks, innumerable, cups, of, black, coffee, during, the, day]).

X = s(gn1(pron(my), n(husband)), gv(v(drinks), gn3(adj1(innumerable), n1(cups), prep1(of), adj2(black), n2(coffee)), gn2(prep2(during), art(the), n3(day))))

Yes.

5.2.5 Recursive Transition Network

MODEL: Our students enjoy learning new things.

Figura 5.3 RTN.

Tabel 5.2 - RTN soluie

StringStateStackComment

Our students enjoy learning new things

Our students enjoy learning new things

students enjoy learning new things

enjoy learning new things

enjoy learning new things

enjoy learning new things

learning new things

new things

new things

things

-

-

-S1

NP1

NP2

NP3

S2

VP1

VP2

VP3

NP1

NP2

NP3

VP4

S3-

S2

S2

S2

-

S3

S3

S3

VP4,S3

VP4,S3

VP4,S3

S3

-Push to NP-net

Recognize pron

Recognize noun

Pop to S-net

Push to VP-net

Recognize verb

Recognize verb part1

Push to NP-net

Recognize adj

Recognize noun

Pop to VP-net

Pop to S-net

SUCCESS!

Codul surs pentru pdr.pl:% Define predicate which sets up initial configuration

recognize(String):-

initial(s,State),

config(s:State,String,[]).

% Final configuration

config(s:State,[],[]):-

final(s,State).

% If in final state for network pop back to previous network

config(Network:State,String,[Network1:State1|Stack]):-

final(Network,State),

config(Network1:State1,String,Stack).

% Process next lexical item

config(Network:State,[Word|String],Stack):-

word(Word,Cat),

arc(Network,State,Cat,State1),

config(Network:State1,String,Stack).

% If next arc label refers to a network push to it

config(Network:State,String,Stack):-

arc(Network,State,Network1,State1),

initial(Network1,State2),

config(Network1:State2,String,[Network:State1|Stack]).

Codul surs pentru rtn.pl:initial(s,1).

final(s,3).

arc(s,1,np,2).

arc(s,2,vp,3).

initial(np,1).

final(np,3).

arc(np,1,pron,2).

arc(np,2,n,3).

arc(np,1,adj,2).

initial(vp,1).

final(vp,4).

arc(vp,1,v,2).

arc(vp,2,vp1,3).

arc(vp,3,np,4).

initial(np,1).

final(np,3).

arc(np,1,adj,2).

arc(np,2,n,3).

Codul surs pentru lex.pl:word(our,pron).

word(students,n).

word(enjoy,v).

word(learning,vp1).

word(new,adj).

word(things,n).

?-consult(rtn.pl).

?-consult(lex.pl).

?-recognize([our,students,enjoy,learning,new,things]).

Yes.

PARTEA 2: Desfurarea lucrrii

S se elaboreze un program n limbajul PROLOG, care ar analiza sintactic trei propoziii/fraze n limba romn dup exemplele prezentate mai sus (implementarea a cel puin 2 metode).Raportul trebuie s conin:

1) Formularea scopului i obiectivelor de cercetare;

2) Descrierea caracteristicilor sistemului expert elaborat;

3) Diagramele datelor de intrare i diagrama structural a Sistemului Expert, att bazat pe reguli, ct i bazat pe logic;

4) Listing-ul programului cu comentarii i explicaii, justificri;

5) Descrierea mecanismelor de determinarea rspunsului n sistemul expert;

6) Concluzii cu privire la experimentele efectuate.LUCRAREA DE LABORATOR 6

Algoritmi de recunoatere

Scopul: Achiziionarea iconsolidareacunotinelor ideprinderilor practicede lucrucu algoritmi simplide recunoatere aobiectelor dup caracteristici de calitatePARTEA 1: Noiuni Teoretice

ncele mai multe cazuriimaginilesunt caracterizate cu ajutorul unorcaracteristici cantitative: dimensiunigeometrice,greutate,arie, volum,i altele.

n aceste cazuri schimbrile cantitativece caracterizeazo anumit imagine, de obicei nu ducimediatlaschimbare de comportament. Atingnddoaranumite limitepentru fiecare imagine,schimbrile cantitativecauzeaz un saltcuanticpentru a trece la urmtoarea imagine.

Imaginile propriu zisei imaginilespecifice potfi caracterizatenunumaicantitativ, dar i de caracteristicilecalitative(proprieti,semne,atribute).

Aceste semnenupot fi descrise(sau de obicei nu au fost descrise)cantitativ cum ar fi culoarea,gustul,simul,mirosul.

Imaginilepot avea sau nu aveaunele caracteristicide calitate. ntrecaracteristicile calitativeicantitativea imaginiloresteo diferen important,cu toate acestea, diferena nmulte cazuri nu e necesar s fie evideniat,deoarece pentru fiecare atribut calitativ, exist nanumitezonealeparametrilor cantitativi,limite care schimb iatributulde calitate.

De exemplu, o imaginecu o culoarespecific corespundela o gamde lungimi de undspecific undelor electromagnetice, n limitele creia se schimb culoarea.

Existabordridiferitepentrurecunoatereacaracteristicilor calitative a imaginii. nacest laborator vom lua n considerareuna dintre ele, bazndu-ne pe codare binar, prezena sau absenaunei trsturide calitate.

naceastabordare analizm o imagine concret Xk. Caracteristicilecalitativepot fi reprezentatecaun vectorbinar

Unde n-dimensiunea spaiuluide caracteristic.

Dacimaginea Xkconinej-m semne, atunci Xkj= 1, n caz contrar avem Xkj= 0. Aici este identificat imaginea i vectorul binar descriptiv.

Lum ca exemplulpatru obiecte(viin,portocal, mr,pepene galben),fiecare obiect are treicaracteristici:culoare,prezenadesmburi sau de semine(Tabelul 1). n Tabelul 2 sunt aduse valorile numerice aleatributelorpentru probdupcodificarealor binar.

Cea mai simpl metodpentru rezolvarea problemelor derecunoatere a obiectelorcu caracteristicide calitate,dup codificarea binar a atributelor-reduce problemainiial la rezolvarea problemei recunoateriiimaginii cucaracteristicilecantitativealespaiuluivectorialn-dimensional.

Pentru aceasta e necesar ca pentru fiecare tip deatributde calitate, s fie introdus o ax n spaiul vectorial n-dimensional. Dac pentru analiza imaginii semnulexist,atunci pe ax este indicatunitatea, dac nu,atunci zero. n rezultat obinemun spaiu multi-dimensionalcaracteristicbinar,unde poate fi calculat o gam dedistane,utilizatpentru recunoaterea obiectelorcucaracteristici cantitative.

Tabelul 6.1 - Prezena de smburi sau semine n imagini

Vector galbenoranjrousmburesemine

ViinX1nunudadanu

PortocalX2nudanunuda

MrX3danudanuda

Pepene gal. galbenX4danununuda

Tabelul 6.2 - Trsturile calitative a imaginelor

Vector semngalbenoranjrousmburesemine

ViinX1x11 = 0x12=0x13= 1x14= 1x15=0

PortocalX2x21= 0x22= 1x23=024=0x25= 1

MrX3x31= 1x32=0x33= 1x34=0x35= 1

Pepene gal.X4x41= 1x42=0x43=0x44 =0x45= 1

n acest exemplu, ca urmarea caracteristicilorcantitative, sau mai bine spus a trsturilorcalitative (Tabelul 2)obinem unspaiude cincidimensiuni cu valoribinare,unde putem utiliza distana luiEuclid (1) i Minkowski(2), distane ce folosesc sumadiferenelor absolutedintre componentelerespective alevectorilorn-dimensionali(3):

EMBED Equation.3

EMBED Equation.3

EMBED Equation.3

Unde

corespunde distanei dintre imaginea de intrare

cu imaginea model

iar parametrul j reprezint numrul modelului i un rezultat pozitiv ntreg, mai mare ca doi.

Distanele(1)-(3)pot fi de asemenea,utilizatecu coeficieni de greutate. Codificareabinara caracteristicilorcalitativepoate fi aplicatila distanaHamming,care este introdus pentrutoi vectoriibinari. Distana Hammingdintredoi vectoribinarieste numruldecomponente distinctede vectoribinari. n cazul n carevectoriiau aceleai componente, atunci distana dintreei estezero,n cazul n carevectorulnuareo componentechivalent, atunci distana este egala cudimensiuneavectorilor.

O clasificaremai fin a obiectelor cu caracteristicicalitativese obineprin introducerea compatibilitii sau diferenei,pentru fiecarepereche deobiecteXj,Xi pentrucare sunt introduse caracteristici calitative binarede codare, cu ajutorul Tabelul 6.3.

Tabelul 6.3 - Compatibilitatea i diferena

XjXi

10

1h

0gb

Variabila an Tabelul 6.3 esteproiectat pentru a contoriza numruldecaracteristici comune ale obiectelorXj,iXi.Ea poateficalculat utilizndrelaia:

EMBED Equation.3

Unde xjk,xik- sunt componentebinare devectoricare descriuXjobiecte,iXi obiecte.

Cuajutorul variabilei b calculm numrulde cazuri n careobiecteleXj,iXinu auacelai semn

EMBED Equation.3

Variabilelegi h sunt,respectiv,pentru a calcula numruldecaracteristici caresunt prezente n obiectulXiilipsesc n Xj isunt prezentenobiectul Xj i lipsesc din Xi

EMBED Equation.3

EMBED Equation.3

.

Din analizavariabilelora,b,g,h,rezulturmtoarele:cu ct este mai mare asemnareadintreobiecteleXj iXi,cu att mai maretrebuie s fie variabila a. Msuradeapropiere a obiectelorsau a funciei de asemnare trebuie s fieo funcie cresctoarea lui a,funcia deasemnare trebuie s fiesimetric n raport cuvariabilelegih.Relativ lancheiere,variabila bnu poate fi utilizat, pentru c pe de o partelipsa caracteristicilor similare nobiecte poatefi un indiciu al asemnriilor, pede alt parte,n cazul n careobiectulnu are aceleai semne, nseamn c aceste obiectenu sepot referilaaceeai clas.De cele mai multe ori suntutilizate n mod obinuitfunciile de similitudine reprezentate mai jos:

funcia desimilitudine deRusselliRao

EMBED Equation.3

funcia desimilitudineZhokara siNidmena

EMBED Equation.3

funcia desimilitudine Dice

EMBED Equation.3

funcia desimilitudine deSnifa i Sokal

EMBED Equation.3

funcia desimilitudine deSokaliMichener

EMBED Equation.3

funcia desimilitudineKulzhinskogo

EMBED Equation.3

funcia desimilitudine Yule

EMBED Equation.3

PARTEA 2: Desfurarea lucrrii

1. Se va proiecta un algoritm i un program care simuleaz recunoaterea diferitor obiecte, cu caracteristici calitative i a caracteristici de asemnare S1-S7.

2.Se va seta numrul de caracteristici calitative ale obiectelor n i numrul de tone a imaginilor, avnd ca referin imagini (gropile trebuie s fie de cel puin 4).Se va adresa la cteva obiecte i caracteristici de similitudine S1-S7 astfel indicnd apartenena la un ablon anumit.

3. Se vaoferi o funcie unic de similitudini ale obiectelor cu caracteristici de calitate i se va arta performana de lucru, utiliznd exemplele de la punctul 2.

4.Se va compune o funcie proprie n aa fel ca s fie similar cu exemplele de recunoatere prezentate n S1-S7, totodat una din funcii trebuie s ia o valoare minim, i alta - maxim.

5.Se va sugera cteva exemple de recunoatere folosind distana Hamming.ntr-un exemplu distana Hamming ar trebui s ia o valoare egal cu numrul de pe list din grup, conform registrului.

6.Se va propune un exemplu de recunoatere, n cadrul cruia valoarea distanei Hamming este egal cu una dintre funciile de similitudine S1-S7.

LUCRAREA DE LABORATOR 7

Algoritmi de recunoatere a imaginilor

Scopul: Cptarea cunotinelor i primirea abilitilor practice pentru lucrul cu cei mai simpli algoritmi de recunoatere, care au la baz prezentarea imaginilor n form de puncte sau de vectori n-dimensionali ntr-un spaiu vectorialPARTEA 1: Noiuni Teoretice

Exist un numr mare de forme de reprezentare ale imaginilor n dispozitivele de recunoatere sau n aplicaii. Una dintre cele mai simple i pe nelesul tuturor este forma, care folosete reprezentarea imaginilor ca fiind nite puncte sau vectori ntr-un oarecare spaiu n-dimensional.

Fiecare ax a acestui spaiu, n mod natural, corespunde cu una din n intrri sau cu unul din n receptori ai reelei de recunoatere. Fiecare receptor poate s se afle n una dintre m stri, dac ele sunt discrete sau s posede o infinitate de stri n cazul cnd receptorii sunt continui.

n funcie de tipul receptorilor utilizai, se poate genera un spaiu vectorial n-dimensional continuu, discret sau continuu-discret.

n aceast lucrare de laborator vom examina un spaiu n-dimensional continuu.

Msura asemnrii imaginilor n spaiu vectorial n-dimensional se introduce ca funcie de dou variabile L(Sk, Si), unde Sk, Si S;

S = {S1, S2, ..., Sn} mulimea final de imagini n spaiul examinat. n acelai timp, funcia L(Sk, Si) posed urmtoarele caracteristici:

este simetric, adic L(Sk, Si) =L(Si, Sk); valorile funciei sunt numere nenegative; msura asemnrii imaginii cu sine nsui, primete o valoare extrem n comparaie cu oricare alt imagine, adic n funcie de modul introducerii msurii de asemnare, se ndeplinete una din urmtoarele dou expresii:

n cazul imaginilor compacte, funcia L(Sk, Si) este o funcie monoton la funcia de ndeprtare a punctelor Sk i Si n spaiul n-dimensional.n spaiul n-dimensional, msura de asemnare a imaginilor poate fi introdus n multe moduri. Vom examina mai multe din ele. n fiecare mod se considera c imaginea etalon 1, X2, .. ,. clase diferite de imagini n spaiul vectorial n-dimensional, se introduc n form de vectori cu proeciile la axele de coordonate: 1 = (x11, x12, , x1n), X2 = (x21, x22, , x2n), ..., = (xm1, xm2, , xmn). Orice imagine de intrare Si S la fel se reprezint n form de vector Si = (Si1, Si2, ..., Sin) n aceast dimensiune.

7.1 Recunoatere n dependen de unghiul dintre vectoriMsura asemnrii dintre doi vectori ntr-un spaiu n-dimensional, poate fi reprezentat sub form de unghi. Dac este dat imaginea de intrare Si = (Si1, Si2, ..., Sin) i vectorii imaginilor etalon 1=(x11, x12, , x1n), X2 = (x21, x22, , x2n), ..., = (xm1, xm2, , xmn), atunci msura asemnrii ntre imaginile de intrare i cele etalon, se determin din relaia

unde |Si|, |Xj| - lungimile vectorilor Si i Xj.Apartenena imaginii de intrare Si la una dintre m imagini, se determin din urmtoarea regul decisiv:

n acelai timp, n aceast regul i mai departe n text, pentru notarea imaginii j i a imaginii etalon se folosete aceiai notare .

7.2 Recunoaterea imaginilor dup produsul lor scalarMsura asemnrii imaginilor dup unghiul dintre (3) se bazeaz pe produsul scalar al vectorilor:

Unele sisteme de recunotere folosesc nemijlocit produsul scalar n calitate de msur de asemnare a imaginilor ntr-un spaiu n-dimensional vectorial:

n acest caz apartenena imaginii de intrare Si la careva imagine etalon, se determin din urmtoarea regul decisiv:

7.3 Recunoaterea imaginilor dup apartenena acestora la o zon de spaiu datLa acest mod de recunoatere, tot spaiul de imagini V se mparte n zone care nu se intersecteaz V1, V2, ..., Vm, Vm+1, unde V1, V2, ..., Vm -zone, ce conin imagini numai la o imagine virtual corespunztoare 1, 2, ..., ; Vm+1 - zon, care nu conine imagini, care se refer la imaginile virtuale date. n acest caz apartenena imaginii de intrare Si = (Si1, Si2, ..., Sin) la o oarecare imagine virtual j () se determin din regula decisiv

Dac zona Vj () este reprezentat n spaiul euclidian n form de sfere cu centrul n punctele () i cu razele Rj, atunci regula decisiv (8) va primi forma

Pentru construirea zonelor n spaiul de imagini, se pot folosi oricare din metodele de asemnare, ca de exemplu, dinstanele cu coeficiente care posed o capacitate (10) - (12), distana dup Camberr (13) .a.m.d

unde coeficienii cu capacitate;

numr ntreg pozitiv, mai mare ca 2.

Regula decisiv (8) pentru distanele (10) (12) va primi forma

unde Rij distana dat din una din relaiile (10) (13), ntre imaginea prezentat Si i centrul sferei, care conine imaginea virtual j;

Rj raza sferei, care conine imaginea virtual j.n cazul folosirii pentru recunoaterea unghiului dintre vectorii zoneleor ce nu se intersecteaz Vj () se reprezint n form de conuri, i regula decisiv are forma

unde - unghiul dintre imaginile prezentate Si i imaginile etalon Xj, - unghiul maxim admisibil pentru imaginea virtual j dintre etalon i imaginile pentru recunoatere.PARTEA 2: Desfurarea lucrrii1. Se va elabora algoritmul i programul, care modeleaz recunoaterea a ctorva obiecte diferite, ntr-un spaiu vectorial n-dimensional dup unghiul dintre vectori i dup produsul lor scalar.2. Se va stabili dimensiunea vectorului n-dimensional al spaiului, cu numrul de obiecte etalon (n i m trebuie s fie nu mai mici dect 5) i cu cteva obiecte pentru recunoatere. Cu ajutorul unghiului dintre vectori i produsul lor scalar, se va determina apartenena obiectelor prezentate pentru testare la un oarecare obiect etalon.3. Se va elabora algoritmul i programul, care modeleaz recunoaterea a ctorva obiecte diferite la apartenena lor la zonele sferice sau conice ntr-un spaiu vectorial n-dimensional.4. Se va stabili dimensiunea vectorului n-dimensional al spaiului, cu numrul de obiecte etalon i cu cteva obiecte pentru recunoatere. Cu zonelor sferice sau conice ce conin obiectele etalon, determinai apartenena obiectelor prezentate pentru testare la un oarecare obiect etalon.LUCRAREA DE LABORATOR 8

Reelele Neuronale Hamming

Scopul: Cptarea i consolidarea cunotinelor, precum i formarea deprinderilor practice pentru lucrul cu reelele neuronale Hamming.

PARTEA 1: Noiuni Teoretice

Reeaua Hamming este una dintre cele mai performante reele neuronale pentru recunoatere i clasificare. n aceast reea imaginile alb-negru sunt prezentate sub form de vectori bipolari m-dimensionali. Denumirea reelei provine de la distana Hamming, care se folosete de reea n msurarea asemnrii a R imagini de intrare i celor etalon, pstrate cu ajutorul balanei de legturi a reelei. Msura asemnrii se determin din relaia:

R = m-Rx, (1)

(1)unde m componenta numeric a vectorilor de intrare i etalon; Rx distana Hamming dintre vectori.

Definiie:

Distana Hamming dintre doi vectori binari prezint componenta numeric n care vectorii sunt diferii.

Din definiie rezult c msura de asemnare a imaginilor (1) poate fi redat prin numrul , care este componenta vectorilor binari n care ei coincid: R = .Vom deduce pentru vectorii bipolari S = (s1 ,...,sm) Z = (z1 ,...,zm) produsul lor scalar prin numrul de componente care coincid i de componentele care sunt diferite: (2)

unde a numrul de componente identice ale vectorului; d numrul de componente diferite ale vectorilor S i Z.Deoarece dimensiunea vectorilor, atunci m = + d, rezult c produsul scalar (2) poate fi scris n forma:

SZ = 2 - m.De aici nu este greu de determinat:

(3) (3)Partea dreapt a expresiei (3) poate fi privit ca semnalul de intrare a neuronului, care are m sinapse, cu coeficientul de greutate zi/2 (i = 1,m) i cu deplasamentul m/2. Sinapsele neuronului recunosc m componente a vectorului de intrare S = (s1, .., sm). Aceast interpretare a prii drepte a expresiei (3) prezint arhitectura unei subreele neuronale, care este redat de partea de jos a Figura 1. n unele surse reeaua din Figura 1 este numit reea Hamming, altele numesc reea Hamming doar partea de jos a figurii, socotind c reeaua e format din dou subreele - Hamming i MaxNet. Noi vom considera c este o reea Hamming.

Figura 8.1 Exemplu de Reea Hamming.

Reeaua Hamming are m neuroni de intrare S1, , Sm , care recunosc componentele bipolare s1q, , smq ale imaginilor de intrare Sq (q=1,L). Semnalele de ieire ale elementelor S se determin din relaia: (4)

(4)

Unde,

Uout > U ieireUin -> U intrare ;

rezult c semnalul de ieire a elementului S, repet semnalul lui de intrare:

Uout Si = Uin Si = sqi .

Fiecare neuron Sj (j=1, m) este legat cu intrarea fiecrui element Zk (k=1, n). Capacitatea acestor legturi w1k, , wmk conine informaia despre imaginea etalon k:Vk = (v1k,, vmk):

w1k = v1k/2, , wmk=vmk/2. (5)Funcia de activare a Z-elemente este descris de relaia:

(6)

Unde Uin semnalul de intrare a neuronului; k1, U constante.

La descrierea imaginii S* = (s1*, , sm*) fiecare Z-neuron calculeaz semnalul lui de intrare n conformitate cu expresia (3):

(7)

i cu ajutorul funciei de activare, determin semnalul de ieire UinZk. Semnalele de ieire UinZ1, , UinZn a Z-elemente sunt semnale de intrare 1, ..., n a subreelei de sus, care este o reea MaxNet. Funcia de activare a neuronilor Ap (p=1,n) i capacitatea lor de legtur se dau de relaia:

unde constanta care satisface inegalitatea 0 < 1/n.Reeaua funcioneaz ciclic, dinamica neuronilor este redat de relaia iterativ:

(8)cu condiiile iniiale

Ui(0)=ai=UinZi, i=1,n

(8)

Dac printre semnalele de intrare 1 ,..., an a neuronilor A1, ..., An este un semnal cel mai nalt ( ({1, 2, ..., n}), atunci n rezultatul procesului iterativ n subreeaua MaxNet va prezenta un singur neuron , care va rmne cu semnal de ieire, mai mare ca 0, adic va deveni "nvingtor". Cu toate c semnalele de ieire U1, ..., Up, ..., Un a - elemente vin la intrrile a Y-neuroni, care au funcia de activare de forma:

(9)(9)

Atunci la ieirea reelei Hamming doar un singur neuron Yp va avea un singur semnal de ieire. Ieirea unic a acestui neuron i ieirile nule a celorlali neuroni vor indica c imaginea redat S*=(s1*, , sm*) este cea mai aproape, n sensul msurii de asemnare date (1), de imaginea etalon Vp=(v1p, , vmp).Un avantaj esenial al reelei Hamming const n faptul c nu necesit proceduri complicate de calcul pentru nvarea sa. Un neajuns esenial al reelei - eanu producedou sau mai multeimaginide referin, avnd cu imaginile impuse acelai nivel de asemnare.

Exemple:De elaborat o reea Hamming, avnd n calitate de etalon 5 imagini alb-negru V1, ..., V5; artate n Figura 2. De determinat influena imaginilor prezentate n Figura 3.

Figura 8.2 - Imagini etalon.

Figura 8.3 - Imagini pentru testare.

Figura 8.4 - Numerotarea elementelor imaginii.

ntruct avem doar 5 imagini etalon, reeaua va trebui s aib cte 5 Z-, -, Y-neuroni. Prezena a 9 elemente alb-negru n imaginile din Figura 8. 2 i Figura 8. 3 determin 9 S-neuroni, care recunosc elementele imagini