Studio e sperimentazione di metriche discriminanti per la selezione di feature finalizzata alla categorizzazione di testi - Corsi
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
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