SEO ecco la vera SEMANTICA sul Web
Riassunto Articolo
Benvenuto su libro-seo.it caro Tommaso di Noia, innanzitutto dicci due parole su di te?
Sono ricercatore universitario al Politecnico di Bari dove insegno Intelligenza Artificiale dal 2005. Mi sono laureato nel 2002 in Ingegneria Elettronica con una tesi di laurea in Sistemi Informativi e ricevuto il titolo di Dottore di Ricerca in Ingegneria dell’informazione nel 2006 discutendo una tesi sull’applicazione di tecniche di rappresentazione della conoscenza e ragionamento automatico in scenari di e-commerce. La mia attività di ricerca va dalla rappresentazione della conoscenza al ragionamento automatico, passando attraverso l’apprendimento, la modellazione e l’utilizzo delle preferenze dell’utente. Mi occupo inoltre di Semantic Web e Linked Open Data e dell’applicazione di tecniche di machine learning per la realizzazione di sistemi evoluti per l’accesso personalizzato all’informazione.
Sul Web si parla molto di semantica, ma molto spesso viene confusa con concetti di basso livello, puoi chiarire questo punto ai nostri lettori? Cos’è LA SEMANTICA?
La semantica sul Web, nella sua accezione più generica può avere diverse interpretazioni. Nel seguito cercheremo di descrivere quella più legata al Semantic Web, introducendo brevemente le tecnologie correlate.
In due parole, la semantica rappresenta la possibilità di rappresentare in maniera esplicita il significato che si dà ai contenuti e ai dati presenti sul Web in modo tale che possano essere processati in maniera automatica da componenti software.
La rappresentazione semantica dell’informazione passa innanzitutto attraverso la creazione e condivisione di tesauri, vocabolari e schemi comuni. Questo passaggio è fondamentale per evitare l’ambiguità di interpretazione dell’informazione. Si pensi ai tanti diffusi sistemi di annotazione della pagine basato su tag. Nonostante l’enorme quantità di informazione strutturata (keywords) che viene aggiunta alle pagine, questa presenta delle inerenti ambiguità dovute al fatto che i tag, alla fine dei conti, non sono altra che delle stringhe usate per rappresentare una qualche entità concettuale.
semantic-web
Cerchiamo di chiarire con un classico esempio. Se in un sistema di tagging troviamo la parola chiave “apple” a cosa stiamo facendo riferimento? Alla nota azienda o al frutto? Dualmente, come facciamo a capire che sia “il colosso di Cupertino” che “Apple Inc.” significano la stessa cosa e fanno riferimento alla stessa entità? Purtroppo il linguaggio naturale soffre dei problemi legati alla polisemia (una parola fa riferimento a più entità o significati) e alla sinonimia (più parole fanno riferimento alla stessa entità o riferimento). Per evitare di andare incontro almeno a questi problemi di ambiguità semantica, si ha la necessità di definire degli identificatori univoci che facciano riferimento alle entità e, possibilmente, alla loro classificazione. In altre parole dobbiamo passare dalle stringe a degli ID e magari relazionare questi ID tra di loro. Il candidato ideale per la rappresentazione sul Web di ID non può che essere l’URI (o IRI nella sua versione internazionale), generalizzazione del ben più noto URL.
Se tutti fossimo d’accordo, ad esempio, nell’usare l’URI <http://dbpedia.org/resource/Apple_Inc.> (torneremo tra un po’ a parlare di DBpedia) per riferirci alla nota azienda di informatica e l’URI <http://dbpedia.org/resource/Apple> quando facciamo riferimento al frutto, avremmo già risolto in parte il problema legato all’ambiguità di significato.
Si osservi che l’esempio fatto per i tag vale ogni qual volta si voglia esporre dell’informazione strutturata sul Web, come nel caso dei servizi REST o dei microdata presenti all’interno di pagine Web in HTML5.
Una volta capito questo concetto possiamo andare oltre e chiederci: è possibile classificare queste entità in modo da associare loro dell’ulteriore significato?
Supponiamo di aver utilizzato all’interno delle nostre pagine dei microdata facenti riferimento alle entità <
http://dbpedia.org/resource/Apple> (mela), <http://dbpedia.org/resource/Pear> (pera) e <http://dbpedia.org/resource/Matera> (città di Matera).
È evidente che i primi due URI fanno riferimento a dei frutti mentre il terzo ad una città. Come possiamo catturare questa ulteriore informazione e modellarla in modo che sia processabile in maniera automatica? È a questo punto entrano in gioco le ontologie (con la “o” iniziale). Nella sua forma più elementare, una ontologia è una tassonomia di classi in relazione di tipo IS-A. Una classe, come nella programmazione orientata agli oggetti, altri non è se non un insieme di oggetti o istanze. Dicendo che un oggetto è una istanza di una classe affermiamo che è un elemento di quell’insieme.
Tornando al nostro esempio, potremmo cominciare definendo la classe <http://example.org/ontology/Frutto> (anche in questo caso rappresentata da un URI) e dicendo che <http://dbpedia.org/resource/Apple> e <http://dbpedia.org/resource/Pear> sono sue istanze. Possiamo poi continuare definendo una nuova classe più generica <http://example.org/ontology/Pomacee> e dire che <http://example.org/ontology/Frutto> è una sua sotto-classe. L’aggiunta di quest’ultima classe ci permette di aggiungere ulteriore significato/semantica all’informazione codificata. Adesso, infatti, per la transitività della relazione IS-A sappiamo che <http://dbpedia.org/resource/Apple> e <http://dbpedia.org/resource/Pear> fanno parte delle Pomacee.
Un discorso del tutto analogo possiamo farlo per la città di Matera. In realtà, le ontologie non si limitano a delle semplici tassonomie ma sono qualcosa la cui complessità può aumentare a seconda del dominio di conoscenza che si vuole modellare.
Così come è opportuno usare dei dizionari standard per dare un nome univoco alle cose, la stessa cosa dovrebbe succedere per le ontologie. Se tutti usiamo delle ontologie comuni, implicitamente conveniamo sul significato delle cose e permettiamo una più semplice condivisione e diffusione della conoscenza.
Dopo questa brevissima digressione, abbiamo a disposizione i concetti per introdurre le tecnologie che sono alla base di: Semantic Web, Linked Open Data (LOD) e schema.org.
Il Semantic Web è una iniziativa la cui nascita viene generalmente identificata con l’uscita sul numero di Maggio del 2001 di Scientific American dell’articolo: “The Semantic Web” scritto da Tim Berners-Lee, James Hendler e Ora Lassila. In quel lavoro si descriveva l’evoluzione del Web da una base documentale distribuita ad una gigantesca base di dati distribuita.
In poche parole si descrive il passaggio da un “Web dei documenti” ad un “Web dei dati”. Chiariamo subito che la nuova concezione del Web dei dati non va a sostituire il Web corrente ma lo estende e si pone come un ulteriore strato informativo al di sopra di esso. Proprio per questo motivo, lo stack tecnologico da utilizzare deve essere pienamente compatibile con quello del Web “classico”.
La tecnologia alla base del Semantic Web è senza ombra di dubbio RDF, acronimo di Resource Description Framework. Come suggerisce il suo stesso nome, RDF non è un linguaggio ma è un modello per la descrizione delle risorse o, in altre parole, un modello per la rappresentazione dei dati. Il concetto alla base di RDF è la tripla. Tutti i dati sono codificati attraverso un insieme di affermazioni del tipo [soggetto, predicato, oggetto] che ci dicono che il soggetto è il relazione con l’oggetto attraverso un predicato. A ben pensarci, questo modello è una estensione del classico concetto di hyperlink. Nei fatti, un hyperlink tra la pagina p1 e la pagina p2 ci dice che la prima è il relazione con la seconda.
Se nella pagina http://sisinflab.poliba.it/dinoia/ troviamo un link a http://www.apogeonline.com/libri/9788850332144/scheda questo significa che i due URI sono in relazione tra di loro. Quello che non possiamo sapere è che la relazione è del tipo “è autore del libro”.
Da nessuna parte viene rappresentata la semantica del link, il suo significato non è codificato esplicitamente da nessuna parte. Con RDF superiamo questo limite scrivendo la tripla:
[http://www.apogeonline.com/libri/9788850332144/scheda, http://purl.org/dc/terms/author, http://sisinflab.poliba.it/dinoia/]
Esistono diversi linguaggi per la rappresentazione di triple RDF tra i quali ricordiamo RDF/XML, turtle, RDFa e l’ultimo arrivato JSON-LD.
Spendiamo qualche parola in più su RDFa che ci servirà come comparazione con schema.org. Attraverso RDFa è possibile inserire delle triple RDF all’interno di pagine HTML. Questo avviene attraverso l’introduzione dell’insieme di attributi: about, typeof, rel, rev, src, href, resource, property, content e datatype. L’idea è la stessa alla base dell’uso di microdata in HTML5 ma è bene osservare che le due tecnologie sono (ancora) distinte.
Tra le altre tecnologie che ruotano attorno all’iniziativa del Semantic Web citiamo RDF-Schema e OWL per la rappresentazione delle ontologie e SPARQL per l’interrogazione (e non solo) di insiemi di triple RDF.
Linked Open Data è un insieme di best practice per la pubblicazione di dati nel Web utilizzando le tecnologie del Semantic Web. Il progetto più rilevante per la creazione di Linked Open Data è, senza ombra di dubbio, DBpedia. In poche parole, DBpedia rappresenta per il Web dei dati quello che per il Web dei documenti è Wikipedia. È la versione in RDF della conoscenza enciclopedica presente in Wikipedia. In DBpedia viene definito un URI per ogni pagina presente in Wikipedia e ad esso vengono associate le informazioni presenti nella infobx (il riquadro in basso a destra) della pagina stessa. Al di là della quantità considerevole di conoscenza codificata in RDF, la grande potenza di DBpedia è quella di definire degli URI per riferirsi ad un vastissimo numero di entità del mondo reale. Riutilizzando il più possibile gli URI presenti in DBpedia possiamo mitigare tutti i problemi di sinonimia e polisemia cui accennavamo all’inizio.
Schema.org è una iniziativa separata da quella del Semantic Web anche se estremamente simile nello spirito. Lanciata nel Giugno 2011 da un consorzio di aziende leader nella ricerca sul Web formato inizialmente da Google, Yahoo! e Microsoft, ai quali si è aggiunto poco dopo Yandex, ha lo scopo di promuovere la diffusione di informazione strutturata attraverso microdata all’interno delle pagine Web. L’idea è assolutamente la stessa alla base di RDFa, con la differenza che in questo caso gli attributi utilizzato sono: itemscope, itemtype, itemid, itemprop e itemred. A livello di espressività nella rappresentazione dell’informazione, RDFa risulta essere superiore. Ecco perché è sempre possibile tradurre in RDFa informazione codificata con schema.org ma non è sempre vero il viceversa. Poiché valgono tutti i problemi legata all’ambiguità dei termini utilizzati, anche schema.org propone una propria ontologia in continuo sviluppo.
Per i motori di ricerca con schema.org che evoluzioni si hanno?
Come detto in precedenza, l’iniziativa schema.org nasce dalla spinta dei maggiori motori di ricerca mondiali. L’idea è quella di inserire all’interno delle pagine Web informazione già strutturata con una semantica non ambigua. Questo pone degli indubbi vantaggi per un motore di ricerca che non deve più classificare una pagina in base all’estrazione ed interpretazione di parole chiave ma ha già a disposizione l’informazione categorizzata rispetto ad uno schema/ontologia standard. Risulta evidente che una simile informazione facilita anche la scelta dei risultati più pertinenti ripeto ad una query.
Ulteriori vantaggi sono quelli legati alla creazione di rich snippets nella pagina dei risultati dei motori di ricerca e (anche se non lo ammetteranno mai esplicitamente) ad una migliore profilazione dell’utente. In relazione al primo punto possiamo dire che i dati codificati all’interno delle pagine possono essere organizzati per presentare una preview molto ricca all’utente in relazione alla sua query. Per il secondo punto, non è difficile capire come il passaggio da un profilo utente basato su keywords e loro occorrenza ad un profilo composto da entità e loro classificazioni possa portare degli indubbi vantaggi per una più precisa classificazione degli interessi e delle abitudini dell’utente.
LOD (Link Open Data) , semantica e motori di ricerca che correlazioni possono avere?
La relazione è del tutto analoga a quella tra motori di ricerca e schema.org. L’indicizzazione e crawling di contenuti RDFa è in atto da qualche anno ormai. Purtroppo, avendo creato schema.org i motori di ricerca tendono a prediligere quest’ultimo formato ad RDFa.
Per Linked Open Data nella loro accezione più generale, il discorso si fa un po’ più ampio. I dati in quanto tali non servono nella fase di ricerca vera e propria ma in tutta una serie di servizi ancillari come il suggerimento di entità correlate a quelle presenti nella query. In poche parole a tutto quello che nel modo dei motori di ricerca viene chiamato Knowledge Graph.
Google e Knowledge Graph quanto influiscono le basi di dati aperte?
Anche se quello di Google è il più famoso, in realtà tutti i motori di ricerca si sono dotati (o si stanno dotando) di un proprio Knowlegde Graph per superare il paradigma delle keywords e spostarsi in una ricerca di entità. Non è un segreto che il knowledge graph di Google di basa in larga parte su Freebase, base di dati, o meglio base di conoscenza, collaborativa. L’informazione codificata al suo interno viene utilizzata dai motori di ricerca per suggerire entità correlate a quella ricercata sulla base di criteri che vanno ben oltre l’occorrenza di keywords o il page rank. Le informazioni, non le pagine, correlate vengono ricercate all’interno del knowledge graph rispetto ai collegamenti che ci sono tra entità.
Freebase non è l’unica base di conoscenza aperta. Abbiamo accennato prima a DBpedia che, come Freebase, è una base di conoscenza enciclopedica ma ci sono tante altre basi di dati aperte specializzate su temi specifici pronte per essere utilizzate in task di ricerca fortemente verticali. Per i più curiosi, accenniamo al fatto che esiste una versione di Freebase in RDF con dei link a risorse di DBpedia e dualmente in DBpedia, ove possibile, vengono segnalate le equivalenze con delle entità presenti in Freebase.
L’ultimo grosso aggiornamento agli algoritmi di ricerca di Google fa un uso intensivo, tra le altre cose, del sottostante knowledge graph. Una delle sue funzionalità è quella di mappare le keyword che compongono una query ad entità presenti nel knowledge graph in modo da “rivestirle” di uno strato semantico. Ed ecco che la ricerca su “Londra” si trasforma nella ricerca nel knowledge graph della entità (nodo nel grafo) a cui è associata l’etichetta “Londra” in italiano. Si noti che l’entità è esattamente la stessa alla quale è associata l’etichetta “London” in inglese.
Devi effettuare l'accesso per postare un commento.