4
Umjetna inteligencija Drugi projektni zadatak EKSPERTNI SUSTAV ZA DIJAGNOZU BUBREŽNIH BOLESTI Ana-Marija Bilić, Monika Burić, Nikolina Dragić PMF Matematički odjel 10000 Zagreb, Hrvatska {ambilic, monikab, ndragic }@student.math.hr Sažetak:. U ovom članku detaljno opisujemo kako smo izradili ekspertni sustav za dijagnozu bubrežnih bolesti koristeći alat Jess. Ključne rijeci: Jess, ekspertni sustav, bubreg, bolest, dijagnoza 1. Uvod Tehnologija svakim danom napreduje i računala sve više zamjenjuju ljude u svim segmentima života. Zbog toga nam je, od svih ponuđenih zadataka, izrada vlastitog medicinskog dijagnostičkog sustava bila najzanimljivija. Naš ekspertni sustav dijagnosticira bubrežne bolesti. 2. Ekspertni sustav i Jess Ekspertni sustavi su računalni programi koji sadrže određena specifična znanja iz jednog ili više određenih područja znanosti. Najčći oblik ekspertnih sustava sastoji se od seta pravila po kojima se analiziraju informacije (koje su najčće pružene od strane korisnika) o specifičnoj vrsti problema, ali i pružanja matematičke analize problema. Ovisno o njihovom dizajnu, tj. izvedbi, pružaju korisniku određene povratne informacije koje je potrebno poduzeti da bi se riješio zadani problem. Ekspertni sustavi su dizajnirani i stvoreni da bi rješavali zadatke u područjima financiranja, medicine, proizvodnje, računovodstva, kontrole procesa određenih aktivnosti i sl. No, treba napomenuti da ekspertni sustavi nisu savršena umjetna inteligencija, već su dosta usko orijentirani i često mogu griješiti ako ih se koristi za rješavanje pojedinih problema izvan domene za koju su stvoreni.

ekspertni_bubrezi_clanak

Embed Size (px)

Citation preview

Umjetna inteligencija

Drugi projektni zadatak

EKSPERTNI SUSTAV ZA DIJAGNOZU BUBREŽNIH BOLESTI

Ana-Marija Bilić, Monika Burić, Nikolina Dragić

PMF Matematički odjel

10000 Zagreb, Hrvatska

{ambilic, monikab, ndragic }@student.math.hr

Sažetak:. U ovom članku detaljno opisujemo kako smo izradili ekspertni sustav za dijagnozu bubrežnih bolesti koristeći alat

Jess.

Ključne rijeci: Jess, ekspertni sustav, bubreg, bolest, dijagnoza

1. Uvod

Tehnologija svakim danom napreduje i računala sve više zamjenjuju ljude u svim segmentima

života. Zbog toga nam je, od svih ponuđenih zadataka, izrada vlastitog medicinskog

dijagnostičkog sustava bila najzanimljivija. Naš ekspertni sustav dijagnosticira bubrežne

bolesti.

2. Ekspertni sustav i Jess

Ekspertni sustavi su računalni programi koji sadrže određena specifična znanja iz jednog ili

više određenih područja znanosti. Najčešći oblik ekspertnih sustava sastoji se od seta pravila

po kojima se analiziraju informacije (koje su najčešće pružene od strane korisnika) o

specifičnoj vrsti problema, ali i pružanja matematičke analize problema. Ovisno o njihovom

dizajnu, tj. izvedbi, pružaju korisniku određene povratne informacije koje je potrebno poduzeti

da bi se riješio zadani problem. Ekspertni sustavi su dizajnirani i stvoreni da bi rješavali

zadatke u područjima financiranja, medicine, proizvodnje, računovodstva, kontrole procesa

određenih aktivnosti i sl. No, treba napomenuti da ekspertni sustavi nisu savršena umjetna

inteligencija, već su dosta usko orijentirani i često mogu griješiti ako ih se koristi za rješavanje

pojedinih problema izvan domene za koju su stvoreni.

Za izradu našeg ekspertnog sustava koristili smo alat Jess (Java Expert System Shell) –

„pogon na pravila“. Kako se Jess bazira na činjenicama i pravilima koja se aktiviraju jedino

kada je skup određenih činjenica zadovoljen, mora postojati način da se za svako pravilo ispita

da li su tražene činjenice zadovoljene. Nije bitno opisati ni redoslijed ni algoritam kako doći

do rješenja, već samo zadati što je potrebno za rješavanje problema.

3. Implementacija programa

3.1. Činjenice

Naš ekspertni sustav dijagnosticira četiri najčešće bubrežne bolesti koje definiramo kao skup

činjenica.

(deffacts bolesti

(bolest (sifra bubrezni_kamenac) (naziv „Bubrezni kamenac“))

(bolest (sifra upala_mjehura) (naziv „Upala mjehura“))

(bolest (sifra upala_bubrega) (naziv „Upala bubrega“))

(bolest (sifra cista_na_bubregu) (naziv „Cista na bubregu“)))

Svaka bolest ima određen broj simptoma, tj. skup činjenica pitanja sadrži simptom i

bolest kojoj pripada. Neke bolesti zastupljenije su kod žena, odnosno muškaraca te smo i spol

uključili u isti skup činjenica. No, pitanje o spolu postavlja se najviše jedan put, neovisno o

bolesti.

(deffacts pitanja

(pitanje (bolest bubrezni_kamenac)

(simptom bol_u_krizima)

(tekst „Osjecate li bol u krizima?“))

(koji_spol (bolest upala_mjehura) (spol z))

(...)

)

3.2. Pravila

Program radi tako da postavlja jedno po jedno pitanje potpuno neodređenim redosljedom.

Upisuje redni broj u varijable tako da kasnije omogući brisanje pomoću retract.

(defrule pitanje

(dijagnoza)

?p <- (pitanje (bolest ?b) (tekst ?t))

?m <- (moguca ?b)

=>

(printout t crlf ?t " (D/N) ")

(bind ?odgovor (read))

(assert (odgovor ?odgovor ?m ?p)))

• Ako je odgovor NE, gleda bolest na koju se odnosi simptom, ignorira je te više ne

postavlja pitanja vezana za tu bolest.

(defrule ne

?fact <- (odgovor n|N ?b ?p)

=>

(retract ?fact)

(retract ?p)

(retract ?b))

Ako je odgovor neispravan, pretpostavlja se da je odgovor NE.

(defrule neispravno

?fact <- (odgovor ~d&~D&~n&~N $?opcije)

=>

(retract ?fact)

(printout t "Neispravan odgovor = N" crlf)

(assert (odgovor n $?opcije))

)

• Ako je odgovor DA, nastavlja postavljati pitanja vezana za tu bolest, ali to pitanje

izbaci. U slučaju svih pozitivnih odgovora, dijagnosticira tu bolest.

(defrule da

?fact <- (odgovor d|D ?b ?p)

=>

(retract ?fact)

(retract ?p))

Da naš program radi kako treba, koristili smo tri kontrolna stanja: pocelo, slobodan i

dijagnoza. Ta stanja nam služe da se pravila izvršavaju onoliko puta koliko zahtijeva

trenutna situacija.

Na primjer, pravilo pocetak se izvršava kad se „uključi“ kontrolno stanje slobodan, a

ponovno se aktivira kod pravila dijagnoza kad program dijagnosticira (ili ne dijagnosticira)

bolest.

(...)

(defrule pocetak

(slobodan)

=>

(reset)

(assert (pocelo))

(printout t crlf crlf "Zelite dijagnozu? (D/N) ")

(bind ?odgovor (read))

(assert (odgovor ?odgovor)))

Kad se pravilo pocetak izvrši, moguća su dva odgovora na pitanje: DA ili NE. Ako je

odgovor DA, uključi se kontrolno stanje dijagnoza koje upućuje na sljedeće pravilo kojim

se postavljaju pitanja. U slučaju odgovora NE, tj. korisnik ne želi dijagnozu, aplikacija se

završava.

(...)

(defrule dijagnoza

?fact <- (dijagnoza)

(moguca ?b)

(not (pitanje (bolest ?b)))

(not (koji_spol (bolest ?b)))

(bolest (sifra ?b) (naziv ?n))

=>

(printout t crlf "DIJAGNOZA: " ?n crlf)

(retract ?fact)

(assert (slobodan)))

(...)

4. Zaključak Ovaj ekspertni sustav dijagnosticira bolesti bubrežnog sustava i u odnosu na stvarni svijet nije

realan, tj. da bi se dijagnosticirala neka bolest, pacijent treba izvršiti mnogo više pretraga.

No, vidimo da je ovaj ekspertni sustav sa odgovarajućim simptomima na dobrom putu ka

otkrivanju bolesti, te možda jednog dana zamijeni i pravog doktora.

5. Literatura

http://hr.wikipedia.org/wiki/Ekspertni_sustavi http://web.math.hr/nastava/ui/materijali/ http://www.jessrules.com/ http://www.mojezdravlje.net/Zdravlje/medicinski-leksikon/ http://www.dfki.de/~kipp/seminar_ws0607/reports/martin_strauss.pdf