Domain-adaptív természetes nyelvi interfész megvalósítása magyar nyelven VI.

6.  rész

Parancsfeldolgozás: parancsok, funkciók felismerése magyar nyelvű mondatokból

A cikksorozatunk előző részeiben az NLI rendszer bemenetének szemantikai elemzésével, a fogalmak felismerésével. A következő részben a parancskonverzió és a fogalmak csatolása kerül áttekintésre.

Az NLI keretrendszer utolsó modulja a parancsontológiai modul. Amire a természetes nyelvű input elkerül ehhez a modulhoz, már a következő folyamatok végbementek:

  • szövegtisztítás
  • morfológiai elemzés
  • mondatelemzés
  • szemantikai feldolgozás.

A modulok be- és kimenetei úgy vannak tervezve, hogy a későbbi modulok hozzáraknak az előző modulok kimeneteihez, így az összes előző modul hatása, kimenete fellelhető a parancsontológiai modul bemenetében.

Természetesen a leglényegesebb rész a szemantikai feldolgozás kimenete, amely a mondatelemzés és morfológiai elemzés eredményeit felhasználva került összeállításra. A szemantikai feldolgozás eredményét kell a parancsontológiai modulnak olyan formában átalakítania, hogy abból a vezérlendő eszköz számára végrehajtható parancs, parancsok szülessenek.

A parancsfeldolgozás meglehetősen bonyolult folyamat, ugyanis a keretrendszert fel kell készíteni különböző típusú vezérlendő eszközök kezelésére. A következő eszköz-, alkalmazástípusok vezérlésére használható az NLI keretrendszer:

  • információs rendszerek
    • adatbázis kezelő rendszerek
    • web portálok, webshop-ok
    • kereső motorok
    • navigációs rendszerek
    • szakértői rendszerek
  • GUI alkalmazások
    • Windows alkalmazások
    • Office alkalmazások
    • voip alkalmazások
    • tervező (designer) alkalmazások
  • robotvezérlés
  • fejlesztői környezetek (IDEs).

A következőkben rövid összefoglalót olvashatunk az említett alkalmazástípusokban kezelendő parancsokról, a parancsontológia egységeiről.

A bevezetőben említett alkalmazástípusok vizsgálatakor megállapításra került, hogy a következő mondattípusokat kell kezelnünk:

  • állítások (kijelentő mondat)
  • kérdések (kérdő mondat)
  • parancsok (felszólító mondat).

A mondatok jellege a mondatvégi írásjelből és a predikátum alakjából meghatározható. A fent említett mondattípusokhoz különböző parancsok rendelhetőek. A parancsok az alábbi csoportokba rendelhetők:

  • definíciós utasítások
    • új elem létrehozása
    • létező elem törlése
    • létező elem módosítása
  • lekérdező utasítások
    • kiválasztás, szűrés
    • projekció
    • aggregáció
    • csoportosítás
    • adatok összekapcsolása
  • logikai v. halmaz utasítások
    • ÉS utasítás (két halmaz metszete)
    • VAGY utasítás (két halmaz uniója)
  • funkció utasítás (saját függvény definiálása, hívása)
  • eredménygeneráló utasítás.

Az állítások, kijelentések általában definíciós utasításokká alakíthatóak, míg a kérdések általában lekérdező utasításokká. Természetesen az állítások magukkal vonhatják azt is, hogy bizonyos paraméterek értékei lekérdezések eredményeiből állítható elő. A parancsok, felszólítások általában lekérdezésen kívül mindenféle utasítást kiválthatnak: definíciós vagy funkcióutasításokat. Itt is szükség lehet azonban egyes paraméterek meghatározásakor lekérdezésekre, tehát mondhatni minden utasítás kiváltódhat direkt v. indirekt módon.

Egy természetes nyelvi szöveg feldolgozása legtöbbször nem csak annyiból áll, hogy felismerjük a parancsokat, összefűzzük és generáljuk az eredményt, ugyanis sok esetben a parancsszövegek hiányosak, nem hajthatóak végre egyenesen. Ekkor lehet szükség többek között kérdések generálására, az ezekre adott válaszok újbóli feldolgozására iteratív módon. Ezen követelmény biztosítására extra struktúrákra, egységekre van szükség. A parancsontológiai modul a következő egységekre bontható fel:

  • parancslánc kezelő
  • mondatosztályozó
  • kontextus kezelő
  • adathalmaz kezelő.

A parancslánc kezelő feladata a bejövő mondatban a parancsok felismerése és megfelelő sorrendben való láncolása. Ehhez a fogalmi leírásokból meg kell határoznia a fő funkciókat és a megfelelő parancsokat létre kell hoznia a felismert paraméter értékeivel együtt. A következő alfolyamatok játszódnak le a parancslánc kezelésnél:

  • bejövő fogalmak társítása parancsokhoz
  • parancsok sorrendjének meghatározása
  • paraméterek verifikációja
  • adatfolyam kezelése a parancsok között
  • válasz generálás.

A következő példán láthatjuk, hogy egy bejövő szövegből milyen formájú parancsláncolatot kell kiépíteni: “Hol van a legközelebbi benzinkút?”

A mondatosztályozó szerepe főként a nem információs rendszer típusú vezérlendő alkalmazásoknál nő meg, itt ugyanis tetszőlegesen sok funkció lehetséges, és egy megfelelő osztályozással a kívánt funkció viszonylag gyorsan kiválasztható. Ezáltal hatékonyság-növekedés érhető el, illetve a parancsra adott válaszidő csökkenthető, ugyanis az osztályozással leszűkíthető az illesztések, fogalmak halmaza egy adott funkció fogalmainak halmazára.

Két fontos funkció köthető a mondatosztályozóhoz:

  • tanítás: az osztályozó betanítása mintamondatokkal
  • tesztelés: az osztályozó hatékonyságának, pontosságának tesztelése, mérése előre meghatározott osztályozott mintahalmazzal.

Az osztályozásra különböző algoritmusok használhatóak, melyek közül kettő került kiválasztásra a modulban:

  • Bayes osztályozó
  • TF-IDF osztályozó

A kontextuskezelő fő feladata,hogy egy párbeszédet kezeljen a felhasználó és az alkalmazás között. Mint már említettük, egy kiadott természetes nyelvű szöveg nem biztos, hogy tartalmaz minden paramétert, ami a parancs végrehajtásához szükséges. A hiányzó paraméterek felismerésére kérdéseket kell generálni és az erre adott válaszokat feldolgozni úgy, hogy a már előzőleg kinyert információ is megmaradjon. Ezek az információk köthetők egy ún. kontextushoz, ami az első utasítás kiadásától az utasítás tényleges végrehajtásáig tart. A köztes időben kiadott kérdések, válaszutasítások mind a kontextus részei. A kontextus kezelő a következő elemeket tartalmazza:

  • parancslánc kezelő
  • parancs lánc
  • szükséges paraméterek
  • már kinyert paraméterek
  • kérdés generáló.

A kontextus kezelő struktúrája a következő ábrán látható:

A parancs végrehajtásához, a paraméterek validálásához, ez eredmény generálásához különböző leíró adatokra van szükség. Ezeket menedzseli az adathalmaz kezelő, mely nélkül a parancsok végrehajtása lehetetlenné válik. Az alábbi adathalmaz típusokat kezelhetjük:

  • objektum leíró adatok
  • eredmény leíró adatok.

Az objektum leírások XSD fájlokkal történnek. Mivel a parancsláncban az információ XML formában kerül átvitelre, így a megfelelő XSD-vel minden adat, paraméter könnyen validálható, és a hiányzó paraméterek is egyszerűen észlelhetőek. A következő adatok tárolhatók az objektumleíró tárban:

  • parancsok input paramétereinek sémája
  • parancsok output paramétereinek sémája
  • parancsok adatbemenetének sémája
  • funkciók leírása
  • fogalmak struktúrájának leírása.

Az NLI rendszer a feldolgozás végén valamilyen eredményt kell előállítson, amit a felhasználó egyértelműen és könnyen tud értelmezni. Ez az eredményformátum alkalmazásonként más és más lehet. A prototípus GPS alkalmazásban az eredmény lehet pl.:

  • egy egyszerű válasz (egy távolság érték, egy helységnév, stb…)
  • egy térkép
  • egy útvonal.

Az XML adatokból tetszőleges átalakításokat tudunk végezni XSLT által, mely során bármilyen kívánt kimenet előállítható. Az eredményleíró így tulajdonképpen XSLT template-ek halmazát tartalmazza, melyek közül az eredmény előállítására az aktuális parancsra illeszkedőt kell kiválasztanunk.

A tervezési dokumentációban részletesen definiálásra kerülnek a fent említett egységek, ezen felül még a részletes használati esetleírásokat és főbb aktivitásokat is tartalmazza.

Konklúzió

A cikksorozat jelen részében meghatároztuk a parancsontológiai, parancsfeldolgozó modulok feldatait, szerkezetét, az egyes részek feladatait. A funkciók leírásában az XML leíró nyelv kap jelentős szerepet, ezzel összefüggésben célszerű a modell osztályokat is kialakítani. Fontos megjegyezni, hogy egy parancsfeldolgozó modul tartalmazhat ún. segédszolgáltatásokat, mint pl. egy mondatosztályozó, amely a lehetséges megoldások, lehetőségek körét hatékonyan szűkíti, gyorsabbá téve a feldolgozást. Ilyen modulok használatának nagy számú parancs esetén van szerepe, kevés parancs esetén nem tapasztalható jelentős hatékonyság-növekedés.

A modul kimenete egyben az elvégzett parancs kimenete. Ennek feldolgozására szintén több megoldás létezhet. Definiálhatunk egységes XML típusú kimenetet, amit egy erre alkalmas XSLT feldolgozóval szabadon alakíthatunk tetszőleges formára. A kevés paranccsal, speciális kimenetekkel rendelkező alkalmazások esetén minimális implementációval speciális, egyedi kimenetkezelést is magvalósíthatunk a kimenet objektumok típusának megfelelően.

A cikksorozat következő, egyben utolsó részében röviden összegzésre kerülnek az NLI keretrendszer tervezésének, megvalósításának lépései, majd a cikk nagyobb részében a prototípus rendszer működőképességét igazoló GPS-NLI alkalmazás kerül bemutatásra.

Jelen publikáció eredményei a GOP-1.1.1-09/1-2009-0028 számú, “Domain- és nyelvadaptív természetes nyelvű parancsfelület prototípusának kidolgozása” című projekt keretében születtek.

Azóta történt

Előzmények

Hirdetés