Sono passati decine di anni dai primi siti web composti solo da testo, immagini e link. Ora gli utenti pretendono di più volendo fare di meno. Desiderano che il tuo sito web capisca i loro gusti, fornisca approfondimenti, si modifichi in base alle loro esigenze. Durante questo intervento verranno forniti consigli su quali tecniche e servizi di text analysis, collective intelligence e semantic web possono rendere il nostro sito web intelligente.
3. Ringraziamenti
Costantino Cerbo Davide Palmisano
Senior developer @ Gebit CEO @ Smartetics
in Germania in Inghilterra
• http://linkedin.com/in/ccerbo • http://linkedin.com/in/davidepalmisano
• http://text-analysis.sourceforge.net/ • http://smartetics.co.uk/
• http://twitter.com/webtextanalysis • http://twitter.com/dpalmisano
4.
“Quello che l’informazione consuma è piuttosto
ovvio: consuma l’attenzione dei suoi
destinatari. Dunque un’abbondanza di
informazione crea povertà d’attenzione, ed il
bisogno di scegliere come distribuire in maniera
efficiente questa attenzione tra la
sovrabbondanza di informazioni che potrebbero
consumarla”
H.A. Simon
6. Le nostre armi segrete
Analisi del testo
Sistemi di raccomandazione
Open Data
Web Semantico
7. Analisi del testo
"si riferisce al processo di estrazione di
informazioni di alta qualità dal testo"
(http://en.wikipedia.org/wiki/Text_mining)
I 4 passi base
Esempio
"Grazie a tutti per essere venuti a Better Software"
8. Tokenizzazione
• Analizzare il testo per estrarre i termini
String[] tokens = {"Grazie", "a", "tutti", "per", "essere", "venuti",
"a", "Better", "Software!"}
Normalizzazione
• Pulire il testo da caratteri e differenze non utili
String[] tokens = {"grazie", "a", "tutti", "per", "essere", "venuti",
"a", "better", "software"}
9. Eliminazione "Stop Words"
• Eliminare le parole di uso comune in una lingua che non
incidono per l'identificazione del contenuto del testo.
• Esistono delle liste open source per le varie lingue, per
l'italiano:
http://snowball.tartarus.org/algorithms/italian/stop.txt
String[] tokens = {"grazie", "a", "tutti", "per", "essere", "venuti",
"a", "better", "software"}
11. Principali algoritmi
• Estrazione contenuto rilevante da pagina web
o http://boilerpipe-web.appspot.com/
o https://www.readability.com/
• Rilevamento della lingua
o https://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=Benvenuta
%20gente
o http://www.alchemyapi.com/api/demo.html
• Estrazione parole chiave
o http://www.alchemyapi.com/api/demo.html
o http://developer.yahoo.com/search/content/V1/termExtraction.html
o http://saplo.com/api
• Categorizzazione testo
o http://uclassify.com/
• Riassunti automatici
o http://topicmarks.com/dashboard
o http://shablast.com/?id=1080961&type=Summary
o http://lada.si.umich.edu:8080/clair/nie1/nie.cgi
• Estrazione di "Named entity"
o http://cogcomp.cs.illinois.edu/demo/ner/?id=8
o http://access.alchemyapi.com/demo/entities_int.html?mode=entity
o http://www.opencalais.com/about
12. Sentimental Analysis
Categorizza dei testi in positivi o
negativi tramite l'estrazione di frasi o
parole chiave
Molto usato per analisi su Twitter
o su post dei blog
• Twitter
o http://www.tweetfeel.com
o http://twittersentiment.appspot.com/
• Ristoranti, hotel, aziende
o http://www.infoglutton.com
• Mercato azionario
o http://www.thestocksonar.com
• Marchi, avvenimenti, etc
o http://www.repustate.com
14. Il Semantic Web
Semantic Web, Web of Data, Machine-readable Web, Web
3.0 ... termini differenti per indicare la stessa idea:
correlare dati eterogenei tra di loro come fossero
pagine Web
"The Semantic Web is a webby way to link data"
- Dave Beckett, Yahoo Inc.
15. Il Semantic Web: building blocks
RDF Microformats schema.org
RDFa Microdata
16. Il Semantic Web: RDF
Resource Description Framework (RDF) è lo standard base del W3C.
• qualsiasi entità descrivibile è identificata da una URI
• proprietà e relazioni tra entità vengono espresse con URI
• lo statement (o tripla) è l'unità base: soggetto - predicato - oggetto
• un insieme di statement fanno un grafo RDF
• i grafi si serializzano tramite: RDF/XML, N-Triples, Notation3, ...
Esempio:
Davide Cerbo è l'autore della presentazione il Web Intelligente
diventa in RDF/XML:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-
ns#" xmlns:au="http://description.org/schema/">
<rdf:Description about="http://snoopal.com/...">
<au:author>http://snoopal.com/user/davidecerbo</au:author>
</rdf:Description>
</rdf:RDF>
17. Il Semantic Web: RDFa
Resource Description Framework-in-Attribute (RDFA) è una W3C
Recommendation per aggiungere RDF nelle pagine web.
Gli attributi usati sono: about o src, rel o rev, href or resource, property,
content, datatype e typeof
Esempio:
<div xmlns:dc="http://purl.org/dc/elements/1.1/"
about="http://snoopal.com...">
<span property="dc:title">Il web Intelligente</span>
<span property="dc:creator">Davide Cerbo</span>
<span property="dc:date">2011-06-27</span>
</div>
18. Il Semantic Web: Microformats
Microformats è una specifica per includere informazioni semantiche in una pagina
web usando gli attributi:
• class
• rel
Ha molte specifiche per descrivere, ad esempio: ricette (hRecipe), CV
(hResume), recensioni (hReview) e risorse multimediali (hMedia).
Esempio:
<div class="vcard">
<div class="fn">Davide Cerbo</div>
<div class="org">Ex Machina</div>
<div class="tel">+41 00 000 000 000</div>
<a class="url" href="http://...">http//exmachina.ch</a>
</div>
19. Il Semantic Web: Microdata
Microdata e' parte di una specifica di HTML5 per annotare semanticamente
porzioni della pagina Web.
La specifica prevede un algoritmo per convertirle Microdata in RDF.
L'idea alla base e' quella di prevedere gruppi (items) di coppie chiave-valore
(itemprop), rappresentati da elementi del DOM annotati con i seguenti attributi:
itemscope, itemtype, itemid, itemref e itemprop
Esempio:
<section itemscope
itemtype="http://example.org/animals#cat">
<h1 itemprop="name">Hedral</h1>
<p itemprop="desc">Hedral is a male american domestic
shorthair, with a fluffy black fur with white ...</p>
<img itemprop="img" src="hd.jpg"
title="Hedral,age 18 ">
</section>
20. Il Semantic Web: Schema.org
Da un accordo tra i principali motori di ricerca
nasce schema.org, un vocabolario basato su Microdata per la descrizione di
entità di uso comune:
• Creative works: Book, Movie, MusicRecording, Recipe, TVSeries ...
• Embedded non-text objects: AudioObject, ImageObject, VideoObject
• Person
• Place, LocalBusiness, Restaurant ...
I SEO dovranno rispettare un solo standard!
24. "My Administration is committed to creating an
unprecedented level of openness in Government.
We will work together to ensure the public
trust and establish a system of transparency,
public participation, and collaboration. Openness
will strengthen our democracy and promote
efficiency and effectiveness in Government."
Open Government Initiative Memorandum,
President B. Obama
25. Open data e il Semantic Web
• L'idea alla base prevede che alcuni dati siano pubblici e
riusabili da liberamente al fine di promuovere trasparenza e
partecipazione democratica
• Numerose iniziative
o data.gov
o data.gov.uk
o dati.piemonte.it
o datasf.org
o ... cerca #opendata su twitter ;)
26. Open data e il Semantic Web
Tuttavia la pubblicazione dei dati rimane estremamente
eterogenea:
• file CSV, testi non strutturati
• XML
• ...
• fino a piattaforme più sofisticate
L'eterogeneità rimane un ostacolo allo sviluppo rapido di
mashups e applicazioni
Necessità di gestire il licensing dei dati
Necessità di monetizzare API e mashups su questi dati
Metodo per il riconoscimento della qualità dei data sets
27. Il Semantic Web: Linked Open Data
Il web permette di collegare documenti. Similarmente permette
di collegare dati. Il termini Linked Data fa riferimento ad un
insieme di best practices per pubblicare e collegare dati
strutturati nel Web. Le tecnologie chiave che supportano
Linked Data sono URI ( un modo generico per indentificare
entità o concetti nel mondo), HTTP (un meccanismo semplice,
ma universale, per recuperare risorse o descrizioni di risorse),
e RDF (un generico modello basato su grafo che struttura e
collega le cose nel mondo).
Tom Heath
(http://tomheath.com/papers/bizer-heath-berners-lee-ijswis-linked-data.pdf)
30. Il Semantic Web: a 5 stelle
★★★★★ rendi i tuoi dati disponibili sul web (in qualsiasi formato) e con una licenza aperta
★★★★★ forniscili come dati strutturati
★★★★★ usa formati non proprietari
★★★★★ usa URI per identificare le tue risorse, così che gli utenti possano puntarle direttamente
★★★★★ collega i dati ad altri dati per fornire un contesto
http://lab.linkeddata.deri.ie/2010/star-scheme-by-example/
31. Il Semantic Web: data markets
Linked Open Data è un modello per la pubblicazione e
l'interlinking di open data sets differenti.
La ricerca degli stessi, la loro catalogazione, la pubblicazione
di API derivate dal mashup degli stessi
sta portando ai primi data markets:
• datamarket.com
• infochimps.com
• kasabi.com
• factual.com
• ckan.net
Si intravedono i primi revenue model per data owner e API
33.
"Il 90% di tutto è spazzatura"
Theodore Sturgeon
34.
"Che cos'è l'intelligenza collettiva? In primo luogo bisogna
riconoscere che l'intelligenza è distribuita dovunque c'è
umanità, e che questa intelligenza, distribuita dappertutto,
può essere valorizzata al massimo mediante le nuove
tecniche, soprattutto mettendola in sinergia. Oggi, se due
persone distanti sanno due cose complementari, per il
tramite delle nuove tecnologie, possono davvero entrare in
comunicazione l'una con l'altra, scambiare il loro sapere,
cooperare. Detto in modo assai generale, per grandi linee, è
questa in fondo l'intelligenza collettiva"
Pierre Lévy
35. Sistemi di raccomandazione
La nostra missione:
Fornire ai nostri utenti gli elementi di loro interesse a partire
dai dati di cui si dispone: informazioni su utenti e oggetti.
Tipi:
• Basati sul contenuto
elementi simili a quelli piaciuti nel passato
• Collaborativi
elementi che sono piaciuti a persone con profili simili
• Ibridi
un mix trai precedenti
36. Basati sul contenuto
Punti chiave:
• Creare un profilo per ogni elemento
• Il profilo assegnato manualmente o automaticamente.
• Per i testi si utilizzano le tecniche di analisi del testo.
Esempio:
Se io compro un libro di James Frey mi verranno suggeriti tutti
gli altri libri dello stesso autore, dello stesso genere,
pubblicati nello stesso anno
Pro:
• buoni risultati anche in sistemi con pochi utenti
Contro:
• offre raccomandazioni scontate (e.s.: i libri di James Frey li posso scoprire anche vedendo
la sua bibliografia)
37. Collaborativi: Memory-based
Punti chiave:
• Si basano sulla storie delle valutazioni degli utenti.
• Vengono usate diverse tecniche euristiche per calcolare la somiglianza tra
utenti come il calcolo del Coefficiente di correlazione di r di Pearson.
• Non tutti gli utenti valutano gli elementi nello stesso modo. I voti vanno
normalizzati!
Esempio:
Se io compro un libro di James Frey mi verranno suggeriti i libri
comprati da un gruppo di persone che hanno fatto lo stesso acquisto.
Pro:
• offre raccomandazioni più imprevedibili
• crea relazioni fra utenti e la possibilità di raccomandazioni indirette
Contro:
• cold start: servono molti utenti per avere buone raccomandazioni
• difficilmente tutti gli utenti esprimeranno preferenze su un numero sufficiente
di risultati (si può risolvere con la Dimensionality Reduction)
• Banana Problem: si suggeriscono sempre degli elementi molto comuni
38. Collaborativi: Model-based
Punti chiave:
• Si basano sulla storie delle valutazioni degli utenti per creare un modello
• Solitamente basato sul calcolo delle probabilità.
• Sfruttano l'Analisi del Collegamenti.
Esempio:
Se io compro un libro di James Frey mi verranno suggeriti i libri
comprati da un gruppo di persone che hanno fatto lo stesso acquisto.
Dando maggior peso a quelli acquistati da utenti molto
attivi o importanti nel sistema.
Pro:
• offre raccomandazioni più affidabili rispetto ai Memory-based
• gli stessi del Memory-based
Contro:
• costi computazionali elevati
• gli stessi del Memory-based
41. L'angolo dello smanettone 2/2
• Virtuoso (anche OpenSource)
http://virtuoso.openlinksw.com/
• Jena
http://jena.sourceforge.net/
• Sesame
http://www.openrdf.org/
• JRDF
http://jrdf.sourceforge.net/
• SIREn
http://siren.sindice.com/
• Apache Clerezza
http://incubator.apache.org/clerezza/
• OrientDb (graph DB prima o poi vi servirà!)
http://www.orientechnologies.com/
• Sail Ouplementation
https://github.com/tinkerpop/blueprints/wiki/Sail-Ouplementation
42. Letture consigliate 1/2
• Algorithms of the Intelligent Web
http://www.manning.com/marmanis/
• Mining the Social Web
http://oreilly.com/catalog/0636920010203/
• Collective Intelligence in Action
http://www.manning.com/alag/
• Programming Collective Intelligence
http://oreilly.com/catalog/9780596529321
• Costruire sistemi per la reputazione Web
http://www.tecnichenuove.com/libri/costruire_sistemi_per_reputazione_web.html
43. Letture consigliate 2/2
• Semantic Web. Dai fondamenti alla realizzazione di un'applicazione
http://hpe.pearson.it/scheda_opera.php?ID=2789¯odestinazioneID=&materiaID=
• Thinking on the Web Web
http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471768669.html