usare l'intelligenza artificiale per classificare gli articoli di giornale

In questo esperimento di utilizzo dell'intelligenza artificiale applicata ai contenuti del web vengono riportati i metodi per classificare un contenuto in base alla sua apparteneza 'politica', ossia in base all'area di riferimento dei quotidiani.
L'esperimento viene condotto utilizzando un numero limitato di pagine di esempio; nel caso si voglia eseguirlo su scala più ampia è sufficiente aumentare il numero di esempi da prendere in considerazione.

la raccolta dei dati


In una prima fase vengono scaricate le pagine principali dei giornali che costituiranno la base del ragionamento.
Le testate vengono analizzate il giorno 26 dicembre 2018 e sono:
  1. http://www.repubblica.it
  2. http://www.ilsecoloxix.it/
  3. http://www.ilfoglio.it
  4. http://www.corriere.it
  5. http://www.gazzetta.it/
  6. http://www.ilsole24ore.com/
  7. http://www.ilmessaggero.it/
  8. http://www.avvenire.it/
  9. http://www.ilrestodelcarlino.it/
  10. http://www.corrieredellosport.it/
  11. http://www.liberoquotidiano.it/
  12. http://www.lanazione.it/
  13. http://www.tuttosport.com/
  14. http://www.gazzettino.it/
  15. http://www.ilfattoquotidiano.it/
  16. http://www.unionesarda.it/
  17. http://www.quotidiano.net/

Questo elenco, desunto da una pagina descrittiva dei quotidiani italiani, viene utilizzato senza 'marcare' i giornali a seconda di un possibile raggruppamento, 'politico' o meno, costituiscono cioè quello che si chiama un insieme di dati 'non supervisionato'.
Procederemo a 'marcare' queste testate a seconda del loro raggruppamento, ottenuto tramite algoritmi di intelligenza artificiale applicati ai contenuti delle home page.
Il raggruppamento delle testate viene effettuato tramite gli argomenti che hanno in comune; l'analisi degli argomenti per ogni giornale viene effettuata tramite algoritmo LDA (Latent Dirichlet Allocation).
Sui testi delle home page viene eseguita una preparazione dei contenuti scaricati, eliminando ovviamente quanto non è utile (tag html, per esempio) e mantenendo quanto invece è contenuto utile al raggruppamento.
In particolare vengono effettuati:
  • conversione in minuscolo di tutte le parole
  • eliminazione delle parole più corte di tre caratteri
  • eliminazione delle punteggiature
  • eliminazione dele parole appartenenti ad una lista di termini inutili
Da una prima analisi dei termini più frequenti otteniamo i valori assoluti di frequenza:
natale308
2018175
dicembre168
condividi143
foto97
video95
facebook89
sport82
calcio79
twitter79
serie69
articolo63
roma57
news56
cronaca55
notizie54
economia53
motori52
mostra51
italia50
politica48
sconto48
catania42
manovra42

Questi termini non sembrano utili al raggruppamento di cui abbiamo bisogno.

Proviamo ora a lanciare un 'topic extractor' con 'Parallel LDA'; è necessario prestabilire un numero di argomenti desunti dai contenuti delle pagine con cui vogliamo lavorare; in una prima fase, anche in base ad esperienze passate, fissiamo in 8 il numero di argomenti da utilizzare.

Ogni argomento in LDA viene definito da un certo numero di termini; il numero di termini che definiscono un argomento è anch'esso regolabile, in questo caso definiamo il valore di 12. Avremo quindi 8 argomenti definiti ognuno da dodici termini.

Ecco gli 8 argomenti (topic)  estratti ed i termini che li descrivono:

topic_0foto, commenta, foglio, lapresse, perché, editoriali, papa, santo, redazione, popotus, matteo, francesco
topic_12018, dicembre, manovra, sole, fisco, natale, mercati, articoli, guida, 2019, tecnologia, futuro
topic_2sconto, natale, cronaca, calcio, ancona, marche, codice, esteri, firenze, prato, messa, milano
topic_3serie, calcio, mostra, natale, notizie, sport, gazzetta, news, juventus, motori, formula, classifica
topic_4natale, video, articolo, foto, sport, 2018, italia, catania, dicembre, motori, genova, salute
topic_5condividi, politica, economia, cronaca, manovra, società, lobby, magazine, giustizia, giornalista, entra, buon
topic_6twitter, facebook, messenger, natale, cagliari, provincia, libero, sardegna, salvini, trump, sassari, standard
topic_7condividi, natale, commenti, vigilia, notte, news, lauto, altre, guarda, manovra, quotidiano, choc

Per ognuna delle fonti giornalistiche LDA assegna un valore di appartenenza più o meno alto ad uno degli argomenti, 'assegnando' una testata all'argomento per la quale essa ha valore più alto:



http://www.repubblica.it7.796238343996486E-57.476949718992777E-50.22305963662353330.224906352512285360.321202876640788840.230579141245100544.717523965002032E-55.20858580120428E-5topic_4
http://www.ilsecoloxix.it/0.090790141326218970.088949285794311510.029511204149504595.013037621659187E-50.78267353255449992.1392240609370323E-50.0079876845954500541.662896318899486E-5topic_4
http://www.ilfoglio.it0.78515553235732043.8978853641118376E-51.2054947484875298E-48.18578280114559E-50.18747800789080620.0270733267742291242.459340815321863E-52.7153412989608616E-5topic_0
http://www.corriere.it4.172988996118277E-50.122394998387259440.095745729340989390.07205756231800840.7096709847103183.5865183500852164E-52.5250864232539964E-52.787930573018043E-5topic_4
http://www.gazzetta.it/5.8770391467172224E-55.636349769936777E-50.082713633487008980.83854407771880950.078501818083693755.051081793763985E-53.556211572115847E-53.926388766229186E-5topic_3
http://www.ilsole24ore.com/1.714949656013758E-50.91019063520555335.086592986527814E-53.4539964141517684E-50.089247684796617114.3729000219036633E-41.0377204677492786E-51.1457400394860798E-5topic_1
http://www.ilmessaggero.it/2.5990122734866666E-52.492571831499879E-50.0500264987624315160.020544411598187820.37731771370592242.233747853068248E-51.572669041724373E-50.5520223959234605topic_7
http://www.avvenire.it/0.76415584067599466.221986705779273E-51.9242670315639727E-41.306652890155729E-40.235320487698644035.575907289897619E-53.9257146961785176E-54.334354627085734E-5topic_0
http://www.ilrestodelcarlino.it/4.399147656885672E-54.218984128709685E-50.9984179270711858.86010862122087E-50.00131347199298754233.7808927391927515E-52.6619356132078313E-52.9390248235163644E-5topic_2
http://www.corrieredellosport.it/3.0365302491686767E-52.912171612957172E-59.006441334670315E-50.99364181290808250.0061438770221771422.6097771811434738E-51.83741229921963E-52.0286742968711875E-5topic_3
http://www.liberoquotidiano.it/3.704490427373912E-53.552776023233555E-50.0183650476415973580.0064639202979110980.23568501680070610.047495284070972270.69189340920881762.4749315489533766E-5topic_6
http://www.lanazione.it/4.536839242797987E-54.351036667276253E-50.99948625186400539.137426525179325E-52.3674009685633265E-43.899233190122821E-52.745253147595512E-53.031015140857092E-5topic_2
http://www.tuttosport.com/4.203241200978251E-54.031100862984001E-51.2466941602983826E-40.99844836725585740.00125497937961115683.6125189189728313E-52.543392110577034E-52.808141756634578E-5topic_3
http://www.gazzettino.it/2.858990401801571E-52.7419027661993362E-50.00360696713771898165.758153052067045E-50.175553183848075172.457188731702136E-51.7299824788701687E-50.8206843868398995topic_7
http://www.ilfattoquotidiano.it/2.330392848556301E-52.234953497486821E-56.912016266922975E-54.693530515168555E-50.253914141932382260.74589447875660641.4101267336701446E-51.5569112393241906E-5topic_5
http://www.unionesarda.it/1.9667594981625684E-50.029094546593852920.049002403543223830.0131236695544715040.29473623152502540.00389366144620670530.61011668002646151.3139715776393183E-5topic_6
http://www.quotidiano.net/4.242787472184653E-54.069027548692835E-50.90020741383299148.545191203453189E-50.099533532192368393.6465073688563895E-52.5673216614592657E-52.8345622093718716E-5topic_2

Ad ogni colonna corrisponde il valore assegnato per l'argomento, da topic_0 a topic_7; nell'ultima colonna l'argomento assegnato alla testata.

A questo punto si può tentare una rappresentazione nello spazio dei valori ottenuti, così da avere una prima impressione sulla coerenza dei risultati.
Per rappresentare sullo spazio bidimensionale le testate giornalistiche i valori dell atabella precedente vengono ridotti a due dimensioni tramite un processo di riduzione dimensionale (PCA); ad ogni argomento (topic) viene assegnato un colore diverso.


Tenendo conto che ogni punto rappresenta una delle 17 testate vediamo che i punti con colore (=argomento assegnato) simile sono vicini, questo ci conferma la validità dell'analisi LDA.
Tuttavia questo non è sufficiente per classificare in una zona 'politica' le nostre testate, ma solo per classificarle in un dato piuttosto grezzo che è l'argomento assegnato.

Possiamo fare un passo avanti utilizzando un 'classico' dell'intelligenza artificiale, ovvero la sua capacità di raggruppamento (o clusterizzazione).
Utilizziamo l'algoritmo K-means che ci consente di raggruppare le testate in un certo numero di gruppi o clusters; il raggruppamento lo facciamo eseguire in base a tutti i pesi degli argomenti (tabella precedente) calcolati, e non solo in base all'argomento assegnato come abbiamo fatto per l'ultimo grafico.

Anche nel caso fi K-means dobbiamo indicare il numero di raggruppamenti che vogliamo utilizzare: in questo caso indichiamo il valore di 5, per avere 5 zone 'politiche' nelle quali suddividere i nostri giornali.
Utilizzando la stessa riduzione dimensionale per la rappresentazione bidimensionale prima effettuata rappresentiamo le testate con un colore diverso questa volta a seconda del raggruppamento o cluster, e non dell'argomento come fatto prima; questo il risultato:

Questa volta avremo più punti dello stesso colore perchè appartenenti a testate dello stesso cluster; quasi sempre i colori vengono a trovarsi nella stessa zona dello spazio bidimensionale, evidenziando la coerenza tra l'analisi LDA ed il raggruppamento K-Means pur nella riduzione del PCA.
Ecco il risultato del raggruppamento:



  Naturalmente quanto questa suddivisione sia 'politica' nel senso stretto del termine è discutibile, ma l'appartenenza allo stesso gruppo di argomenti è palese; si veda il caso viola dei quotidiani sportivi.

Volendo rappresentare i dati in tre dimensioni per una visione più accurata è sufficiente impostare PCA per ridurre i valori a 3 in modo da utilizzarli per lo spazio:

Per una più precisa collocazione delle testate in gruppi più omogenei 'politicamente' si può procedere iin questo modo:
  1. incrementare il numero di pagine analizzate, magari utilizzandone un certo numero risultanti dalla ricerca per keyword prefissate su ogni testata (es.: tutte le risposte alla richiesta 'governo')
  2. utilizzare algoritmi più evoluti rispetto ad LDA; in particolare tutti quelli di deep learning legati al word embedding possono risultare più completi, mettendo in relazione le parole tra loro a seconda dei reciproci rapporti di vicinanz
A questo punto può cominciare la seconda parte dell'avventura: a partire da un testo pubblicato, quale potrebbe essere la testata alla quale è più vicino?

Lo vedremo nel prossimo articolo.



Biblio / linkografia


Node description for Topic Extractor (Parallel LDA)

Newman, Asuncion, Smyth and Welling, Distributed Algorithms for Topic Models JMLR (2009), with SparseLDA sampling scheme and data structure from Yao, Mimno and McCallum, Efficient Methods for Topic Model Inference on Streaming Document Collections, KDD (2009).
Node description for PCA

Principal component analysis (PCA)