Deduktívne a znalostné systémy


Úvodné motivácie

V informačných systémoch sa pomerne ťažko reprezentuje ľudská reč. Jednak kvôli nejednoznačným či viac zmyselným spojeniam, ktoré my ľudia pomerne často a radi používame, ale aj kvôli individualite každého jedinca a jeho subjektívnemu pohľadu na svet. Obzvlášť tento problém je zaujímavý a síce preto, že k tomu istému systému zvyčajne pristupujú rôzny ľudia, vďaka Internetu to môžu byť aj ľudia z úplne rozdielnych častí sveta. Univerzálny systém sa ku všetkým správa rovnako, ale nie vždy vystihne požiadavky všetkých užívateľov, resp. odpoveď na tú istú otázku jedného uspokojí, inému sa vôbec nemusí páčiť. Každý však "dotazuje" systém s očakávaním, že dostane práve tú odpoveď ktorá mu najviac vyhovuje... .

Vďačným príkladom takýchto systémov sú Internetové vyhľadávače. Napr. chceme nájsť hotel, ktorý je blízko centra, je lacný a podávajú v ňom raňajky. Vyhľadávač sa sa na chvíľu "zamyslí" a potom obyčajne vypľuje zo desať hotelov, z ktorých ale pravdepodobne ani jeden nebude vyhovovať naším požiadavkám (myslím, že v praxi sú tieto požiadavky dosť ťažko splniteľné). Problém je v tom, že vyhľadávač, nech je akokoľvek dokonalý, nevie čo pre mňa znamená "blízko" a už vôbec netuší čo si predstavujem ako "lacný" hotel.

Koľko je to blízko? 200 metrov? 500 metrov? Je 700 metrov už ďaleko? Drahý si nemôžem dovoliť, ale zase ani príliš "lacný" by nemal byť (veľmi lacný nemusí znamenať dobrý). Čo teda pre mňa znamená lacný? Ak som ochotný zaplatiť za nocľah 1000Sk, znamená to že 1100Sk je "drahý"? Klasické porovnávanie "...WHERE cena<1000" nevystihuje skutočnosť. Je to logická nepresnosť pretože ja neviem vopred presne povedať čo znamená "lacný", resp. "blízko".

Ďalším problém je ako vyjadriť podobnosť (napr. synonymá, homonymá)? Napríklad predstavme si že ten náš hotel hľadáme v Londýne. V akom jazyku zadať lokalitu? Asi nejaká intuícia napovie, že v angličtine, ale čo ak nejaký Slovák má v Londýne svoj hotel a jeho adresu eviduje aj vo svojom rodnom jazyku, teda uvedie "Londýn". My sa zaujímame aj o tento hotel! Ak budeme vyhľadávať v anglickom aj v slovenskom jazyku, natrafíme na ten istý hotel dvakrát (na prvý pohľad sa možno nedá rozoznať, že ide o ten istý hotel).


Meno Cena Adresa
hotel 1000 London
hotel1 900 London
hotel2 1055 London
... ... ...
Adresa1 Adresa2 Vzdialenosť
Londýn Košice 1000
... ... ...
... ... ...
... ... ...


Chceme "joinovať" tieto tabuľky cez stĺpce "Adresa" a "Adresa1"...ako? Významovo je obsah príslušných hodnôt rovnaký.

Podobné problémy sa riešia použitím viachodnotovej logiky. Tá síce zlepší "flexibilitu" dotazovania, ale zároveň zhorší zložitosť. Výhoda použitia viachodnotovej logiky spočíva v tom, že ja nemusím striktne povedať "...toto ešte akceptujem ale toto nie..." ale mám možnosť povedať čo mi ako vyhovuje. Teda viac mi bude vyhovovať hotel za 1000Sk ako hotel za 1100Sk, ale to ešte neznamená, že ten za 1100Sk vylučujem úplne (čo keď je bližšie, či tam som spal minule a poznám to...). V praxi to vyzerá asi tak, že jednotlivým záznamom priradím hodnoty z intervalu [0,1] (nie len 0 alebo 1 ako v jednohodnotovej logike). Pri spájaní jednotlivých vlastností použijem agregačné koeficienty, kde zohľadním na ktorej vlastnosti mi záleží viac resp. menej (napr. ak som už postarší, zrejme radšej zaplatím viac, len aby som to mal bližšie...a pod.). Takto dostanem pre každú odpoveď hodnotu, ktorá vlastne zodpovedá tomu do akej miery mi tá odpoveď vyhovuje.