Text2SQL

Szerző: Szakadát István

Gépi keresés szövegkorpuszban

Amikor a CD-ROM-ok megjelentek a kilencvenes évek elején, azzal hirdették őket, hogy egy CD-lemezen annyi könyv szövege tárolható, amennyi a hagyományos, papír alapú formátumban egy polcon férne el. Ráadásul a számítógépek segítségével nagyon gyorsan lehetett bennük keresni, és ezt még inkább kontrasztba lehetett állítani az ember keresési képességével. „Keressük meg, hányszor említik a kutyát Shakespeare összes művében!” Ez a feladat az ember számára teljesíthetetlen kihívásnak tűnt, a számítógép pedig egy pillanat alatt válaszolt, sőt, a találatokat azonnal meg is mutatta. A gépek elképesztő teljesítménye még nyilvánvalóbbá vált, amikor megjelent a web, és elkezdődött az emberi tudás digitális újrafelhalmozása. Az emberi tudás olyan új világát kezdtünk el építeni, amelyben bárki, bármit, bármikor, bárhonnan el tudott érni (némi túlzással). A weben keresztül hozzáférhető dokumentumok mennyisége elképesztő mértékben növekedett. Eric Schmidt, a Google akkori vezetője 2010-ben azt nyilatkozta, hogy:

„Manapság kétnaponta állítunk elő annyi információt, amennyit előtte a kezdetektől fogva 2003-ig összesen termeltünk.”

A digitális univerzum folyamatosan bővült, és a gigantikus méretű szövegkorpusz tartalmához való hozzáférést az ekkor megjelent gépi szolgáltatások, a keresőmotorok tették lehetővé. 2000-ben Tim Berners-Lee, a World-Wide-Web projekt atyja úgy nyilatkozott, hogy a web első évtizede beteljesítette a küldetését. Egyetlen összefüggő rendszerben tároljuk az emberiség teljes tudásvagyonát, a keresőgépek a felhalmozott irdatlan szövegmennyiséget villámgyorsan képesek olvasni, és hatékonyan képesek segíteni az embereket abban, hogy megtalálják a keresett dokumentumokat. Berners-Lee ekkor meghirdette a következő évtizedekre szóló webes programot, amelyben új célokat jelölt ki a következő fejlesztések számára.

„A web első évtizede arról szólt, hogy a gépeket megtanítottuk olvasni, most jön az, hogy megtanulják a szövegeket értelmezni.”

Miért volt szükség az új célok kitűzésére, mi volt az oka ennek? A gépek látványos teljesítménye lenyűgöző volt ugyan, de azért azt is lehetett tudni, hogy a számítógépes keresésnek vannak hiányosságai. Ha kiadtuk a feladatot a számítógépnek, hogy keressen a ’gyula’ szóra, azonnal visszaadta a találatokat (idővel egyre többet és többet), de nem tudta igazán jól kezelni az ilyen mondatokat:

„Gyula Gyula öt éven át volt a gyula a Gyula nevű városban.”

A gép megtalálta ugyan a ’gyula’ keresőkifejezést négyszer is a mondaton belül, de nem tudott mit kezdeni azzal a különbséggel, amit egy ember azonnal felismer, hogy ti. a megtalált kifejezés négyféle értelemben fordul elő az idézett mondatban: a ’gyula’ lehet családnév, keresztnév, méltóságnév és városnév (és találhatnánk, kreálhatnánk még további értelmezési/használati lehetőségeket is). A nyelv egy adott szintjén, szintaktikai értelemben a keresőgép hatékony, de a következő – szemantikai – szinten már nem. A gép – itt, ekkor – még nem tudja, hogy a ’gyula’ több mindent jelenthet egy mondaton belül. A fenti példa szemlélteti, mit érthetett Tim Berners-Lee azon, hogy „a gépek nem értik, mit olvasnak”. 

A probléma feloldását a szemantikus keresés technikáinak kifejlesztése ígérte. Ezért nevezték el az új webes programot ’szemantikus keresés kezdeményezésnek’. Ez a program azonban nem ért el olyan gyors és látványos sikereket, mint amilyeneket a web-projekt előző évtizedben láthattunk.

Volt persze egy másik probléma is a keresőmotorokkal. Amikor ugyanis az ember megfogalmazott egy keresőkérdést, akkor a gépek visszaadtak egy találati listát, ami azon dokumentumok felsorolásából állt, amelyekben szerepelt a keresőkifejezés. Az ilyen listák hossza idővel egyre nagyobb lett, ez a folyamatos növekedés állandósult. Elég hamar megjelentek a milliárdos elemszámú találati listák. De mit kezdjen az ember az ilyen mennyiségekkel? Bizonyos értelemben visszajutottunk oda, ahonnan indultunk: megint az emberre hárult a feladat, hogy keresést végezzen. Neki kellett manuálisan feltérképezni a találati lista dokumentumait: egymás után kattintgatni kellett, hogy láthassa, milyen kontextusban szerepel a keresőkifejezés az éppen kiválasztott szövegben. Csak keveset kértünk, de túl sokat kaptunk. Mondhatjuk: a gép túlzottan bőbeszédűvé vált. Nekünk pedig szükségünk arra, hogy a kereső legyen jobban fókuszált. 

Megbízhatóság, bőbeszédűség, relevanciakezelés

Erre a bőbeszédűségre persze volt válaszuk a keresőmotorok fejlesztőinek. Ha túl hosszú a találati lista, akár önismeretből feltételezhetjük, akár tapasztalatból tudhatjuk, hogy a felhasználók csak a lista elején levő ajánlatokat fogják megnézni. Ebben az esetben a legfontosabb szolgáltatási szemponttá az vált, hogy milyen a minősége a találati lista relevanciaszempontok szerinti rendezésének (mit és miért tesz az algoritmus a lista elejére). Erre sokféle próbálkozás volt a kezdetekben. Aztán megjelent a Google, és nagyon rövid idő alatt letarolta a keresőmotorok piacát a saját szolgáltatásával. Ennek az volt az oka, hogy a Google kereső a versenytársaihoz (AltaVista-hoz, Lycoshoz, HotBothoz és társaikhoz) képest új és sokkal jobb relevanciakezelő képeségekkel bírt. 

A Google keresőmotorjának sikerében azonban nem a szemantikai kompetencia vagy bármilyen más nyelvi képesség játszott szerepet, hanem inkább az újdonság, ahogyan az képes volt összegyűjteni és algoritmizálni a webes dokumentumokban szétszórt, az emberek által kifejezett értékelő információkat (értékmegnyilatkozásokat). Ma már mondhatjuk, hogy ezeket az adatnyomokat összegyűjtve és ezekből valamilyen relevanciamutatókat képezve a Google nem tett mást, mint hogy hasznosította a kollektív emberi intelligencia egyik különös megnyilvánulását (és bár erről nem szokás beszélni, mégis igaz, hogy a Google keresőben van elrejtve a talán legjelentősebb önkéntes és öntudatlan crowdsourcing projekt. Mindez persze nem kisebbíti a Google mérnökeinek érdemeit, hiszen a technikai infrastruktúra felépítése, az algoritmus fejlesztése során nagyon sok mérnöki tudást kellett hasznosítani.

A keresőgépekkel szemben egy másik típusú kritikát is meg lehetett fogalmazni. Ha ugyanis ezt az ember-gép közti viszonyt kommunikációs aktusnak tekintjük, amikor az ember kérdez és a gép válaszol, és tudjuk, hogy a keresőgép válasza egy találati lista visszaadása, akkor megállapítható, hogy a kérdés és a válasz műfajilag, a nyelvi minőség szempontjából eltér egymástól. Az ember ugyanis beír egy keresőkifejezést, vagyis feltesz egy kérdést (egy kérdőmondatot), amire a gép visszaad egy címlistát (rövidebb-hosszabb mondatsorozatot) válaszul, ráadásul azzal a „feladatkijelöléssel”, hogy az ember menjen tovább a felkínált linkeken és egymás után olvasgassa az így elérhető szövegeket. Ez a viszony jelentősen eltér az emberi kommunikáció alapformájától, amelynek során mondatokban kommunikálunk egymással, kérdéseket (mondatokat) teszünk fel és válaszokat (mondatokat) várunk a másiktól. 

Ez a különbség szolgáltatott a hivatkozási alapot újfajta keresőrendszerek fejlesztéséhez. Adta magát, hogy ha a feltett „egy-mondatos” kérdésekre „egy-mondatos” válaszokat várunk, akkor az új funkcionalitású rendszer neve legyen ’Q&A’ (question and answer) vagy ’kérdés-válasz rendszer’. 

Kérdés-válasz rendszerek

A kérdés-válasz rendszerek kifejlesztésére irányuló kísérletek régóta folynak, de átütő sikert senki sem tudott elérni. Ennek nyilvánvaló oka az, hogy ezek sikeres működtetéséhez szükség van az ember szemantikai képességeinek modellezésére és a modellek számítógépes megvalósítására.

Ez a feladat messze nem olyan könnyen teljesíthető, mint a szintaktikai elveken (karakter alapú hasonlóságon) alapuló keresés műveletének végrehajtása. Ehhez ugyanis fel kell tárni a mondatok belső szerkezetét, a szavak, kifejezések egymáshoz való viszonyát, azok jelentését, mindezeknek a nyelvhasználati kontextusokhoz való kapcsolódását, vagyis a természetes nyelv teljes szabályrendszerét. Nos, eddig ez nem sikerült. Nem kevesen vannak, akik szerint ez talán nem is lehetséges, és vannak olyanok is, akik szerint mindez teljesen értelmetlen vállalkozás. Persze sokan próbálkoztak, próbálkoznak a megoldások keresésével.

Szemantikus keresés

A Google nagyon korán (még a 2000-es évek elején) elkezdte fejleszteni a keresőmotorjának szemantikai képességeit. Meglehetősen sok, kisebb-nagyobb jelentőségű, de mindig valamilyen leszűkített ismeretterületre, konkrét adattípusra fókuszáltan működő szemantikai modult illesztett a keresőjébe, de a nagy áttörés még mindig várat magára. A nagy áttörés az lenne, ha a Google egyszer csak szemantikai keresővé válna, de a folyamatosan termelődő mennyiségi változások láthatóan még nem érték el a minőségi váltáshoz szükséges mértéket.

A kezdeti időkhöz képest már elég régóta egyre több kérdés esetében más és más szolgáltatást nyújt a Google találati oldala a felhasználók számára, aminek oka az, hogy a Google keresőfelületébe folyamatosan építenek be szemantikus képességre támaszkodó új és új funkcionalitást. Már a kezdetektől fogva működött a kereső számológépként, devizaárfolyamok átváltójaként, irányítószámok keresőjeként, és idővel egyre több tudásterületet kezeltek kicsit másként, mint a többit általában. 

Egyre többször kapunk olyan találati oldalt, amikor az oldal tetején nem a kapcsolódó weboldalak felsorolását láthatjuk (tehát egy dokumentumcím-halmazt), hanem a feltett kérdéssel kapcsolatban releváns – egyedi – információt (most tekintsünk el a reklám- és relevanciakezelési szempontok miatt alkalmazott oldalátalakításoktól – mert azok miatt is sok változás történt).

Meggyőző példaként hivatkozhatunk arra a megoldásra, hogy amikor beírjuk keresőfeltételként a ’Az arany ember írója’ „kérdést”, akkor az oldal tetején a konkrét kérdésre adott konkrét választ kapjuk (nyilván a jelenre aktualizálva a választ) – majd ezt követi sok minden más, és csak azután jön a hosszú lista azokról az oldalakról, amelyekben szerepel a keresett kifejezés.

A látványos részsikerek ellenére a mondatok belső szerkezetének, a szavak, kifejezések jelentésének felismerése, megértése, azaz a gépek szemantikai képességének kifejlesztése még továbbra is létező kihívás maradt. Időközben azonban megjelentek, majd beértek más célokra alkalmazott, másfajta technológiák, amelyek – részben vagy teljesen – átalakították, átalakítják a gépek nyelvi képességeivel kapcsolatos nézeteinket.

Gépi beszélgetés szövegkorpusz alapján

A mélytanuló algoritmusokon alapuló mesterséges intelligencia (MI) fejlesztések egészen másfajta logikát követtek a keresőgépekhez képest, és ezek a fejlesztések a 2020-as évekre elképesztő és bámulatosan gyors sikereket értek el. Az LLM-alapú (Large Language Model elven működő) új technológiák – néhány, de nagyon fontos szempontból – az emberi diskurzus minőségére emelték fel a gépek beszédképességeit. A ChatGPT-vel úgy lehet kommunikálni, ahogy azt az emberek egymás között teszik. Pont úgy – és sok szempontból pont ugyanolyan minőségben – lehet diskurzust folytatni a géppel, mint ahogy egymással beszélgetünk. Kérdéseket teszünk fel, és szabályos – szintaktikailag és szemantikailag egyaránt jól-formált – mondatokat kapunk válaszul. Ilyen átütő és robbanásszerű változást régen (és kevésszer) tapasztalhatunk a digitális világ kezdete óta.

Mit tud az MI-n alapuló beszélőgép? Beszélni – ahogy eddig csak mi, emberek tudtunk. Mi áll a technika hátterében? Sokféle algoritmus, sok-sok számítás és rengeteg szöveg. Az algoritmusokkal, a számítási kapacitásigényekkel, a szolgáltatás mélyében levő technikai infrastruktúra kérdéseivel eddig sem foglalkoztunk, most is hanyagolhatjuk ezeket. Ezek nyilván rendkívül fontosak a rendszerszerű működés biztosításához, de az itt elemzett folyamatok összehasonlításához, az értelmezési keret kialakításához és a végső értékelésekhez nem igazán szükségesek. 

A dolgokat leegyszerűsítve mondjuk azt, hogy ez a beszélőgép is ugyanazt a hatalmas szövegkorpuszt használja, mint a keresőgép, és mondjuk azt, hogy ez a „közös” szövegkorpusz nem más, mint korábban szétszórt módon keletkezett és tárolt, emberi szövegek összegyűjtött és digitálisan kezelt, hatalmas gyűjteménye. 

Ez a korpusz biztosítja a lehetőséget a keresőgép számára, hogy amikor a feltett kérdésre megkeresi a releváns (valamilyen egyezést biztosító) szöveghelyeket a teljes halmazban és találatként visszaadja azokat, az ember láthassa azt a kontextust, hogy a keresőkifejezése hogyan jelent meg a másvalaki által korábban rögzített dokumentumban. Ha a keresőgép jól – itt: technikai, szintaktikai értelemben helyesen – működik, akkor a gép által visszaadott válaszok (szöveghelyek) szemantikai értelemben vett helyessége már nem kérhető a gépen számon. Ha elolvassuk azt az oldalt, ahová átugrottunk a keresőgép által felkínált link mentén, és az ott talált információ nem megfelelő vagy nem elégséges számunkra, mindezért a gép nem tehető felelőssé, hiszen nem ő állította elő. Az persze a keresőgép egyik fontos szolgáltatása, hogy milyen relevanciakritériumok szerint rangsorolja a találati dokumentumokat, hiszen ez igenis befolyásolja azt, mit olvasunk el (és mit nem), de tartalmi szempontokra hivatkozva ekkor sem kérhetünk számon semmit a gépen az olvasható válaszok minőségével kapcsolatban. A keresőgép mindig megvédheti magát „rossz válasz” esetében azzal, hogy rámutat a szövegkorpusz valamelyik pontjára mondván, hogy ezt egy másik ember mondta (írta), tehát ő a felelős a válasz tartalmáért.

Más a helyzet a beszélgetőgép esetében! Bár ez a gép is ugyanazt a szövegkorpuszt használja, mint a keresőgép, de egészen másként teszi, egészen más célokat követ. Itt az a fő cél, hogy a beszélőgép mindig képes legyen válaszolni a feltett kérdésekre, és ehhez nem az kell, hogy bármit is visszaadjon vagy megmutasson abból a korpuszból, amire támaszkodik. A korpuszra azért (és csak azért) van szüksége, hogy minél megfelelőbb – természetes nyelvű mondatokba öntött – válaszokat adjon vissza a kérdezőnek. Ezt úgy képes megtenni, hogy a korpuszt arra használja, hogy előzetesen megtanulja belőle azt, hogy a különböző nyelvhasználati kontextusokban hogyan szoktak mondatokat formálni az emberek. Mindezt statisztikai alapon teszi – iszonyatos számítási kapacitást, időt igényelve. 

Fontos itt a kontextuskezelés szempontja. Az emberi nyelvi kommunikáció ugyanis rendkívül kontextusérzékeny, ami annyit jelent, hogy a nyelvi megnyilatkozásaink mindig adott kontextusban értelmezhetők, érthetők meg igazán, és az ugyanolyan vagy a nagyon hasonló megnyilatkozásaink (szavaink, kifejezéseink, mondataink) kontextusról kontextusra más és más jelentést hordozhatnak. Erre mondjuk azt, hogy a nyelvhasználatunk (a nyelvünk) rendkívül rugalmas. Sokáig ez volt az egyik legnagyobb akadálya a hatékony gépi nyelvi képesség kifejlesztésének. A beszélőgép azáltal tudta ezt a problémát megoldani, hogy szövegkorpuszában található szavakra, kifejezésekre, mondatokra, szövegkörnyezetekre, valamint az ezek között található statisztikai mintázatok megtalálását biztosító gépi számításokra támaszkodva képessé vált arra, hogy milliárdnyi nyelvhasználati kontextust beazonosítson, és megtanulja azt, hogy ezekben a kontextusokban milyen szavak, milyen kifejezések, milyen kérdésre adott válaszok, milyen kontextusokban milyen valószínűséggel fordulnak elő. Mivel a korpusza emberek által korábban rögzített szövegekből áll, mondhatjuk, hogy a gép megtanulja, hogy az emberek a saját nyelvi megnyilatkozásaik során milyen kontextusokban, milyen szavakat milyen valószínűséggel használnak egymás után. Kellő adat, kellő számítási kapacitás, kellő pénz és persze kellő mennyiségű és minőségű emberi intelligencia biztosítása után ez a kombináció egyszer csak működőképessé tud válni.

Hallucináció

Bár a beszélőgép ugyanúgy tud beszélgetni, mint az emberek egymással, mégsem mondhatjuk, hogy elérte az intelligencia szintjét. De miért nem? A beszélőgép nem referenciaként használja a korpuszát, hanem arra, hogy fogalmi szinten jól-formált diskurzusban tudjon részt venni. Tudja, hogy a kutya ugat, a macskának kölykei vannak, nem fiókái, a repülőgép repül, mégsem madár, a pingvin nem tud repülni, mégis madár stb. A mondatai szinte mindig jól-formáltak, a világról való tudása meggyőző. Az emberi tudás partikuláris, individuális, faktuális szintjén is sokszor jól szerepel, kiterjedt faktuális tudásbázissal rendelkezik. Ezen a szinten azonban könnyen tud hibázni. Hamar kiderült, hogy a beszélőgép sokszor hallucinál, vagyis ténybelileg nem megalapozott, téves válaszokat produkál. Ennek okainak kibontását itt nem végezzük el, még akkor sem, ha a beszélőgéppel szembeni talán legkomolyabb kritika pont erre a gyengeségre irányul. A gondolatmenetünk szempontjából viszont nem annyira lényeges ez a hiányosság.

Fordítás

Bár a hallucináció jelensége kételyeket ébreszthet bennünk, lehet arról is vitatkozni, vajon lehet-e ezen a téren érdemi javulást remélni, ha igen, hogyan, milyen mértékben, de azt nem igen érdemes vitatni, hogy a beszélőgép beszédképessége igen magas szintű. Ebből viszont következik még valami: erre a képeségére támaszkodva ennek a rendszernek nagyon jó fordítási képességei vannak a különböző nyelvek között. És nem csak két természetes nyelv közötti fordítás megy neki, de képes a természetes és formális nyelvek közti átváltásra is. Ez utóbbi képesség kiaknázása hatalmas potenciált rejt magában, ha ezt arra használjuk, hogy a beszélőgép fordítóként működjön a természetes nyelvek és egy adott formális nyelv, az SQL között.

Az SQL (Structured Query Language) az adatbázisok lekérdezőnyelve. Már a számítástechnika kezdetén kialakították azt a formális nyelvet, amelynek segítségével szabványosított módon lehet kinyerni az adatbázisokban tárolt információt. Kis leegyszerűsítéssel mondhatjuk, hogy ami tudás az emberek által adatbázisokba lett építve az elmúlt évtizedekben (közel ötven évben), az mind SQL-parancsok segítségével férhető hozzá. Bár ez a nyelv nem bonyolult, a laikusok nem képesek használni, és miatt az adatbázisokban tárolt információhoz való hozzáféréshez eddig szükségük volt szakemberek segítségére. Ez korlátokat jelentett mindazok számára, akiknek egyébként fontos lett volna/lenne e tudásvagyon – folyamatos – elérése, mindennapi használata. 

Ezen a ponton kínál új lehetőséget a beszélőgép. Mielőtt azonban ezt kibontanánk, hogyan is miért, látnunk kell azt, hogy mit jelent az adatbázis fogalma, és miért olyan fontos a tudásreprezentáció, tudáskezelés szempontjából.

Gépi keresés adatbázisban

Már a számítástechnika kezdetén elkezdtek adatbázisokat építeni a szakemberek, és ez tény már önmagában is figyelemreméltó, de az adatbázisok fontosságát még inkább jelzi az, mekkora pénzügyi értéket jelentenek a gazdaság egészében belül az adatbázisokat használó rendszerek, illetve milyen mennyiségű információt tárolunk ilyen formában. Az adatbázisok mennyiségi dominanciáját érzékeltethetjük egy látszólag más célokra bevezetett fogalompáros segítségével. A 2000-es évek elején bukkant fel a felszíni web és mélyweb (surface web, illetve deep web) fogalma, amit azóta sokféle értelemben és sokféle célra használnak. A felszíni web fogalmát úgy határozzák meg, hogy azon információk együttese, amelyek szabadon elérhetők a weben keresztül. A szabad elérés itt azt jelenti, hogy az emberek is és a gépek is elérhetik és elolvashatják az adott oldalon tárolt információt. Ezzel állítják szembe azokat a hálózaton keresztül elvileg, technikailag szabadon elérhető, a gyakorlatban mégis csak valahogyan korlátozott módon használható oldalakat és az ezeket együttesen leíró mélyháló fogalmát. Arra a kérdésre, hogy miért is nem lehet a mélyháló oldalait ugyanolyan módon korlátlanul, szabadon használni, mint a felszíni háló esetében, többféle válasz is adható. Egyfelől vannak oldalak (nem is kevés), amelyek elé technikai értelemben vett belépési korlátokat állítanak (mondjuk itt erre azt, hogy jelszóval védik az adott területet). Ezekben az esetekben technikai és jogi korlátok állnak a szabad használat előtt. De van egy másik hozzáférési korlát is, ami nem a technikai és jogi akadályok felállításával magyarázható, hanem azzal, hogy az egyébként szabadon elérhető webes adatbázisokban tárolt adatok használatához szükség van egyfelől az adatbázis belső szerkezetének ismeretére, másfelől az SQL-nyelv használatának a képességére. Ezt az akadályt nem tudják legyőzni sem a gépek, sem az emberek. A keresőmotorok, amikor ilyen oldalakhoz érnek, és szeretnék leszüretelni az ott található tartalmat, hogy azokat beépítsék a keresőszolgáltatásukba, nem tudják lekérdezni az adatbázis tartalmát, mert nem ismerik a sémainformációt. Ha tudnák, ugyanúgy tudnának adatot szüretelni, mint a felszíni hálón talált tartalmak esetében teszik. Az emberek pedig még inkább „tehetetlenek”, hiszen ők a sémainformációk birtokában sem tudnák a lekérdezőnyelvet használni arra, hogy adatokat nyerjenek ki az adatbázisokból, mivel nem tudják használni az SQL-lekérdezőnyelvet. Pedig a tét nem kicsi ezen a ponton. A szakértői becslések szerint összességében nagyságrendekkel több információt tárolunk az ilyen mélyháló oldalakon a felszíni háló teljes terjedelméhez képest.

Az adatbázisok nem csak fontosak, mert hihetetlen mennyiségű információt érhetünk el bennük, hanem azért is, mert ezek minőségüket tekintve valamiért jobbak, pontosabbak, egyértelműbbek, mint az egyszerű szöveges dokumentumok. Hogy érthető legyen, hogy ez miért van így, tudnunk kell azt, hogy mi az adatbázis lényege, minősége, mi a különbség az „egyszerű” szöveg és az adatbázis között.

Adatbázis

Amikor sokezer évvel ezelőtt a boltosok elkezdték papíron (agyagtáblán) vezetni a nyilvántartásukat, hogy tudják, milyen termékből mennyit adtak el naponta, technikai értelemben annyit tettek, hogy egy táblázatba beírtak szavakat, kifejezéseket, számokat. Nos, a nyelvi információ ilyen táblázatos elrendezése volt a mai adatbázisoknak megfelelő korabeli tudásreprezentációs forma. Másként mondva: már régóta tudjuk, hogy ha táblázatba írunk szöveget, annak lehetnek előnyei az egyszerű mondatok egymás után fűzéséhez képest. A táblázatban tárolt információt is olvashatjuk lineárisan, ugyanúgy, mint a leírt szöveget, csak alkalmazni kell néhány olyan nyelvtani szabályt, amelyek a mondatok jól-formáltságához szükségesek, viszont a táblázatos forma ezt nem igényli. A táblázatot azonban nem csak egy irányban rendezzük el (mint a szöveget), de a táblázat elemeinek oszlopokba rendezésére is figyelünk. Ezért aztán a táblázatot lehet függőlegesen és olvasni, értékelni (ezt teszi a boltos akkor, amikor a nyilvántartásában az adott napon eladott termékek darabszámát és árát soronként beírja, majd a nap végén ezeket az értékeket összeadja, hogy a napi forgalmat, bevételt megtudja). A táblázatos formátumnak a két dimenzióban való elrendezés a lényege. Mondhatjuk erre, hogy a táblázat strukturált szöveg.

Rövid nyelvelméleti kitérő

Ezen a ponton egy alaposabb tárgyalás során mindenképpen beszélni kellene az ember nyelvi képességeinek egy eddig még nem tárgyalt típusáról, amihez Ferdinand de Saussure elmélete nyújthatna segítséget. Az elmélet alapján meg lehet magyarázni, miért és hogyan tudunk strukturált szöveget létrehozni. Itt elegendő csak annyit felidézni Saussure elméletéből, hogy mivel a nyelvhasználat kétfajta képességet kíván meg az embertől, a kommunikációs tevékenységünket két dimenzióban kell megragadnunk, értelmeznünk. 

Az első nyelvi képességünk az, amikor a megnyilatkozásaink során lineáris sorba fűzzük a szavainkat, hogy – jelentéssel rendelkező – mondatokat képezzünk velük. Ez a morfoszintaktikai dimenzióban értelmezhető, és a kérdés itt az, hogy milyen módon képezhetjük a jól-formált mondatainkat. Ez az elsődleges szintje a nyelvi képességünknek, ahol azonnal látható/hallható eredmény jön létre. Ezen a szinten (ezen képesség birtokában) jönnek létre a mondataink, majd ezek összefűzéséből jönnek létre a – hallható – beszédeink vagy – olvasható – írott, szöveges dokumentumaink.

Saussure azonban felismerte, hogy van egy olyan nyelvi képességünk is, hogy amikor a mondatainkat megkomponáljuk, egy másik dimenzióban figyelünk arra is, hogy a morfoszintaktikai formákba, mintázatokba (mondatsémákba) milyen szabályok szerint illeszthetünk be aktuális szavakat. Ez a képesség egyfajta klasszifikációs (szemantikai, ontológiai) tudásnak mondható, ami a világról való tudásunk alapján működik. Amikor mondatokat képzünk bizonyos szavak használatát megengedi vagy megtiltja egy adott mondattípus (mondatséma) adott helyén. Ez a tudásunk – normál körülmények között – nem jelenik meg sem az akusztikus, sem a vizuális térben, de ettől még használjuk. Saussure asszociatív dimenziónak nevezte ezt el, a követői ma már inkább a paradigmatikus dimenzió fogalmát használják ugyanerre. Amikor táblázatba írunk valamit, akkor az oszlopokba rendezés során (a függőleges dimenzióban) ezt a képességünket vesszük igénybe.

Az adatbázis (táblázat) használata tehát annyit jelent, hogy a világról szóló állításainkat (tudásunkat) úgy rögzítjük (reprezentáljuk), hogy az állításokon belül elkülönítjük egymástól a jelentéssel rendelkező összetevőket (szavakat, kifejezéseket). Ha így teszünk, akkor az állításaink komponenseit külön is képesek vagyunk kezelni (meghivatkozni, keresni, számolni stb.). A nyelvi üzenet ilyen módon való megformálása sokkal egyértelműbbé, pontosabbá teszi az állításaink tartalmát – a szabad szövegben kifejezett állításokhoz képest. A strukturáltságból fakadó egyértelműség miatt az így kifejezett mondatokkal sokkal többet kezdhetünk, többféle műveletet végezhetünk el, többet hozhatunk ki ugyanabból a mondathalmazból. Ez a minőségi többlet adja az adatbázisok előnyét, erejét.

Az adatbázisok tehát adatgazdagabbak a szöveghez képest, többet adnak nekünk, de ennek ára van. Ez a többlet abból adódik, hogy az adatbázisok felépítésébe nagyon sok – rendezési műveletekből álló – munkát kell beletenni, és sokszor igencsak nagy ez a bekerülési érték. Szerencsére sokan vállalták, vállalják ezt a munkát, sok adatbázis épült a múltban, épül a jelenben.

És ezen a ponton visszatérhetünk az eredeti gondolatmenetünkhöz.

Text2SQL

Ott tartottunk, hogy

  • egyfelől van egy olyan beszélőgépünk, amely nagyon jól tud természetes nyelven beszélni, elég jól fordít a természetes nyelvek, illetve a természetes és – bizonyos – formális nyelvek között, viszont faktuálisan nem megbízható, sokszor hallucinál,
  • másfelől vannak adatbázisaink, amelyek a tudást strukturált módon rendezik el, és ezáltal biztosítják, hogy az így elérhető tudás megbízható, pontos, sokféleképpen kereshető, újrarendezhető, számolható legyen.

Ahogy azt már jeleztük, ez a kétféle képesség úgy kapcsolható össze, hogy a beszélgépet „csak” arra használjuk, hogy az SQL-laikusok által feltett természetes nyelvű kérdéseket átfordítsák SQL-nyelvű parancsokra, amit el lehet küldeni az adatbázis felé, és az onnan kapott – táblaszerű –válaszokat vissza lehet fordítani szabad szöveggé. Ebben az esetben nem fenyeget minket a hallucináció veszélye, mert a válaszokat nem a beszélgéptől, hanem az adatbázisoktól várjuk, a beszélőgép csak tolmácsszerepet tölt bel. Ehhez persze szükség van még az adatbázisok szerkezetét leíró metaadatokra, a sémainformációkra, és persze rá kell hangolni a beszélőgépet erre a speciális fordítási feladatra. Ez azonban megvalósíthatónak látszik.

Az adatbázis fenntartója számára fontos szempont lehet, hogy a sémainformációt nem kell nyilvánosan kiadni, a szolgáltatáshoz elegendő az, ha a beszélőgépnek megmutatjuk, megtanítjuk. Ha a gép ismeri az adatbázis szerkezetét (táblákat, a táblák mezőit, típusait, a táblák közti kapcsolatokat stb.), akkor már tudja, hogy hogyan kell majd megfogalmaznia a lekérdezéseket, hogy kinyerje a kívánt adatokat az adatbázisból. Ehhez természetesen hozzáféréssel kell rendelkeznie, de ez megoldható. Lehet, hogy a beszélőgép ma még nem tud minden lekérdezést úgy összeállítani, ahogyan azt egy szakértő tenné, de ezt a képességét biztosan magas szintre tudja hozni majd a közeljövőben (az egyszerűbb parancsokat már most is jól előállítja).