La semantica per automatizzare una redazione web: l’esperienza di Innolabsplus.eu

Net7
Net7Net7
!
La semantica per automatizzare una
redazione web:!
l’esperienza di Innolabsplus.eu
Bologna 4 dicembre 2015

Luca De Santis – Massimiliano Pardini
Net7 Srl - Pisa
!
Innolabsplus.eu: cos’è
http://innolabsplus.eu/!
•  Innolabs+: portale informativo multilingua per professionisti e
imprese sulle politiche comunitarie in materia di innovazione.!
•  Realizzato nell’ambito di un progetto del Dipartimento di Scienze
Politiche dell’Università di Pisa!
!
Innolabsplus.eu: cos’è
!
Innolabsplus.eu: cos’è
!
•  Obiettivo: fornire informazioni aggiornate, selezionate e classificate
secondo 3 obiettivi principali e 11 categorie!
–  Crescita Intelligente, Crescita Inclusiva, Crescita Sostenibile!
•  Fonti: oltre 40 siti italiani, francesi e comunitari in lingua inglese!
•  Il lavoro di cernita è facile se hai a disposizione una redazione
numerosa ed esperta di politiche comunitarie…!
Innolabsplus.eu: cosa fa
!
•  Obiettivo: fornire informazioni aggiornate, selezionate e classificate
secondo 3 obiettivi principali e 11 categorie!
–  Crescita Intelligente, Crescita Inclusiva, Crescita Sostenibile!
•  Fonti: oltre 40 siti italiani, francesi e comunitari in lingua inglese!
•  Il lavoro di cernita è facile se hai a disposizione una redazione
numerosa ed esperta di politiche comunitarie…!
Innolabsplus.eu: cosa fa
•  …ma come fare quando il tuo team è decisamente più ristretto (e
per di più pesantemente sovraccarico di lavoro???)!
!
Innolabsplus.eu: come fa
•  Perché non farsi aiutare… dalle macchine?
•  Un sistema che completamente in
automatico
–  analizzi gli articoli prelevati da molteplici
fonti
–  decida di pubblicarli o meno se il loro testo
è pertinente con le tematiche del portale
!
Innolabsplus.eu: come fa
•  Perché non farsi aiutare… dalle macchine?
•  Un sistema che completamente in
automatico
–  analizzi gli articoli prelevati da molteplici
fonti
–  decida di pubblicarli o meno se il loro testo
è pertinente con le tematiche del portale
•  Da un lavoro puramente manuale…
!
Innolabsplus.eu: come fa
•  Perché non farsi aiutare… dalle macchine?
•  Un sistema che completamente in
automatico
–  analizzi gli articoli prelevati da molteplici
fonti
–  decida di pubblicarli o meno se il loro testo
è pertinente con le tematiche del portale
•  Da un lavoro puramente manuale…
•  ... allo sfruttamento dell’intelligenza della
macchina
!
Innolabsplus.eu: come fa
•  Per far questo è necessario
“comprendere” il testo
•  Semantic web?
!
Innolabsplus.eu: come fa
•  Per far questo è necessario
“comprendere” il testo
•  Semantic web?
–  Potente ma complesso lo stack
tecnologico su cui è basato.
–  La sua visione si è avverata solo in
parte.
!
Innolabsplus.eu: come fa
•  Per far questo è necessario
“comprendere” il testo
•  Semantic web?
–  Potente ma complesso lo stack
tecnologico su cui è basato.
–  La sua visione si è avverata solo in
parte.

•  “A little semantics goes a long way!”
–  Jim Hendler
!
Innolabsplus.eu: come fa
•  Per far questo è necessario
“comprendere” il testo
•  Semantic web?
–  Potente ma complesso lo stack
tecnologico su cui è basato.
–  La sua visione si è avverata solo in
parte.

•  Usare servizi semantici pronti per
l’uso, via RESTful API

•  “A little semantics goes a long way!”
–  Jim Hendler
!
Dandelion API
•  Servizio commerciale dell’azienda Spazio
Dati Srl: https://dandelion.eu/
!
Dandelion API
•  Servizio commerciale dell’azienda Spazio
Dati Srl: https://dandelion.eu/
•  Parte da una ricerca dell’Università di Pisa
–  TagMe
!
Dandelion API
•  Servizio commerciale dell’azienda Spazio
Dati Srl: https://dandelion.eu/
•  Parte da una ricerca dell’Università di Pisa
–  TagMe

•  Potenziato anche nell’ambito del
progetto di ricerca SenTaClAus
–  Net7 come azienda coordinatrice
–  Info: http://sentaclaus.netseven.it
!
Dandelion API
•  Servizio commerciale dell’azienda Spazio
Dati Srl: https://dandelion.eu/
•  Parte da una ricerca dell’Università di Pisa
–  TagMe

•  Potenziato anche nell’ambito del
progetto di ricerca SenTaClAus
–  Net7 come azienda coordinatrice
–  Info: http://sentaclaus.netseven.it
•  I servizi usati in Innolabsplus.eu
–  Named Entity Recognition (NER)
–  Classificazione automatica
!
Named Entity Recognition/Extraction
•  È il servizio base delle Dandelion API
•  Permette di identificate i concetti nel testo
•  Concetti non parole chiave!
–  Ciò di cui parla l’articolo
•  Riconoscere concetti vuol dire:
–  Risolvere eventuali omonimie
•  Serra: Gas Serra? Richard Serra? Monte Serra? O la Serra in Agricoltura?
–  Identificare i termini anche se sono scritti in forma alternativa o parziale
–  In breve…. Riconoscere il contesto
•  Un motore di ricerca full-text (es. Solr) può indicizzare le stringhe senza
discernere il loro significato (approccio bag of words)
!
Perché Solr non basta
!
Perché Solr non basta
!
Perché Solr non basta
!
“Concetti” vs keywords su Innolabsplus.eu
•  Analisi semantica del testo di un articolo (recuperato in automatico)
per identificare i concetti attraverso i servizi NER
!
“Concetti” vs keywords su Innolabsplus.eu
•  Analisi semantica del testo di un articolo (recuperato in automatico)
per identificare i concetti attraverso i servizi NER
!
“Concetti” vs keywords su Innolabsplus.eu
•  Analisi semantica del testo di un articolo (recuperato in automatico)
per identificare i concetti attraverso i servizi NER
!
“Concetti” vs keywords su Innolabsplus.eu
•  Analisi semantica del testo di un articolo (recuperato in automatico)
per identificare i concetti attraverso i servizi NER
!
“Concetti” vs keywords su Innolabsplus.eu
•  Analisi semantica del testo di un articolo (recuperato in automatico)
per identificare i concetti attraverso i servizi NER
!
“Concetti” vs keywords su Innolabsplus.eu
•  Analisi semantica del testo di un articolo (recuperato in automatico)
per identificare i concetti attraverso i servizi NER
!
“Concetti” vs keywords su Innolabsplus.eu
•  Analisi semantica del testo di un articolo (recuperato in automatico)
per identificare i concetti attraverso i servizi NER
!
•  Wikipedia usato come un dizionario controllato
•  I link tra le pagine di Wikipedia rappresentano i legami logici tra i
concetti: si crea così un grafo di termini
•  Tanto le pagine (concetti) sono vicine, tanto maggiore è il loro legame
semantico 
Come funziona la NER delle Dandelion API
!
•  Wikipedia usato come un dizionario controllato
•  I link tra le pagine di Wikipedia rappresentano i legami logici tra i
concetti: si crea così un grafo di termini
•  Tanto le pagine (concetti) sono vicine, tanto maggiore è il loro legame
semantico 
Come funziona la NER delle Dandelion API
!
•  Wikipedia usato come un dizionario controllato
•  I link tra le pagine di Wikipedia rappresentano i legami logici tra i
concetti: si crea così un grafo di termini
•  Tanto le pagine (concetti) sono vicine, tanto maggiore è il loro legame
semantico 
Come funziona la NER delle Dandelion API
!
•  Wikipedia usato come un dizionario controllato
•  I link tra le pagine di Wikipedia rappresentano i legami logici tra i
concetti: si crea così un grafo di termini
•  Tanto le pagine (concetti) sono vicine, tanto maggiore è il loro legame
semantico 
Come funziona la NER delle Dandelion API
!
NER: il riconoscimento del “contesto”
•  Analizzo il testo per riconoscere termini del mio dizionario (concetti
potenziali)
•  La “vicinanza” dei termini nel grafo mi permette di selezionare solo
quelli effettivamente pertinenti (“di cosa parla un testo”)
•  Disambiguazione di testi sintatticamente simili
!
NER: il riconoscimento del “contesto”
•  Analizzo il testo per riconoscere termini del mio dizionario (concetti
potenziali)
•  La “vicinanza” dei termini nel grafo mi permette di selezionare solo
quelli effettivamente pertinenti (“di cosa parla un testo”)
•  Disambiguazione di testi sintatticamente simili
“Nuovo record di gas serra nell’atmosfera terrestre”
“Riscaldamento notturno di una serra ad energia solare anziché a gas: è record”
!
NER: il riconoscimento del “contesto”
•  Analizzo il testo per riconoscere termini del mio dizionario (concetti
potenziali)
•  La “vicinanza” dei termini nel grafo mi permette di selezionare solo
quelli effettivamente pertinenti (“di cosa parla un testo”)
•  Disambiguazione di testi sintatticamente simili
“Nuovo record di gas serra nell’atmosfera terrestre”
“Riscaldamento notturno di una serra ad energia solare anziché a gas: è record”
!
NER: il riconoscimento del “contesto”
•  Analizzo il testo per riconoscere termini del mio dizionario (concetti
potenziali)
•  La “vicinanza” dei termini nel grafo mi permette di selezionare solo
quelli effettivamente pertinenti (“di cosa parla un testo”)
•  Disambiguazione di testi sintatticamente simili
“Nuovo record di gas serra nell’atmosfera terrestre”
“Riscaldamento notturno di una serra ad energia solare anziché a gas: è record”
!
Classificazione automatica
•  Data una tassonomia (Drupal), associo alle sue categorie dei concetti
di Wikipedia
•  Un testo viene classificato in funzione dei concetti riconosciuti in esso
!
Classificazione automatica
•  Data una tassonomia (Drupal), associo alle sue categorie dei concetti
di Wikipedia
•  Un testo viene classificato in funzione dei concetti riconosciuti in esso
Concetto X
Concetto Y
Concetto Z
!
Classificazione automatica
•  Data una tassonomia (Drupal), associo alle sue categorie dei concetti
di Wikipedia
•  Un testo viene classificato in funzione dei concetti riconosciuti in esso
Concetto X
Concetto Y
Concetto Z
!
Classificazione automatica
•  Data una tassonomia (Drupal), associo alle sue categorie dei concetti
di Wikipedia
•  Un testo viene classificato in funzione dei concetti riconosciuti in esso
Concetto X
Concetto Y
Concetto Z
!
Classificazione automatica
•  Data una tassonomia (Drupal), associo alle sue categorie dei concetti
di Wikipedia
•  Un testo viene classificato in funzione dei concetti riconosciuti in esso
Concetto X
Concetto Y
Concetto Z
!
Classificazione automatica
•  Le 11 categorie del portale Innolabsplus.eu sono collegate ad una
serie di concetti di Wikipedia
!
Innolabsplus.eu: come funziona
•  Recupera articoli da molteplici siti via feed RSS
–  …potenziati da un nostro tool (esterno a Drupal) che recupera l’intero
articolo insieme al feed
•  Analizza il testo dell’articolo con il servizio NER delle Dandelion API
•  Misura la “distanza” logica del testo con le categorie principali del sito
(classificazione automatica)
–  Se “affine” l’articolo viene pubblicato
–  I concetti estratti sono usati come “tag” liberi: utili per la ricerca, in ottica
SEO, etc.
–  Se l’articolo non è sufficientemente affine viene ignorato
•  In realtà si pubblica il link in un box secondario
•  Il tutto integrato in un modulo Drupal (7)
!
Struttura del modulo
Abbiamo cercato di strutturare il modulo utilizzando gli hook ove
strettamente necessario, delegando le chiamate API e la gestione del
modello a classi opportune.
!
Modello e integrazione con API

Il vocabolario da inviare a
Dandelion è salvata in una
entità costruita ad hoc, dove
troviamo:
•  Riferimento ID
tassonomia su Dandelion
•  Riferimento vocabolario
associato Drupal
•  Lingua
•  Ultima data di modifica
!
Modello e integrazione con API

Anche il singolo termine tassonomico
che arriva dal servizio esterno ha una
sua tabella ad hoc. Questa contiene:
•  Riferimento al vocabolario Dandelion
•  Riferimento alla relativa voce
tassonomica Drupal
•  Url Wikipedia che descrive il
concetto
•  Rilevanza
•  Lingua
•  Data di modifica
!
Modello e integrazione con API

Le chiamate implementate verso Dandelion sono:
-  Classificazione iptc
-  Classificazione con vocabolario custom
-  Invio del vocabolario custom
-  Entity extraction
-  Wikisearch
!
Modello e integrazione con API

Queste informazioni sono inviate a Dandelion per classificare le
tassonomie, come JSON tramite la chiamata API “https://
api.dandelion.com/datatxt/cl/models/v1”
E’ stata inoltre realizzata un’interfaccia di backend per gestire la creazione
di queste tassonomie speciali
!
Configurazione
•  Come primo step per l’utilizzo del modulo è necessaria un po’ di
configurazione…
1.  Inserire le credenziali di accesso al web service di entity recognition di
Dandelion: endpoint API, app ID e app key
!
Configurazione
2. Settare le preferenze del servizio, divisa in
due parti
Classificazione contenuti
•  Vocabolario assegnato per classificare gli
articoli
•  Possibilità di invio automatico del
vocabolario a Dandelion o esplicito
•  Vocabolario usato per interessi utente
•  Frequenza di invio di questo vocabolario a
Dandelion
•  Punteggio minimo necessario ad
approvare l’articolo
Estrazione entità
•  Vocabolario usato per gestire le entità
trovate dal servizio
•  Affidabilità minima per approvare il
“tagging” del contenuto con queste entità

Debug mode: lo vedremo più avanti
!
Recupero dei FEED
Per il recupero dei feed che possono essere convertiti in news vere e
proprie abbiamo esteso il modello che arriva dal modulo Feed importer di
Drupal, per potersi meglio integrare con il nostro tool di recupero degli
articoli (Social Proxy):
•  E’ stato quindi creato un feed particolare (Feed Proxy)
!
Promozione dei feed ad articolo
I feed vengono poi processati in automatico allo scattare del cron
standard di Drupal, tramite code:
•  Viene richiesto al Social Proxy il contenuto completo della pagina a cui
riferisce il feed
•  Viene analizzato con Dandelion rispetto alla tassonomia creata prima
•  Se l’articolo “parla” di argomenti definiti nella tassonomia con un grado
di affidabilità maggiore a quello impostato, il feed viene salvato come
articolo e il feed relativo “spubblicato”
•  Nel feed ci sono informazioni necessarie per recuperare informazioni
accessorie
•  Tramite una chiamata Server2Server verso questa applicazione si
recupera non solo il feed, ma anche il testo completo dell’articolo,
ripulito degli elementi decorativi della pagina.
!
Promozione dei feed ad articolo
In alternativa un redattore può promuovere un feed ad articolo tramite il
pulsante “Upgrade to content type”
!
Associazione a interessi utente
Non c’è solo la classificazione e pubblicazione automatica dei feed, ma il
sistema riesce anche a suggerire articoli alle persone che si registrano al
sito.
Questo avviene in due step:
1.  L’utente si registra al sito, e come avviene per la definizione
dell’albero di classificazione contenuti, inserisce delle preferenze di
argomenti, sempre collegati a concetti Wikipedia
2.  I testi dei feed vengono analizzati anche rispetto a questi vocabolari,
e se il grado di affidabilità è maggiore di quello soglia impostato,
l’articolo viene automaticamente suggerito all’utente

A livello implementativo ciò si traduce nel creare tassonomie collegate agli
utenti, che a loro volta sono collegate a concetti Wikipedia.
!
Associazione a interessi utente
!
Associazione a interessi utente
Anche in questo caso la ricerca è aiutata da una interfaccia che consente
di ricercare gli argomenti direttamente su Wikipedia
!
Modalità debug
Nel modulo è prevista inoltre
una modalità di debug
(attivabile da configurazione)
Grazie a questa modalità
cliccando su “Find related
concepts” in un articolo,
viene visualizzata la risposta
di Dandelion alla chiamata
API, stampata tramite DPM
per una lettura facilitata (per il
developer J)
!
Migliorie future
•  Suite di test per garantire affidabilità modulo
•  Rifattorizzazione del codice per utilizzo di hook meno generici utilizzati
in alcuni punti del codice (tipo il classico “hook_form_alter”)
•  Migliorie alle azioni javascript che consentono la definizione del
vocabolario dal backend
•  Migliorare la gestione degli allarmi (es. Feed fermo da X giorni o
nessun feed item promosso ad articolo da troppo tempo)
•  Aggiunta di alter nei processi di classificazione dei feed per permettere
a moduli esterni di “agganciarsi” alla procedura.
!
net7/dandelion-api-integration on Github!
https://github.com/net7/dandelion-api-integration
!
Thanks!
desantis@netseven.it - pardini@netseven.it
@lucadex - @naturemaxphoto
www.netseven.it
© Immagini
•  Slide 4: © David All; © Danilo Soscia
•  Slide 5: http://www.wrlwnd.com/gartners-top-5-over-hyped-
tech-of-2015/
•  Slide 6: http://www.scientificamerican.com/article/the-semantic-
web/; © W3C; @ Jim Hendler
•  Slide 7: © Paolo Ferragina
•  Slide 9: http://www.santannapisa.it
1 of 60

More Related Content

Similar to La semantica per automatizzare una redazione web: l’esperienza di Innolabsplus.eu

WebgrafiaWebgrafia
WebgrafiaStefano D'Ambrosio
6.4K views7 slides
educare alla ricercaeducare alla ricerca
educare alla ricercaMadiaA
1.5K views37 slides

Similar to La semantica per automatizzare una redazione web: l’esperienza di Innolabsplus.eu(20)

La semantica per automatizzare una redazione web: l’esperienza di Innolabsplus.eu

  • 1. ! La semantica per automatizzare una redazione web:! l’esperienza di Innolabsplus.eu Bologna 4 dicembre 2015 Luca De Santis – Massimiliano Pardini Net7 Srl - Pisa
  • 2. ! Innolabsplus.eu: cos’è http://innolabsplus.eu/! •  Innolabs+: portale informativo multilingua per professionisti e imprese sulle politiche comunitarie in materia di innovazione.! •  Realizzato nell’ambito di un progetto del Dipartimento di Scienze Politiche dell’Università di Pisa!
  • 5. ! •  Obiettivo: fornire informazioni aggiornate, selezionate e classificate secondo 3 obiettivi principali e 11 categorie! –  Crescita Intelligente, Crescita Inclusiva, Crescita Sostenibile! •  Fonti: oltre 40 siti italiani, francesi e comunitari in lingua inglese! •  Il lavoro di cernita è facile se hai a disposizione una redazione numerosa ed esperta di politiche comunitarie…! Innolabsplus.eu: cosa fa
  • 6. ! •  Obiettivo: fornire informazioni aggiornate, selezionate e classificate secondo 3 obiettivi principali e 11 categorie! –  Crescita Intelligente, Crescita Inclusiva, Crescita Sostenibile! •  Fonti: oltre 40 siti italiani, francesi e comunitari in lingua inglese! •  Il lavoro di cernita è facile se hai a disposizione una redazione numerosa ed esperta di politiche comunitarie…! Innolabsplus.eu: cosa fa •  …ma come fare quando il tuo team è decisamente più ristretto (e per di più pesantemente sovraccarico di lavoro???)!
  • 7. ! Innolabsplus.eu: come fa •  Perché non farsi aiutare… dalle macchine? •  Un sistema che completamente in automatico –  analizzi gli articoli prelevati da molteplici fonti –  decida di pubblicarli o meno se il loro testo è pertinente con le tematiche del portale
  • 8. ! Innolabsplus.eu: come fa •  Perché non farsi aiutare… dalle macchine? •  Un sistema che completamente in automatico –  analizzi gli articoli prelevati da molteplici fonti –  decida di pubblicarli o meno se il loro testo è pertinente con le tematiche del portale •  Da un lavoro puramente manuale…
  • 9. ! Innolabsplus.eu: come fa •  Perché non farsi aiutare… dalle macchine? •  Un sistema che completamente in automatico –  analizzi gli articoli prelevati da molteplici fonti –  decida di pubblicarli o meno se il loro testo è pertinente con le tematiche del portale •  Da un lavoro puramente manuale… •  ... allo sfruttamento dell’intelligenza della macchina
  • 10. ! Innolabsplus.eu: come fa •  Per far questo è necessario “comprendere” il testo •  Semantic web?
  • 11. ! Innolabsplus.eu: come fa •  Per far questo è necessario “comprendere” il testo •  Semantic web? –  Potente ma complesso lo stack tecnologico su cui è basato. –  La sua visione si è avverata solo in parte.
  • 12. ! Innolabsplus.eu: come fa •  Per far questo è necessario “comprendere” il testo •  Semantic web? –  Potente ma complesso lo stack tecnologico su cui è basato. –  La sua visione si è avverata solo in parte. •  “A little semantics goes a long way!” –  Jim Hendler
  • 13. ! Innolabsplus.eu: come fa •  Per far questo è necessario “comprendere” il testo •  Semantic web? –  Potente ma complesso lo stack tecnologico su cui è basato. –  La sua visione si è avverata solo in parte. •  Usare servizi semantici pronti per l’uso, via RESTful API •  “A little semantics goes a long way!” –  Jim Hendler
  • 14. ! Dandelion API •  Servizio commerciale dell’azienda Spazio Dati Srl: https://dandelion.eu/
  • 15. ! Dandelion API •  Servizio commerciale dell’azienda Spazio Dati Srl: https://dandelion.eu/ •  Parte da una ricerca dell’Università di Pisa –  TagMe
  • 16. ! Dandelion API •  Servizio commerciale dell’azienda Spazio Dati Srl: https://dandelion.eu/ •  Parte da una ricerca dell’Università di Pisa –  TagMe •  Potenziato anche nell’ambito del progetto di ricerca SenTaClAus –  Net7 come azienda coordinatrice –  Info: http://sentaclaus.netseven.it
  • 17. ! Dandelion API •  Servizio commerciale dell’azienda Spazio Dati Srl: https://dandelion.eu/ •  Parte da una ricerca dell’Università di Pisa –  TagMe •  Potenziato anche nell’ambito del progetto di ricerca SenTaClAus –  Net7 come azienda coordinatrice –  Info: http://sentaclaus.netseven.it •  I servizi usati in Innolabsplus.eu –  Named Entity Recognition (NER) –  Classificazione automatica
  • 18. ! Named Entity Recognition/Extraction •  È il servizio base delle Dandelion API •  Permette di identificate i concetti nel testo •  Concetti non parole chiave! –  Ciò di cui parla l’articolo •  Riconoscere concetti vuol dire: –  Risolvere eventuali omonimie •  Serra: Gas Serra? Richard Serra? Monte Serra? O la Serra in Agricoltura? –  Identificare i termini anche se sono scritti in forma alternativa o parziale –  In breve…. Riconoscere il contesto •  Un motore di ricerca full-text (es. Solr) può indicizzare le stringhe senza discernere il loro significato (approccio bag of words)
  • 22. ! “Concetti” vs keywords su Innolabsplus.eu •  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER
  • 23. ! “Concetti” vs keywords su Innolabsplus.eu •  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER
  • 24. ! “Concetti” vs keywords su Innolabsplus.eu •  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER
  • 25. ! “Concetti” vs keywords su Innolabsplus.eu •  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER
  • 26. ! “Concetti” vs keywords su Innolabsplus.eu •  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER
  • 27. ! “Concetti” vs keywords su Innolabsplus.eu •  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER
  • 28. ! “Concetti” vs keywords su Innolabsplus.eu •  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER
  • 29. ! •  Wikipedia usato come un dizionario controllato •  I link tra le pagine di Wikipedia rappresentano i legami logici tra i concetti: si crea così un grafo di termini •  Tanto le pagine (concetti) sono vicine, tanto maggiore è il loro legame semantico Come funziona la NER delle Dandelion API
  • 30. ! •  Wikipedia usato come un dizionario controllato •  I link tra le pagine di Wikipedia rappresentano i legami logici tra i concetti: si crea così un grafo di termini •  Tanto le pagine (concetti) sono vicine, tanto maggiore è il loro legame semantico Come funziona la NER delle Dandelion API
  • 31. ! •  Wikipedia usato come un dizionario controllato •  I link tra le pagine di Wikipedia rappresentano i legami logici tra i concetti: si crea così un grafo di termini •  Tanto le pagine (concetti) sono vicine, tanto maggiore è il loro legame semantico Come funziona la NER delle Dandelion API
  • 32. ! •  Wikipedia usato come un dizionario controllato •  I link tra le pagine di Wikipedia rappresentano i legami logici tra i concetti: si crea così un grafo di termini •  Tanto le pagine (concetti) sono vicine, tanto maggiore è il loro legame semantico Come funziona la NER delle Dandelion API
  • 33. ! NER: il riconoscimento del “contesto” •  Analizzo il testo per riconoscere termini del mio dizionario (concetti potenziali) •  La “vicinanza” dei termini nel grafo mi permette di selezionare solo quelli effettivamente pertinenti (“di cosa parla un testo”) •  Disambiguazione di testi sintatticamente simili
  • 34. ! NER: il riconoscimento del “contesto” •  Analizzo il testo per riconoscere termini del mio dizionario (concetti potenziali) •  La “vicinanza” dei termini nel grafo mi permette di selezionare solo quelli effettivamente pertinenti (“di cosa parla un testo”) •  Disambiguazione di testi sintatticamente simili “Nuovo record di gas serra nell’atmosfera terrestre” “Riscaldamento notturno di una serra ad energia solare anziché a gas: è record”
  • 35. ! NER: il riconoscimento del “contesto” •  Analizzo il testo per riconoscere termini del mio dizionario (concetti potenziali) •  La “vicinanza” dei termini nel grafo mi permette di selezionare solo quelli effettivamente pertinenti (“di cosa parla un testo”) •  Disambiguazione di testi sintatticamente simili “Nuovo record di gas serra nell’atmosfera terrestre” “Riscaldamento notturno di una serra ad energia solare anziché a gas: è record”
  • 36. ! NER: il riconoscimento del “contesto” •  Analizzo il testo per riconoscere termini del mio dizionario (concetti potenziali) •  La “vicinanza” dei termini nel grafo mi permette di selezionare solo quelli effettivamente pertinenti (“di cosa parla un testo”) •  Disambiguazione di testi sintatticamente simili “Nuovo record di gas serra nell’atmosfera terrestre” “Riscaldamento notturno di una serra ad energia solare anziché a gas: è record”
  • 37. ! Classificazione automatica •  Data una tassonomia (Drupal), associo alle sue categorie dei concetti di Wikipedia •  Un testo viene classificato in funzione dei concetti riconosciuti in esso
  • 38. ! Classificazione automatica •  Data una tassonomia (Drupal), associo alle sue categorie dei concetti di Wikipedia •  Un testo viene classificato in funzione dei concetti riconosciuti in esso Concetto X Concetto Y Concetto Z
  • 39. ! Classificazione automatica •  Data una tassonomia (Drupal), associo alle sue categorie dei concetti di Wikipedia •  Un testo viene classificato in funzione dei concetti riconosciuti in esso Concetto X Concetto Y Concetto Z
  • 40. ! Classificazione automatica •  Data una tassonomia (Drupal), associo alle sue categorie dei concetti di Wikipedia •  Un testo viene classificato in funzione dei concetti riconosciuti in esso Concetto X Concetto Y Concetto Z
  • 41. ! Classificazione automatica •  Data una tassonomia (Drupal), associo alle sue categorie dei concetti di Wikipedia •  Un testo viene classificato in funzione dei concetti riconosciuti in esso Concetto X Concetto Y Concetto Z
  • 42. ! Classificazione automatica •  Le 11 categorie del portale Innolabsplus.eu sono collegate ad una serie di concetti di Wikipedia
  • 43. ! Innolabsplus.eu: come funziona •  Recupera articoli da molteplici siti via feed RSS –  …potenziati da un nostro tool (esterno a Drupal) che recupera l’intero articolo insieme al feed •  Analizza il testo dell’articolo con il servizio NER delle Dandelion API •  Misura la “distanza” logica del testo con le categorie principali del sito (classificazione automatica) –  Se “affine” l’articolo viene pubblicato –  I concetti estratti sono usati come “tag” liberi: utili per la ricerca, in ottica SEO, etc. –  Se l’articolo non è sufficientemente affine viene ignorato •  In realtà si pubblica il link in un box secondario •  Il tutto integrato in un modulo Drupal (7)
  • 44. ! Struttura del modulo Abbiamo cercato di strutturare il modulo utilizzando gli hook ove strettamente necessario, delegando le chiamate API e la gestione del modello a classi opportune.
  • 45. ! Modello e integrazione con API Il vocabolario da inviare a Dandelion è salvata in una entità costruita ad hoc, dove troviamo: •  Riferimento ID tassonomia su Dandelion •  Riferimento vocabolario associato Drupal •  Lingua •  Ultima data di modifica
  • 46. ! Modello e integrazione con API Anche il singolo termine tassonomico che arriva dal servizio esterno ha una sua tabella ad hoc. Questa contiene: •  Riferimento al vocabolario Dandelion •  Riferimento alla relativa voce tassonomica Drupal •  Url Wikipedia che descrive il concetto •  Rilevanza •  Lingua •  Data di modifica
  • 47. ! Modello e integrazione con API Le chiamate implementate verso Dandelion sono: -  Classificazione iptc -  Classificazione con vocabolario custom -  Invio del vocabolario custom -  Entity extraction -  Wikisearch
  • 48. ! Modello e integrazione con API Queste informazioni sono inviate a Dandelion per classificare le tassonomie, come JSON tramite la chiamata API “https:// api.dandelion.com/datatxt/cl/models/v1” E’ stata inoltre realizzata un’interfaccia di backend per gestire la creazione di queste tassonomie speciali
  • 49. ! Configurazione •  Come primo step per l’utilizzo del modulo è necessaria un po’ di configurazione… 1.  Inserire le credenziali di accesso al web service di entity recognition di Dandelion: endpoint API, app ID e app key
  • 50. ! Configurazione 2. Settare le preferenze del servizio, divisa in due parti Classificazione contenuti •  Vocabolario assegnato per classificare gli articoli •  Possibilità di invio automatico del vocabolario a Dandelion o esplicito •  Vocabolario usato per interessi utente •  Frequenza di invio di questo vocabolario a Dandelion •  Punteggio minimo necessario ad approvare l’articolo Estrazione entità •  Vocabolario usato per gestire le entità trovate dal servizio •  Affidabilità minima per approvare il “tagging” del contenuto con queste entità Debug mode: lo vedremo più avanti
  • 51. ! Recupero dei FEED Per il recupero dei feed che possono essere convertiti in news vere e proprie abbiamo esteso il modello che arriva dal modulo Feed importer di Drupal, per potersi meglio integrare con il nostro tool di recupero degli articoli (Social Proxy): •  E’ stato quindi creato un feed particolare (Feed Proxy)
  • 52. ! Promozione dei feed ad articolo I feed vengono poi processati in automatico allo scattare del cron standard di Drupal, tramite code: •  Viene richiesto al Social Proxy il contenuto completo della pagina a cui riferisce il feed •  Viene analizzato con Dandelion rispetto alla tassonomia creata prima •  Se l’articolo “parla” di argomenti definiti nella tassonomia con un grado di affidabilità maggiore a quello impostato, il feed viene salvato come articolo e il feed relativo “spubblicato” •  Nel feed ci sono informazioni necessarie per recuperare informazioni accessorie •  Tramite una chiamata Server2Server verso questa applicazione si recupera non solo il feed, ma anche il testo completo dell’articolo, ripulito degli elementi decorativi della pagina.
  • 53. ! Promozione dei feed ad articolo In alternativa un redattore può promuovere un feed ad articolo tramite il pulsante “Upgrade to content type”
  • 54. ! Associazione a interessi utente Non c’è solo la classificazione e pubblicazione automatica dei feed, ma il sistema riesce anche a suggerire articoli alle persone che si registrano al sito. Questo avviene in due step: 1.  L’utente si registra al sito, e come avviene per la definizione dell’albero di classificazione contenuti, inserisce delle preferenze di argomenti, sempre collegati a concetti Wikipedia 2.  I testi dei feed vengono analizzati anche rispetto a questi vocabolari, e se il grado di affidabilità è maggiore di quello soglia impostato, l’articolo viene automaticamente suggerito all’utente A livello implementativo ciò si traduce nel creare tassonomie collegate agli utenti, che a loro volta sono collegate a concetti Wikipedia.
  • 56. ! Associazione a interessi utente Anche in questo caso la ricerca è aiutata da una interfaccia che consente di ricercare gli argomenti direttamente su Wikipedia
  • 57. ! Modalità debug Nel modulo è prevista inoltre una modalità di debug (attivabile da configurazione) Grazie a questa modalità cliccando su “Find related concepts” in un articolo, viene visualizzata la risposta di Dandelion alla chiamata API, stampata tramite DPM per una lettura facilitata (per il developer J)
  • 58. ! Migliorie future •  Suite di test per garantire affidabilità modulo •  Rifattorizzazione del codice per utilizzo di hook meno generici utilizzati in alcuni punti del codice (tipo il classico “hook_form_alter”) •  Migliorie alle azioni javascript che consentono la definizione del vocabolario dal backend •  Migliorare la gestione degli allarmi (es. Feed fermo da X giorni o nessun feed item promosso ad articolo da troppo tempo) •  Aggiunta di alter nei processi di classificazione dei feed per permettere a moduli esterni di “agganciarsi” alla procedura.
  • 60. ! Thanks! desantis@netseven.it - pardini@netseven.it @lucadex - @naturemaxphoto www.netseven.it © Immagini •  Slide 4: © David All; © Danilo Soscia •  Slide 5: http://www.wrlwnd.com/gartners-top-5-over-hyped- tech-of-2015/ •  Slide 6: http://www.scientificamerican.com/article/the-semantic- web/; © W3C; @ Jim Hendler •  Slide 7: © Paolo Ferragina •  Slide 9: http://www.santannapisa.it