Skip to content

benoc008/MIHazi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 

Repository files navigation

MIHazi

Egy 5 eves chatbot.

A program a Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Karának Mesterséges Intelligencia című tárgyhoz készült, mint házi feladat.

A feladat egy olyan Chatbot készítése volt, mely egy óvodás gyerek stílusában képes bemutatkozni, beszélgetni, válaszolni, kérdéseket feltenni. A specifikációnk szerint ezt magyar nyelven tudja, és képes a tanulásra is.

A kész program rendelkezik a következőkkel:

  • Grafikus felület, melyen keresztük a beszélgetés történik

  • Grafikus felület a robot "tanítására"

  • Egyszerű input elemző

  • Kérdés generáló

  • Válasz generáló

  • Belső tanuló modell

  • Grafikus felület, melyen keresztük a beszélgetés történik Egyszerű Java Swing felület egy szövegdobozzal, ahol az üzenetek látszanak, egy bemeneti mezővel, valamint egy küldés gombbal. A fájl menüből elérhető a mentés és betöltés funkció, mely a beszélgetés közben fejlődött tudástár állapotát tárolja. Ebből a menüből érhető el a logolás ki és bekapcsolása, ami egy olyan fájlt generál, ami tartalmazza az aktuális beszélgetés inputjait, válaszait, valamint az elemzés fő lépéseit, azoknak kimenetét vagy sikertelenségét. Az eszközök menüből érhető el az oktatás ablak

  • Grafikus felület a robot "tanítására" Itt határozhatóak meg a robot fő tulajdonságai, például szerkeszthetjük a bemutatkozását, és definiálhatunk sajátos válaszokat megadott kérdésekre. Egy táblázatba foglalva látjuk az eddig betöltött kérdéseket és válaszokat. Ezeknek a formátuma egyszerű szöveges fájl, mely sorai, ha K:-val kezdődnek kérdés következik, ha pedig V:-vel, akkor a legutóbbi kérdéshez adható válaszok. Mentéskor egy ilyen fájl generálódik. A táblázaton keresztül egyszerűbben tudjuk ezeket a kérdéseket felvenni, szerkeszteni, új válaszokat hozzáadni, vagy esetleg törölni, és mentés után azonnal kipróbálhatóak a chat ablakban.

  • Egyszerű input elemző Az inputot a program először mondatokra bonta, és összehasonlítja az előre leírt mondatokkal, hogy van-e pontos egyezés. Ha igen, a hozzá tartozó válaszokból választ egyet, és ez lesz a válasza. Abban az esetben, ha ebben a listában nem találta meg a megfelelő választ, a mondatot megpróbálja elemezni, és egy primitív mondatra bontani, mely csak alanyból, állátmányból és tárgyból áll. Ennek a felbontásnak első lépésben a megfelelő szófajú szavak szótövének megkeresésével, majd megfelelő ragok illesztésével próbálkozik. Amennyiben nem sikerült, az általa ismert szavak közül a legnagyobb egyezőséggel bírót választja ki.

  • Kérdés generáló Abban az esetben, ha az input nem kérdés volt, a robot tesz fel egy kérdést, ezzel továbblendítve a beszélgetést. A kérdést az alapján generálja, hogy az előző mondat elemzése mennyire volt sikeres. Ha sikerült meghatároznia az állítmányt és a tárgyat is, akkor egy viszonylag kerek mondattal fog visszakérdezni egy véletlen kérdőszóval, remélhetőleg helyes ragozással. (abban az esetben, ha a mondatelemzésnél a mondatrészek meghatározása a ragozás keresésével történt, akkor sikerülni fog)

  • Válasz generáló Ha az input kérdés volt, akkor a robot megpróbál válaszolni rá. Ha nincs válasza az előre definiált válaszok között, akkor megpróbál a beszélgetés során tanult válaszokból generálni. Ha nem sikerül, akkor a beégetett semleges válaszai közül választ egyet, ami megfelelő a kérdőszóhoz, és azt adja válaszul.

  • Belső tanuló modell A program futása során mindig megnézi, hogy a felhasználó milyen választ adott a robot által generált kérdésre. Hogy elég egszerű legyen a működése, csak azt vizsgálja, hogy milyen kérdőszóval, milyen állítmányra, vagy tárgyra jött a válasz. Így például egy: " - Milyen könyvet olvasol?" " - Krimit." beszélgetés után a tudásbázisba fog kerülni a "Milyen" kérdőszóval és "könyv" kérdezett szóval a "krimi", mint válasz. Így remélhetőleg legközelebb, ha a beszélgetés során felmerül a "Milyen könyv" kérdés valamilyen kontextusban, a robot "krimi" választ fog adni, a megfelelő ragozással, a helyett, hogy "nem tudom".

About

Egy 5 eves chatbot.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages