La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.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
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
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
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.