60
La semantica per automatizzare una redazione web: l’esperienza di Innolabsplus.eu Bologna 4 dicembre 2015 Luca De Santis – Massimiliano Pardini Net7 Srl - Pisa

La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

Embed Size (px)

Citation preview

Page 1: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

La semantica per automatizzare una redazione web:!

l’esperienza di Innolabsplus.eu Bologna 4 dicembre 2015

Luca De Santis – Massimiliano Pardini Net7 Srl - Pisa

Page 2: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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!

Page 3: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Innolabsplus.eu: cos’è

Page 4: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Innolabsplus.eu: cos’è

Page 5: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

•  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

Page 6: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

•  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???)!

Page 7: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 8: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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…

Page 9: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 10: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Innolabsplus.eu: come fa

•  Per far questo è necessario “comprendere” il testo

•  Semantic web?

Page 11: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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.

Page 12: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 13: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 14: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Dandelion API

•  Servizio commerciale dell’azienda Spazio Dati Srl: https://dandelion.eu/

Page 15: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Dandelion API

•  Servizio commerciale dell’azienda Spazio Dati Srl: https://dandelion.eu/

•  Parte da una ricerca dell’Università di Pisa –  TagMe

Page 16: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 17: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 18: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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)

Page 19: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Perché Solr non basta

Page 20: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Perché Solr non basta

Page 21: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Perché Solr non basta

Page 22: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

“Concetti” vs keywords su Innolabsplus.eu

•  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER

Page 23: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

“Concetti” vs keywords su Innolabsplus.eu

•  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER

Page 24: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

“Concetti” vs keywords su Innolabsplus.eu

•  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER

Page 25: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

“Concetti” vs keywords su Innolabsplus.eu

•  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER

Page 26: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

“Concetti” vs keywords su Innolabsplus.eu

•  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER

Page 27: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

“Concetti” vs keywords su Innolabsplus.eu

•  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER

Page 28: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

“Concetti” vs keywords su Innolabsplus.eu

•  Analisi semantica del testo di un articolo (recuperato in automatico) per identificare i concetti attraverso i servizi NER

Page 29: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

•  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

Page 30: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

•  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

Page 31: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

•  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

Page 32: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

•  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

Page 33: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 34: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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”

Page 35: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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”

Page 36: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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”

Page 37: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 38: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 39: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 40: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 41: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 42: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Classificazione automatica

•  Le 11 categorie del portale Innolabsplus.eu sono collegate ad una serie di concetti di Wikipedia

Page 43: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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)

Page 44: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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.

Page 45: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 46: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 47: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Modello e integrazione con API

Le chiamate implementate verso Dandelion sono: -  Classificazione iptc -  Classificazione con vocabolario custom -  Invio del vocabolario custom -  Entity extraction -  Wikisearch

Page 48: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 49: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 50: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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

Page 51: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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)

Page 52: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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.

Page 53: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Promozione dei feed ad articolo

In alternativa un redattore può promuovere un feed ad articolo tramite il pulsante “Upgrade to content type”

Page 54: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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.

Page 55: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Associazione a interessi utente

Page 56: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Associazione a interessi utente

Anche in questo caso la ricerca è aiutata da una interfaccia che consente di ricercare gli argomenti direttamente su Wikipedia

Page 57: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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)

Page 58: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

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.

Page 59: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

net7/dandelion-api-integration on Github!

https://github.com/net7/dandelion-api-integration

Page 60: La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu

!

Thanks! [email protected] - [email protected]

@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