Visualizzazione post con etichetta Wordnet. Mostra tutti i post
Visualizzazione post con etichetta Wordnet. Mostra tutti i post

mercoledì 9 maggio 2007

Reti di parole su CD



Oggi vi parlerò di CD.
No, non di musica. Nemmeno del supporto di memorizzazione: sono un informatico ma non devo parlare continuamente di tracciati record e simili.

CD sta per Conceptual Dependency ed è una delle tecnologie dell'Intelligenza Artificiale alla base della comprensione del linguaggio (NLP = Natural Language Processing).

Hey, ma dove andate? Se rimanete vi parlo anche di Wordnet. Fermi...

E adesso? Scrivo lo stesso, anche se sono rimasto solo?
Ma sì, dai, tanto prima o poi qualcuno arriva per sbaglio e legge anche questo.

Anche se stavolta sarò noiosissimo, così imparate a non stare qui ad interagire con me, per mantenermi su binari ragionevoli.

E non vi chiederete più perchè c'è voluto così tanto tempo dall'ultimo post.



Tu prova ad avere un mondo nel cuore
e non riesci ad esprimerlo con le parole
[...]
E sì, anche tu andresti a cercare
le parole sicure per farti ascoltare:
per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria,
[...]
[Il matto - De Andrè - Da Non al denaro, non all'amore, nè al cielo]



Alla fine degli anni '60, più o meno quando io stavo nascendo, Roger C. Schank e suoi collaboratori della Stanford University iniziarono a pubblicare i loro lavori riguardo alla Conceptual Dependency (CD), sostanzialmente mostrando come si poteva costruire un parser per il linguaggio naturale, in grado di elaborare frasi fornite in input, disambiguandone i concetti e generando una rappresentazione del significato, utilizzando una grammatica che mettesse in evidenza la semantica.

Schank partiva dal concetto che si potesse analizzare il modo di comprendere tipico degli esseri umani per trovare algoritmi e rappresentazioni indipendenti dal linguaggio per la comprensione dei computer.
CD come analogia di rappresentazione mentale.

Uno dei vantaggi di un approccio simile è che una stessa rappresentazione può anche riassumere diverse rappresentazioni sintattiche (in italiano: frasi diverse con lo stesso significato avrebbero la stessa rappresentazione), con ovvie conseguenze nella semplificazione dell'elaborazione dei concetti espressi e, più in generale, per operare delle inferenze.

Tra l'altro, una volta ottenuta una rappresentazione non ambigua e semantica di una frase o di un testo più complesso ci si trova nella posizione giusta per poter ottenere anche una parafrasi della frase stessa, eventuali riassunti e anche per cercare di operare traduzioni in altre lingue. O, al contrario, sarebbe possibile partire dai concetti, per generare storie.

La potenza dell'approccio proposto è stata mostrata attraverso parecchie applicazioni, negli anni seguenti, ma, nonostante siano passati quasi 40 anni non troverete molti traduttori commerciali basati su questa tecnologia.

Troverete, invece, tecnologie ancora precedenti, decisamente più semplici (per esempio basate sulla frequenza di comparsa delle parole nelle frasi), ma significativamente potenziate dall'attuale potenza di calcolo.

Ma se la CD potrebbe permettere di ottenere risultati decisamente superiori a quella della maggior parte dei più comuni traduttori automatici, che non hanno la pretesa di capire alcunchè, come mai questa tecnologia non si è diffusa nei prodotti commerciali?
Essenzialmente perchè implica la presenza di una notevole base di conoscenza che sia in grado di definire, data una parola, una serie di attese sulle parole precedenti e quelle seguenti, di cancellare tali pretese quando non si trovano corrispondenze e di confermarle nel caso siano logicamente coerenti con il resto della frase o del testo.

Per fare un veloce esempio di parte della conoscenza necessaria, consideriamo la seguente frase (presa da uno degli articoli e volutamente semplice e semplificata: tenete presente che la CD si applica anche a frasi complesse con coordinate e subordinate - diverse fonti su Internet vi permetteranno di ottenere approfondimenti e introduzioni riguardo alle primitive della CD ed esistono anche esempi di come venivano memorizzate in lisp le strutture dati nei primi programmi alla base della CD):
Il grande uomo ruba il libro rosso alla ragazza

  • Il: può servire per connettere frasi, per esempio potrebbe essere che la prarola cui si riferisce trovi una corrispondenza in una frase precedente

  • grande: si riferisce ad un concetto che potrebbe necessitare di ulteriori approfondimenti concettuali (come aggettivo, potrebbe presupporre l'esistenza di un sostantivo seguente - situazione che, di fatto, viene confermata dalla continuazione della frase)

  • uomo: può esistere da solo e viene completato dalle parole precedenti, quindi è possibile costruire un aggregato basato su questo termine

  • ruba: individua una azione e ha bisogno di un soggetto e di un complemento. Legandola al concetto precedente (possibile perchè sul piano grammaticale concorda), permette di costruire una proposizione riguardo ad un attore: esiste una dipendenza bidirezionale tra 'ruba' e 'uomo', che stanno sullo stesso piano (almeno, questo è quanto dice Schank nei primi articoli, ma ne riparliamo)

  • il-libro-rosso: senza ripercorrere le singole parole, devono esistere regole sintattiche, grammaticali ed attese semantiche che permettano di legarli per creare un concetto, secondo quanto visto prima e una attesa generata dal verbo 'ruba' prevede che ci sia un oggetto da rubare e questo concetto è coerente con questa attesa

  • alla-ragazza: qui si trova un ulteriore tipo di relazione, che non staremo qui a dettagliare, ma che lega questi termini al libro rosso, attraverso attese generate sempre dal verbo rubare (si ruba qualcosa a qualcuno)

Fino a questo punto le competenze sembrano essere, come sopra indicato, grammaticali, sintattiche e, solo parzialmente, semantiche.
Una analisi ulteriore della stessa frase, e da un approfondimento dell'algoritmo alla base del parser (come, per esempio, in uno dei primi articoli, ma, meglio, in "Inside Computer Understanding: Five Programs Plus Miniatures" - Roger C. Schank e Christopher K. Riesbeck - 1981) si vede che, almeno per questa
frase, il tutto si potrebbe anche ridurre ad una sorta di analisi logica, basata su posizioni relative delle parole e preposizioni più o meno articolate. Almeno nel contesto ridotto su cui Schank lavorava ai tempi (poche centinaia di parole).

E, comunque, ricordatemi di proporvi di realizzare un programma in grado di elaborare una analisi logica, alla fine di questo post...

La semantica, al di là dell'ultra-semplificato-esempio-sopra-riportato, è necessaria per identificare stranezze nella frase:
La casa volava da Milano a Roma

rispetto a
L'aereo volava da Milano a Roma

E i programmi di Schank potevano anche notare queste stranezze e operare ulteriori inferenze.

Ma la CD è solo la partenza, solo il substrato: per disambiguare servono anche altri concetti, serve una conoscenza del mondo e della sequenzialità delle operazioni standard (script, per Schank - es: se il Depa va al ristorante, ordina una bistecca, più tardi paga ed esce soddisfatto, come fate a sapere che ha mangiato la
bistecca, dal momento che non ve l'ho detto? Perchè avete delle attese sui comportamenti e sulla sequenzialità degli stessi, in situazioni standard) che ci si attendono in certi ambiti, una conoscenza degli obiettivi (goal) e una identificazione dei piani per raggiungere tali obiettivi, etc. etc.

Serve un po' di senso comune, insomma. Tutt'altro che banale, visto che ne sembra spesso sprovvista anche la maggior parte degli umani.

Uno dei limiti degli approcci di Schank, ai tempi, era la dimensione della base dati (certamente dettata dalle ridotte capacità elaborative di 40 anni fa, ma anche dalla mancanza quasi totale di progetti volti a generare simili tipologie di informazioni).
E' estremamente dispendioso codificare tutta la competenza necessaria per una comprensione soddisfacente, ma certo potrebbe già essere utile riuscire a gestire un primo livello di relazioni tra le parole, adatto per evitare di cadere in traduzioni automatiche orrende come quelle in cui si incorrerebbe passando questo testo sotto il filtro di Babelfish o compagnia bella.

Basterebbe una rete semantica, che gestisca le principali relazioni tra le parole, senza necessità di scendere al livello della fisica quantistica. Per esempio, il cane è un animale è una relazione tra un iponimo (cane) ed un iperonimo (animale). Una relazione IS-A o, in termini più comprensibili per chiunque sappia vagamente programmare, si potrebbe dire che 'cane' eredita da 'animale'. (O ne implementa l'interfaccia, che sarebbe meglio, per evitare il fragile base class problem e simili). E le parole sono correlate tra loro
anche in altri modi (sinonimi, meronimi, etc. etc.).

Particolarmente interessante è la sinonimia, che deve essere considerata nella sua accezione semantica corretta.

Per es., il lemma prova può significare:
- evidenza, riscontro
- test, esame
- concorso
- compito
- cimento, impresa
- assaggio
etc. etc.

Notiamo che ho usato dei sinonimi (scelti a caso, senza pretesa di completezza e correttezza) per illustrare, almeno con una prima approssimazione, i diversi significati, le possibili semantiche della parola presa in considerazione. Il che ci porta a pensare che i sinonimi siano un buon punto di partenza per poi disambiguare.

Questi stessi sinonimi, se messi uno di fila all'altro (come fa Sinonimi Master, forse il più completo ed utilizzabile insieme di sinonimi italiani che mi è capitato di trovare su Internet), sarebbero stati molto meno utili.
Li ho, invece, raggruppati in insiemi di sinonimi (cui dovremmo aggiungere il lemma di partenza), non a caso: si parla di synset (contrazione di synonyms set) e questo concetto è alla base di reti semantiche come Wordnet.

Quest'ultimo sì, è sicuramente free e di elevatissimo livello.
Sarebbe bello averne uno anche per l'italiano e per altre lingue, certo sarebbe ancora meglio se fosse possibile averlo già in relazione con la versione inglese.

Beh, la buona notizia è che ce ne sono almeno 2: EuroWordNet e MultiWordNet (dovesse interessarvi un semplice confronto tra le due...). La cattiva è che non sono free, neppure per scopi personali, nè Open Source.

Ora, sarebbe interessante continuare, parlando di:
- come CD e (Euro)WordNet possano convergere verso un sistema che possa, almeno, cercare di fare una prima analisi dei testi, con migliori speranze di prenderci rispetto alla maggior parte dei sistemi di larga diffusione
- come alcuni abbiano già fatto qualcosa di simile, se non altro in ambito più ristretto (che so: vi siete resi conto che una grande parte della Knowledge Base di Microsoft in italiano risulta tradotta automaticamente? Il risultato non è malissimo - non perfetto, ma non male - e si basa su concetti simili a quelli indicati, almeno per la costruzione di MindNet una rete semantica simile a Wordnet, ottenuta, tra l'altro, automaticamente, attraverso parsing di vocabolari ed enciclopedie elettroniche)
- come sia possibile cercare di costruire una simile rete semantica, in modo pseudo-automatico
- come non sia così facile mettere in relazione diretta i synset di linguaggi differenti (per esempio, a causa dei gap lessicali)

Sarebbe interessante, ma mi avete lasciato solo.
Volete conoscere l'assassino? Gli accessi a questo articolo devono essere tanti e differenziati...

Bye
    Depa

[... continua ...] Leggi tutto

giovedì 22 marzo 2007

Quando meno te l'aspetti


Sono stato un po' impegnato, ultimamente, vi ho lasciati senza post per un bel tocco di giorni.

Per evitare che disdiciate l'abbonamento, eccomi, sono tornato.
Ma il titolo non si riferisce a questo, ovviamente.

No, si riferisce alle nuove frontiere dell'HTML, quelle che ci faranno arrivare là, dove nessun uomo è giunto prima.

E anche meno.
Più, più, volevo dire più, voi non sbagliate mai?



Sei pronto?
Io sono nato pronto
Jack Burton - Grosso guaio a Chinatown - 1986
(a sua parziale discolpa, non poteva sapere del WWW)

E voi, siete pronti a cambiare le impostazioni delle vostre applicazioni?

Non sono un Web Designer, ma un architetto software, però è evidente che eventuali modifiche all'HTML interessino un po' tutti, soprattutto se possono cambiare il modo di realizzare le applicazioni e di progettare l'interazione, da un lato con l'utente, dall'altro con gli altri layer del sistema informatico.

In questo post parleremo brevemente (trovate anche voi che la mia interpretazione di questo avverbio sia piuttosto artistica ed elastica?) di cosa si prospetta nel breve (e dai...) periodo.

Come saprete certamente, è dalla vigilia di Natale del 1999 che questo linguaggio non varia di un bit o quasi.
Siamo, da allora, alla versione 4.01. Se avessimo continuato con la velocità con cui si è arrivati a questa quarta versione, oggi potremmo essere quasi alla settima o alla ottava (non conta il fatto che Tim Barners-Lee lo avesse già definito negli anni '80: era rimasto tale e quale fino al 1994, anno in cui è iniziato il WWW con l'uscita di Mosaic, è da lì che bisogna contare).

Invece, (giustamente, perchè non se ne poteva più), il Web decise di prendersi una pausa.

Le evoluzioni erano state guidate più dai singoli produttori di browser che dal W3C, che oggi sarebbe (il condizionale non è un errore) il detentore dello standard.

Di fatto, sono sempre i produttori che si sono pian piano fermati, che hanno smesso di aggiungere tag per farsi dispetto, continuando, al più, con qualche schermaglia sulle varianti di Javascript (per tacer delle vicende legate a Microsoft/SUN e strati inferiori della Java Virtual Machine, ovviamente), fino ai recenti ulteriori adeguamenti in termini di funzionamento di div da una parte e di client http embedded (XMLHTTP*) dall'altra (per le chiamate asincrone di AJAX, per capirsi).

Sembrava quasi tutto calmo, ma poi, da un Safari, nel 2004, è stato tirato un sasso.
Forse sarebbe passato più inosservato, se non fosse stato raccolto da Firefox 1.5, a fine novembre 2005 (per i disattenti ricordo che siamo alla 2.0 e attendiamo la 3, che dovrebbe avere pure un nuovo motore grafico).

Non subito evidenziato (se seguite il link, noterete che non se ne parlava neppure, nel rilascio di Firefox) ci è voluto qualche mesetto perchè qualcuno iniziasse ad utilizzare una parte del proiettile, il tag <canvas>.

Canvas vuol dire tela ed è il nome standard, in quasi qualsiasi linguaggio io conosca, per indicare gli oggetti su cui si può disegnare.
Infatti, sul canvas sono possibili una serie di operazioni, più o meno complesse, dal disegno di semplici forme, all'import di immagini, a trasformazioni varie, fino all'animazione, come visibile dal tutorial di Mozilla. Client light, solo html e javascript. Bello.

Di per sè non sarebbe neppure così rivoluzionario (si poteva usare Java o Flash per gli stessi scopi - vero, non saremmo alla moda, oggi ci vuole AJAX), ma l'aspetto più interessante è che il tag su citato non è solo, ma è parte delle specifiche del nuovo HTML5, nome in codice di Web Application 1.0, del WHATWG.

WHAT che? Chi sono questi signori? Loro dicono:

It is a loose unofficial collaboration of Web browser manufacturers and interested parties who wish to develop new technologies designed to allow authors to write and deploy Applications over the World Wide Web.

Per voi che mi seguite perchè questi post sono in italiano e non capite l'inglese, provo a tradurre, a senso:

Eravamo al bar e così, per caso, ci siamo incontrati e, senza neppure chiederci chi potessero essere quelli seduti al tavolo con noi e quasi senza accorgercene e, comunque, senza impegno, abbiamo deciso di aiutare tutto il WWW a crescere meglio

Cercando su Internet i nomi dei membri (rappresentanti dei produttori di browser), troviamo 4 esponenti di spicco (tra cui il CTO) di Mozilla, 2 (tra cui il CTO) di Opera, uno degli architetti di Safari, precedentemente in Netscape e co-autore di Firefox, uno sviluppatore di librerie per Javascript di IE7 (non di Microsoft, almeno per quanto ne so, ma un guru di Javascript piuttosto noto); ce ne sarebbe un'altro, ma non sono riuscito a trovare informazioni utili, partendo dal solo nome (se le scovate, fatemi sapere).

Come vedete, è esclusa Microsoft che, come percentuale di utenti di browser non è proprio trascurabile.
Non stupisce, quindi, che il tag <canvas> manchi in IE7 e che sia necessario aggirare il problema (librerie varie, tra cui quelle che sta scrivendo Google - seguite il link di Sourceforge, non il tab di download -, essenzialmente basate sulle capacità già presenti in IE - estensioni downloadabili a parte - di interpretare il VML - Vector Markup Language).

Ma torniamo al punto fondamentale: come mai l'html evolve senza W3C? La domanda è, almeno in parte, errata.

Sicuramente il tentativo del WATHWG è quello di forzare la mano e di prendere il controllo di parte delle evoluzioni a breve, ma fin dalle prime specifiche di Web Application 1.0, ovvero dal settembre del 2005 (l'ultimo working draft è aggiornato costantemente), correttamente, il WHATWG faceva riferimento ad un lavoro in corso da parecchio tempo al W3C (parafrafo Relazioni con XHTML2), riconoscendone gli scopi, evidenziandone alcuni limiti e chiudendo con una frase pseudo-pacifista, vagamente interpretabile come: non sono alternativi, possono convivere.

Quindi, il W3C stava lavorando all'XHTML2. Qualunque cosa sia, vi starete dicendo.

Se andate sul sito del W3C, potete scoprire che il 7/3/2007 il W3C ha lanciato il nuovo HTML Working Group e (guarda combinazione) l'XHTML2 Working group. E come caspita facevano, nel 2005, a citare l'XHTML2 nelle specifiche dell'HTML5 quelli del WHATWG, se è nato 2 settimane fa?

Perchè il primo draft dell' XHTML 2.0 è dell'agosto 2002 (l'ultimo, l'ottavo, di metà dell'anno scorso). Semplicemente nessuno se lo era filato seriamente, fino alla fine 2005/inizio 2006 (l'interesse è certamente stato sollevato anche da questi due gran begli articoli sull'HTML5 e sull'introduzione ad XHTML2 di IBM del periodo citato, che, tra l'altro, fanno anche un riassunto dei vari gruppi di lavoro del W3C collegati a questo argomento ed elencano i principali vantaggi delle nuove specifiche in un modo così chiaro e sintetico che sarebbe inutile ripeterle).

Pausa. Un bicchiere d'acqua. Ho la gola secca, a furia di parlare. Inoltre mi devo calmare perchè ho appena ricevuto una telefonata di minacce: devo piantarla di parlare in sigle (già ne hanno abbastanza di parentesi ed incisi vari) e cercare di essere più chiaro, altrimenti o mi uccidono l'orso di peluche o lasciano il blog.

Vah beh, ci sono questi due linguaggi, no?, entrambi evoluzioni di quello che serve per scrivere 'sta roba che state leggendo, cioè, no?, entrambi vogliono descrivere il vostro futuro,...
Basta. Uccidete l'orso di peluche (non lasciate il blog!), non posso mica andare avanti così.

Torniamo a noi. Nonostante diversi blog, siti, forum abbiano già discusso a lungo su queste questioni e abbiano più volte stabilito che non ci sarà un vincitore e non cambierà nulla per un sacco di tempo, la recente posizione del W3C e la continua diffusione di informazioni su questi aspetti fanno pensare. Il fatto che elementi dell'HTML5 siano già disponibili su Safari, Opera e Firefox e loro estensioni su IE, aumenta questa sensazione.

Personalmente trovo che le evoluzioni di cui trattano siano utili. Le strade delineate sembrano avere entrambe punti di forza e di debolezza.

Se non dovessero convergere, potrebbero esserci due linguaggi (o anche di più, ottenuti da misturoni dei due) al posto che uno.
Il vantaggio principale che vedo nell'HTML5 è la sua continuità con il passato e la sua facilità di apprendimento.
XHTML2, invece, ha la forza di una definizione più pulita, tecnica e mi sembra architetturalmente più approfondito e più adeguato ai cambiamenti richiesti anche dal Web Semantico. Sarà che ci stanno lavorando da più tempo?

Ah, già, non stiamo ancora considerando cosa potrebbe fare Microsoft. Al momento sembra non muoversi (un po' come il gatto prima del balzo?). Sono solo terze parti che, tra tag canvas e plugin per xforms (se avete letto i link che vi ho dato sopra, dovreste già sapere che si tratta di una evoluzione delle forms di HTML in ottica MVC - non vi so a spiegare, tanto l'orso è già andato e potete leggere i link), si stanno preoccupando di espandere IE in queste direzioni. Ma il loro ingresso in campo potrebbe alterare parecchio i giochi.

Nel passato avrebbero fatto una scelta zen: nè una nè l'altra specifica... ma una nuova, loro.
Ma ora è come se avessero sostituito la colonna sonora: da My Way al 'I'm not half the man I used to be' di Yesterday. Non ci sono più certezze, stanno pure facendo uscire un sacco di prodotti gratuiti (ho già detto 'Timeo Danaos...' sì, mi pare di sì...).

Bye
    Depa

P.S.: ultimo link, assolutamente necessario. Per me questo approfondimento è partito da una bellissima versione grafica di Wordnet, realizzata in Javascript. Il signore che ha programmato questa roba, dovrebbe esserci riuscito anche senza VML (IE non mi chiede di scaricare il plugin). Come ha fatto, allora, visto che su IE non c'è il canvas? Appena ho tempo apro i file JS, cerco di capirli e vi faccio sapere.

[... continua ...] Leggi tutto

mercoledì 14 marzo 2007

Come forzare un lucchetto



Sembra incredibile, ma tra le ricerche che ieri hanno portato al mio blog c'è la frase riportata nel titolo.
Quando l'ho visto mi sono chiesto se potevo aver scritto qualcosa in trance e aver svelato anche i segreti del grande Houdini
Ho ripetuto la ricerca e, come vedete dalla foto, è proprio vero: addirittura sono in cima all'elenco!
Fortunatamente sono secondo, anche se si cerca hibernate pro e contro :)

Evidentemente qualcuno cercava di capire come possa essere fuggito Marco Berry in Danger, probabilmente queste ricerche aumenteranno con le puntate del programma.
A pensarci bene poteva pure essere uno scassinatore di cassette di sicurezza. Un professionista, che ha ben chiaro che bisogna prepararsi, prima.
Beh, a quanto pare, sono io che ho rubato uno unique visitor, stavolta.

Comunque, sfruttiamo questa situazione e scriviamo anche questo post: se già ero in cima prima, ora chi mi smuove più? Gli hits sono hits, ragazzi (e lo so che la 's' finale non ci vuole, in italiano: l'ho messa apposta, per accentuare il suono sibilante dell'ultima frase).

C'è un problema in tutto questo: non sarebbe dovuto capitare. Anche per voi, dico, perchè poi vi dovete sorbire questi vaneggiamenti.

C'è forse una soluzione informatica? E' forse il Web Semantico?



Prima di passare alla discussione vera e propria, è necessario che vi segnali anche il secondo risultato dell'elenco (che, intanto che scrivo, è passato primo: forse anche per colpa mia): è un blog di enigmi, ma era inevitabile che a questo dovessi commentare (l'ho fatto, andate a leggervi cosa ho scritto su quel post), dal momento che era evidente che stavano parlando di informatica.

O sembrava solo a me? Davvero non distinguo più vita e informatica?

Torniamo al Web Semantico.
Come introduzione vi consiglio una presentazione della Dott.ssa Mordonini, usato in un seminario nell'Università di Bologna, molto chiaro ed esteso.

Provo giusto a riassumere due o tre punti essenziali, da dilettante dell'argomento e con un occhio, al solito, alle implementazioni pratiche:
  • il Web contiene un numero enorme di informazioni che non sempre riusciamo a raggiungere come vorremmo (e fin qui, lo sapevate già, l'ho riportato solo per vedere se eravate svegli e mi stavate seguendo)

  • il problema è legato al fatto che il Web è oggi costituito solo da legami sintattici (URI) e non semantici. Ovvero, le pagine sono, tipicamente, collegate tra loro senza una spiegazione del significato del link, che possa essere utilizzata da un computer.

  • non basta aggiungere dei tag, simili a quelli che trovate nei vari blog, per aggiungere questo significato: è necessario un maggior formalismo per permettere di applicare algoritmi inferenziali.

Parentesi.
    Le slide chiariscono che Web Semantico non è Intelligenza Artificiale (AI), ma più avanti ricordano che sono necessarie capacità inferenziali (correttamente evidenziando che in questo ambito, ci interessa particolarmente la deduzione e non l'abduzione o l'induzione).

    Probabilmente è corretto, ma solo in senso stretto e formale, e cercando di dare ragione a Douglas Hofstadter che, nel suo oramai-letto-anche-dai-sassi (se non lo avete fatto, è un po' tardi: per quanto sia un libro grandioso - vinse anche il premio Pulitzer - è del 1979, un po' datato, visto l'argomento) Gödel, Escher, Bach - Un'eterna ghirlanda brillante sosteneva che
    l'Intelligenza Artificiale è tutto ciò che non ancora non è stato fatto
    perchè
    tutto ciò che le macchine hanno imparato a fare e che (prima che lo facessero) era ritenuto segno di comportamento intelligente, non viene ritenuto più tale una volta che le macchine lo fanno
Fine Parentesi.

Le slide proseguono con una ben chiara distinzione tra semplici tassonomie, tesauri (es: Wordnet) e ontologie (es: OpenCyc).

Vorrei evitare di appesantire ancora, ma sono costretto a due rapidi pprofondimenti, altrimenti non si capisce più nulla, (rivedremo entrambi gli argomenti in prossimi post in maggior dettaglio):
  • Wordnet è un vocabolario semantico, organizzato in Synset, ovvero insiemi di sinonimi. Ovvero: come certamente sapete le parole (i lemmi) possono avere diversi sinonimi. I dizionari dei sinonimi e dei contrari dei tempi della scuola sono un primo passo in questa direzione, ma hanno la brutta tendenza a mettere assieme sinonimi anche con significati differenti (non tutti, ma quelli che si comportano bene non ci stanno, nella cartella) ed è, comunque, difficile, fare dei controlli incrociati di congruenza senza averli in formato elettronico. I Synset, invece, sono insiemi di sinonimi con lo stesso significato. Per fare un esempio, il lemma prova comparirà in diversi Synset, insieme ai suoi sinonimi. Per es:

    • prova, evidenza, ... (nel senso di prova giudiziaria)
    • prova, esperimento, ...
    • prova, esame, ...
    • etc. etc.
    Ogni Synset rappresenta, quindi, nella pratica, un concetto diverso.

  • Di OpenCyc vi ho già parlato, e ne riparleremo più avanti, è troppo complesso per spiegarlo in 2 righe - spero riuscirete a dormire la sera, nel frattempo. Per ora ci basterà dire (tagliandola spessa) che la principale differenza rispetto a Wordnet sta, soprattutto, nell'aggiunta della capacità inferenziale e di informazioni necessarie a supportarla (Knowledge Base, una base di conoscenza, abbreviata con KB). Peraltro esiste, nella KB di OpenCyc, una esplicita relazione con Wordnet e le relazioni tra i lemmi ed i loro significati (esistono anche relazioni implicite, basate sulla struttura delle informazioni, ma non sono, solitamente, mappabili 1:1 con facilità).

A questo punto del post voi siete stremati, anche se io ho a malapena finito la premessa.
Questa volta, però, non vi grazio, altrimenti non arriveremo mai al punto.
Inoltre non ho ancora sentito suonare la campanella.

Per portare tutte queste considerazioni sul Web, è necessario un linguaggio che permetta di aggiungere informazioni strutturate alle pagine.

La proposta più consolidata, ad oggi, la si trova in un insieme di linguaggi formali (per lo più basati sull'XML) che, a diverso livello, permettono di definire le proprietà che descrivono i documenti (risorse identificabili da un URI) e di ricercarle.
Sempre andandoci giù pesante con le semplificazioni, si tratta di:
  • RDF: attraverso triple [soggetto, predicato, oggetto], anche complesse e composte (es: un oggetto può essere, a sua volta, una tripla - si parla di reificazione), si forniscono proprietà al documento

  • RDFS (RDF Schema): permette di descrivere le classi dell'RDF (ovvero, serve per definire meta-informazioni riguardanti i componenti della tripla di cui sopra), specificandone relazioni e vincoli

  • OWL (Ontology Web Language): siccome la coppia di cui sopra ha solo un limitato potere espressivo, viene proposto (via W3C e sempre nel contesto RDF) questo linguaggio, con l'intento di permettere di eseguire delle inferenze

  • SPARQL: il linguaggio W3C per eseguire query sull'RDF, di fatto una sorta di SQL portato su queste tecnologie

Niente male, come stack (non sono in grado di valutarlo ora, anche per mancanza di tempo, ma pongo lo stesso la domanda per chi fosse in grado di rispondermi: non sarebbe più semplice usare un solo linguaggio come CycL, quello usato per OpenCyc? è veramente più complesso da imparare, o stiamo solo nascondendoci dietro alla sintassi per problemi più seri che interessano la semantica? anche l'espressività ne guadagnerebbe, o no? non piace il fatto che si tratti di una proposta di una sola azienda e che il gap per creare simili motori sia difficile da colmare?)

A questi dobbiamo aggiungere un vocabolario condiviso. Qualcuno suggerisce che URI che puntano alla Wikipedia potrebbero fare al caso, altri (compreso il W3C) propongono vocabolari più specifici.

E' importante notare che non si tratta di sola teoria, ma esistono già tool che trattano queste problematiche (es: Jena, un framework per il Web Semantico in Java, che è in grado di gestire RDF, RDFS, OWL, SPARQL e contiene già un motore inferenziale - realizzato dagli HP Labs, ma presenta licenza apache-like).

Tutto risolto? Veramente no: restano aperti problemi pratici importanti:
  • bisogna comunque partire da informazioni corrette, alla base, altrimenti otterremo ragionamenti non corretti. Ovvero, anche in perfetta buona fede è facile ricadere nelle ambiguità del linguaggio naturale. In generale, per costruire una ontologia in un ambito ristretto, tipico di una Intranet e limitandosi ad argomenti tecnici, ci possono volere mesi/uomo (infatti, sono allo studio classificazioni automatiche). Approfondiremo meglio questi aspetti quando parleremo dell'enorme sforzo portato avanti su OpenCyc (anche se in ambito più complesso ed esteso, ovvero sulla KB alla base del senso comune) e delle best practice che da là sono emerse. Vi anticipo che non è pane per Web Designer, ma per ingegneri della conoscenza. Questa sola considerazione fa parecchio pensare, IMHO, sulla possibilità di utilizzare nel breve le tecniche fin qui descritte su Internet in modo produttivo.

  • anche supponendo che le informazioni siano corrette alla fonte, come possiamo dare all'utente finale degli strumenti semplici da usare che gli permettano di eseguire ricerche mirate? Di fargli usare SPARQL non se ne parla nemmeno (sarebbe come dire: smettiamo di fare interfacce grafiche per i vostri gestionali, imparatevi l'SQL e arrangiatevi a farvi le query da soli). Non è che l'utente finale preferirà
    una risposta potenzialmente errata e sporca (che, tutto sommato, capita più raramente di quanto si voglia far credere, soprattutto in ambiti ristretti, che sono quelli su cui oggi è affrontabile un discorso di ontologie) tipica di un motore di ricerca, che trovarsi di fronte ad interfacce complesse da utilizzare?

  • veridicità ed affidabilità delle informazioni: dovremmo prevedere una sorta di certificatore? quante risorse potrebbero servire per validare tutti i documenti immessi? Serve, comunque, un confronto semantico, altrimenti ricadiamo nella semplice verifica incrociata, già eseguita dai principali motori di ricerca, tra meta tag nell'head dell'HTML con quanto contenuto nel body

L'abbiamo presa da un punto di vista più serio della volta che vi ho parlato dell'AIML, ma i risultati sono quasi gli stessi: forse serve qualcosa di più potente ed automatizzabile. Ancora una volta, è un mio parere personalissimo, rischiamo di dover ricadere verso ambiti più legati all'AI. Quanto siamo lontano dal far comprendere il linguaggio al computer?

Forse meno di quanto pensate.
Forse più di quanto penso io (bisogna ben tenere in conto il teorema di Hofstadter -
Ci vuole sempre di più di quello che ti aspetti, anche se tieni in conto la Legge di Hofstadter
- per tacer di Murphy).

Come già minacciato, per finire quelli che sono sopravvissuti a questo post, torneremo ancora su questi argomenti parlando almeno di Wordnet (e suo figlio, Eurowordnet, che potrebbe tornare utile per le traduzioni - potendo comprare la licenza, s'intende...), Conceptual Dependency di Shank e OpenCyc.

Se un giorno di questi sono di buona magari vi parlo di approcci più leggeri, per iniziare a fare qualcosa, per esempio utilizzando bene Lucene, anche con le nuove funzionalità di stemming recepite da Snowball, ma non contateci troppo.

Bye
    Depa

[... continua ...] Leggi tutto