Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi - Corsi

Pagina creata da Sara Venturi
 
CONTINUA A LEGGERE
Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi - Corsi
UNIVERSITÀ DEGLI STUDI DI CAGLIARI
                  FACOLTÀ DI INGEGNERIA
        Dipartimento di Ingegneria Elettrica ed Elettronica
       Corso di Laurea in Ingegneria Elettrica ed Elettronica

                        Tesi di Laurea Triennale

 Studio e sperimentazione di metriche
discriminanti per la selezione di feature
finalizzata alla categorizzazione di testi

Relatore:                                                Laureando:

Prof. Giuliano Armano                                  Dario Deledda

                          Anno Accademico 2013/2014
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Indice
Ringraziamenti.......................................................................................................................3
Ambito della tesi....................................................................................................................4
Classificazione testi................................................................................................................4
Definizioni formale di classificazione testi............................................................................5
Approccio machine learning..................................................................................................7
   Preparazione documenti....................................................................................................7
   Addestramento del classificatore.......................................................................................8
       Indicizzazione dei documenti.......................................................................................8
       Definizione di termine o parola....................................................................................8
       Riduzione dei termini (Riduzione dimensionale).........................................................8
       Rappresentazione dei documenti..................................................................................9
       Feature per i termini tipo TF*IDF.................................................................................9
       Esecuzione del classificatore......................................................................................10
Esempi di algoritmi di classificazione..................................................................................10
   K-NN...............................................................................................................................10
       Il parametro k..............................................................................................................10
       Fase di training............................................................................................................11
       Calcolo della distanza.................................................................................................11
       Fase di classificazione e metriche...............................................................................11
   Support Vector Machines.................................................................................................11
       Funzionamento............................................................................................................12
       Fase di training............................................................................................................12
       Fase di classificazione.................................................................................................13
       Feature e metriche.......................................................................................................14
   Applicazioni.....................................................................................................................14
Sviluppo tesi.........................................................................................................................16
   Framework di test............................................................................................................16
   Organizzazione del corpus...............................................................................................17
   Architettura del framework di test...................................................................................18
   Corpus..............................................................................................................................19
   Tree (Albero)...................................................................................................................20
   Elaborazione....................................................................................................................20
   Linguaggio di sviluppo....................................................................................................21
   Il linguaggio Python........................................................................................................21
   Limiti del multithreading di Python (GIL)......................................................................22
   Librerie Python usate.......................................................................................................23
       NLTK 3.0....................................................................................................................23
       LXML 3......................................................................................................................23
       MatplotLib..................................................................................................................23
Metriche................................................................................................................................24
   Metriche comunemente usate..........................................................................................24

Dario Deledda                                                                                                                 Pag. 2 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

  Matrice di confusione normalizzata.................................................................................25
  Test svolti.........................................................................................................................27
  Metrica e metodologia di test iniziale..............................................................................27
  Capacità Discriminante....................................................................................................30
  Capacità Caratteristica.....................................................................................................31
  Comportamento atteso.....................................................................................................31
  Analisi del diagramma.....................................................................................................33
      StopWord....................................................................................................................34
Sperimentazioni e considerazioni sul corpus completo.......................................................35
  Classe E51.......................................................................................................................36
      Sottoclasse E511.........................................................................................................37
      Sottoclasse E513.........................................................................................................37
  Nota tecniche...................................................................................................................38
Conclusioni...........................................................................................................................38
Possibili sviluppi..................................................................................................................38
Appendici.............................................................................................................................40
  Appendice A: Albero categorie Reuters..........................................................................40
  Appendice B: Grafici delta phi dei test su corpus completo...........................................46
Bibliografia...........................................................................................................................54

Ringraziamenti
Desidero ringraziare tutta la mia famiglia e gli amici per avere atteso tutto questo tempo
con pazienza e il Prof. Armano per l'amicizia di questi anni e tutta la disponibilità ed il
supporto durante lo svolgimento di questa tesi.

Dario Deledda                                                                                                                 Pag. 3 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Ambito della tesi
Il progetto si svolge nell'ambito della Text Categorization. La Text Categorization o text
classification (abbreviata come TC) è, in ambito di intelligenza artificiale, un'attività che si
occupa di classificare testi digitali in linguaggio naturale assegnando in maniera
automatica collezioni di documenti ad una o più classi appartenenti ad un insieme detto
"set di classi" predefinito.
Per realizzare ciò si utilizzano solitamente degli approcci di apprendimento automatico di
tipo supervisionato, dove è necessario addestrare il sistema tramite autoapprendimento ad
esempi (anche chiamate istanze) da cui generare un modello generale per la classificazione
automatica. Esistono tuttavia altri approcci, come quello non supervisionato o semi-
supervisionato, ma solitamente con risultati peggiori.[12]
L'ambito di studio della presente tesi è come da titolo:”Studio e sperimentazione di
metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.”
Si vuole cioè investigare la performance di specifiche metriche usate per selezionare le
feature usate nella Text Categorization per discriminare le classi di appartenenza dei
documenti esaminati.

Classificazione testi
Classificazione (o categorizzazione) è un processo di etichettatura dati con categorie prese
da un insieme predefinito, supposte essere semanticamente rilevanti per il problema in
esame.

L'assenza di una struttura interna nell'insieme di categorie (o l'assenza di tecniche in grado
di tenere conto di questa struttura) porta a cosiddetti modelli "flat", in cui categorie sono
considerate indipendenti l'una dall'altra.

Nel caso in cui le categorie siano organizzate in una tassonomia, tipicamente attraverso
delle realazioni is-a o part-of, e assumendo che si vuole tener conto anche di queste
informazioni al fine di migliorare le prestazioni di un sistema di classificazione, il
corrispondente processo di etichettatura prende il nome di classificazione gerarchica (HC).

Dario Deledda                                                                                                                 Pag. 4 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Questa area di ricerca ha ricevuto particolare attenzione dopo l'esplosione del World Wide
Web, in cui molti problemi e le corrispondenti applicazioni software si basano su una
tassonomia di base (ad esempio, ricerca sul web con motori di ricerca, mercati online,
sistemi di raccomandazione).

Definizioni formale di classificazione testi
Sia D il dominio dei documenti.

Sia C={c1 ... c n} un insieme di categorie predefinite.

Il task della classificazione di testi è di approssimare la funzione target sconosciuta
   i
  Φ : D×C →{T , F } con una funzione Φ : D×C →{T , F } chiamata classificatore tale
che Φ coincida il più possibile con Φi e dove:

     •     T è l'insieme dei documenti riconosciuti come appartenenti alle categorie C

     •     F l'insieme dei documenti riconosciuti come non appartenenti alle categorie C

Si assume inoltre che:

     •     Le categorie sono soltanto etichette simboliche, e non è disponibile la conoscenza
           del loro significato per aiutarsi nel costruire il classificatore

     •     Non è disponibile conoscenza esogena (data di pubblicazione, autore, tipo di
           documento). Un documento viene classificato soltanto dal suo contenuto

Queste assunzioni ci permettono di fare un discorso del tutto generale. Chiaramente per
implementare un’applicazione è legittimo usare tutta l’informazione disponibile

Visto che la classificazione di un testo si basa sulla semantica, e dato che la semantica di
un documento è una nozione soggettiva ne segue che l’appartenenza di un documento a
una categoria non può essere decisa deterministicamente.

Questo è esemplificato dal “Inter-indexer inconsistency”: ovvero quando due esperti umani
decidono se classificare un documento d j                             sotto c i , si possono trovare in disaccordo,

Dario Deledda                                                                                                                 Pag. 5 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

e questo fatto ha un'alta probabilità che succeda sopratutto per categorie soggettivamente
ambigue o che permettono un'interpretazione semantica ambigua.

Al processo della Classificazione si possono aggiungere dei vincoli: Per un dato k o
esattamente k ( o ≤ k , o ≥ k ) elementi di C vengano assegnati ad un documento d j .

Inoltre la classificazione può essere principalmente di tre tipi:

     •     Single Label: soltanto una categoria può essere assegnata a un singolo documento
           (k=1)

     •     Multi Label: 0 o più categorie possono essere assegnate a un singolo documento

     •     Binary: un documento o appartiene alla categoria c i o appartiene all'insieme
           delle categorie composte dalla negazione di c i cioè: ‫ ד‬c i

La classificazione avviene principalmente usando due metodi:

     •     DOCUMENT PIVOTED CATEGORIZATION: Dato un documento vogliamo
           trovare tutti le categorie sotto il quale può essere classificato

     •     CATEGORY PIVOTED CLASSIFICATION: Data una categoria vogliamo trovare
           tutti i documenti che possono essere classificati sotto di essa

Inoltre i classificatori possono essere ulteriormente catalogati in:

     •     Hard: classificatore Φi che restituisce un valore booleano

     •     Ranking: classificatore Φi che restituisce un valore [0,1]

     •     Sistemi di Classificazione semi-automatici: esperti umani che classificano
           aiutandosi con classificatori di tipo ranking. [1]

Dario Deledda                                                                                                                 Pag. 6 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Approccio machine learning
Nell'ambito della classificazione di testi, i metodi attualmente in uso si basano su un
approccio di tipo “machine learning”, cioè non si cerca di spiegare al calcolatore le regole
per classificare ma si fornisce allo stesso una serie di esempi negativi e positivi. Sarà il
software usato a decidere ( in base agli esempi ) la categorie di appartenenza dei testi che
esaminerà in futuro. In parole semplici il software “estrae” dagli esempi le regole per la
classificazione dei testi.
     •     Non si costruisce un classificatore, ma si ricavano i parametri da usare in dei
           classificatori che vanno bene per ogni sotto-dominio di interesse
     •     La risorsa chiave sono i documenti classificati manualmente(spesso sono già
           disponibili ma anche se non sono disponibili è piuttosto facile creare un insieme di
           esempi per far apprendere il sistema)
     •     È più facile classificare documenti manualmente piuttosto che stabilire delle regole
           per la classificazione dei documenti

La metodologia seguita usualmente è composta dei seguenti passi:

Preparazione documenti
Il corpo iniziale dei documenti già classificati viene diviso in tre insiemi che devono essere
disgiunti tra di loro, ovvero nessun documento deve appartenere a più di un insieme per
volta:
     •     Training Set: Insieme dei documenti che vengono usati per addestrare il
           classificatore
     •     Validation Set: Una volta costruito il classificatore potrebbe essere necessario
           aggiustare dei parametri. Per valutare il giusto valore da assegnare ai parametri si
           fanno test su questo insieme
     •     Test Set: Usato per testare l’efficacia del classificatore
Spesso nella pratica il “Validation Set” ed il “Test Set” sono lo stesso insieme di documenti

Dario Deledda                                                                                                                 Pag. 7 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Addestramento del classificatore
L'addestramento di un classificatore si articola in tre fasi:
     •     Indicizzazione dei documenti e riduzione dimensionale
     •     Esecuzione del classificatore
     •     Valutazione dell’efficacia del classificatore tramite metriche

Indicizzazione dei documenti
I documenti solitamente non vengono interpretati direttamente da un classificatore, per
questo si applica una procedura che mappa un documento in una rappresentazione
compatta del suo contenuto, cioè si cerca una forma ridotta di informazioni con cui
rappresentare il documento.

Un documento d j                  viene rappresentato come un vettore di pesi d j =⟨w(1 j ) , … , w(|T| j) ⟩

Dove:

     •         T     è l’insieme dei termini

     •        0< wkj
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

altri strumenti vengono effettuati su tutti i documenti almeno i due seguenti passi:

     •     Rimozione delle stop word: ovvero la rimozione dal documento di articoli,
           preposizioni, congiunzioni ecc.. cioè termini che non forniscono almeno in linea
           teorica informazioni semantiche sul documento.
     •     Stemming (raggruppare le parole per la loro radice morfologica): ci sono
           diverse controversie sull'utilizzo dello stemming ma in letteratura la tendenza è
           quella di adottarlo in quanto riduce:
                 •     Lo spazio dei termini
                 •     Il livello di dipendenza stocastica tra i termini

Rappresentazione dei documenti
Un insieme di n documenti può essere rappresentata come una matrice dei termini
contenuti del documento.
Un elemento della matrice rappresenta il “peso” di un termine o parola del documento. Un
valore uguale a zero significa che il termine non è significativo nel documento o non è
presente nel documento.

                                                   (                                     )
                                                       .  T1 T2               .. T t
                                                       D1 w 11 w 21           .. w t 1
                                                       D2 w 12 w 22           .. w t 2
                                                       ⋮   ⋮    ⋮             ⋮ ⋮
                                                       Dn w 1n w 2n           .. w tn

Questo tipo di rappresentazione permette di trattare l'insieme dei documenti con sistemi di
calcolo matriciale ed è particolarmente adatto alle nuove tecnologie di calcolo parallelo
quali GPGPU ( general-purpose computing on graphics processing units ).

Feature per i termini tipo TF*IDF
Si tratta di una metodologia di rappresentazione dei pesi del vettore per il pattern
recognition. Per poter confrontare due documenti tra di loro bisogna trovare un modo

Dario Deledda                                                                                                                 Pag. 9 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

oggettivo per rappresentarli in una qualche forma confrontabile matematicamente.
Una forma piuttosto semplice ed usata in letteratura è la forma TF*IDF.
Dove i termini sono:
     •     TF Frequenza del termine nel documento in esame
     •     IDF = log(N/n)
     •     N numero totale di documenti nel training set
     •     n numero di documenti del training set che contengono il termine T
di conseguenza per ogni termine abbiamo TF*IDF [6].

Esecuzione del classificatore
Avendo costruito un insieme di dati manipolabili dal classificatore si procede
nell'elaborazione dei dati stessi da parte del classificatore.
Naturalmente esistono in letteratura diversi tipi di classificatori basati su addestramento
tramite esempi, per citare solo alcuni:
K-NN (k nearest neighbours)
SVM (Support vector machines)

Esempi di algoritmi di classificazione
K-NN
Il k-nearest neighbor (k-NN) è un algoritmo utilizzato nel riconoscimento di pattern per la
classificazione di oggetti basandosi sulle caratteristiche degli oggetti vicini a quello in
esame. È probabilmente uno degli l'algoritmo più semplici fra quelli disponibili nel settore
dell'apprendimento automatico (machine learning).

Il parametro k
Un oggetto viene classificato valutando la classe di appartenenza degli oggetti vicini.
Viene scelta la classe a cui appartengono il maggior numero di vicini all'oggetto da
classificare.
La vicinanza viene definita con una distanza di qualche tipo, di solito geometrica in uno

Dario Deledda                                                                                                               Pag. 10 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

spazio N-dimensionale e non sempre si tratta di spazi euclidei.
Per tarare meglio il funzionamento spesso oltre alla classe di appartenenza si assegna
anche un peso in base alla distanza.

In termini operativi un oggetto è classificato in base alla classe di appartenenza dei suoi k
vicini (k indica cioè quanti oggetti vicini vanno presi in considerazione per valutare la
classe di appartenenza dell'oggetto da valutare).

Fase di training
Lo spazio viene diviso in regioni in base alle posizioni e alle caratteristiche degli oggetti di
training.
Si ottengono tanti insiemi quante sono le classi usate per l'addestramento.

Calcolo della distanza
Per il calcolo della distanza gli oggetti sono rappresentati attraverso vettori in uno spazio
multidimensionale. Nei casi più semplici si usa la distanza euclidea in quanto è la più
semplice da gestire, in letteratura sono usati spesso anche altri tipi di distanze. Nel caso in
cui si debbano manipolare stringhe si possono usare altre distanze quali ad esempio la
distanza di Hamming.

Fase di classificazione e metriche
Un punto (che rappresenta un oggetto) è assegnato alla classe C se questa è la più frequente
fra i k esempi più vicini all'oggetto sotto esame, la vicinanza tra gli oggetti si misura in
base alla distanza fra punti . I vicini sono presi da un insieme di oggetti per cui è nota la
classificazione corretta. Nel caso della regressione per il calcolo della media
(classificazione) si usa il valore della proprietà considerata.
Come si può notare la metrica è un componente fondamentale del processo di
classificazione in quanto determina proprio la bontà della classificazione stessa. [13]

Support Vector Machines
Le macchine a vettori di supporto (SVM, dall'inglese Support Vector Machines), o

Dario Deledda                                                                                                               Pag. 11 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

macchine kernel, sono un insieme di metodi di apprendimento supervisionato per la
regressione e la classificazione di pattern, sviluppati negli anni '90 dai laboratori Bell
AT&T.
Sono noti come classificatori a massimo margine, poiché minimizzano l'errore di
classificazione e massimizzano il margine della distanza. Possono essere considerate un
caso speciale di regolarizzazione di Tichonov.[7]

Funzionamento
Le macchine a vettori di supporto possono essere pensate come una tecnica alternativa per
l’apprendimento di classificatori polinomiali, contrapposta alle tecniche classiche di
addestramento delle reti neurali.
Le reti neurali ad un solo strato hanno un algoritmo di apprendimento efficiente, ma sono
utili soltanto nel caso di dati linearmente separabili. Viceversa, le reti neurali multistrato
possono rappresentare funzioni non lineari, ma sono difficili da addestrare a causa dell'alto
numero di dimensioni dello spazio dei pesi e poiché le tecniche più diffuse, come la back-
propagation, permettono di ottenere i pesi della rete risolvendo un problema di
ottimizzazione non convesso e non vincolato che, di conseguenza, presenta un numero
indeterminato di minimi locali.
La tecnica di addestramento SVM risolve entrambi i problemi: presenta un algoritmo
efficiente ed è in grado di rappresentare funzioni non lineari complesse. I parametri
caratteristici della rete sono ottenuti mediante la soluzione di un problema di
programmazione quadratica convesso con vincoli di uguaglianza o di tipo box (in cui il
valore del parametro deve essere mantenuto all’interno di un intervallo), che prevede un
unico minimo globale.

Fase di training
Sia dato un problema di classificazione (per semplicità in due classi) e si supponga
                                                                                                                             i     n
di disporre di l osservazioni, ciascuna costituita da una coppia: un vettore                                               x ∈R
un' etichetta y i∈{−1 , 1} , il cui valore definisce l'appartenenza del vettore                                            x i ad una
classe o all'altra.
Si consideri il problema della definizione di una macchina per l'apprendimento della

Dario Deledda                                                                                                               Pag. 12 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

                    i      i
relazione         x ⇒y
Una macchina è definita mediante un insieme di possibili funzioni
                                                                     n
                                                          f (α): R ⇒{−1 , 1}
in cui α rappresenta il vettore dei parametri modificabili. La macchina è deterministica,
cioè, assegnati il vettore di ingresso x ed il vettore dei parametri                                              α , la macchina
fornisce sempre la stessa uscita                     f (x , α) . Addestrare la macchina significa determinare
il vettore dei parametri α in modo da minimizzare una certa misura di errore.[8]
                                                                                                                             [
                                                                                                                             .8

Fase di classificazione
L’utilizzo di SVM come macchine per l’apprendimento corrisponde a classificare gli
elementi di due insiemi di punti di                           Rn mediante superfici di separazione definite da
iperpiani        H={x∈Rn :wT x +b=0} con margine di separazione (=la minima distanza ρ
tra i punti in A ∪ B e l’iperpiano H) massimo. In particolare nella versione più semplice
(SVM lineari), dati due insiemi disgiunti di punti                              A e B∈R n linearmente separabili e
associando l'etichetta                 y i=+1            ai vettori        x i∈ A , e l’etichetta y j =−1 ai vettori
   x j ∈B ,tale problema si formula come
                                                                1    2
                                                             min ‖w‖
                                                                2
                                                y i [wT x i +b]−1⩾0 , i=1, .. . ,l
essendo l il numero dei punti dell’insieme                                A∪B .

Nel caso di SVM non lineari, si considera un’applicazione                                             Φ : Rn ⇒ Η        di cui     Η    è
uno spazio Euclideo                     a       dimensione maggiore di                        n        (eventualmente infinita),
denominato feature space (spazio delle caratteristiche) e il problema è la determinazione
dell’iperpiano ottimo                Φ(x i ), i=1, .. . ,l .
Per la soluzione di tali problemi si ricorre usualmente alla soluzione del corrispondete
problema duale di Wolfe che nel caso di SVM pi´u generale risulta essere:
                                                l    l                                            l
                                            1
                                     min      ∑ ∑ y i y j Φ (x i)T Φ ( x j ) λi λ j−∑ λi
                                            2 i=1 j=1                               i=1

Dario Deledda                                                                                                               Pag. 13 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

                                                                l

                                                              ∑ λi y i=0
                                                              i=1

                                                       0≤λi ≤C , i=1,. . ., l
         dove C `e un parametro che pesa gli errori nella fase di addestramento (training).
Il prodotto Φ(x i )T Φ( x j)=k ( x i , x j ) si chiama Kernel. Esempi di funzioni kernel sono:
     •        k (x , z)=x T z         kernel lineare corrispondente a SVM lineari
     •        k(x , z)=(x T z+1) p kernel polinomiale (p intero ≥1)
                                      2
                              −‖x − z‖
     •                          2σ
                                   2
                                           kernel gaussiano (σ > 0)
              k (x , z)=e
     •        k (x , z)=tanh(β x T z + γ) kernel di tipo tangente iperbolica (opportuni valori di
              β e γ )
Il problema di addestramento delle SVM è in definitiva un problema di programmazione
quadratica convessa nelle variabili λ ∈Rl                             del tipo
                                                           1 t       T
                                                        min λ Q λ−e λ
                                                           2
                                                             y T λ=0
                                                           0≤λ≤C

dove la matrice              Q={k (x i , x j)}i, j=1,. .., l è detta matrice di Kernel ed è simmetrica e

semidefinita positiva.[8]

Feature e metriche
Come per i classificatori KNN anche con le SVM le metriche sono fondamentali per la
scelta delle feature e loro successivo uso nella classificazione.
Come si è potuto notare dalla teoria, la metrica che definisce le feature, che poi andranno a
comporre i vettori di addestramento e di confronto, deve essere scelta nel modo migliore
per garantire la massima separazione geometrica nell'interpiano tra le classi stesse.
Questo fa capire l'importanza della definizione e scelta delle metriche appropriate per un
coretto processo di categorizzazione dei testi.

Applicazioni
Le applicazioni attuali più conosciute della classificazione testi sono le seguenti: [14]

Dario Deledda                                                                                                               Pag. 14 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Indicizzazione automatica per sistemi di IR: Ad ogni documento è assegnata una o più
parole-chiavi (descriventi il suo contenuto) provenienti da un dizionario controllato.
Solitamente questo lavoro era fatto a mano da indicizzatori umani.

Organizzazione e Archiviazione di documenti: Gli annunci pubblicitari in un giornale di
annunci possono per esempio essere classificati in delle categorie “vero affare” “macchine
usate” “incontri” ecc… In un giornale serve l’archiviazione degli articoli sotto
l’appropriata sezione

Filtering di Testi: È l’attività di selezionare una collezione dinamica (uno stream) di testi.
Ad esempio una agenzia di stampa che invia notizie agli utenti. Il sistema di filtering fa
arrivare all’utente soltanto le notizie di suo interesse. È un’applicazione che risale agli anni
’60, ma l’esplosione della disponibilità di informazione digitale ne ha ingigantito
l’importanza. Ad oggi è usato in moltissimi contesti: la creazione di giornali Web
personalizzati, filtraggio di e-mail spazzatura ecc… Con Filtering adattativo si intende un
filtering capace di adattarsi alle esigenze dell’utente che di volta in volta invia una
valutazione del filtraggio.

Word Sense Disambiguation: L'Attività di trovare, dato un’occorrenza in un testo di una
parola ambigua, il senso che tale occorrenza ha. Se si analizza il contesto della parola come
un documento e il significato della parola come una categoria, disambiguare una parola
può essere visto come classificare un testo (chiaramente Single-Label)

Categorizzazione gerarchica di pagine Web: Catalogare le pagine Web sotto categorie
organizzate in gerarchie, permette all’utente un’altra via di accesso all’informazione oltre
alle query al Web Search Engine. La classificazione manuale sarebbe infattibile. Rispetto
alle altre applicazioni si deve tenere conto di due particolarità:
     1. La natura ipertestuale delle pagine Web
     2. La struttura gerarchica delle categorie

Dario Deledda                                                                                                               Pag. 15 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Sviluppo tesi
Nello sviluppo della tesi si è provveduto a creare un sistema per eseguir gli esperimenti e
studiare i risultati delle teorie coinvolte. Per permettere un veloce ed agevole sviluppo dei
test si è inoltre provveduto a sviluppare un framework di test.

Framework di test
Per lo sviluppo della tesi si è preceduto con lo sviluppo di un framework di test.
Il framework di test è un insieme di programmi e dati facilmente sostituibili o
intercambiabili pensato e sviluppato per permettere una veloce verifica dei risultati delle
teorie di interesse.
La necessità dello sviluppo di un framework nasce dalla constatazione che i tempi di
calcolo nel campo della Text Categorization sono piuttosto elevati. Quindi per permettere
l'esecuzione di un numero elevato di test sui dati a disposizione, si è ritenuto auspicabile
poter salvare i risultati intermedi dei calcoli, in modo da poterli riutilizzare in futuro per
test diversi senza dover attendere l'intero ciclo di calcolo.
L'intero framework è stato sviluppato tenendo in mente due principali obiettivi:

     •     La velocità di esecuzione dei test
     •     Lo sfruttamento massimo delle risorse di calcolo disponibili

La velocità è ottenuta sia ottimizzando le strutture dati sia potendo salvare i risultati
intermedi in modo che tra un test ed uno successivo non ci sia bisogno di rieseguire tutti i
calcoli precedenti, il che a volte comporterebbe anche ore di calcolo continuativo.
Lo sfruttamento massimo delle risorse è stato invece ottenuto scrivendo il codice del
framework in modo che supporti, ove si è ritenuto necessario, oltre a l'esecuzione
sequenziale anche l'esecuzione parallela su più core dello stesso microprocessore.
Ovviamente, come tutti i sistemi multiprocesso, va valutato in fase iniziale se sia più
conveniente un uso di calcolo parallelo o sequenziale per il tipo di test che si vuole
effettuare.

Dario Deledda                                                                                                               Pag. 16 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

In linea generale se il corpus di testi da trattare non è particolarmente grande (sui PC attuali
ordini di grandezza di 20000/30000 documenti) conviene usare il framework in modalità
sequenziale, se invece il numero di documenti da trattare nel corpus va oltre i 40000 si
iniziano ad avere già dei vantaggi dall'eseguire il framework in modalità parallela.
La differenza di prestazione tra i due modi di funzionamento (nel caso di questi numeri
limite) è dovuta principalmente al overhead di calcolo e dalla memoria necessaria per la
preparazione dei dati per i processi paralleli.

Organizzazione del corpus
La figura seguente riporta lo schema logico di collegamento tra il corpus ed i suoi
documenti e le statistiche delle parole che compongono i documenti e di conseguenza
l'intero corpus:

                                                            Doc                                  Word          Frequency

                                                                                                 Pippo                     12
                                                                                                 Pluto                   123
                        Corpus                              Doc                                  Athos                     34

                                                                                                 …             …

                                                            Doc                                 Document's frequency

             Word          Frequency

             Pippo                   1234
             Pluto                   2345
             Athos                     456
             …             …

              Global Frequency

Questo schema è stato scelto in quanto permette di ottenere forti vantaggi sul fronte
prestazionale mantenendo in memoria tutti i dati sulle frequenze sia delle parole dei singoli

Dario Deledda                                                                                                               Pag. 17 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

documenti sia delle frequenze di tutto il corpus, ovviamente il vantaggio prestazionale in
termini di velocità viene pagato in termini di occupazione di memoria.
Nello schema non è stato illustrato il collegamento tra documenti e le rispettive classi di
appartenenza, questa peculiarità verrà analizzata nei seguenti paragrafi
Va inoltre ricordato che nello sviluppo di questo framework di test è stato valutato essere
più vantaggioso un aumento di velocità a discapito di una forte occupazione della memoria
durante l'esecuzione dei test.

Architettura del framework di test
L'architettura del framework di test è pensata per essere semplice e facile da modificare.
L'elemento base dell'architettura è il corpus che è a sua volta composto da due parti tra loro
legate:

     •     La lista di tutti i documenti
     •     Un albero che rappresenta l'ontologia di classificazione del corpus stesso.

Per motivi prestazionali l'albero dell'ontologia è implementato come un albero logico i cui
nodi fanno parte di un dizionario esterno che contiene gli oggetti del nodo.
Questa scelta permette di ottenere un duplice vantaggio:
     •     Prestazionale: Per intervenire sui singoli nodi si può usare il dizionario che
           presenta un accesso sicuramente più veloce dell'accesso al nodo di un albero
     •     Scalabilità: Il mappare un albero su un dizionario consente una veloce
           riorganizzazione della struttura dati ed eventualmente ove necessario anche di
           mappare più alberi sullo stesso dizionario per eseguire test di tipo più complesso

Dario Deledda                                                                                                               Pag. 18 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Lo schema di realizzazione è illustrato nella seguente figura:

                                                       A

                                             B                      C

                                B1                     B2

Dal punto di vista dello sviluppo il framework è stato diviso nelle seguenti parti:

     •     Corpus
     •     Tree (Albero)
     •     Elaborazione

I moduli della parte del Corpus si occupano dell'importazione del Corpus, sua elaborazione
delle statistiche che poi vengono salvate

Corpus
L'insieme di dati su cui si è deciso di compiere i test è quello definito “Corpus Reuters”,
nello specifico si tratta di una collezione di notizie in inglese dell'agenzia di stampa
internazionale Reuters catalogate secondo un'ontologia ad albero.
Questo insieme di dati è molto usato nel campo della “Text Categorization” ed è
disponibile in due forme, una forma ridotta usata per i test sintetici conosciuta in letteratura
come        Reuters-21578 , questa comprende 12.902 documenti per 90 classi, con una
divisione fissa tra i dati di test e quelli di training (3.299 vs 9.603). Questa è la versione più

Dario Deledda                                                                                                               Pag. 19 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

usata in letteratura per motivi di velocità.
La forma estesa conosciuta semplicemente come Corpus Reuters comprende invece
806791 documenti catalogati secondo l'albero delle categorie riportato in appendice A e
non comprende divisione tra dati di training e dati di test.
I dati di test e training sono stati generati decidendo il numero di documenti, scelti in modo
casuale, da usare come training ed i restati sono stati usati come insieme di test.

Tree (Albero)
La gestione dell'albero dell'ontologia è stata fatta in modo da permettere di avere diversi
alberi allo stesso tempo, cioè, di permettere la creazione di diverse ontologie
contemporanee sullo stesso corpus.
Con questa scelta è possibile gestire più test in simultanea allo stesso tempo di esecuzione,
simulando situazioni di classificazione diversa, il tutto con un modestissimo incremento di
uso della memoria e con rilevanti vantaggi da punto di vista del tempo di esecuzione.

Elaborazione
Il modulo di elaborazione contiene tutti i metodi di utilità per l'analisi quali per esempio:
stemming, gestione delle “stop words”, sistema di persistenza dei dati.
La parte fondamentale per la resa prestazionale del framework è la gestione della
persistenza, infatti spesso si devono ripetere diverse volte dei test sullo stesso insieme di
dati, ripetendo gli stessi calcoli per buona parte del test.
La scelta di implementare un sistema di salvataggio dinamico dei passi del processo di test
permette di velocizzare l'esecuzione ripetitiva di test e permette inoltre di distribuire su
diversi computer i calcoli successivi in quanto i dati comuni sono stati salvati su memoria
di massa.
Questa tecnica è stata usata per compiere i test finali sul corpus completo, per un totale di
dati trattati per processo di circa 16Gigabyte in contemporanea in memoria.

Dario Deledda                                                                                                               Pag. 20 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Linguaggio di sviluppo
Nello specifico trattandosi di test su un insieme di documenti piuttosto esteso si è scelto un
linguaggio di sviluppo che avesse come caratteristiche fondamentali i seguenti punti:
     •     Gestione avanzata delle stringhe di testo
     •     Non avesse limiti nella gestione della memoria
     •     Librerie per la gestione testi e linguaggio naturale già disponibili e testate
     •     Semplicità e velocità di scrittura
Visti i punti sopracitati ci si è rivolti al linguaggio di programmazione Python in quanto
soddisfa tutti i requisiti sopra indicati ed offre in aggiunta un buon supporto la
multiprocessing che sicuramente aiuta con i tempi di test vista la grande quantità di dati da
elaborare.

Il linguaggio Python
Python è un linguaggio di programmazione ad alto livello, rilasciato pubblicamente per la
prima volta nel 1991 dal suo creatore Guido van Rossum, programmatore olandese
attualmente operativo in Dropbox. Deriva il suo nome dalla commedia Monty Python's
Flying Circus dei celebri Monty Python, in onda sulla BBC nel corso degli anni 70.
Attualmente, lo sviluppo di Python (grazie e soprattutto all'enorme e dinamica comunità
internazionale di sviluppatori) viene gestito dall'organizzazione no-profit Python Software
Foundation.
Python supporta diversi paradigmi di programmazione, come quello object-oriented (con
supporto all'ereditarietà multipla), quello imperativo e quello funzionale, ed offre una
tipizzazione dinamica forte. È fornito di una libreria built-in estremamente ricca, che
unitamente alla gestione automatica della memoria e a robusti costrutti per la gestione delle
eccezioni fa di Python uno dei linguaggi più ricchi e comodi da usare.
Comodo, ma anche semplice da usare e imparare. Python, nelle intenzioni del creatore, è
nato per essere un linguaggio immediatamente intuibile. La sua sintassi è pulita e snella
così come i suoi costrutti, decisamente chiari e non ambigui. I blocchi logici vengono
costruiti semplicemente allineando le righe allo stesso modo, incrementando la leggibilità e
l'uniformità del codice anche se vi lavorano diversi autori.

Dario Deledda                                                                                                               Pag. 21 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Python è un linguaggio pseudocompilato: un interprete si occupa di analizzare il codice
sorgente (semplici file testuali con estensione .py) e, se sintatticamente corretto, di
eseguirlo. In Python, non esiste una fase di compilazione separata (come avviene in C, per
esempio) che generi un file eseguibile partendo dal sorgente.
L'esser pseudointerpretato rende Python un linguaggio portabile. Una volta scritto un
sorgente, esso può essere interpretato ed eseguito sulla gran parte delle piattaforme
attualmente utilizzate, siano esse di casa Apple (Mac) che PC (Microsoft Windows e
GNU/Linux). Semplicemente, basta la presenza della versione corretta dell'interprete.
Infine, Python è free software: non solo il download dell'interprete per la propria
piattaforma, così come l'uso di Python nelle proprie applicazioni, è completamente
gratuito; ma oltre a questo Python può essere liberamente modificato e così ridistribuito,
secondo le regole di una licenza pienamente open-source.
Queste caratteristiche hanno fatto di Python il protagonista di un enorme diffusione in tutto
il mondo, e anche in Italia, negli ultimi anni. Questo perché garantisce lo sviluppo rapido
(e divertente) di applicazioni di qualsiasi complessità in tutti i contesti: dal desktop al web,
passando dallo sviluppo di videogiochi e dallo scripting di sistema.

Limiti del multithreading di Python (GIL)
Nonostante tutti i vantaggi esposti nel precedente pragrafo Python presenta comunque un
importante punto di svantaggio nella gestione del multithreading, si tratta del GIL o
(Global Interpreter Lock) .
Globale Interpreter Lock è un meccanismo utilizzato dagli interpreti di linguaggi per
sincronizzare l'esecuzione di thread in modo che solo un thread alla volta possa essere
eseguito. Un interprete che usa GIL permetterà sempre esattamente l'esecuzione di un solo
thread in un determinato momento, anche se l'interprete è eseguito su un processore multi-
core. Alcuni interpreti popolari che hanno GIL sono CPython e Ruby MRI.
Questo limite viene superato usando i Processi che permettono una velocità maggiore ed
una maggiore distribuzione dei calcoli in quanto i diversi processi non hanno niente in
comune nella memoria, d'altro canto ogni processo richiede in memoria la propria copia
personale dei dati da elaborare.

Dario Deledda                                                                                                               Pag. 22 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Valutando i pro ed i contro si è scelto comunque di usare Pyhton visti gli innumerevoli
vantaggi dovuti alla alta disponibilità di librerie già pronte ed al basso tempo di sviluppo
richiesto usando questo linguaggio e le sue librerie.
L'unico punto contrario una volta effettuata la scelta è stato il fatto che per eseguire N
processi in parallelo servono N volte la quantità di memoria di un singolo processo e che al
termine dei calcoli di tutti i processi i dati elaborati vanno assemblati in un unico risultato.
Si è verificato che i vantaggi prestazionali sono comunque superiori e scalano in modo
lineare rispetto ad una soluzione “Single Thread” e sono (nel caso di grosse moli di dati da
elaborare) sempre superiori anche a soluzioni multithreading che devono condividere la
stessa area di memoria in quanto queste ultime devono per forza rallentare a causa egli
innumerevoli conflitti di “memory lock”.

Librerie Python usate
Nello sviluppo del framework sono state usate le seguenti librerie:
NLTK 3.0
NLTK è una piattaforma per la creazione di programmi Python per lavorare con i dati del
linguaggio umano. Essa fornisce interfacce facili da usare per oltre 50 corpora e delle
risorse lessicali quali WordNet, insieme a una suite di librerie di elaborazione del testo per
la classificazione, tokenizzazione, stemming, tagging, analisi e ragionamento semantico.
LXML 3
Il toolkit XML lxml è un binding di Python per le librerie C libxml2 e libxslt. E 'unico in
quanto unisce la velocità e la funzionalità XML e completezza di queste librerie, con la
semplicità di una API Python nativa, per lo più compatibili. L'ultima versione funziona con
tutte le versioni CPython.

MatplotLib
Matplotlib è una libreria per la creazione di grafici per il linguaggio di programmazione
Python e la libreria matematica NumPy. Fornisce API orientate agli oggetti che permetto di
inserire grafici all'interno di applicativi usando toolkit GUI generici, come WxPython, Qt o
GTK. C'è anche una interfaccia "pylab" procedurale basata su una macchina degli stati
(come OpenGL) progettata per assomigliare a quella di MATLAB. E' distribuita sotto
licenza di tipo BSD.

Dario Deledda                                                                                                               Pag. 23 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

Metriche
In questo capitolo vengono analizzati i diversi aspetti teorici e riferimenti alle metriche per
meglio comprendere i test eseguiti durante lo svolgimento della tesi ed in particolare la
metrica (δ , ϕ) presa in esame per lo svolgimento della presente tesi.

Metriche comunemente usate
Di seguito si riportano le metriche comunemente usate in letteratura al solo scopo di
promemoria.

  Nome                     Descrizione                                                      Formula
Acc                Accuracy                                 [tpr+c⋅(1−fpr)]           N
                                                                            , dove c=
                                                                 (c +1)               P
Acc2               Accuracy balanced                       |tpr – fpr|
BNS                Bi-Normal Separation                    |F−1 (tpr ) – F −1 ( fpr)|         Dove F è la Normale
Chi                Chi-Squared                                  t (tp ,(tp+fp) P p )+t (fn ,(fn+tn) P p )
                                                                t (fp ,(tp+fp) P n )+t (tn ,(fn+tn) P n )
                                                                                 dove
                                                           t (count ,expect )=(count−expect )2 / expect
DFreq              Document Frequency                      tp+fp

F1                    F 1 -Measure                          2 recall precision     2tp
                                                                               =
                                                            recall+ precision ( pos+tp+fp)
IG                 Information Gain                        e ( p, n)−[ P word⋅e (tp ,fp)+ P word
                                                                                              ¯ ⋅e (fn ,tn)]
                                                                              −x           x       y           y
                                                           dove e( x , y)=         log 2       −        log 2
                                                                             x+ y        x + y x+ y           x+ y
OddN               Odds Ratio Numerator                    tpr(1 – fpr)
Odds               Odds Ratio                              tpr(1−fpr) tn tp
                                                                      =
                                                           (1−tpr) fpr fn fp
Pow                Power                                   (1 – fpr )k – (1 – tpr)k dove k =5
PR                 Probability Ratio                       tpr / fpr

Notazione:
     •        tp : true positives = numero di casi positivi contenenti la parola

Dario Deledda                                                                                                               Pag. 24 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

     •        fn : false negatives = falsi negativi
     •        fp : false positives = numero di casi negativi contenenti la parola
     •        tn : true negatives = numero di casi negativi non contenenti la parola
     •        p : numero di casi positivi = tp + fn
     •        n : numero di casi negativi = fp + tn
     •        tpr : sample true positive rate = tp / pos
     •        fpr : sample false positive rate = fp / neg
     •        P p = pos / all
     •        P n = neg / all
     •        P word = (tp+fp) / all
     •        P word = 1-P(word)
     •        precision = tp / (tp+fp)
     •        recall = tpr

Matrice di confusione normalizzata
Per compiere i test inerenti la tesi sono stati usati alcuni strumenti matematici di cui diamo
di seguito una breve introduzione.
Denotiamo con               Ξc ( p ,n) la matrice di confusione di un esecuzione di un classificatore
  c^ contenuto in una categoria                        c ∈C e alimentato con                      m documenti, di cui                 p
positivi e n negativi.
Facendo attenzione a mantenere sempre gli stessi valori di                                                p e        n su differenti
esecuzioni, la probabilità composta                         p ( X c , X^ c ) è proporzionate attraverso m al valore
atteso di Ξc ( p ,n) .
In simboli:

                                                  E[ Ξ c ( p, n)]=m⋅p( X c , X^ c )

Assumendo significato statistico, la matrice di confusione ottenuta da un singolo test ( o

Dario Deledda                                                                                                               Pag. 25 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

meglio mediata su test multipli) da un informazione affidabile sulle prestazioni del
classificatore.
Possiamo quindi scrivere:

                                    Ξ c ( p ,n)≈m⋅p( X c , X^ c )=m⋅p( X c )⋅p( X^ c∣X c )

Assumiamo che la trasformazione eseguita da                                         c^ può essere isolata dagli input che
processa, almeno da un punto di vista statistico.
In questo modo, la matrice di confusione per un dato insieme di input può essere scritta
come il prodotto tra i termini che occorrono per il numero di istanze positive e negative, da
un lato, e un termine che rappresenta il tasso di riconoscimento / errore previsto di c^ .
In simboli:

                                              Ξ c ( p ,n)=m
                                                                  [⏟][
                                                                    f c 0 γ 00 γ 01
                                                                    0 fc ⏟γ 10 γ 11               ]
                                                                  O(c)≈ p( X c ) Γ(c)≈ p( X^ c∣X c)

dove:
     •        f c = p/m e            f c =n /m denotano la percentuale di istanze positive e negative,
           rispettivamente;
     •        γ ij≈ p( X^ c = j∣X c =i),i , j=0,1 , indica la percentuale di input che sono stati
           correttamente classificati                  (i= j) o classificati erroneamente (i≠ j) da c^ . In
           particolare          γ 00, γ 01, γ 10, γ 11 denotano la percentuale di “veri negativi” (TN),
           “falsi positivi” (FP), “falsi negativi” (FN) e “veri positivi” (TP) rispettivamente.
           Può facilmente essere verificato che                              Γ (c ) è normalizzato riga per riga, per
           esempio:           γ 00 + γ 01= γ10 +γ 11 =1 . Per questo motivo, nel seguito una stima della

           probabilità condizionata                    p ( X^ c∣X c ) per un classificatore                   c^ contenuto in una
           categoria c sarà                chiamato           Matrice          di      Confusione          Normalizzata            (NCM
           Normalized Confusion Matrix).

Dario Deledda                                                                                                               Pag. 26 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

La separazione tra input e comportamenti intrinseci di un classificatore riportati
dall'equazione:

                                              Ξ c ( p ,n)=m
                                                                  [ ][
                                                                  f c 0 γ 00 γ 01
                                                                  0 fc ⏟
                                                                  ⏟     γ 10 γ 11                    ]
                                                                  O (c)≈ p( X c ) Γ (c )≈ p( X^ c∣X c )

suggerisce una interpretazione che richiama il concetto di “funzione di trasferimento”,
dove un insieme di input è applicato a c^ .
In realtà, questo potrebbe essere interpretato alternativamente come separare il
comportamento ottimale di un classificatore da il deterioramento introdotto dalle sue
capacità di filtraggio reali.
In particolare            O(c)≈ p( X c ) rappresenta il comportamento ottimale ottenibile quando

  c^ agisce come un oracolo, mentre                               Γ (c )≈ p ( X^ c∣X c ) rappresenta il deterioramento
atteso causato dalle caratteristiche reali del classificatore.
La metrica            (δ , ϕ) viene estrapolata dalla matrice di confusione espressa nella forma
normalizzata illustrata in questo paragrafo. [15]

Test svolti
Nell'esecuzione dei test si è proceduto con la seguente metodologia: Durante la fase di
sviluppo iniziale si è usato un corpus ridotto a 37068 documenti mantenendo l'intero albero
dell'ontologia ed eseguendo test su tutte le classi nei modi descritti di seguito.

Metrica e metodologia di test iniziale
Per testare le funzionalità iniziali e illustrare la metrica oggetto della tesi si è partiti
prendendo in esame le classi del corpus che avessero uno stesso padre e definendo la
Classe di test come:

     •     L'insieme dei documenti aventi lo stesso padre nella gerarchia

Per esempio analizzando la classe E14 avremo in totale 89 documenti ed i sibling:

Dario Deledda                                                                                                               Pag. 27 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

     •     E141 PERSONAL INCOME                                     18 Documenti
     •     E142 CONSUMER CREDIT                                     12 Documenti
     •     E143 RETAIL SALES                                        59 Documenti

A questo punto si estraggono tutte le parole da ogni documento, per ogni singola parola
viene fatto lo stemming e si scartano tutti i risultati più corti di tre lettere.
Sarebbe in questo caso formalmente più coretto parlare da questo punto di stemmi (parola
derivata da “Stemma codicum”) e non di parole, ma visto che il metodo di test non è
vincolato dall'uso di tecniche di stemming nel proseguo del testo si continuerà a riferirsi a
stemmi ed a parole usando il termine parola.
Per ogni documento si conta quanto una parola sia frequente, cioè quante volte è presente
nello stesso documento, per fare un esempio la parola “casa” potrebbe essere presente nel
documento 14 volte mentre la parola “costo” potrebbe essere presente 21 volte.
Si preparano un numero di classi di test equivalenti al numero di sibling, ogni classe di test
è composta da:
     •     C che è l'insieme di tutti i sibling
     •     C+ che è la classe che consideriamo positiva
     •     C- che è composta da l'unione degli altri sibling che è considerata la classe che
           consideriamo negativa

nel caso del nostro esempio i tre test saranno:

                                                  C+                                   C-
                                                 E141                          E 142∪ E 143
                                                 E142                          E 141∪ E 143
                                                 E143                          E 141∪ E 142

A questo punto per ogni test si prende e si controlla tutta la lista di tutti i documenti
  d⊂C , si estraggono tutte le parole dell'insieme C e si associa ad ogni parola un

Dario Deledda                                                                                                               Pag. 28 di 54
Tesi: Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi.

contatore composto da un vettore di quattro interi: [TP FP FN                                               TN ]
dove TP (True positive), FP (False positive), FN (False negative) e TN (True negative)
che corrispondono alla matrice di contingenza o come è conosciuta in ambito di machine
learning: matrice di confusione.
Si controlla se ogni parola di t⊂d appartiene ad uno dei seguenti casi:

                                                       {
                                                         t ∈d∧d ∈C +⇒ TP
                                                         t ∈d∧d∈C−⇒ FP
                                                         t ∉d∧d∈C+⇒ FN
                                                         t ∉d∧d∈C−⇒ TN

per esempio, guardando la prima riga: se la parola del documento in esame appartiene a C+
allora ci troveremo nella situazione TP e quindi dovremo incrementare il contatore TP
della parola t.

Eseguendo questo procedimento per ogni parola di C otterremo una matrice di confusione
che provvederemo a trasformare in una matrice di confusione normalizzata (NCM
Normalized Confusion Matrix) cosi composta:

                                               NCM= N⋅
                                                               ( )(
                                                                 f n 0 γ 00 γ 01
                                                                      ⋅
                                                                 0 f p γ 10 γ 11             )
Dove:
     •     N numero di documenti totali di C
     •        f n percentuale di documenti appartenenti a C- fratto N
     •        f n percentuale di documenti appartenenti a C+ fratto N
     •        γ 00 valore del contatore indicato da TN

     •        γ 01 valore del contatore indicato da FP

     •        γ 10 valore del contatore indicato da FN

     •        γ 11 valore del contatore indicato da TP

Dario Deledda                                                                                                               Pag. 29 di 54
Puoi anche leggere