marți, 18 noiembrie 2008

Agenti Inteligenti in Internet (1)

Web-ul Semantic

Cu totii ne-am dori sa existe roboti care sa caute in Internet raspunsuri la intrebarile noastre. Sa presupunem ca vreti sa aflati cine este autorul fotografiei zilei de pe National Geographic. Nu ar fi deloc greu. Ati putea afla acest lucru in doar cateva secunde. Ati introduce adresa http://photography.nationalgeographic.com/photography/photo-of-the-day in browser si ati citi, imediat sub imagine, numele fotografului.

Cum am putea scrie un program care sa raspunda la aceeasi intrebare? Nu ar fi la fel de usor. In primul rand, acesta va trebui sa gaseasca adresa paginii pe care se afla fotografia si apoi sa inspecteze continutul sursei. Mai departe, lucrurile se complica. Programul trebuie sa fie capabil sa inteleaga limbajul natural, cautand cuvinte care ar putea sa se refere la autorul fotografiei ("author", "photographer", "photograph by"). Mai mult, repetarea unor astfel de cuvinte cheie in sursa paginii ar complica si mai mult sarcina agentului.

Astfel de programe sunt greu de scris, Web-ul fiind gandit pentru utilizarea lui de catre om, si nu de catre masini.

Ca in majoritatea task-urilor din programare, problema se poate simplifica foarte mult prin utilizarea unor structuri de date potrivite. Daca, in afara textului propriu-zis, site-urile ar avea specificatii formale referitoare la continut, astfel de probleme ar deveni triviale.

Ar fi extrem de usor de extras automat informatia dintr-un XML care ar arata cam asa:

<site name="National Geographic">
<page name="Photo Of The Day">
...
<photographer>John Stanmeyer</photographer>
...
</page>
</site>

Mai mult, daca toate site-urile care au o sectiune "Photo Of The Day" ar avea un XML similar, programul ar putea cauta raspunsul la aceeasi intrebare pentru toate acestea.

Web-ul Semantic ar putea fi noul context ce ar face aceste lucruri posibile.


Reprezentarea Cunostintelor si Motoare de Inferenta

O aplicatie din inteligenta artificiala are la baza doua concepte: reprezentarea cunostintelor si motorul de inferenta. Primul descrie semantica folosita pentru descrierea cunostintelor din domeniul aplicatiei, iar cel de-al doilea utilizeaza aceste cunostinte pentru a raspunde la intrebari. Cu cat reprezentarea cunostintelor este mai clara si mai consistenta si motorul de inferenta devine din ce in ce mai simplu.
Web-ul semantic isi propune standardizarea intr-un mod flexibil si extensibil a reprezentarii informatiei in Internet. Acest lucru deschide orizontul unei noi generatii de aplicatii Web.

Tehnologii folosite in Web-ul semantic

XML-ul este tehnologia de baza. Acesta permite adnotarea documentelor stocate electronic, fiind totodata extensibil (spre deosebire de HTML).

RDF-ul (Resource Description Framework) foloseste o metoda traditionala de reprezentare a cunostintelor: tripletele obiect-atribut-valoare. De exemplu:
automobil:culoare:verde
automobil:roti:4
Se foloseste mai des descrierea tripletelor ca fiind: subiect-predicat-obiect (in exemplu automobilul este subiectul, culoarea este predicatul, iar verde este obiectul).
De exemplu, o descriere in RDF a paginii de pe National Geographic ar fi:
<rdf:Description rdf:ID="National Geographic Photo Of The Day">
<photo:title>Drying Mud</photo:title>
<photo:location>Sidoarjo, East Java, Indonesia</photo:location>
<photo:author>John Stanmeyer</photo:author>
</rdf:Description>

Pentru standardizarea predicatelor folosite in documetele RDF, exista tehnologia RDF Schema. Aceste documente (RDFS) definesc limbajul de reprezentare a cunostintelor in RDF.
Un astfel de set de definitii este The Dublin Core.

Ceea ce nu se poate descrie direct prin RDF, relationarea intre predicate, poate fi realizat folosind OWL (Web Ontology Language).

Conceptele care stau la baza RDF si OWL vin din domeniul logicii. Sunt evidente asemanarile dintre relatiile si predicatele discutate mai sus si principiile de la care au plecat bazele de date relationale, respectiv limbajele de programare logica. Astfel RDF si OWL pot fi tehnologiile care sa "lipeasca" informatiile de pe site-uri cu baze de date si limbaje de programare logica folosite pentru crearea agentilor inteligenti pentru Web.

OWL face posibile inferentele bazate pe asocieri reprezentate in modele prin relationare. Exista motoare de inferenta ce pot opera cu tehnologiile web-ului semantic descrise mai sus, printre care:
Jena Reasoner - framework open-source Java dezvoltat de cei de la HP Labs
Jess - scris la Carnegie Melon University, face posibila dezvoltarea de software Java care sa poata rationa utilizand cunostinte reprezentate prin reguli declarative
SWI-Prolog Semantic Web Library - limbaj Prolog care permite dezvoltarea aplicatiilor cu OWL si RDF, cat si un sistem pentru rationare
FaCT++ - reimplementare FaCT care suporta OWL.

Mai multe despre aceste unelte, incepand cu postul urmator.

Niciun comentariu: