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

A követelmények:

A cikksorozatunk első részében az NLI rendszereket mutattuk be általánosságban. Áttekintettük, hogy milyen modulokból kell álljon egy általános NLI rendszer, milyen feltételeket, paramétereket célszerű figyelembe venni egy konkrét kialakításnál. Az NLI keretrendszer tervezése során elsődlegesen meg kell határozni a rendszer követelményeit, architektúráját, komponenseit, a komponensek közötti kapcsolatokat.

A tervezés során ki kell térni a további modulok funkcionális és nem funkcionális követelményeire, illetve az SDK modulokon felül a prototípus alkalmazás követelményeit is meg kell fogalmazni.

A funkcionális követelmények mellett meghatározásra kerülnek a rendszer és a prototípus alkalmazás felhasználói típusai, és rögzítésre kerülnek a felhasználókhoz kötődő használati esetek. Mindezekről a modul 2-es számú dokumentációjában lehet olvasni.

A funkcionális tervezés mellett nagy szerepet kap a továbbiakban alkalmazandó algoritmusok elemzése, modulokra lebontva. Fontos megjegyezni, hogy ugyan a legtöbb algoritmusnak léteznek összehasonlítható költségelemzései, mégis nagyon fontos a működési körülmények figyelembe vétele a döntésnél. Lehet ugynanis, hogy valamely algoritmus gyorsabb egy adott problémára egy másiknál, azonban a pontossága jócskán elmarad a lasabbtól. Meg kell találnunk tehát az optimális megoldást, figyelembe véve az algoritmus sebességét és a pontosságát egyaránt, és a kívánalmak alapján dönteni az egyik vagy a másik paraméter javára.

Nagyon fontos a működés szempontjából, hogy a rendszer funkciói kellően le legyenek tesztelve, megbizonyosodva a működőképességről vagy esetleg a hibákról, hiányosságokról. Éppen ezért már a tervezési fázisban szükséges elkészíteni egy előzetes teszt dokumentációt, mely összefoglalja az implementáció során és után futtatandó teszteseteket.

A következőkben az egyes részfeladatok rövid ismertetésére, összefoglalására kerül sor.

A prototípus rendszer architektúrája a következő ábrán látható:

 

1. ábra: NLI prototípus architektúra

Az prototípus NLI alkalmazás egy Java-kompatibilis hardveren fut. Az alkalmazás egy HID input eszközről fogadja a bemenetet, ami alapértelmezetten természetes nyelvű szöveg, de lehet ezen felül még akár hang is, ha a megfelelő hang-szöveg átalakító már létezik.

Az alkalmazás természetes nyelvű szöveges inputot képes fogadni a navigáció témakörben, és a bemenetet elemezve választ ad, ami lehet egy normál szöveg, egy térkép vagy akár egy útvonal.

Navigációs adatbázisként a Google MAP szolgáltatásait vesszük igénybe, az alkalmazásnak tehát a bementet a megfelelő Google MAP szolgáltatás-hívásokra kell alakítania és az XML válaszból pedig a megfelő formázások, átalakítások során kell az eredményt összeállítania.

A szöveges input elemzése egy meglehetősen bonyolult és összetett folyamat, mely alfolyamatok, almodulok láncolataként kezelve oldaható meg hatékonyan. Az NLI keretrendszer logikai architektúrája a következő ábrán látható:

 

2. Ábra: Logikai architektúra

Az ábrán látható, hogy az NLI rendszer a következő almodulokra bontható:

  • bemeneti eszközhöz kapcsolódó modulok
    • beszédfelismerő modul ( hang bemenet esetén)
    • szövegtisztító, átalakító modul
  • morfológiai modul
  • fogalmak feldolgozásához kapcsolódó modulok
    • mondatelemző modul
    • domain ontológiai modul
  • a parancsfeldolgozás moduljai
    • parancsontológiai modul
    • funkció mapper modul.

A modulok nyelvfüggőség tekintetében két részre oszthatók:

  • nyelvfüggő modulok: HID modulok és a morfológiai modul
  • nyelvfüggetlen v. kvázi-nyelvfüggetlen modulok: ontológiai modulok (domain, parancs).

A modul dokumentációjának jelentős részét teszi ki a funkcionális követelményeknek és a felhasználók használati eseteinek meghatározása. A felhasználói követelményeket két részben kell vizsgálni:

  • az NLI keretrendszer követelményei
  • az NLI prototípus alkalmazás követelményei.

Két fontos követelményt kell mindenek előtt felállítani: a keretrendszernek domain-, és nyelvadaptívnak kell lennie. Ez nem azt jelenti, hogy bármilyen nyelven, bármilyen domain-en azonnal működik a rendszer, hanem, hogy a nyelvfüggő és domainfüggő modulok megfelelő tanításával, illetve a szükséges interfészek alkalmazásával más nyelvekre és domain-ekre is használható.

A keretrendszer funkcióit modulonként érdemes megtervezni.

A szövegtisztító modulnak képesnek kell lennie a bemeneti szöveg hibáinak felismerésére, javítására. Mivel a bemenet származhat többféle forrásból is (beszéd, billentyűzet, lapolvasó, kézírás), az analóg-digitális konverterek a különböző források esetén más és más hibákat ejthetnek. A billentyűzetről származó szövegben az elütések okozhatnak hibákat, így ezek javításánál a billentyűk elhelyezkedését tudjuk figyelembe venni. Egy scannerből származó forrásban a hasonló formájú karakterek lehetnek hibásan felismerve. Ezen hibák javítására különböző algoritmusok használhatóak a hibaforrás függvényében.

Ahhoz azonban, hogy a további modulok számára hasznáható bemenetet biztosítsunk, a modul funkciói közé kell tartozzanak a következők:

  • szótárkezelés (új szó hozzáadás, meglévő törlése, módosítása, listázása)
  • mondathatárolók és szóhatárolók kezelése (új felvitel, meglévő törlése, módosítása, listázása)
  • mondatok felismerése
  • szavak felismerése
  • szavak helyesírás-elemzése, javítása.

modul

A morfológiai modul szerepe a mondat(ok) szavainak nyelvtani elemzése. A további modulok feladata a mondatok jelentésének meghatározása, melyhez elengedhetetlen a szavak morfológiai elemzése, hiszen ugyanaz a szótő más-más toldalékkal teljesen más jelentést hordozhat. A morfológiai elemzésen túl szükség lehet egy tetszőleges szó adott szabály szerinti ragozott alakjának meghatározására is. Ez utóbbi funkció a válaszgenerálásnál kaphat jelentősebb szerepet.

A morfológiai modulnak a következő funkcionalitással kell rendelkeznie:

  • szótövek tárolása, kezelése (felvitel, módosítás, törlés, listázás)
  • nyelvtani szabályok tárolása, kezelése (felvitel, módosítás, törlés, listázás)
  • kivételesen ragozandó szavak kezelése (felvitel, módosítás, törlés, listázás)
  • szavak morfológiai elemzése
  • szavak ragozása
  • az elemzés pontosságának meghatározása adott teszt-szóhalmazra.

A mondatelemző modul a morfológiai modul kimenetét használja ahhoz, hogy felépítse a bemenet mondattani elemzését. Ahhoz, hogy a mondat jelentését megértsük, szükség van arra, hogy az egyes szavakról, szókapcsolatokról meg tudjuk mondani, hogy milyen mondatrészt töltenek be a szövegben. Itt kerülnek meghatározásra az egyes mondatrészek: alany, állítmány, tárgy, stb., és a mondatok közötti viszonyok: alá-, mellérendeltség.

A mondatelemző modulnak a következő funkciókat kell megvalósítania:

  • mondatrész adatbázis kezelése (felvitel, módosítás, törlés, listázás)
  • mondatelemző tanítása
  • mellékmondatok meghatározása
  • mondatrészek meghatározása.

A domain ontológiai modul az előző modulok eredményeit felhasználva kezeli a szöveg jelentését. A jelentés meghatározásának alapegységei a fogalmak, melyek között igen változtos kapcsolatrendszer építhető ki. Egy adott domain fogalmait, fogalmi kapcsolódásait lehet ezen modul funkcióival felépíteni.

Az egyes fogalmak írásbeli, illetve beszédbeli megvalósulásai a szavak, melyek nyelvenként eltérőek, azonban a jelentésükről elmondható, hogy többé-kevésbé nyelvfüggetlenek. Például amikor meghalljuk azt a szót, hogy telefon, mindenki egy készülékre gondol, amellyen keresztül távol lévő emberek tudnak egymással beszélgetni, függetlenül attól, hogy ezt egy magyar ember teszi, aki “telefon”-nak nevezi a készüléket vagy egy angol ember teszi, aki “phone”-nak vagy “telephone”-nak hívja azt.

A domain ontológiai modul feladatai közé tartoznak a következők:

  • fogalmak kezelése (felvitel, módosítás törlés, listázás)
  • fogalmak felismerése a mondatból
  • a mondat fogalmi kapcsolatainak meghatározása.

A parancsontológiai modul az NLI keretrendszer utolsó modulja, feladata a kiadott parancs, utasítás végrehajtása. Egy domain-orientált alkalmazásban véges számú utasítást tudunk kezelni. A parancsokat előre meghatározott epítőelemek láncolásával tudjuk felépíteni úgy, hogy a következő elem bemenetként az őt megelőző elem kimenetét kapja. A parancs utolsó eleme mindig az eredménygeneráló elem, amely a kívánt formátumú kimenetet képes a felhasználó felé eljuttatni.

A parancsontológiai modul fő feladatait a következőképpen foglalhatjuk össze:

  • parancs elemek kezelése (felvitel, módosítás, törlés, listázás)
  • funkciók(parancsok) kezelése (felvitel, módosítás, törlés, listázás)
  • parancsosztályozó kezelése (tanító mondatok felvitele, törlése, módosítása, listázása)
  • parancsok fogalmakhoz társítása
  • kérdés feltevése a hiányzó paraméterekhez
  • parancs végrehajtás
  • eredmény generálás.

A prototípus alkalmazás egy navigációs alkalmazás, vezérlése magyar nyelvű beszéddel történik. Az alkalmazás fő feladata, hogy a kimondott utasítást vagy kérdést megértse és a megfelelő választ generálja. Mivel egy grafikus alkalmazásról van szó, alapvető ergonómiai követelményeknek is meg kell felelnie, ezen felül a főbb követelmények a következők:

  • magyar nyelven történő működés
  • többnyelvű kezelő felület támogatása
  • hangeszközök kezelése
  • válaszok kezelése, mutatása egy erre kijelölt ablakban
  • beállítási varázsló.

Az alkalmazást több felhasználó is használhatja, ez a feltétel a felhasználókezelés funkcióit vonja maga után. Szükség lehet tehát felhasználók felvitelére, módosítására, törlésére. A felhasználókezeléssel összefüggő funkciók ezen felül még a beszédfelismerő esetleges tanítása, finomítása, ugyanis nagyon eltérő egyedi hangokon is ugyanolyan pontosan kell működjön az alkalmazás. Egy teljesen általános tanítással a pontosság alulmaradhat egy specifikus, felhasználó általi finomítástól.

Az alkalmazás esetlegesen nem ismeri az összes szót, amelyet a felhasználó fontosnak tart az adott domain-ben. Lehetőséget kell adni új szavak betanítására, meglévőek finomítására, esetleg törlésére.

Az alkalmazás fő funkció a követezők:

  • alkalmazás elinditása,bezárása
  • alkalmazás aktiválása, deaktiválása
  • alkalmazás vezérlés hanggal
  • válasz adása alkalmazás által generált kérdésre.

A természetes nyelv számítógépes feldolgozása nem nevezhető egzakt tudománynak, az alkalmazásra kerülő modellek, algoritmusok nagyban függenek különböző paraméterektől, mint pl.:

  • a nyelvtől
  • a tanító halmazoktól
  • a minták számától
  • a tanítás pontosságától, stb.

Az általános tervezési fázisban a témában leggyakrabban használt, leginkább elfogadottabb algoritmusok összegyűjtése történt meg, melyek részletes kidolgozása, alkalmazhatóságuk elemzése a további kutatások részét képezi. A következőkben egy rövid felsorolást adunk az egyes modulokban alkalmazható algoritmusokról, modelekről:

1.     Szövegtisztító modul

a.     Levenshtein-távolság

b.     Damerau-Levenshtein-távolság

c.     Bayes osztályozó

2.     Morfológiai modul

a.     FSA

b.     FST

c.     Prefix fa

d.     Bináris keresőfa

e.     Hash tábla

3.     Mondatelemző modul

a.     Rejtett Markov-modell

b.     N-gram modell

4.     Domain ontológiai modul

a.     Ontológia modellek

b.     ECG

c.     OWL

5.     Parancsontológiai modul

a.     OWL

b.     XSD

c.     XML

d.     XPath

e.     XSLT

Konklúzió

Ebben a cikkben meghatározásra kerültek a megvalósítandó NLI keretrendszer moduljainak követelményei, az egyes modulok funkciói. Áttekintettük az alkalmazható algoritmusokat modulonként, illetve felvázoltuk a prototípus rendszer architektúráját és logikai struktúráját.

A következő cikkünkben megvizsgáljuk, hogy a szövegelemző NLI rendszerek használata hogyan tehető kényelmesebbé az emberek számára különböző HID eszközök használatával. Ezen eszközök adják az NLI motorok bemenetét, lehetnek akár egy beszédfelismerők vagy kézírásfelismerők is.

 

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 meg.

Azóta történt

Előzmények

Hirdetés