UNIVERSITÀ DEGLI STUDI DI GENOVA TESI DI LAUREA:

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "UNIVERSITÀ DEGLI STUDI DI GENOVA TESI DI LAUREA:"

Transcript

1 UNIVERSITÀ DEGLI STUDI DI GENOVA FACOLTÀ DI INGEGNERIA Corso di Laurea in Ingegneria Elettronica TESI DI LAUREA: METODI SEMANTICI PER TEXT MINING Relatore: Chiar. mo Prof. Ing. Rodolfo Zunino Correlatore: Dott. Ing. Simone Tacconi Candidati: Alessio Leoncini Fabio Sangiacomo Anno Accademico I

2 Genova, 25 Settembre 2009 II

3 Abstract This thesis has been carried out in the Sealab laboratory of the Department of Engineering Biophysics and Electronics of the University of Genoa. The purpose is the study of data mining techniques, for the extraction of knowledge from large amounts of data. More particularly, text mining reduces the range of input data to texts in natural language, in other words "unstructured" documents. The analyzed documents are subjected to clustering, that is an unsupervised learning technique: it allows the identification of categories without any a priori knowledge on the texts. The most common techniques are limited to syntactic and stylistic analysis so far, to contain the computational costs. In this thesis we study the possibility of introducing semantic capabilities in our system, using the semantic database WordNet, developed at the Princeton University for the English language. The future development has the ultimate goal of achieving a semantic metric for use with K-means algorithm. III

4 Alla Commissione di Laurea e di Diploma Alla Commissione Tirocini e Tesi Sottopongo la tesi redatta dagli studenti Alessio Leoncini e Fabio Sangiacomo dal titolo Metodi semantici per text mining. Ho esaminato, nella forma e nel contenuto, la versione finale di questo elaborato scritto, e propongo che la tesi sia valutata positivamente assegnando i corrispondenti crediti formativi. Il Relatore Accademico Prof. Rodolfo Zunino IV

5 Ringraziamenti Vogliamo ringraziare il nostro relatore per aver trovato, nonostante i mille impegni, molte mattinate da dedicarci. Alessio Leoncini, Fabio Sangiacomo V

6 Prefazione Questa tesi è stata svolta presso il laboratorio SeaLab del Dipartimento di Ingegneria Biofisica ed Elettronica dell Università di Genova. Essa si colloca nell ambito del data mining, ovvero l estrazione di un sapere o di una conoscenza a partire da grandi quantità di dati. Più in particolare il text mining limita il range di dati elaborati a testi in lingua naturale, in altre parole, documenti destrutturati. I documenti analizzati vengono sottoposti a clustering, cioè a tecniche di apprendimento non supervisionato: questo permette di identificare delle categorie senza alcun bisogno di conoscenze a priori sui testi. Finora le tecniche più diffuse, per contenere i costi computazionali, si limitano ad analisi sintattiche e stilistiche. Con questa tesi studiamo la possibilità di introdurre delle capacità semantiche nel nostro sistema, sfruttando il database semantico WordNet, sviluppato a Princeton per la lingua inglese. Il lavoro potrà in futuro essere ulteriormente sviluppato, con l obiettivo finale di realizzare una metrica semantica da utilizzare con l algoritmo K-means. VI

7 Indice Indice... VII Introduzione... 1 Motivazioni... 1 Obiettivi... 2 Contenuto della tesi... 2 Capitolo 1 Il text mining Introduzione al text mining Il bisogno di applicare il text mining Algoritmi di intelligenza artificiale Apprendimento supervisionato e non supervisionato Il neurone artificiale Back Propagation Support Vector Machine Capitolo 2 I problemi applicativi del text mining Le parti della macchina utilizzata I calcoli Il multithreading Il multithreading su GPU Le macchine a 64 bit I problemi concettuali del text mining Capitolo 3 Stato dell arte Principali utilizzatori di tecnologie di text mining Utilizzi in ambito accademico Utilizzi in ambiti di sicurezza VII

8 3.1.3 Altri utilizzi I problemi di chi ricerca tali applicazioni Cosa è cambiato in dieci anni Elenco di applicazioni rilevanti AeroText, Lockheed Martin Corporation Prodotti di ClearForest COGITO, Expert System Spa Data Integrator, Pervasive Software Fair Isaac Corporation I2E, Linguamatics Limited IDOL Server, Autonomy Corporation Intelligent Miner, IBM Inxight Software Inc Languageware, IBM Lexis Total Research System, LexisNexis Rapidminer, Rapid-I Text Mining for Clementine, SPSS Inc Text Mining Engine, Nstein Technologies Capitolo 4 L informatica forense Introduzione alla computer forensics Una metodologia forense Informatica forense e text mining Capitolo 5 Clustering di documenti Indicizzazione dei documenti Il clustering Approccio ibrido al clustering K-means VIII

9 5.3.1 Misura di distanza tra i documenti Kernel K-means Large scale clustering scheme Il sistema per il clustering di documenti Capitolo 6 WordNet: la rete semantico - lessicale Introduzione a WordNet Le relazioni semantiche Iponimie ed iperonimie Meronimie ed olonimie Altre relazioni semantiche Morphy, lo stemmer di WordNet Il software WordNet Il database WordNet Funzioni di libreria ed API WordNet e WordNet Browser Global WordNet EuroWordNet Capitolo 7 L interfaccia per WordNet Membri di WordNetIF Metodi di WordNetIF Performance Capitolo 8 Risultati sperimentali Conclusioni e sviluppi futuri Bibliografia Indice delle figure e delle tabelle IX

10 Introduzione Motivazioni Le motivazioni che hanno spinto la stesura della presente tesi nascono dalla voglia di confrontarsi con un insieme di tecnologie nate recentemente, ma che potrebbero avere un fortissimo impatto sulla società e sulla gestione delle informazioni nel prossimo futuro. Le tecnologie di cui la tesi tratta sono i metodi e le tecniche per il text mining, ovvero l estrazione di informazioni (detta anche intelligence) da dati testuali. Si sottolinea già a questo livello la grande generalità e l ampio spettro delle applicazioni e delle finalità analitiche comprese dal termine text mining, dati dalla grandissima presenza di dati testuali nella vita di ognuno, sempre in aumento vertiginoso grazie anche alla disponibilità di memoria costantemente in crescita. Le prime tecnologie sviluppate nell ambito del text mining sono semplici, si pensi ad esempio alla ricerca di parole chiave e similitudini. Questo processo, eseguito per dati testuali, può essere sviluppato in maniera veloce e fornire risultati chiari e facili da interpretare. Si nota chiaramente però la presenza di alcuni problemi di elaborazione, dovuti per esempio alle desinenze variabili di una parola, o alla lingua in cui è scritto il testo. Ciò può portare a mancati riconoscimenti di similitudini da parte di un software, che invece ad un occhio umano non sarebbero certe sfuggite. Il bisogno di effettuare text mining quindi è nato e cresciuto, seguito però anche dal bisogno di migliorare le tecnologie da utilizzare, per avvicinare le potenzialità di riconoscimento del software a quelle di un essere umano. Fino a questo punto il software permetteva solo una accelerazione del tempo uomo necessario a leggere grandi quantità di dati. Si è dovuto poi estendere l elaborazione dei meri dati testuali, aggiungendo una ricerca del significato degli stessi, oltre all analisi della forma. In questo modo è possibile aggiungere una capacità di elaborazione superiore alle capacità umane di interpretazione del testo, affiancando la velocità di lettura in memoria di una macchina alla disposizione di database con contenuti semantici. Una elaborazione semantica è in grado di eguagliare due parole 1

11 diverse ma di significato corrispondente, senza osservare né la forma, né la desinenza, né la lingua. L elaborazione dei dati così estesa permette di superare molti limiti di interpretazione propri dei primi metodi di text mining, ma comporta anche costi computazionali estremamente più elevati. Chiaramente è quindi necessario, per uno sviluppatore, raggiungere un buon trade-off tra costi e benefici, rispettando gli obiettivi prefissati. Obiettivi L obiettivo della tesi presentata è quello di offrire una visione, con alcuni approfondimenti, sul mondo del text mining. La presentazione di tale mondo è dapprima condotta nel modo più generale possibile, e viene corredata di una grande analisi sullo stato dell arte. La descrizione prosegue con la presentazione di un ambito particolarmente interessante come il computer forensics e la descrizione di algoritmi particolarmente adatti all utilizzo in applicazioni di text mining. L obiettivo successivo è l introduzione ad un database di informazioni semantiche, per fornire un esempio di interfacciamento con una rete di dati progettata per applicazioni completamente estranee al text mining, ma che può fornire funzionalità molto avanzate. Contenuto della tesi Il presente documento è strutturato quindi in modo da preparare il lettore ad una visione molto generale di tutti gli aspetti del text mining, che diventa poi un analisi molto approfondita su problemi specifici, tecnologie, ambiti applicativi. In ultima battuta si fornisce un esempio pratico di elaborazione di testi, alcune considerazioni sul lavoro eseguito e gli sviluppi futuri. Il capitolo 1 è una rapida introduzione ai concetti chiave e alle metodologie riguardanti il text mining, partendo dal livello più generale possibile. Si analizza il motivo per cui è nato 2

12 e si sviluppa il bisogno di applicare il text mining, e si descrive un elenco delle tecnologie base adatte alla realizzazione di una applicazione avanzata. Il capitolo 2 è una descrizione dei problemi che si incontrano nel momento in cui si progetta una applicazione per text mining, dei problemi che possono occorrere durante il funzionamento e dei problemi di interpretazione dei risultati. Si analizzano tutti i fattori inoltre che possono concorrere a limitare in qualche modo le performance dell applicazione in oggetto. Il capitolo 3 descrive lo stato dell arte, ovvero le applicazioni degne di nota presenti sul mercato. È strutturato in modo da mostrare alcune informazioni sulla situazione tecnologica del text mining da dieci anni a questa parte, e presenta un elenco di applicazioni aggiornato, ognuna con un focus proprio sulle tecnologie adottate. Il capitolo 4 offre una rapida introduzione al mondo del computer forensics, ovvero l informatica applicata alle investigazioni. È un ambito applicativo particolare per il text mining, si scosta un poco dalle applicazioni classiche per ricerca all interno di database o per le elaborazioni di dati aziendali, ma è in grado di poter assorbire ogni vantaggio dalle nuove scoperte e ricerche sui dati testuali. Il capitolo 5 tratta di un algoritmo particolarmente adatto ad una applicazione di text mining, capace di portare a termine un raggruppamento automatico e non supervisionato di dati. Il clustering K-means viene descritto in via teorica ed analizzato applicandolo al caso di dati testuali. Il capitolo 6 descrive WordNet English 2.1, ovvero la rete di relazioni semantiche scelta per un possibile interfacciamento con una applicazione di text mining, con lo scopo di aggiungere funzionalità di elaborazione semantica non basate solo sulla forma del testo. Il capitolo 7 mostra lo sviluppo di una possibile interfaccia tra una applicazione di text mining e le API di WordNet English. Una classe in linguaggio C++ viene proposta e 3

13 descritta, mostrando metodi principali e strategie per massimizzare le performance del codice. Il capitolo 8 elenca alcuni risultati sperimentali ottenuti analizzando un database di con una applicazione di text mining capace di dividere i documenti in 10 cluster. Solo con un primo esame condotto in questo modo si osservano risultati decisamente interessanti per un possibile analista investigativo, e molti suggerimenti per ricerche più approfondite. 4

14 Capitolo 1 Il text mining Nel capitolo in questione si offre una veduta dall alto del text mining. Innanzitutto si definisce il concetto base, generalizzandolo e mostrando le varie casistiche di problemi che possono portare al bisogno di utilizzare una applicazione di questo tipo. Successivamente si inizia a parlare di tecniche specifiche adatte a questi tipi di applicazioni. 1.1 Introduzione al text mining Quando si parla di text mining si intende utilizzare risorse con capacità di calcolo per l'analisi automatica di testi, allo scopo di fornire all'utente informazioni condensate riguardanti i testi analizzati. Il text mining è un sottoinsieme delle pratiche del data mining, il quale tratta l'analisi automatica di dati generici. In questo ultimo caso si nota chiaramente un problema: i dati generici possono essere in quantità e strutturati in modo a volte specifico della singola sorgente da cui provengono. In altre parole, un'analisi degli stessi può essere condotta solo per quel caso specifico, e non per dati provenienti da sorgenti anche molto simili. Il data mining può perciò apparire in certi casi molto specifico, e sia l'analisi che il riporto dei risultati possono diventare strettamente legati ai dati studiati. In definitiva non esiste l'applicazione di data mining adatta a risolvere tutti i problemi, perché la natura di ognuno di essi è troppo dipendente dalla quantità di dati da analizzare, dalla loro struttura e anche dai risultati che si vogliono estrarre. Intuitivamente è chiaro, vista la grande quantità di modi con cui possono essere rappresentati gli stessi dati. Le pratiche di text mining possono a primo avviso convergere verso una standardizzazione, data la maggiore omogeneità dei dati, in questo caso solo testuali, rispetto ai dati intesi nel modo più generale. 5

15 Quindi si potrebbe presumere di incorrere in applicativi maggiormente simili e, di conseguenza, avere riscontri per la ricerca di algoritmi o modalità di analisi migliori rispetto ad altre. In realtà non è così, infatti benché esistano criteri ben definiti che descrivano un documento testuale rispetto ad un dato il più generico possibile, esistono molte variabili in gioco che diversificano in grande maniera anche le possibili analisi testuali. In particolar modo si può osservare la lingua dei testi posti sotto analisi; successivamente si deve considerare la presenza o meno di categorie predefinite; e infine occorre osservare quale tipo di risultato si vuole ottenere. Tali quesiti appartengono alla sfera dei problemi concettuali del text mining, e verranno chiariti in seguito. Un ultimo appunto va fatto considerando un importante problema: la capacità di calcolo a disposizione e di conseguenza il tempo impiegato per l'analisi. Questi sono fattori da tenere in grande considerazione perché da essi dipende la realizzabilità o meno dell'applicazione: infatti elaborazioni molto pesanti possono incorrere nella cosiddetta maledizione della dimensionalità, ovvero la crescita anche esponenziale della complessità dei calcoli al crescere delle dimensioni del problema (che potrebbero dipendere, tra i vari fattori, anche dal numero di documenti da analizzare). 1.2 Il bisogno di applicare il text mining La legge di Moore afferma che il numero di transistor contenuti in un processore raddoppia ogni 18 mesi [1]. Ma un altro trend in rapidissima ascesa è quello della capacità raggiunta dalle memorie. Fino a poco tempo fa, la capacità di un Terabyte era proibitiva per chiunque, mentre oggi è praticamente alla portata di tutti. Di conseguenza è alla portata di tutti l'accumulo di una sempre maggiore quantità di dati personali, di qualsiasi natura, nelle memorie dei personal computer, dei cellulari e di molti altri dispositivi. Questo e la grande tendenza a produrre sempre più documenti in formato esclusivamente digitale, incluse le , possono causare problemi di difficile gestione di grosse moli di documenti da parte di operatori umani. Si pensi solo alla gestione di dati per la business intelligence: l'analisi aziendale profonda deve poter accedere ad una grande quantità di dati, documenti, trend e comunicazioni. 6

16 È decisamente sempre più imperante l'utilizzo di tool automatici per l'analisi, la classificazione, la riduzione delle informazioni. Inoltre, le applicazioni di text mining offrono il loro appoggio a innumerevoli problemi rivolti alla scansione e alla ricerca di informazioni attraverso internet. Si può affermare con sicurezza che la stragrande maggioranza di dati presenti sulle pagine web possono essere considerate come testo, e quindi essere accessibili da parte di un'applicazione di text mining. 1.3 Algoritmi di intelligenza artificiale I problemi che deve risolvere un'applicazione di text mining sono spesso risolvibili con algoritmi di intelligenza artificiale. Infatti in genere si tratta di applicare elaborazioni più sofisticate dei meri calcoli quali ricerca di parole specifiche, o stima della lunghezza dei documenti. Per poter estrarre informazioni davvero utili da un gruppo di documenti consistente si possono categorizzare i testi in diversi ambiti o gruppi, o trovare caratteristiche comuni tra documenti diversi. Insomma, l'elaborazione dei testi in genere ricalca un percorso non prefissato, e non si cercano indicatori già predefiniti, ma si possono sfruttare con profitto diversi algoritmi quali back propagation, support vector machine o clustering. Un algoritmo di intelligenza artificiale ha sempre bisogno di una fase di apprendimento, precedente al test di corretto funzionamento e alla messa in operazione della macchina. Si usa quindi addestrare l'algoritmo su una parte dei dati a disposizione, e successivamente osservare le prestazioni ottenute testandolo sulla restante parte di dati. I metodi di suddivisione dei dati, la proporzione degli stessi nei due gruppi, il numero di prove e la bontà della stima ottenuta per il test sono oggetto di innumerevoli tecniche. Queste sono studiate per affrontare le più svariate situazioni e per cercare di ottenere la stima delle prestazioni migliore possibile. 7

17 1.3.1 Apprendimento supervisionato e non supervisionato Un'altra questione da affrontare, da cui dipende in genere buona parte dell'architettura dell'applicazione di text mining, è la modalità di apprendimento. Questa è legata in una certa misura ai risultati che si vogliono ottenere, ma in misura ancora maggiore alla quantità di dati disponibili, o per meglio dire dalle informazioni che li corredano. L'apprendimento supervisionato si basa infatti sul raggruppamento di determinati dati in classi già definite a priori. L'elemento fondamentale per scegliere questo tipo di apprendimento è appunto la presenza di informazioni aggiuntive riguardanti il set di training, in modo da poter stabilire già a priori criteri di aggregazione dei dati. L'apprendimento non supervisionato è invece la modalità attuata nel caso in cui manchino informazioni su una classificazione di partenza da estendere ai nuovi dati, e si vogliano trovare in sede di apprendimento criteri accomunanti Il neurone artificiale Prima di trattare l algoritmo back propagation utilizzato per il training delle reti neurali artificiali, si introduce il concetto di neurone artificiale. Il neurone artificiale, o percettrone, è un classificatore binario che mappa l input, vettore di numeri reali x, in un valore f(x) tale che: f x = 1, w x + b > 0 0, altrimenti Dove w è un vettore di pesi reali, b è un valore di offset costante che non dipende dai valori in ingresso. Il valore binario di f(x) è utilizzato per la classificazione in due classi possibili del valore x. L offset può essere pensato come un parametro per tarare la funzione di attivazione, impostando il valore base di attività del neurone. Se b è negativo, la combinazione di ingressi pesati deve produrre un valore maggiore di b per attivare l uscita del neurone. Osservando un singolo percettrone così descritto, esso può essere considerato la più semplice rete neurale feed-forward. 8

18 Si descrive ora il multilayer perceptron, la rete a cui si applica l algoritmo back propagation. Il multilayer perceptron è un modello di rete neurale artificiale feed-forward che mappa un insieme di ingressi in un insieme di uscite appropriate. La differenza dal percettrone lineare standard consiste nel fatto che in questo caso esistono tre o più layer di neuroni, ognuno con una funzione di attivazione non lineare. Inoltre il multilayer perceptron è in grado di processare e separare dati non linearmente separabili. L algebra lineare prova facilmente che un multilayer perceptron composto da funzioni di attivazione lineari, formato da un numero qualsiasi di layer di neuroni, può essere ridotto al modello standard del singolo percettrone lineare. Il discorso varia nel caso il multilayer perceptron sia composto da neuroni con funzione di attivazione non lineare, sviluppata secondo il modello dei potenziali d azione dei neuroni biologici. Questa funzione è modellata in diversi modi, ma deve assolutamente soddisfare i requisiti di normalizzabilità e differenziabilità. Le due funzioni di attivazione utilizzate nella maggior parte dei casi sono sigmoidi: Φ x = tanh x Φ x = e x Nel primo caso si tratta di una tangente iperbolica, con uscita tra -1 e 1, nel secondo caso la forma della funzione è equivalente ma il risultato è compreso tra 0 e 1. Funzioni di attivazione più specializzate includono le Radial Basis Functions Back Propagation L'algoritmo chiamato back propagation [2] è un metodo comunemente utilizzato per il learning delle reti neurali artificiali. Al termine del processo di back propagation, o propagazione dell errore, la rete di neuroni artificiali può essere in grado di effettuare il comportamento descritto durante il learning, cioè una determinata funzione logica. L algoritmo di propagazione dell errore è stato descritto per la prima volta nel 1974 da Paul Werbos, ma non ebbe molto seguito. 9

19 Più tardi, nel 1986, grazie al contributo di Rumelhart, Hinton e Williams fu riconosciuta l importanza dell algoritmo e si avviò una espansione della ricerca nell ambito delle reti di neuroni artificiali. Si tratta di un metodo di apprendimento supervisionato, e rappresenta una implementazione della Delta rule. È richiesto che si conosca a priori l uscita determinata da una certa configurazione in ingresso, ed è il miglior metodo di apprendimento per reti senza feedback. Un requisito per l applicabilità dell algoritmo è che la funzione di attivazione utilizzata dai neuroni artificiali sia differenziabile. Fasi dell algoritmo: presentazione di una configurazione di ingressi da far apprendere alla rete neurale; confronto tra l uscita della rete e l uscita desiderata; calcolo dello scarto dai valori desiderati per l uscita di ogni neurone, denominato errore locale; modifica dei pesi (parametri di controllo) di ogni neurone per abbassare l errore locale; assegnamento degli errori locali ai neuroni di livello superiore; ripetizione dalla terza fase, per ogni livello di neuroni fino all inizio della rete. L algoritmo utilizzato per una rete neurale artificiale composta da tre layer di neuroni è il seguente: Inizializzazione dei pesi di ogni neurone (spesso in modo random) Finché ogni dato è classificato correttamente Per ogni dato appartenente al set di training u = calcolo dell uscita della rete per il dato corrente (fase forward) t = uscita desiderata per il dato corrente Calcolo dell errore (t-u) in uscita Calcolo di dh, per aggiornare i pesi dell hidden layer (fase backward) Calcolo di di, per aggiornare i pesi del layer di input (fase backward) Aggiornamento di tutti i pesi della rete Fine 10

20 Come si nota facilmente dal nome stesso dell algoritmo, gli errori di configurazione sono propagati all indietro, dai nodi di uscita ai nodi iniziali della rete di neuroni artificiali. In altre parole, l algoritmo di back propagation è utilizzato per calcolare il gradiente dell errore della rete, riferito ai pesi (parametri) modificabili di ogni nodo. Il gradiente è quasi sempre poi utilizzato con l algoritmo della discesa del gradiente per aggiornare i pesi, cercando di minimizzare l errore. L algoritmo back propagation consente in genere una veloce convergenza ad un minimo locale, per questo conviene sempre impostare condizioni iniziali stocastiche Support Vector Machine Le macchine a vettori di supporto sono un insieme di metodi di apprendimento supervisionato, utilizzate per scopi di classificazione e regressione. I dati di cui questi algoritmi necessitano sono due insiemi di vettori, appartenenti ad uno spazio n- dimensionale. Una SVM, a partire da tali dati, costruirà un iperpiano separatore in tale spazio, tale da massimizzare il margine tra i due set di dati. Per calcolare il margine, sono costruiti due iperpiani paralleli, uno per ogni lato dell'iperpiano separatore, ognuno corrispondente al bordo più esterno delle nuvole di punti rappresentanti i due insiemi. Intuitivamente, una buona separazione è raggiunta dall'iperpiano che presenta la maggiore distanza tra tutti i punti dei rispettivi insiemi di dati. La classificazione di dati rispetto a due classi di appartenenza è un problema molto comune. Si suppone di avere a disposizione alcuni punti, di cui una parte appartengano ad una classe di dati, e i restanti appartengano ad un altra classe. Si vuole stabilire a quale classe apparterrà un nuovo punto, non presente nei due insiemi di partenza. Nel caso delle SVM un punto è considerato come un vettore a p dimensioni, cioè una p-upla di numeri, e si cerca di capire se i due insiemi di dati di partenza possono essere separati da un iperpiano di p-1 dimensioni. La macchina che persegue un tale comportamento viene detta classificatore lineare. Esiste più di un iperpiano separatore in grado di soddisfare la condizione di separazione di due insiemi. 11

21 Si cerca quindi in genere l iperpiano che offre una separazione migliore tra le due classi di dati. La condizione di confronto per definire la bontà di separazione è il margine, cioè la distanza dell iperpiano separatore tra i punti più vicini ad esso, per entrambi i lati. Il classificatore che produce questa uscita si chiama classificatore a massimo margine. Matematicamente, si procede nella modalità descritta a seguire. Si inizia utilizzando un set di n dati espresso nella forma: D = x i, c i x i R p n, c i { 1,1}} i=1 dove c i, il quale assume valore -1 o 1, rappresenta la classe di appartenenza del punto x i. Ogni punto x i è un vettore reale a p dimensioni. Si vuole trovare l iperpiano che garantisce il massimo margine di separazione tra i punti che presentano c i = 1 e i punti con c i = 1. Ogni iperpiano può essere definito come il luogo dei punti x che soddisfano l equazione: x w b = 0 Il vettore w è detto vettore normale, e rappresenta l iperpiano separatore, essendo perpendicolare ad ogni suo punto. Il parametro dell iperpiano rispetto all origine del vettore w. b w rappresenta lo scostamento Lo scopo del classificatore è determinare i parametri w e b tali da massimizzare il margine, ovvero la distanza tra l iperpiano separatore e i due iperpiani paralleli ad esso, coincidenti con i due punti delle due classi più vicini all iperpiano separatore. I due iperpiani paralleli, detti iperpiani di supporto, sono descritti dalle equazioni: x w b = 1 x w b = 1 Si nota facilmente che, se i dati di training sono linearmente separabili, si possono scegliere gli iperpiani di supporto in modo che non appaiano punti tra di essi. Successivamente si possono modificare in modo da raggiungere la configurazione a margine massimo, cioè quella per cui la distanza tra i due risulta massima. Matematicamente, si trova che la distanza tra i due iperpiani di supporto è massimizzarne il valore è necessario minimizzare w. 2 w, quindi per Per evitare però che uno o più punti di training vada a cadere tra i due iperpiani di supporto, è necessario inserire alcuni vincoli. 12

22 Per ogni i, si ha: Questo può essere riscritto come: w x i b 1, i: c i = 1 w x i b 1, i: c i = 1 c i w x i b 1, 1 i n Che può essere tradotto nel seguente problema di ottimizzazione: Soggetto ai vincoli: min w,b c i w x i b 1, w i = 1,, n Il problema, così come viene presentato, è difficile da risolvere, poiché ricercare il minimo della norma di w implica l avere a che fare con la radice quadrata. È possibile ovviare a questa complicazione si può alterare l equazione sostituendo w con 1 2 w 2, senza che la soluzione cambi. In questo modo si è creato un problema di ottimizzazione risolvibile con la programmazione quadratica. Il fattore 1 2 si utilizza per comodità, agevolando i calcoli successivi, ed è ininfluente sul calcolo del minimo. 1 min w,b 2 w 2 c i w x i b 1, i = 1,, n Per unificare l equazione del problema ai vincoli cui sottostare, si può scrivere la forma duale del problema di classificazione. Analizzando tale forma, ci si rende conto che il processo per trovare l iperpiano a massimo margine dipende solo dai vettori di supporto, ovvero dai soli dati che coincidono con gli iperpiani di supporto. Di conseguenza, il numero di calcoli necessario a trovare la soluzione ottima può ridursi notevolmente rispetto ai casi con numerosissimi punti di training. La forma duale del problema può scriversi come: max α i n i=1 α i 1 2 i,j α i α j c i c j x i x j 13

23 Ed è soggetta ai vincoli: α i 0, n i=1 i = 1,, n α i c i = 0 Il vettore α costituisce una rappresentazione duale del vettore normale w, in funzione degli elementi del training set: w = n i=1 α i c i x i Un metodo per ammettere anche dati classificati in maniera errata fu proposto in seguito [3]. Se non esiste un iperpiano che riesca a dividere tutti i campioni della prima classe da tutti quelli della seconda, si può cercare un metodo per dividere le due nuvole di punti non completamente, ma nel modo migliore possibile. Sono quindi introdotte variabili di slack ξ i, che misurano il grado di errata classificazione di un dato x i. I vincoli possono essere riscritti come: c i w x i b 1 ξ i, i = 1,, n Il problema, ovvero la funzione che si vuole ottimizzare, deve essere quindi aumentata di un fattore che tiene conto delle variabili di slack, e deve fare in modo di penalizzare valori alti degli stessi. Il problema diviene: 1 min w,b 2 w 2 + C ξ i i c i w x i b 1 ξ i, i = 1,, n Per risolvere il problema con tali vincoli possono essere utilizzati i moltiplicatori di Lagrange. Il grande vantaggio consiste nel fatto che la formulazione duale di questa scrittura non presenta le variabili slack, e la costante C appare solo come un vincolo in più tra i moltiplicatori di Lagrange. L evoluzione del classificatore lineare è il classificatore non lineare, proposto 29 anni dopo lo sviluppo del primo. Si basa sul principio dei kernel [4] per il calcolo dell iperpiano separatore. L algoritmo risultante è formalmente simile al caso del classificatore lineare, se non per il prodotto scalare che va sostituito con una funzione kernel non lineare. 14

24 Ciò consente all algoritmo di creare un iperpiano separatore nello spazio trasformato dei dati. La trasformazione può essere non lineare e lo spazio trasformato può avere una alta dimensionalità, cosicché nello spazio originale l iperpiano può essere una superficie non lineare. Possibili funzioni kernel utilizzabili: Polinomiale omogeneo: k x, x = (x x ) d Polinomiale non omogeneo: k x, x = (x x + 1) d Kernel RBF k x, x = e γ x x 2, γ > 0 Kernel RBF gaussiano: k x, x = e x x 2 2σ 2 Tangente iperbolica: k x, x = tanh (kx x + c) Nel caso si utilizzi il kernel RBF gaussiano, il corrispondente spazio trasformato dei punti di training è uno spazio di Hilbert a infinite dimensioni. I classificatori a massimo margine sono ben regolarizzati, quindi il risultato non soffre di problemi dati dall utilizzo di spazi a infinite dimensioni. 15

25 Capitolo 2 I problemi applicativi del text mining Il capitolo presenta i problemi riguardanti le applicazioni per il text mining. Questi sono soprattutto di natura progettuale, infatti la messa in pratica di una applicazione di text mining fa emergere immediatamente il problema del numero di calcoli da dover eseguire per ottenere risultati rilevanti. Ogni fase di apprendimento, stima ed estrazione di risultati è spesso pesante in termini computazionali. Di conseguenza l'efficienza dell'applicazione è un fattore fondamentale per permetterne l'utilizzo e l'analisi dei risultati in tempi ragionevoli. 2.1 Le parti della macchina utilizzata Data la natura stessa dell'applicazione di text mining, è chiaro che il tempo di calcolo dipende in maniera molto stretta dal numero e dalla dimensione dei documenti considerati nell elaborazione. Ma anche altri fattori contribuiscono in modo pesante ad allungare il tempo di elaborazione di una applicazione di questo tipo, come il tipo di memoria sulla quale si salvano i risultati delle singole elaborazioni, la velocità di scrittura del disco rigido e altre caratteristiche hardware della macchina. Il numero di componenti e periferiche interessati dal calcolo è alto, non si tratta di eseguire meri calcoli unicamente a livello di CPU. Per questo motivo è importante che tali componenti siano tutti in grado di evitare una perdita locale di prestazioni, pena il calo delle prestazioni totali. 2.2 I calcoli Una applicazione di text mining è quindi molto critica pensando al numero di calcoli da eseguire. Occorre dunque scrivere con estrema attenzione le parti di codice eseguite un elevato numero di volte, e ottimizzare il più possibile tali parti di codice. 16

26 Si devono saper sfruttare tutti i teoremi che potrebbero fornire metodi per semplificare le operazioni eseguite più di frequente. Tutto ciò si effettua ricordando di evitare il più possibile l'operazione di divisione, la più costosa in termini di tempo per un computer. Anche l'operazione di moltiplicazione richiede molto tempo di calcolo rispetto alla somma e alla sottrazione, ma è preferibile comunque rispetto ad una divisione. 2.3 Il multithreading Una soluzione molto efficace per risolvere i problemi derivanti dal dover compiere un alto numero di calcoli è rappresentata dalla possibilità dei processori di eseguire istruzioni in parallelo. Ciò si traduce, a livello macchina, nella divisione del programma principale in precisi task da eseguire in parallelo, nella sincronizzazione degli stessi e nella gestione dell overhead conseguente. L overhead è l aumento di operazioni dovuto alla gestione dei numerosi task. Va detto che una gestione efficiente di tali task paralleli si ha esclusivamente se essi sono di lunga durata, per far si che l aumento di prestazioni dovuto all efficienza del calcolo parallelo sia molto superiore alla perdita di prestazioni dovuta proprio alla gestione del parallelismo. Due possibili soluzioni che il programmatore potrebbe adottare per la conversione della propria applicazione in una serie di thread paralleli sono l utilizzo delle librerie OpenMP [5] o delle librerie Boost. Le librerie OpenMP, acronimo di Open Multi-Processing forniscono al programmatore una serie di API per consentire la programmazione a più processi concorrenti, con sincronizzazione a memoria condivisa. Le librerie sono disponibili per i linguaggi C, C++ e Fortran, e consentono lo sviluppo su più piattaforme, tra le quali Unix e Windows. Il pacchetto comprende un set di direttive per i compilatori, librerie e variabili d ambiente per influenzare il comportamento del programma a runtime. Le OpenMP sono state sviluppate in collaborazione con molti grandi produttori di hardware e software, ed il risultato è l ottenimento di un prodotto portabile tra varie architetture e piattaforme e scalabile. Si vuole fornire al programmatore una interfaccia 17

27 semplice e flessibile per sviluppare applicazioni parallele, in grado di funzionare sui desktop ma anche sui supercomputers. Un applicazione basata sul modello ibrido della programmazione parallela può girare anche su una rete di computer per il calcolo distribuito (clusters) utilizzando l accoppiamento tra le OpenMP e il prodotto Message Passing Interface [6]. Le librerie Boost [7] fanno parte di un progetto open source, nato per produrre codice C++ sempre più raffinato ed efficiente e destinato alla creazione di applicazioni commerciali e non commerciali. Le librerie Boost sono sviluppate per molti moderni sistemi operativi, compresi Unix e tutte le varianti di Windows. Fanno parte del pacchetto Boost circa 80 librerie individuali, atte a soddisfare molte esigenze di funzionalità come codici per calcoli di algebra lineare, generazione di numeri pseudorandom, programmazione in multithreading, elaborazione di immagini, calcolo di espressioni regolari, unit testing. Gli sviluppatori delle librerie Boost sono riusciti ad inserire alcune librerie direttamente negli ultimi report per gli standard del C++. Lo scopo dei programmatori del progetto Boost è unicamente la produzione di codice il più efficiente possibile, e promettono un aumento di produttività seguente all uso delle librerie Boost. L uso di librerie di alta qualità per lo sviluppo di applicazioni può aumentare la velocità dello sviluppo iniziale, portare ad una diminuzione di bachi nel software ed una diminuzione di cicli di test e miglioramento, ed infine ridurre i costi di mantenimento a lungo termine. Inoltre, l inserimento delle librerie negli standard del C++ può aumentare il numero di programmatori che hanno familiarità con esse, riducendone la curva di apprendimento per l uso. 2.4 Il multithreading su GPU Una nuova frontiera nell utilizzo di applicazioni multithreading è quella rappresentata dalla possibilità di effettuare calcoli sui processori grafici. 18

28 La novità risiede nel fatto che i processori grafici, o GPU, sono studiati appositamente per calcolo altamente parallelo ed efficiente. Inoltre, la memoria che viene fornita in dotazione alle schede grafiche di ultima generazione è RAM molto costosa ma molto veloce, e in genere si utilizzano canali di comunicazione tra GPU e memoria grafica dedicati e ad altissima efficienza. La casa produttrice di schede grafiche Nvidia ha creato alcune librerie da affiancare ai programmi normalmente eseguiti su CPU, per rendere semplice la produzione di codice eseguibile su GPU [8]. L avvento delle CPU a più core e delle GPU a innumerevoli core è un segnale forte della spinta verso i sistemi paralleli. Si può osservare che il parallelismo dei sistemi informatici evolve circa come la legge di Moore. Il problema quindi è rappresentato dallo sviluppo di applicazioni che siano in grado di scalare facilmente il proprio parallelismo, in modo da sfruttare al massimo il numero sempre crescente di core di elaborazione. Si può osservare un comportamento simile per le applicazioni grafiche, gli shaders dei videogiochi sono appunto strategie per sfruttare appieno la capacità di elaborazione dei processori grafici ad alto numero di core. Guidati dall insaziabile domanda di mercato riguardo ad applicazioni 3D in tempo reale e ad alta definizione, i processori grafici programmabili si sono evoluti verso un processore con altissimo numero di core paralleli, alta velocità di elaborazione e una elevatissima banda di trasmissione dati. Figura 1: prestazioni CPU vs. GPU 19

29 Figura 2: bandwidth CPU vs. GPU La CPU e la GPU non hanno la stessa capacità di utilizzare dati espressi in formato a virgola mobile. La ragione di ciò sta nel fatto che il processore grafico è specializzato per grandi moli di calcoli e alto parallelismo, cioè esattamente ciò che serve per il rendering grafico. Inoltre è progettato specificatamente per l elaborazione intensiva di dati, piuttosto che per il caching dei dati e il controllo di flusso. Figura 3: architettura CPU vs. GPU Nello specifico, il processore grafico è fatto apposta per risolvere problemi paralleli per eccellenza, ovvero eseguire lo stesso programma eseguito su input diversi in parallelo, ad alta velocità di calcolo aritmetico e al alto tasso di trasferimento dati in memoria. 20

30 Dato che lo stesso programma è eseguito su ogni elemento in ingresso, non è necessario poter disporre di un sofisticato controllore di flusso; inoltre, vista l alta frequenza dei calcoli e degli accessi in memoria, la latenza della memoria stessa può essere mascherata da calcoli invece che da caching di grandi masse di dati. L elaborazione parallela dei dati ha bisogno di una organizzazione degli stessi in thread da eseguire parallelamente. Molte applicazioni che elaborano grandi masse di dati utilizzano soluzioni di suddivisione degli ingressi in parti da elaborare contemporaneamente. Nel rendering 3D, grossi blocchi di pixel e vertici sono mappati in thread paralleli. In modo simile, molte applicazioni multimediali quali codifica e decodifica di video, postelaborazione o scalamento di immagini, visione stereografica, riconoscimento di pattern eccetera, processano parallelamente blocchi di dati precedentemente composti. Molti algoritmi, anche completamente estranei all elaborazione di immagini, possono aumentare notevolmente la propria efficienza grazie all introduzione di processi eseguiti parallelamente. Si cita l elaborazione di segnali in genere, simulazioni in ambito fisico, finanziario o biologico. CUDA, il software sviluppato per consentire l accesso alla GPU e alla memoria della scheda grafica, è un acronimo di Compute Unified Device Architecture. Sostanzialmente è un modello di programmazione parallela e un pacchetto software che consente di sfruttare la capacità computazionale della GPU, anche per applicazioni non grafiche. È stato pensato appositamente per avere una bassa curva di apprendimento per programmatori che hanno familiarità con linguaggi di programmazione standard come il C. CUDA è essenzialmente un piccolo set di estensioni al linguaggio C, che consente in maniera semplice lo sviluppo di algoritmi con parti parallele. In questo modo, i programmatori possono focalizzarsi sulla creazione degli algoritmi paralleli specifici che interessano, senza preoccuparsi dell implementazione. CUDA inoltre supporta la gestione eterogenea del calcolo, cioè la partecipazione all elaborazione di CPU e GPU. Le porzioni seriali di codice sono eseguite dalla CPU, e le porzioni parallele sono demandate alla GPU. Grazie a tutto questo, CUDA può essere inserito successivamente in applicazioni in C già esistenti. 21

31 La CPU e la GPU sono trattate come dispositivi separati, ognuno con la propria porzione di memoria. Questa configurazione consente l elaborazione simultanea da parte della CPU e della GPU, garantendo il non verificarsi di conflitti di memoria. I processori grafici compatibili con CUDA sono composti da centinaia di core, quindi si può arrivare ad avere migliaia di processi eseguiti in parallelo. Ogni singolo core ha accesso a risorse condivise, tra cui registri e memoria. La memoria condivisa integrata nel processore grafico consente la condivisione di dati tra i processi eseguiti dai vari core, senza però inviarli al bus di sistema. Il problema principale dell utilizzo di queste tecniche è dato dal fatto che l ottimizzazione del codice per la parallelizzazione va fatto a livello di programmazione, ossia il programmatore deve occuparsi di definire in maniera efficiente ogni thread che andrà poi ad essere eseguito in maniera parallela dalla GPU. D altro canto, la sincronizzazione dei vari processi è demandata al codice già pronto contenuto nelle librerie fornite da Nvidia. Inoltre è possibile effettuare una gestione completamente personalizzata della memoria ad alta velocità contenuta nella scheda grafica, per ogni possibile esigenza. 2.5 Le macchine a 64 bit Un aumento di prestazioni può essere riscontrato nello sviluppo di una applicazione a 64 bit e nell esecuzione della stessa su una macchina con processore che supporti tali applicazioni. Non è però un discorso valido sempre, e a volte i costi possono non giustificare i benefici. Esistono alcuni aspetti da considerare riguardo al software e all hardware necessari per sfruttare al massimo tutte le potenzialità offerte rispetto al funzionamento a 32 bit. Innanzitutto esistono alcune limitazioni: la maggior parte dei microprocessori a 64 bit presenti sul mercato al giorno d oggi, sono limitati artificialmente riguardo alla quantità di memoria indirizzabile. Vincoli fisici rendono impossibile il supporto alla piena capacità indirizzabile di 16,8 milioni di terabytes. 22

32 Per fornire un esempio, l architettura dei processori AMD64 ha un bus per la memoria fisica limitato a 52 bit, ed è possibile indirizzare memoria virtuale per un massimo di 48 bit. Il passaggio da un'architettura a 32 bit ad una a 64 comporta un cambiamento profondo: la maggior parte dei sistemi operativi deve subire molti cambiamenti per trarre vantaggio dalla nuova architettura. Anche le applicazioni a 32 bit hanno bisogno di una conversione specifica per poter sfruttare le nuove funzionalità. I programmi non convertibili sono generalmente supportati attraverso una modalità di compatibilità hardware, attraverso l'emulazione software, o anche attraverso l'implementazione del nucleo di un processore a 32 bit all'interno del chip stesso. Benché le architetture a 64 bit rendano indiscutibilmente più semplice lavorare con quantitativi massicci di dati, esistono parecchie discussioni riguardo a quanto esse o le loro modalità 32 bit compatibili siano più veloci, rispetto a sistemi a 32 bit di prezzo analogo. Usare infatti 64 bit per effettuare operazioni che potrebbero essere gestite a 32, comporta un inutile spreco di risorse (memoria centrale, cache, ecc.). Comunque, in applicazioni scientifiche, i dati elaborati spesso usano in maniera naturale blocchi di 64 bit, e una elaborazione di essi sarà quindi più veloce su un'architettura a I problemi concettuali del text mining Tra le varie questioni riguardanti la progettazione di una applicazione per text mining, spiccano anche alcuni problemi di tipo concettuale. Questi riguardano infatti ciò che si vuole ottenere dall'applicazione in oggetto. I risultati ottenuti possono infatti richiedere una particolare interpretazione, oppure condensarsi in un unico report, oppure ancora fornire un elenco molto dettagliato di varie caratteristiche analizzate. Quindi occorre un processo di analisi, realizzazione, test e revisione addirittura solo per fissare le modalità di esposizione e utilizzo dei risultati stessi. 23

33 Capitolo 3 Stato dell arte 3.1 Principali utilizzatori di tecnologie di text mining Si sottolinea ulteriormente la grande generalità e l amplissimo spettro di applicazioni che va ad essere incluso nell ambito del text mining. Questo comporta il possibile utilizzo di tecnologie di text mining adatte alla risoluzione di un numero elevatissimo di problemi, di varia natura. Esistono alcune grandi categorie di utilizzatori di tali applicazioni Utilizzi in ambito accademico Le possibilità offerte dal text mining sono molto importanti per chi ha bisogno di recuperare informazioni da database molto estesi. Questa situazione è particolarmente spinta nel campo delle discipline scientifiche: in questo caso si hanno informazioni altamente specifiche spesso confuse in grandi quantità di testo. Per questo motivo sono nate alcune proposte a mirate a risolvere tale problema comune. La rivista Nature per esempio ha proposto lo sviluppo di un interfaccia per text mining open source di nome OTMI, e un descrittore per documenti in linguaggio XML è stato pubblicato dall Istituto Nazionale della Salute americano, il NIH. Questo descrittore è diventato uno standard chiamato DTD (Document Type Definition), inserito anche nell intestazione delle pagine web e utile per inserire informazioni semantiche, le quali aiutano la ricerca del documento che le contiene. Il primo centro pubblico per il text mining è il National Centre for Text Mining (NaCTeM), le cui operazioni sono coordinate dall Università di Manchester e l Università di Tokio. Al NaCTeM si sviluppano applicazioni personalizzate, strutture di ricerca e si fornisce assistenza da parte della comunità accademica. La ricerca, inizialmente incentrata su ambiti biologici e biomedicali, è oggi espansa a coprire anche le scienze sociali. 24

34 All Università della California a Berkeley, i ricercatori stanno sviluppando un programma di text mining e analisi chiamato BioText, adatto all assistenza dei ricercatori biomedici Utilizzi in ambiti di sicurezza Una delle più estese applicazioni di text mining è il sistema segreto di sorveglianza ECHELON. In più, molte suite di applicazioni per text mining, come AeroText e COGITO comprendono svariate parti per la gestione della sicurezza. In genere, i text miners usati a scopi di sorveglianza e sicurezza sono sistemi adibiti all analisi di testo in chiaro, proveniente da documenti, e pagine web. Nel 2007, la divisione Crimini gravi dell Europol ha sviluppato un sistema di analisi adatto al tracciamento delle azioni del crimine organizzato internazionale. Questo sistema integra alcune delle più avanzate tecnologie di text mining e analisi dei dati disponibili oggi sul mercato. Ciò consente ad Europol di raggiungere obiettivi riconosciuti a livello internazionale. Queste tematiche verranno riprese ed approfondite nel capitolo 4, dedicato all informatica forense Altri utilizzi Si possono citare innumerevoli altre aree di lavoro per le applicazioni di text mining, sempre a causa della generalità di tali applicazioni e il gran numero di scopi perseguibili grazie ad esse. In ambito biomedico si nota una grande presenza in letteratura di applicazioni di questo tipo. Gli scopi principali dei text miners in questi ambiti sono la ricerca di entità biologiche, come i nomi di proteine e geni in documenti di testo, o l associazione di cluster di geni al proprio contesto biologico presente in letteratura. Altri utilizzi sono l estrazione automatica di interazioni fra proteine, la ricerca di associazioni fra proteine e concetti funzionali, oppure l estrazione di parametri cinetici di particolari molecole. 25

35 Nell ambito di produzione di software il text mining è utilizzato dai reparti di ricerca e sviluppo di grandi case produttrici, come Microsoft e IBM. I loro scopi riguardano per lo più la ricerca di determinate informazioni nei database. I siti internet che offrono al pubblico grandi quantità di materiale multimediale o testo, possono dover sfruttare applicazioni di text mining per funzioni di disambiguazione delle richieste fornite dagli utenti. Ciò in genere si traduce in miglioramento dei risultati offerti agli utenti in termini di quantità e qualità, e un maggior ritorno economico. Si comprende quindi perché anche in ambito di marketing le applicazioni di text mining possono avere una certa rilevanza. Analisi in questo senso vengono prodotte per la ricerca di modelli di attrazione dei clienti, e modelli di gestione delle relazioni con i clienti. 3.2 I problemi di chi ricerca tali applicazioni Analizzando il lavoro di Jan van Gemert [9] si arriva a capire subito il gruppo di problemi che si presentano dinanzi a chi desidera effettuare una ricerca riguardo ad applicazioni di text mining. La generalità del concetto espresso dalle sole parole text mining è già stata affrontata, e trova un ampio riscontro nel numero di risultati ottenibili digitando su un motore di ricerca la query Text mining, Information retrieval, document analysis, tools, Natural language processing, software, data mining, content analysis. Nel caso di Google si ottengono circa risultati. Jan van Gemert specifica chiaramente tale problema, e spiega che per riuscire a compiere una ricerca utile si è voluto omettere i risultati di minor importanza e tutti i piccoli tool amatoriali e troppo specifici. Si è mantenuto solo chi forniva almeno una descrizione del produttore dell applicazione in oggetto, un modo di reperire l applicazione stessa ed un minimo di documentazione, informazioni sul prezzo. Il risultato è esposto in un elenco di 64 produttori e 71 applicazioni disponibili. Particolarmente rilevanti nell elenco di van Gemert, anche perché ancora oggi presenti sul mercato, sono: NetOwl Extractor, di SRA Inc.; TextAnalyst, di Megaputer Intelligence; 26

36 Intelligent Miner, IBM; Knowledge Server, di Autonomy; ClearForest. 3.3 Cosa è cambiato in dieci anni L articolo di Tan [10], risalente all anno 1999, può fornire un idea dell evoluzione che hanno subito le applicazioni per text mining e lo stato dell arte negli ultimi dieci anni. L articolo è strutturato in modo da presentare un framework adatto ad alcuni usi per il text mining, in seguito presentare lo stato dell arte dell epoca e in conclusione offrire una panoramica delle questioni e sfide principali di questo ambito, oltre alle opportunità future. L articolo inizia la trattazione con alcune osservazioni sulla quantità molto elevata di informazioni testuali disponibili riguardo ad un azienda, per introdurre l importanza dell argomento. Successivamente si pone l attenzione sulla grande variabilità delle tecniche utilizzabili in ambito di text mining. L articolo prosegue descrivendo un framework base di possibile impiego, sviluppato da Tan stesso, e lo confronta con alcune applicazioni di text mining presenti sul mercato al momento della scrittura dell articolo stesso. Una tabella comparativa confronta le capacità e le caratteristiche di una ventina di tools, tra cui spiccano i nomi Inxight e IBM, ancora oggi presenti sul mercato del text mining in maniera molto importante. L articolo afferma che molti dei tool analizzati erano basati sul natural language processing, ma nessuno integrava funzioni di data mining che agissero sui concetti o su oggetti. Vengono individuate due grandi categorie che raggruppano le applicazioni analizzate, riassumibili in visualizzazione di documenti (organizzazione di documenti basata su similitudini) e analisi di testi e comprensione (tecniche di natural language processing). L articolo conclude con gli sviluppi futuri, chiarendo bene il bisogno di sviluppare un analisi semantica per garantire un analisi davvero efficace, osservando però le difficoltà dovute al carico di lavoro necessario a tale fine tradotte in un aumento del tempo di esecuzione. 27

37 Un altro problema esposto in questa sezione dell articolo riguarda la differenza tra data mining e text mining, nel cui ambito esistono problemi dovuti alle differenze tra una lingua e l altra. Si specifica, come da aspettative, il grande bisogno di estendere le funzionalità delle applicazioni di text mining a più lingue possibili. 3.4 Elenco di applicazioni rilevanti Si mostrano qui di seguito alcune caratteristiche di un piccolo numero di applicazioni rilevanti, per osservarne la direzione di ricerca e gli ambiti tecnologici AeroText, Lockheed Martin Corporation Il prodotto comprende una suite di programmi per il text mining e per l analisi dei contenuti. I dati analizzati possono essere in diverse lingue. La descrizione delle capacità della suite comprende una parte per l analisi dei contenuti che può produrre automaticamente database, effettuare ricerche, indicizzazione, raggruppamento di contenuti. Interessante la caratteristica segnalata di indipendenza dalla lingua. Il database di informazioni principale è in lingua inglese, ma sono presenti database per l arabo, cinese semplificato, cinese tradizionale, spagnolo e indonesiano. Le informazioni sono organizzate in entità (persone, organizzazioni, luoghi ecc.), frasi chiave (espressioni di tempo, prezzi e costi, ecc.), e frasi grammaticali. L analisi delle interazioni è invece basata su associazioni tra entità, estrazione di eventi, categorizzazione di argomenti, risoluzione temporale e spaziale. È disponibile un clusterizzatore che raggruppa i documenti con similarità concettuali. La caratterizzazione e personalizzazione del tool può essere completata da regole inserite manualmente. 28

38 3.4.2 Prodotti di ClearForest ClearForest è una azienda di Boston che sviluppa e vende applicazioni per il text mining e per l analisi di documenti. Il sito ufficiale della compagnia [11] descrive come siano inutili a volte i comuni approcci testuali mirati all analisi lessicale e alla classificazione, quando occorre risolvere problemi di text mining avanzati. Inoltre, i problemi propri della business intelligence richiedono l utilizzo di una classificazione troppo specifica per l impiego dei metodi comuni. ClearForest quindi propone la soluzione con una piattaforma di classificazione flessibile e un set estensibile di moduli estrattori. Ogni modulo effettua funzioni molto specifiche, ed è basato su pesanti funzioni di classificazione utilizzando i Tag definiti da ClearForest. Tra i Tag di ClearForest si trovano concetti base quali persone, aziende o località. I moduli estrattori, più specifici, sono in grado di identificare entità uniche per una particolare industria, e a relazionarle ad altre. Ci si può accorgere spesso che i moduli estrattori, i quali analizzano informazioni molto specifiche, compiono fino al 70% dell intero lavoro di classificazione. È possibile anche creare appositamente moduli estrattori su richiesta, e con funzioni linguistiche estese. Moduli estrattori disponibili: Quality Early Warning processa entità quali: parti guaste, condizioni di errore, note di servizio, reclami di garanzia; People and Corporate Profile distingue entità come: cambiamenti di gestione, attività legali, novità dei prodotti, unioni e acquisizioni; Federal Intelligence distingue entità come: associazioni tra persone e organizzazioni, località, acquisizione di armi, dati sull immigrazione, pagine web, ; Patent Analysis distingue entità come: autori, brevetti, grafici temporali provenienti da database di brevetti. Tra i vari prodotti di ClearForest si osserva anche Semantic Web Services : si tratta di un servizio disponibile online, in grado di sfruttare i sofisticati tool di Clearforest per fornire ad utenti provenienti dal web servizi di natural language processing. 29

39 ClearForest offre altre soluzioni per l analisi di testi, specifiche per problemi aziendali come la valutazione dell equity di fondi speculativi, creazione di database per banche dati, estrazione di dati riguardo ai consumatori durante ricerche di mercato, valutazione della qualità COGITO, Expert System Spa Azienda italiana, pioniera nel campo dello sviluppo di tecnologie semantiche per comprendere e manipolare informazioni non strutturate. La classificazione dei testi proposta dall azienda avviene grazie ad un approccio semantico ai dati. Il prodotto proposto, COGITO, è basato su una rete semantica utile per comprendere i contenuti in modo simile agli umani. Il software è disponibile in inglese e italiano, ed è in sviluppo per l arabo e per il tedesco. Tali software sono utilizzati da enti governativi italiani ed esteri. Prodotti degni di nota della suite COGITO: SIMS: generatore di algoritmi per l elaborazione del linguaggio; Cogito Semantic Search: ricerca nel web utilizzando le reti semantiche per comprendere la query e filtrare i risultati; Cogito Categorizer: classificatore per documenti; Cogito Semantic Advertiser: tool per la gestione di annunci pubblicitari basati sui contenuti delle pagine web; Cogito Intelligence Platform: dispositivo per la ricerca di connessioni concettuali tra documenti Data Integrator, Pervasive Software Il prodotto Data Integrator consiste in una suite di applicazioni utili a leggere e comporre strutture dati molto complesse. Ogni informazione è tradotta in un formato XML open, compatibile con altri sistemi di controllo dei processi. Le applicazioni descritte sono in grado di trasformare dati provenienti da un gran numero di database, in una unica struttura XML adatta ad accogliere ogni informazione possibile. 30

40 La struttura di funzionamento della suite è complessa, per raggiungere una modularità e una scalabilità massime, adatte all utilizzo prettamente aziendale. L elaborazione testuale viene effettuata all inizio della catena di elaborazione, da un modulo chiamato Extract Schema Designer. Questo modulo è in grado di elaborare oggetti basati su contenuti testuali, come , rapporti, HTML, pagine stampate e altre tipologie di dati con testo. È l unico modulo adibito a tale scopo, ed è fondamentale per accedere a contenuti non strutturati, che comunque devono far parte dei dati integrati finali. È possibile personalizzarlo inserendo routines di estrazione Fair Isaac Corporation L azienda americana Fair Isaac è specializzata nel fornire prodotti informatici alle aziende, per la gestione finanziaria e la gestione di funzioni decisionali. L offerta riguardante le applicazioni di text mining è la seguente: Model Builder inizia il processo di costruzione dei modelli. Si tratta di un ambiente di sviluppo integrato che offre una vasta gamma di tecniche diverse; Blaze Advisor è il responsabile delle regole di elaborazione. Questo gestore di regole consente ai modelli creati di essere sfruttati in un flusso di lavoro; Decision Optimizer consente di gestire il portafoglio di modelli che possono essere usati per definire uno scenario. Possono quindi essere valutati in modo che lavorino sempre entro i limiti del mondo reale per produrre i migliori risultati in un determinato insieme di circostanze. In genere l ottimizzazione di una applicazione di data mining funziona scegliendo il modello che porta al raggiungimento dell obiettivo prefissato. In questo caso invece, si cerca il miglior gruppo di modelli che consentono di raggiungere gli obiettivi. Questa è una distinzione importante che riassume molto la differenza tra la Fair Isaac e la maggior parte della concorrenza. Mentre gli altri cercano un unico ottimo, Fair Isaac esamina quale combinazione di modelli offre la soluzione migliore. 31

41 Questo approccio consente di utilizzare diversi modelli per gestire le diverse sottopopolazioni dei dati e venire a contatto con una soluzione davvero migliore. Insieme, questi costituiscono un Decision Enterprise Management (EDM) che offre un ambiente molto potente e produttivo, ad alto volume di decisioni che devono essere fatte con precisione, consentendo alle imprese di operare in modo efficiente ed efficace. Se una caratteristica dell impresa è quella di dover compiere sempre molte decisioni, sistemi veloci e precisi possono costituire una parte essenziale del processo decisionale, influenzandolo in maniera favorevole I2E, Linguamatics Limited I2E è il software prodotto da Linguamatics. Lo scopo di questo programma è aiutare le aziende a trovare eventi e relazioni critici per il proprio business, nascosti all interno di testo non strutturato. Queste informazioni successivamente possono essere filtrate e rese disponibili alle sezioni decisionali, evitando l accumulo esagerato di informazioni non gestibili. I2E combina le ricerche in letteratura e il text mining alla ricerca di concetti all interno dei dati. Una presentazione del prodotto è disponibile sul sito dell azienda [12]. Il motore di Natural Language Processing di I2E va oltre la semplice ricerca di parole chiave, accedendo a complesse strutture di documenti ed estraendo fatti rilevanti, relazioni ed entità. I risultati sono poi tradotti in formati compatibili con i decisori aziendali. Le ricerche in letteratura possono essere effettuate su articoli di riviste scientifiche, rendiconti su progetti interni all azienda, notizie, brevetti o . I2E è facilmente espandibile, si possono aggiungere facilmente dati al suo knowledge base, in forma di dizionari, tassonomie e ontologie, per rendere più specifico il suo funzionamento. La versatilità del programma è data dal fatto che possono essere intraprese diverse azioni, dalla semplice ricerca utilizzando parole chiave, alla ricerca di informazioni avanzate come estrazione di fatti, relazioni ed entità utilizzando strutture linguistiche. 32

42 3.4.7 IDOL Server, Autonomy Corporation L azienda, con sedi in Inghilterra e America, utilizza le conoscenze scientifiche provenienti dall Università di Cambridge, per sviluppare applicazioni nel campo della ricerca d impresa. La ricerca dell azienda è portata avanti con tecniche di riconoscimento adattivo di pattern, utilizzanti l inferenza bayesiana accanto ai metodi tradizionali. Il prodotto di maggior interesse offerto oggi è il server IDOL (Intelligent Data Operating Layer). Viene utilizzato questo server per la memorizzazione di informazioni non strutturate, nello stesso modo in cui un Database Management System relazionale (RDMS) viene utilizzato per contenere informazioni strutturate. Il server IDOL consente la ricerca e l elaborazione di testi, audio, video e altre informazioni strutturate. L elaborazione eseguita dal server IDOL viene definita dai creatori come Meaning-Based Computing, ovvero elaborazione basata sui significati Intelligent Miner, IBM Il programma è spiegato in dettaglio nella brochure [13]. In particolare si nota il fatto che è possibile installare versioni per il calcolo parallelo o per il calcolo distribuito, e si nota la grande parte di manuale che tratta dell interfacciamento con i database. Si osserva la presenza nel software di oggetti di configurazione: in particolare esistono parti configurabili riguardo alle statistiche di analisi, al preprocessing dei dati, alle sequenze di elaborazione, ai nomi e ai valori per le mappature. Le funzioni di mining principali dell applicazione sono: Associations: serve a trovare oggetti in una transazione che implicano la presenza di altri oggetti nella medesima transazione. Con clustering è inteso il processo di raggruppamento di record aventi caratteristiche simili. Il software ricerca caratteristiche comuni più frequenti, e raggruppa utilizzando tali informazioni i record interessati. La funzione di clustering ritorna il numero di cluster trovati e le caratteristiche di raggruppamento di ciascun cluster. In aggiunta, si riesce a capire come queste caratteristiche siano distribuite all interno dei cluster. 33

43 Demographic Clustering: funzione di raggruppamento veloce ed intuitiva. Determina automaticamente il numero di cluster finale. Le similitudini tra i record sono determinate confrontando i valori nei vari campi. I cluster sono definiti quindi dalla massimizzazione del criterio di Condorcet. Neural Clustering: impiega una rete neurale a features di Kohonen. Essa utilizza un processo chiamato auto organizzazione, per raggruppare insieme input simili. L utente specifica il numero di clusters e il massimo numero di passi dell algoritmo. Questi parametri controllano il tempo di esecuzione e il grado di granularità utilizzato quando i dati vengono assegnati ai clusters. Il problema principale del clustering neurale è la ricerca del centro di ogni cluster. Sequential Patterns: lo scopo di tale metodo è la previsione di particolari comportamenti nel tempo. L utilizzo di questa funzione può essere utile per casi di fraud detection, previsioni riguardo a piani promozionali, previsioni di piazzamenti sul mercato. Similar Sequences: ricerca tutte le occorrenze di sequenze simili all interno di un database. La brochure del programma descrive il processo di classificazione come la creazione di un modello basato su dati conosciuti. Si può utilizzare tale modello per analizzare in che modo è stata prodotta una classificazione, o per calcolare la classificazione di nuovi dati. I dati storici, come vengono chiamati, sono solitamente un insieme di valori e un flag che classifica ogni valore. L analisi di dati precedentemente classificati rivela le caratteristiche basilari del metodo utilizzato per l assegnazione dei flag. L analisi porta ad un modello, che può essere utilizzato per prevedere le classi di dati contenenti nuovi valori. Tree Classification: algoritmo che fornisce una descrizione della distribuzione dei dati analizzati. Neural Classification: algoritmo che impiega una rete neurale a back propagation. Con Prediction è inteso scoprire la dipendenza e la variazione di un valore in certo campo, rispetto ai valori di altri campi nel medesimo record. È generato un modello per prevedere un valore di un particolare campo in un nuovo record, basandosi sui valori di altri campi. RBF-Prediction mining function: utilizza le radial basis function. 34

44 Neural Prediction mining function: crea un modello per prevedere nuovi valori utilizzando la regressione. Questa funzione impiega una rete neurale a back propagation. Oltre alla previsione standard di valori (la regressione), questa funzione è in grado di fornire previsioni a lungo raggio, consentendo all utente di specificare un orizzonte temporale e costruire una finestra di previsioni fino a tale orizzonte Inxight Software Inc. Si tratta di una azienda specializzata nella visualizzazione e ricerca di informazioni, e si occupa anche di Natural Language Processing. È stata comprata da Businness Objects nel 2007, e la stessa Business Objects è stata acquistata da SAP AG nel I prodotti di rilievo di Inxight sono: LinguistX, un set di API per l analisi di testi; Summarizer, un programma per la generazione di estratti di testo e riassunti; ThingFinder, un estrattore di entità da dati organizzati in linguaggio naturale Languageware, IBM Il prodotto è un progetto basato sul Natural Language Processing sviluppato da IBM, adatto all integrazione in applicazioni che hanno bisogno di estrarre informazioni da testo in linguaggio naturale. Comprende un set di librerie in linguaggio Java, le quali offrono funzionalità di riconoscimento della lingua, segmentazione di testi, normalizzazione, estrazione di entità e relazioni, analisi semantica e disambiguazione. Il processo di analisi è basato sull algoritmo delle macchine a stati finiti con un approccio a più livelli. Il comportamento del sistema avviene grazie ad un set di risorse lessicali e semantiche, adatte a descrivere le caratteristiche e il dominio del testo analizzato. Il software viene fornito con alcuni pacchetti di analisi già pronti, necessari per la gestione di informazioni linguistiche. 35

45 Tali pacchetti contengono informazioni riguardanti la morfologia e il vocabolario base per un certo numero di lingue. Si possono aggiungere pacchetti contenenti informazioni su ulteriori lingue e riguardanti vocabolari o regole grammaticali, le quali possono essere generiche o specifiche per uno o più domini linguistici. Il software comprende un tool di personalizzazione per l integrazione con Eclipse [14], in modo da inserire tutte le funzionalità del prodotto in una generica applicazione. LanguageWare infatti può essere sviluppato e integrato sotto forma di plugin per Eclipse, o altrimenti come codice compatibile con UIMA, o ancora come insieme di servizi web. Con UIMA si intende Unstructured Information Management Architecture, un protocollo per la ricerca e l analisi di informazioni non strutturate, sviluppato da IBM Lexis Total Research System, LexisNexis Il sistema messo a punto dall azienda LexisNexis serve a condurre ricerche all interno di database giudiziari, e l interfaccia utente è disponibile online sul sito stesso della compagnia. Le tecnologie utilizzate non sono divulgate, ed il servizio online è a pagamento Rapidminer, Rapid-I L articolo di Mierswa et al. [15] fornisce spiegazioni molto dettagliate al riguardo di tale prodotto. Innanzitutto la trattazione inizia col descrivere le principali problematiche di un applicazione per data mining, nell espressione più generale del termine. Subito dopo si descrive quanto un processo di prototipizzazione può essere importante per raggiungere gli obiettivi fissati in breve tempo e mantenendo bassi i costi. Inoltre è necessaria una pianificazione del costo finale dell applicazione e del tempo di esecuzione, vincolo decisamente critico. Sono proposte alcune caratteristiche ritenute requisiti fondamentali per prodotti adatti al data mining: l applicazione deve essere estremamente flessibile, rispettando comunque tutti i vincoli dettati dall impiego di metodi di preprocessing e analisi dei dati. 36

46 Ciò significa disponibilità di molti metodi e algoritmi diversi, e possibilità di incorporarne facilmente nuovi; l applicazione deve essere in grado di elaborare tipi differenti di dati, come serie temporali o testo, senza impegno aggiuntivo per l utente; l applicazione deve fornire ampie funzionalità per stime e ottimizzazioni; l applicazione deve essere molto facile da utilizzare, senza costringere l utente ad imparare formalismi complessi. Il progetto Rapidminer è basato su una struttura ad albero: un albero modificabile tramite un interfaccia utente visuale, dove ogni ramo rappresenta una funzione base, nell articolo chiamata operatore. L articolo mostra un esempio di albero di operatori, contenente due serie di operatori tra cui LibSVMLearner, ModelApplier, CrossValidation e simili. La potenza di questa struttura è la possibilità di costruire facilmente, secondo i bisogni immediati, alberi molto complessi per effettuare processi complicati di data mining. Il software è compreso di più di 400 operatori già pronti, suddivisi in categorie. Tra gli operatori di interfacciamento si segnalano codici per la lettura e scrittura di file Arff, C4.5, csv, formati sparsi, database come Oracle, mysql, Postgre, o altri formati quali dbase, file audio e testuali. Sono forniti operatori di machine learning come SVM, alberi di decisione e learners di regole, lazy learners, macchine bayesiane, regressione logistica, processi gaussiani, tecniche di meta learning, macchine a regole associative e schemi di clustering. Tra gli operatori di pre-elaborazione di dati si segnalano discretizzazione, filtraggio, normalizzazione, estrattori di campioni, riduttori di dimensionalità. Tra gli operatori di trasformazione degli spazi delle features si citano: selezione in avanti, eliminazione all indietro, algoritmi generici, pesi guidati, calcoli di rilevanza, costruzione di features ed estrazione. Sono molto importanti anche operatori adatti alla stima e all ottimizzazione, e tool di visualizzazione. 37

47 Ogni operatore è definito da ingressi, uscite, elementi grafici e algoritmi, il tutto specificato in linguaggio XML. Il programma principale è definito interamente in linguaggio Java, e può essere integrato in altre applicazioni. Riguardo all utilizzo del software per applicazioni di text mining, l articolo specifica che l ambito concernente i testi porta ad un gran numero di azioni ed elaborazioni possibili, ma Rapidminer è in grado di soddisfare alcune funzionalità. Tra esse è citato: il filtraggio di notizie provenienti da sorgenti multiple, finalizzato alla caratterizzazione dei contenuti in modo specifico per ogni utente; l ordinamento automatico di documenti o pagine web in categorie predefinite; l inoltro automatico di messaggi di posta elettronica ai destinatari più appropriati all interno di aziende od organizzazioni. Un processo di text mining in genere comprende una fase iniziale di pre-elaborazione dei dati. I dati testuali sono spesso in forma non strutturata, come per esempio testi in linguaggio naturale, o semistrutturata, come dati inclusi in documenti HTML, pagine web o documenti XML. Molti metodi di machine learning sono progettati per l elaborazione di features rappresentate in forma vettoriale, in un determinato spazio. Questo rende chiaro il bisogno di effettuare una pre-elaborazione dei dati, come per esempio la trasformazione del testo in un entità vettoriale. Se si utilizza il modello basato sullo spazio vettoriale, l ordine di apparizione delle parole in un documento è ignorato. Ogni parola presente nel documento è considerata come una caratteristica, e la frequenza di apparizione delle singole parole fornisce il valore attributo a ciascuna caratteristica. Le parole troppo frequenti, e quindi prive di informazione come articoli, preposizioni, congiunzioni, ecc. sono spesso rimosse. In seguito, i valori della frequenza dei vari termini (tf) sono organizzati dando maggiore importanza alle parole meno frequenti, per esempio moltiplicando la frequenza con il logaritmo della frequenza inversa (idf). Una parte del software Rapidminer, chiamata Word Vector Tool plugin, offre operatori utilizzabili dall utente per effettuare pre-elaborazione di testi come rimozione delle parole più frequenti (stop words), stemming (riduzione di una parola alla forma base, senza 38

48 desinenze o coniugazioni), generazione delle features vettoriali, valutazione dell importanza di singoli termini. Un problema particolare riguardante il text mining è quello del concept drifting, ovvero il cambiamento delle proprietà statistiche delle variabili per cause imprevedibili, che porta ad una perdita di accuratezza delle previsioni proporzionale al passare del tempo. Infatti i dati testuali possono essere accumulati durante un lungo periodo di tempo, e i risultati desiderati da un elaborazione degli stessi possono variare. Il plugin di Rapidminer per il concept drifting permette di gestire le variazioni di questo fenomeno. Sono forniti con esso operatori in grado di simulare stream di dati e variazioni del fenomeno in grado di riprodurre andamenti simili a casi reali. Il set di metodi spazia dalla non considerazione del drifting, al learning con considerazione più o meno consistente dei vecchi campioni, all utilizzo di una finestra temporale fissa o adattiva sui campioni. Il Word Vector Tool e il plugin per il concept drifting di Rapidminer costituiscono quindi la base per molte applicazioni di text mining, come per esempio clusterizzazione di testi o estrazione di parole chiave Text Mining for Clementine, SPSS Inc. SPSS, o Statistical Package for the Social Sciences, è forse il più usato gruppo di programmi per l analisi statistica negli ambiti delle scienze sociali. È utilizzato da ricercatori per analisi di mercato e in ambito sanitario, per sondaggi, in ambiti governativi, ricerche educative e altro. Oltre all analisi statistica, il software ha funzioni di gestione dei dati (selezione di casistiche, rimodellamento di file, creazione di dati derivati) e di documentazione (un dizionario di metadati memorizzato all interno dei dati stessi). Tra gli algoritmi e le funzionalità statistiche del software si cita: statistiche descrittive: tabelle di contingenza, frequenze, descrizioni, esplorazione; statistiche binarie: media, test della variabile t di Student, correlazione, test non parametrici; previsioni di risultati numerici: regressione lineare; 39

49 identificazione di gruppi: analisi fattoriale, analisi di clusters (due passi, K-means, cluster gerarchici), analisi discriminante. Text Mining For Clementine fa parte della suite, ed è il tool principale per la gestione e l elaborazione di testi Text Mining Engine, Nstein Technologies Il sito ufficiale dell azienda rende note alcune informazioni sulle tecnologie incorporate in Text Mining Engine 5. Innanzitutto si sottolinea la possibilità di disporre di pacchetti linguistici completamente compatibili con la architettura UIMA di IBM, adatta alla rappresentazione di informazioni non strutturate. TME 5 può accedere ad un buon numero di risorse semantiche utilizzando alcune API: Interfacce: consentono di eseguire una varietà di operazioni quali ricerca, gestione e mantenimento di processi. Ciò aiuta l utente a trovare file importanti, modificare configurazioni, consultare rapporti; Integrazione: un livello di astrazione sviluppato con lo scopo di accelerare l integrazione tra TME e applicazioni esistenti; Annotazioni semantiche: funzionalità correlate alle strutture linguistiche base, come estrazione di concetti, estrazione di entità, categorizzazione per facilitare la creazione di nuove applicazioni per il business e prodotti mashup, ovvero con tecnologie o finalità ibride. TME 5, secondo il produttore, ha caratteristiche che possono paragonarlo a ciò che sarà il Web 3.0, ovvero il web semantico. Il confronto viene fatto sulla base degli output del software, in grado di costruire metadati che possono essere interpretati dai lettori semantici dei grandi motori di ricerca come Google. Il prodotto è presentato come basato sulle ontologie. Un ontologia è una collezione di dati utilizzata per descrivere e rappresentare un area di conoscenza. Questo fa in modo che il programma elabori significati espliciti e particolari dei dati, meglio di vocabolari tradizionali e tassonomie. 40

50 L ontologia di cui si serve TME 5 segue gli standard W3C per il web semantico (ovvero i formati RDF e OWL). È un database centralizzato che fornisce un accesso unificato a una o più aree di conoscenza. L aggiornamento del database principale (knowledge base) è facilitato grazie ad un modello concettuale unico che consente modifiche consistenti e veloci del database centrale. Inoltre elimina le ridondanze, consente collegamenti di vario genere e il riutilizzo di stessi concetti grazie a proprietà comuni. 41

51 Capitolo 4 L informatica forense Questo capitolo vuole dare una panoramica sul tema dell informatica forense, ovvero uno dei principali contesti nel quale si può collocare il text mining. L uomo comunica in linguaggio naturale: questo vincolo inamovibile porta alla conclusione che sarà sempre più importante avere strumenti capaci di analizzare parole, interpretare frasi, comprendere concetti. In ambiti investigativi, un software capace di trovare ed isolare prove a partire da enormi quantità di dati, non può che assumere una fondamentale importanza. 4.1 Introduzione alla computer forensics L'informatica forense (Computer Forensics) è la scienza che studia l'individuazione, la conservazione, la protezione, l'estrazione, la documentazione e ogni altra forma di trattamento del dato informatico per essere valutato in un processo giuridico e studia, ai fini probatori, le tecniche e gli strumenti per l'esame metodologico dei sistemi informatici. Si tratta di una disciplina di recente formazione, che spesso viene erroneamente identificata come una nuova "branca" della computer security. In realtà oggi, con l'aumento dei crimini informatici, e, specialmente, con una ripresa di coscienza da parte delle aziende che hanno finalmente cominciato a denunciare i crimini di cui sono vittime, si rende necessaria una applicazione integrale di questa disciplina. Gli scopi dell informatica forense sono di conservare, identificare, acquisire, documentare e interpretare i dati presenti su un computer. A livello generale si tratta di individuare le modalità migliori per: acquisire le prove senza alterare o modificare il sistema informatico su cui si trovano; garantire che le prove acquisite su altro supporto siano identiche a quelle originarie; analizzare i dati senza alterarli. 42

52 L informatica forense comprende le attività di verifica dei supporti di memorizzazione dei dati e delle componenti informatiche, delle immagini, audio e video generate da computer, dei contenuti di archivi e basi dati e delle azioni svolte nelle reti telematiche. Importanti aspetti della disciplina riguardano, a un livello di maggior dettaglio, il ruolo della progettazione e mantenimento di una catena di custodia e gli argomenti principali da prendere in esame quando si presentano prove in sede processuale. Il sistema informatico oggetto dell indagine può essere un personal computer o un server isolato, nel qual caso si parla di computer forensics. Nel caso di almeno due elaboratori connessi tra loro si parla invece di network forensics. Tale disciplina ha avuto origine negli Stati Uniti e in Gran Bretagna ed una significativa spinta all evoluzione della materia è stata data nel 1994, quando il Dipartimento della Giustizia degli Stati Uniti ha pubblicato un insieme di linee guida. Figura 4: DoD Cyber Crime Center In Italia, oltre a nuclei nei corpi di polizia (istituito nel 1998 il Servizio di Polizia Postale e delle Telecomunicazioni), vi sono aziende di servizi di sicurezza informatica che fra le altre cose forniscono anche servizi di post incident analysis di informatica forense. È importante sottolineare che l informatica forense agisce sempre dopo che un sistema informatico è stato violato. 43

53 I dati informatici, grazie alla loro natura digitale, sono riproducibili: ciò spesso consente di effettuare l esame su una copia onde evitare alterazioni, inquinamenti e contraffazioni dell originale. Un sistema sicuro non può quindi essere fonte di reperti informatici e, per il loro reperimento, si arriva a dover talora utilizzare tecniche di hacking. L informatica forense serve dopo che sono stati utilizzati gli strumenti di risposta a un incidente, allorché intervengono gli organi inquirenti. Ogni giorno i sistemi informatici di tutto il mondo vengono sottoposti a centinaia di attacchi. Un attaccante, tramite la conoscenza di punti vulnerabili, può cercare di penetrare in un sistema, generando così un incidente informatico. L azienda di norma si occupa dell incidente dapprima seguendo le politiche interne di sicurezza e rivolgendosi successivamente agli organi investigativi. Si osserva che da alcuni anni i rischi derivanti da crimini informatici coinvolgono sempre più anche le medie e piccole imprese e non solo le multinazionali e i grandi istituti bancari. 4.2 Una metodologia forense Analizzando in dettaglio un qualsiasi personal computer si possono conoscere attività, gusti, pensiero di chi l utilizza; l analisi dei sistemi è dunque utile per condurre indagini e per acquisire prove inerenti a eventi legati alla vita del suo utilizzatore. Nel caso di reati informatici il sistema informatico può essere una sorta di arma del delitto o il bene colpito da azioni delittuose; in entrambi i casi l analisi di immagini dei contenuti delle aree di memorizzazione (hard disc e altro), delle aree in cui il sistema operativo memorizza il flusso dei lavori e degli accessi (log file e simili), delle aree di memorizzazione temporanea dei dati e dei programmi (memoria read-only e buffer) può portare all individuazione di elementi utili alle indagini, indizi o prove. Per l acquisizione delle prove da un sistema informatico il modo migliore è quello di poter accedere al sistema con il ruolo di amministratore di sistema, senza togliere la corrente elettrica, in modo da poter consultare anche la memoria Ram che viene cancellata in caso di spegnimento. In generale, andrà deciso caso per caso se accedere alla macchina accesa o togliere direttamente la tensione in modo da ottenere il più possibile una fotografia del sistema così 44

54 come era: infatti eseguire uno spegnimento classico comporta sicuramente la cancellazione e l alterazione di molti dati. Non meno importante risulta la gestione degli elementi di prova acquisiti, il loro trasporto e archiviazione per evitare che le stesse vengano alterate o comunque possa essere in discussione la loro integrità. A tale scopo risulta utile l utilizzo di strumenti di firma digitale o la predisposizione di verbali che documenti dall inizio del procedimento la vita e la custodia delle prove acquisite. La catena di custodia permette di garantire che non si sono prodotte alterazioni ai dati dal momento del loro sequestro al momento del dibattimento e per tutte le fasi dell iter processuale. Infine, per una corretta documentazione del processo di acquisizione delle prove va attentamente verbalizzata o addirittura filmata tutta la fase di analisi e di ricerca di esse in modo da poter giustificare con chiarezza ogni singola operazione eseguita. Per quanto riguarda l autenticazione delle prove va dimostrato che essa è stata eseguita senza modificare o in qualche modo turbare il sistema e le prove stesse vanno autenticate e verificate temporalmente con opportuni programmi di utilità in modo da poter facilmente dimostrare in sede di giudizio che le operazione di riproduzione delle prove è stata eseguita nei modi e nei tempi indicati. Per l analisi delle prove occorre rispettare due principi: i dati oggetto dell analisi non devono venire alterati e, senza entrare qui in dettagli di geometria dei dischi e dei supporti magnetici, un analisi dettagliata non dovrà essere eseguita solo all interno dei file ma anche nei settori del supporto magnetico lasciati liberi (slack space, aree non allocate e aree di swap del sistema operativo) che contengono comunque dati registrati e cancellati in precedenza ovvero dati che qualcuno desidera nascondere. Come in altri settori forensi, anche nel campo informatico risulta comodo e utile predisporre una lista delle azioni che devono essere eseguite e documentare puntualmente le attività e i compiti svolti in relazione a ciascuna di esse. Si rende necessario un metodo di lavoro che permetta di evitare ad ogni forenser di passare il tempo a reinventare le stesse cose o di rifare gli stessi errori che altri suoi colleghi hanno già compiuto. 45

55 Potrebbero così ottenersi diversi vantaggi: Normalizzazione dei risultati. Applicando la stessa metodologia sarebbe possibile ottenere risultati molto simili pur rivolgendosi a periti diversi, almeno per le fasi più di routine, come l acquisizione delle evidenze; Minore dispersione di energie. Le mancanze di comunicazione ed una legislazione assolutamente assente fanno sì che ogni singolo forenser debba affrontare gli stessi problemi già affrontati da altri e debba trovarvi soluzione; Minori possibilità alla controparte. Applicare un metodo che abbia già superato più volte le forche caudine del dibattimento eviterebbe di dare agio agli avvocati di parte avversa di trovare un vizio di forma o un cavillo legale che possa invalidare tutto il lavoro svolto; Verificabilità dei risultati. Il metodo comune permetterebbe ai periti di parte avversa di controllare in maniera più semplice e incontrovertibile i risultati ottenuti dagli investigatori. Il principio di fondo è quello di non dare nulla per scontato e quindi, adattando alla situazione italiana alcune linee guida autorevoli: va accuratamente verificato lo stato di ogni supporto magnetico; vanno ispezionati quaderni, fondi di tastiera e monitor per individuare eventuali password; va ricostruita (tracing) l attività di un accesso abusivo dalla rete; vanno individuati virus e altro software malevolo; va ricostruita la successione dei compiti e delle azioni; vanno confrontati tra loro gli indizi; va individuato il ruolo che assume il sistema oggetto della indagine; va considerato il ruolo delle persone che utilizzano il sistema per individuare eventuali individui indiziati, informati dei fatti o in grado di rivelare la password; va effettuato un accurato inventario delle attrezzature ispezionate; è opportuno ripetere due volte le analisi per avere certezza della meticolosità delle operazioni eseguite. 46

56 4.3 Informatica forense e text mining Nel panorama appena descritto il text mining assume un ruolo sempre più rilevante. Basti pensare all importanza che ormai ricopre la posta elettronica nella vita di tutti i giorni: si usa in famiglia, tra amici, sul lavoro. I milioni di scambiate ogni giorno possono in alcune situazioni, costituire una fonte infinita di prove, come nel caso del dataset diffuso durante le indagini sul fallimento della Enron Corp.: oggi è adottato da molti ricercatori (anche da noi, vedi capitolo 8) per testare nuovi software capaci di estrarne informazioni. Tecniche di apprendimento supervisionato e non supervisionato possono essere applicate a problematiche di questo tipo con l obiettivo di estrarre le informazioni più variegate. Il nostro lavoro ad esempio si concentra perlopiù sulla possibilità di raggruppare i testi, estraendo dal mucchio i documenti concernenti particolari temi, ma esistono altri casi in cui tecnologie simili sono finalizzati all identificazione del mittente delle . 47

57 Capitolo 5 Clustering di documenti La nostra attenzione si focalizza su un modello di document clustering che trasforma documenti non strutturati in gruppi di dati omogenei basati sui contenuti. Ci si basa su un paradigma ibrido, unione di algoritmi di pattern-recognition grouping con elaborazioni semantic-driven. Gli ingredienti fondamentali sono: una metrica per la determinazione della distanza tra i documenti, combinazione tra analisi basata sui contenuti ed analisi comportamentale, cioè sia di proprietà lessicali che di stile; clustering K-means basato su kernel RBF, ottimo per una normalizzazione dei dati in input, punto cruciale del text-mining, in quanto le proprietà dei documenti (lessico adottato, lunghezza, ecc) possono falsare la rappresentazione ed influire negativamente sulle prestazioni di un sistema di questo tipo. Vi sono molteplici ambiti in cui si può pensare di applicare le tecnologie di text-mining, che automatizzano e velocizzano l analisi di enormi dataset. Un esempio su tutti è rappresentato dalle applicazioni per la sicurezza, che possono estrarre e catalogare informazioni con l obiettivo di prevenire atti criminali. Gli strumenti di clustering sono certamente tra i più preziosi, in quanto permettono un organizzazione dei documenti in modo non supervisionato. Questo vuol dire che sono in grado di derivare automaticamente la tematica descritta in un dato e raggruppare dei dati simili, senza il bisogno di alcun training set. Pertanto si capisce come il clustering possa rivelarsi estremamente utile, nello sviluppo, mantenimento e perfezionamento di un modello per una distribuzione nota di documenti, al fine di supportare attività investigative e di monitoraggio. Nel caso specifico di elaborazione di documenti testuali, il clustering si esplicita in Natural Language Processing (NLP, trattamento linguaggio naturale), Information Retrieval (IR, recupero informazioni), Information Extraction (IE, estrazione informazioni), gestione della conoscenza per scoprire nuove informazioni. 48

58 5.1 Indicizzazione dei documenti Una struttura di text mining prevede un modello di estrazione dell informazione (IE) capace di prendere ed organizzare i documenti dando loro una struttura tale da renderli compatibili ed interpretabili da un sistema di machine learning. IE definisce il modo di rappresentare documenti e query e specifica il calcolo per la rilevanza di un documento rispetto ad una data query. I modelli di recupero documenti effettuano alcune operazioni sul testo originale generando un set di token rappresentativi, detti index terms. Figura 5: modello di un'applicazione per il clustering di documenti Tipiche operazioni per l ottenimento dei token sono: rimozione delle stop-words, cioè eliminazione di espressioni frequenti e semanticamente non selettive; stemming (lemmatizzazione), cioè riportare le parole alla radice (maschile, infinito, singolare) per ridurre le ambiguità. Quindi si passa da documento a vettore di index terms. 49

59 Un dizionario T = {t j ; j=1,,n T } si occupa di collezionare tutti i termini usati all interno dei documenti: viene assemblato empiricamente inserendo tutti i termini che ricorrono almeno una volta nella collezione di documenti D = {D 1,,D n }. Una rappresentazione di questo tipo perde le informazioni relative all ordinamento dei termini nel documento. Diversi sono i modelli proposti per passare ad una rappresentazione vettoriale di un testo. Un semplice esempio è il modello Booleano: fa uso di vettori binari v = {b j ; j=1,,n T } dove b j {0,1} ad indicare la presenza (o assenza) del termine t j : approccio ottimo per una ricerca veloce, ma privo di informazioni sulla distribuzione dei termini. Ma nel text mining, e più precisamente nel clustering di documenti, viene preferito il modello spazio vettoriale (vector space) che fa uso di un vettore di pesi reali w j, indicatori dell effettiva rilevanza del j-esimo termine all interno del documento D. Questi pesi, i term weight, possono essere ricavati in diversi modi. È popolare lo schema tfidf, dove: tf (term frequency) il numero di occorrenze del termine t in un documento D è proporzionale all importanza di t all interno di D; idf (inverse document frequency) il numero di occorrenze del termine t su diversi documenti è inversamente proporzionale al potere discriminante di t; in altre parole un termine presente in tutti i documenti del corpus non aiuta ad individuarne uno in particolare. Questi pesi necessitano di normalizzazione, al fine di contrastare la tendenza a favorire i testi più lunghi. I risultati del document indexing possono essere usati per recupero documenti, come accade nei motori di ricerca, o come passo intermedio nel text mining per fornire una rappresentazione dei documenti index-based, utile al successivo clustering. È uno step fondamentale, indispensabile per filtrare dati irrilevanti e dare rappresentazioni efficienti. 50

60 5.2 Il clustering L obiettivo del clustering nell ambito del text mining è di scoprire dei gruppi di documenti simili, a partire la un dataset di grandi dimensioni. Differentemente dalla text categorization, nel clustering si ha un approccio completamente non supervisionato: non vi è alcuna procedura di apprendimento né alcuna conoscenza a priori. È necessario definire: un set di documenti D = {D 1,,D n }; una misura di similarità (la metrica); un criterio di partizionamento, spesso implementato attraverso una funzione costo. Nel flat clustering, vengono creati dei cluster senza avere in partenza alcuna informazione sulla loro struttura: deve essere fissato il numero K di cluster desiderati (anche se ci sono metodi adattivi per la determinazione della cardinalità dei cluster), quindi viene eseguito il calcolo di una funzione di appartenenza ϕ : D {1,,K} tale da minimizzare il costo di partizionamento, dipendente dal grado di similarità tra i documenti considerati. Nel hierarchical clustering si genera una struttura a raggruppamenti divisi su più livelli, che non necessita di un numero K predeterminato. Ciò si paga in termini di costi computazionali, in quando l elaborazione evolve con task di partizionamento annidati. Un software di text mining deve affrontare tre problematiche principali. Innanzitutto la maledizione della dimensionalità: usando l approccio spazio vettoriale, i documenti si trovano in uno spazio a migliaia di dimensioni. Va notato però che la maggior parte di essi contengono solo una piccola frazione dei termini ammissibili nel vocabolario, quindi i vettori di rappresentazione dei testi risultano essere molto sparsi. Ciò rende l elaborazione più difficoltosa, quindi è preferibile adattare preliminarmente i documenti in un sottospazio a minor dimensionalità, che mantenga la struttura semantica facilitando il compito degli algoritmi di clustering. A tal proposito sono state proposte diverse soluzioni: spectral clustering, nonnegative matrix factorization (NMF), clustering con Latent Semantic Index (LSI) e clustering con Locality Preserving Indexing (LPI). 51

61 LSI e LPI sono modelli basati su Singular Value Decomposition (SVD), che usa un criterio ai minimi quadrati e lavora al meglio quando i dati sono caratterizzati da una distribuzione normale. LSI, LPI e spectral clustering prevedono tutti il calcolo degli autovalori, perciò mostrano sia pesantezza computazionale che sensibilità agli outliers. È dimostrato che lo spectral clustering sia un caso particolare di kernel K-means pesato. NMF si distingue dalle altre tecniche in particolar modo per i vincoli che impongono non negatività ai vettori di base creati, ma anch essa è caratterizzata da grosso dispendio di risorse. In seconda battuta è necessario dare una definizione di misura di similarità, che è un aspetto decisamente critico per l ottenimento di cluster significativi. Nel caso di analisi di documenti gli strumenti di clustering adottano il modello spazio vettoriale che supportano la popolare cosine similarity: sim D i,d j = v i v j v i v j con v vettori rappresentativi di due documenti, tra i quali viene fatto un prodotto interno nello spazio dei vettori, normalizzato in modo che la misura di similarità non sia influenzata dalla diversa lunghezza dei documenti. Infine va scelto l algoritmo di clustering: in letteratura si trova un alto numero di alternative, ma per il text mining ci si concentra su K-means, Self Organizing Maps (SOM), Expectaton Maximization (EM). Inoltre si è pensato a tecniche di fuzzy clustering e a schemi per la misura si similarità basati sulle frasi dei documenti. [18-22] 5.3 Approccio ibrido al clustering K-means Una possibile strada consiste nel combinare elaborazione basata sui contenuti con l efficacia di un algoritmo di grouping pattern recognition. Come già detto l obiettivo è quello di giungere a cluster adattivi di documenti affini. Questa soluzione è un estensione del modello spazio vettoriale che come detto, a causa di matrici sparse, soffre la maledizione della dimensionalità. Per ridurre l effetto degli outlier, si evitano calcoli intensivi su matrici come per i modelli basati su SVD. 52

62 La maledizione della dimensionalità è legata all efficacia dell algoritmo di raggruppamento e l approccio proposto facilita l implementazione kernel based. La somiglianza tra i documenti è definita da una distanza content based, che combina la classica misura distribution based con un analisi comportamentale dello stile dei documenti confrontati. Vengono perciò coinvolte proprietà lessicali, struttura e dettagli stilistici dei documenti. Il lavoro da noi svolto, cioè l inclusione di WordNet (descritto nei capitoli seguenti), è finalizzato ad aggiungere a questo punto delle informazioni semantiche, volontariamente evitate in passato per contenere il grado di complessità computazionale. L algoritmo scelto è il K-means che raggruppa i documenti simili rispettando una gerarchia di tipo top down. In un approccio kernel based ogni documento è mappato in uno spazio di Hilbert ad infinite dimensioni in cui solo prodotti interni tra elementi sono significativi e calcolabili. Il trucco del kernel si può applicare a qualunque algoritmo di clustering ed in particolare fornisce importanti vantaggi all algoritmo K-means. Con D = {D u ; u = 1,,n D } denotiamo il corpus, l intero set di documenti da analizzare. Con T = {t j ; j = 1,,n T } indichiamo invece il vocabulary, la collezione di termini che compaiono almeno una volta in ogni documento D D (D indica i documenti D dopo la fase di pre elaborazione, come rimozione di stop words e stemming). Figura 6: dal documento al vettore rappresentativo 53

63 Come precedentemente accennato un documento viene poi tradotto in una rappresentazione vettoriale, una sequenza di indici, indicata da d. u Si ha quindi d u ={d q ; q = 1,,n (u) u E } dove d q è l indice in T del q-esimo termine di D u e n (u) E è il numero di termini presenti in D u. L ordine degli indici rispecchia l ordine dei termini all interno del testo Misura di distanza tra i documenti Oltre alla valutazione della distanza sulla base dei contenuti, si migliora la performance complessiva aggiungendo un termine si somiglianza comportamentale. D viene così rappresentato da una coppia di vettori, v' e v''. v'(d) è responsabile della descrizione per contenuto, un vettore n T dimensionale che associa ogni termine t T con la frequenza normalizzata tf di quel termine nel documento. Il k-esimo elemento del vettore v'(d u ) è dunque definito così: v' k,u = tf k,u n T l=1 tf l,u dove tf k,u è la frequenza del k-esimo termine nel documento D u. La rappresentazione del documento con v' segue il classico modello vettoriale dove le tf fanno da peso per gli elementi. Per la sua natura locale, v' non necessita di proprietà globali, comuni a tutti i documenti, come le idf. Da un altro punto di vista la rappresentazione strutturale di D è data da un set di distribuzioni di probabilità associate ai termini del vocabolario. t T presente nel documento D u è definita una pdf che contiene informazioni sulla densità di probabilità spaziale del termine t nel testo. Il termine p t,u (s) viene calcolato considerando l ipotesi che, quando si rileva la k-esima occorrenza di un termine t alla posizione normalizzata s k [0,1] nel testo, la pdf spaziale del termine possa essere approssimata da una distribuzione Gaussiana, centrata su s k. In pratica il criterio di somiglianza strutturale suppone che se il termine t j è trovato alla posizione s k dentro ad un documento, in un altro caratterizzato da simile impostazione è 54

64 attesa l inclusione dello stesso termine nella stessa posizione o in quelle vicinanze, con probabilità indicata dalla pdf Gaussiana. Questo si basa sulla ragionevole assunzione il documento è caratterizzato dalla distribuzione dei suoi termini, anche se va fatto notare che tutto ciò potrebbe venir meno nel caso testi fortemente non strutturati. Perciò la distanza tra due documenti, (D u, D v ), si trova mixando opportunamente i contributi dei due criteri finora descritti. Per ottenere un espressione formale per la pdf, semplificando si assume che appartengano al documento D u, n O occorrenza di termini. Se un termine appare più di una volta, ogni evento viene conteggiato singolarmente nel calcolo di n O, che viene visto come lunghezza del documento. La pdf spaziale può essere così definita: p t,u s = 1 A n O n O k=1 G s k,λ = 1 A k=1 1 exp - (s - s k) 2 2πλ λ 2 dove A è il termine di normalizzazione. Nella pratica non si fa altro che adottare l approssimazione discreta introdotta dall espressione appena indicata, segmentando uniformemente un documento D in S sezioni. Un vettore S dimensionale viene generato t T ed ogni suo elemento stima la probabilità che t ricorra nella sezione corrispondente. Posti in ingresso il vettore d i, derivato dal documento D i, ed il vettore γ = {γ k ; k = 1,,n γ } che approssima la distribuzione Gaussiana discreta, la generazione del vettore v''(d u ) è schematizzabile in alcuni passi. 1. Segmentazione Divisione uniforme del vettore d i in S parti: dove d i = d i 1 di 2 di S s d i = (i) dq s - 1 n E S + 1 q s n E S 55

65 2. Frequenza dei termini t j T, realizzo un vettore S dimensionale f j = {f s,j ; s = 1,,S} dove f s,j = tf j,s cioè gli elementi indicano la frequenza del j-esimo termine nell s-esimo segmento. 3. Distribuzione di probabilità A partire da quanto appena ottenuto e dal vettore γ, t j T costruisco un nuovo vettore π j = {π s,j ; s = 1,,S} che rappresenta l approssimazione discreta della Gaussiana indicata nella formula della p t,u s. for s = 1 to S for l = - n γ to n γ γ s + l + n γ = γ l + n γ f s,j for m = 1 to S π(m) = π(m) + γ (m) 4. Costruzione del vettore Generazione di v''(d) come composizione di tutti i π: v''(d) = {π 1,,π nt } Figura 7: v''(d) costruita come sovrapposizione di distribuzioni Gaussiane 56

66 Il risultato è un array v''(d) di n T vettori di dimensione S. La componente comportamentale, attribuita al termine t, della distanza legata allo stile tra una coppia di documenti, può essere calcolata come distanza tra le due corrispondenti pdf: t b Du,D v = 1 0 p t,u z + p t,v (z) 2 dz I vettori v' ed v'' consentono rispettivamente il calcolo delle distanze basata sulla frequenza (f) e comportamentale (b). La prima è generalmente calcolata secondo la distanza di Minkowski e può essere così definita: n T f D u,d v = v' k,u - v' p k,v k=1 Ponendo p = 1 ci si riconduce alla metrica Manhattan. Per la distanza comportamentale, si applica metrica Euclidea per la valutazione tra due vettori di probabilità v. n T b D u,d v = tk b (Du,D v ) k=1 Preso un coefficiente α 0,1 che pesa i due contributi appena definiti, si può quindi formulare una distanza che rispetta le proprietà di positività e di simmetria, ma non necessariamente la disuguaglianza triangolare: D u,d v = α f D u,d v α b D u,d v 1 p Kernel K-means Il paradigma K-means convenzionale è usato per grouping non supervisionato, che suddivide un dataset D = {D u ; u = 1,,n D } in una collezione di K cluster C j (j = 1,,K). Viene definito un vettore di appartenenza m {1,,K} n D che indicizza il partizionamento dei pattern in input sui K cluster nel seguente modo: m u = j m u = 0 se D u C j altrimenti u = 1,,n D 57

67 È inoltre utile definire una funzione di appartenenza δ uj (D u,c j ) capace di definire l appartenenza dell u-esimo documento nel j-esimo cluster: δ uj = 1 δ uj = 0 se m u = j altrimenti Si ottiene un duplice risultato dal clustering: i campioni in input vengono assegnati unicamente ad un cluster, ed il prototipo del cluster può essere calcolato esplicitamente, come media dei campioni del cluster stesso. In base a quanto detto definiamo dunque il numero di membri di un cluster ed il prototipo N j = n D u=1 δ uj ; j = 1,,K w j = 1 N j x u δ uj ; j = 1,,K dove x u è una rappresentazione vettoriale del documento D u. n D u=1 L idea chiave alla base del clustering K-means basato su kernel è che le coordinate del prototipo potrebbero non essere note esplicitamente. In tale situazione l approccio kernel based può essere incluso nel seguente modo. Innanzitutto si considera una funzione Φ, capace di mappare ogni elemento D, dello spazio di input, nella corrispondente posizione Φ(D) in uno spazio di Hilbert possibilmente infinito dimensionale. Questa rappresenta il Kernel, ed è formulata attraverso il prodotto interno: K D u,d v = Φ D u Φ D v Φ u Φ v È necessario che il prodotto interno tra i vettori dello spazio di Hilbert di dimensione arbitraria (anche infinita) rispetti dei vincoli imposti dalle condizioni di Mercer. In letteratura sono proposti molti kernel: una possibile soluzione è il modello di kernel Radial Basis Function (RBF), dato dalla seguente espressione: K D u,d v = exp - D u,d v σ 2 58

68 L approccio kernel-based fornisce un ulteriore grosso vantaggio al text mining: il kernel appena indicato può effettivamente consentire un processo di normalizzazione critico, riducendo tutti i prodotti interni entro un range limitato e prevenendo distorsioni delle rappresentazioni capaci di deteriorare le performance del clustering. Ovviamente c è da pagare l introduzione dell iperparametro σ 2, il quale deve essere regolato in modo da bilanciare la tendenza del kernel RBF ad amplificare le distanze tra elementi vicini. Considerato un approccio dell algoritmo K-means kernel-based concorde con il metodo proposto da Girolami [23], la posizione dei prototipi si calcola come media delle posizioni delle immagini (i punti corrispondenti a quelli originali nello spazio di Hilbert): n D Ψ j = 1 N j u=1 Φ u δ uj ; j = 1,,K Il risultato finale del processo di clustering è il vettore di appartenenza, m, che determina le posizioni dei prototipi, pur essendo questi non dichiarabili esplicitamente. La distanza di un documento da un cluster, considerate le immagini nello spazio di Hilbert, si può trovare come: n D 2 d Φ u,ψ j = Φ u - 1 N j v=1 Φ v δ vj = = 1 N j n D v=1 Φ v δ vj 1 N j n D v=1 Φ v δ vj n D + Φ u Φ u - 2 N j δ vj v=1 Φ u Φ v = = 1 n D n D N 2 δ mjδ vj j m,v=1 K D m,d v + K D u,d u - 2 N j δ vj v=1 K D u,d v = = n D N 2 δ mjδ vj j m,v=1 K D m,d v - 2 N j n D δ vj v=1 K D u,d v In pratica calcolo la distanza tra l immagine Φ u di un documento D u ed il prototipo del cluster Ψ j, seleziono il prototipo a distanza minima ed assegno conseguentemente l opportuno campione di appartenenza. 59

69 Il sintesi l algoritmo K-means può essere così descritto: 1. si inizializza m con campioni di membership m u {1,,K} random e si indica m come modificato ; 2. while (m è modificato) a. calcolo la distanza d(φ u, Ψ j ) con j = 1,,K e u = 1,,n D ; b. aggiorno m nel seguente modo: m u =arg min j d Φ u,ψ j ; u = 1,,n D. Il vantaggio cruciale dato dal passaggio allo spazio di Hilbert consiste in un raddrizzamento della rappresentazione dello spazio dei dati, che in origine può essere contorto. Figura 8: l'azione del kernel Nei problemi di classificazione, il kernel permette tipicamente il passaggio da uno spazio di input non linearmente separabile, ad uno a maggior dimensione, ma costituito da punti facilmente separabili. Analogamente, nel caso del clustering si hanno forti aiuti nell individuazione di gruppi di dati simili, difficilmente distinguibili nello spazio di partenza. 60

70 5.3.3 Large scale clustering scheme Un articolo proposto da R. Zhang e A.I. Rudnicky [24] presenta una possibile strategia per la riduzione del peso computazionale dell algoritmo kernel K-means, specie se applicato su corpus dalle grandi dimensioni. Per quanto visto finora, ad ogni iterazione dell algoritmo, abbiamo a che fare con il calcolo della distanza: n D 2 d Φ u,ψ j = Φ u - 1 Φ N v δ vj = 1 + f(d u, C j ) + g(c j ) j v=1 dove: f(d u, C j ) = - 2 N j g(c j ) = 1 n D n D v=1 δ vj N 2 δ mjδ vj j m,v=1 K D u,d v K D m,d v È quindi evidente come il calcolo del kernel K D u,d v ricorra numerosissime volte. L idea di base è perciò quella di calcolare e memorizzare una matrice K contenente tutti i kernel, prima dell avvio dell algoritmo. K = k 1,1 k 1,nD k nd,1 k nd,n D Tuttavia anche l immagazzinamento di K può essere un problema non banale: ad esempio un corpus da campioni comporta valori (data la simmetria di tale matrice). Vi sono in letteratura svariate soluzioni mirate al miglioramento delle performance, ma spesso pongono vincoli e requisiti sul dataset. Qui l approccio è diverso: il clustering procede elaborando su sequenze di kernel anziché di sample, consentendo una gestione efficiente della matrice K; si estende lo spazio di immagazzinamento all intero disco e si minimizzano le operazioni di I/O. 61

71 La matrice viene suddivisa in blocchi, a seconda delle capacità di I/O e della memoria disponibile. Il clustering quindi procede seguendo questi passi: 1. calcolo della matrice K e memorizzazione dei blocchi B necessari; 2. assegnazione di un valore iniziale alla funzione di appartenenza δ uj (D u,c j ); 3. per ogni cluster C j, calcolo della sua dimensione N j, g(c j ) = 0; per ogni sample D u ed ogni cluster C j, f(d u, C j ) = 0; 4. lettura del blocco B successivo dal disco alla memoria; 5. per ogni kernel k u,v (1 u,v n D ) di B: a. controllare i cluster a cui appartengono D u e D v : θ u = k 1 se δ(d u, C k1 ) = 1 θ v = k 2 se δ(d v, C k2 ) = 1 dove θ u e θ v sono variabili che denotano i cluster; b. se u < v si ignora questo kernel: sfruttiamo la simmetria di K e calcoliamo solo gli elementi al di sotto e sulla diagonale; c. se u = v siamo sulla diagonale di K, D u = D v e θ u = θ v, allora f(d u, θ v ) = f(d u, θ v ) 2 * k u,v N θv g(θ u ) = g(θ u ) + k u,v N θu 2 d. se u > v f(d u, θ v ) = f(d u, θ v ) 2 * k u,v f(d v, θ u ) = f(d v, θ u ) 2 * k u,v N θv N θu e se θ u = θ v g(θ u ) = g(θ u ) + 2 * k u,v N θu 2 6. ripetizione dei passi 4 e 5 fino al termine dell elaborazione per ogni blocco; 7. per ogni sample D u ed ogni cluster C j : δ(d u, C k ) = 1 se f(d u, C k ) + g(c k ) < f(d u, C j ) + g(c j ) 0 altrimenti 8. ripetizione dei passi 3 7 fino a convergenza. per tutti i j k 62

72 5.4 Il sistema per il clustering di documenti Poste le basi nei precedenti paragrafi, si può studiare la struttura di un clusterizzatore di documenti. Vengono combinate le azioni di una metrica basata su contenuti, struttura ed eventualmente informazioni semantiche, con quelle del cuore operativo, cioè della versione kernel-based dell algoritmo K-means. Figura 9: struttura per il document - clustering Posto in input un corpus D = {D u ; u = 1,,n D } il procedimento seguito da questa struttura può essere così schematizzato. 1. Pre processing del documento Per ogni D i D si calcola il corrispondente D i nel seguente modo a. Rimozione delle stop words b. Lemmatizzazione (stemming) Perciò D i è una sequenza di stemmed words. Nel seguito viene indicato con D* = {D u ; u = 1,,n D } il corpus dopo questa prima fase. 2. Costruzione del vocabolario Generazione di T = {t j ; j = 1,,n T } come set di termini apparsi almeno una volta nel corpus D*. 63

73 3. Rappresentazione vettoriale Per ogni D i D* a. Calcolo del vettore v'(d i ) b. Calcolo del vettore v''(d i ) 4. Calcolo della matrice delle distanze Matrice Δ così generata = 11 1nD nd 1 nd n D dove Δ mn = Δ(D m, D n ) indica la distanza tra il documento D m ed il documento D n. 5. Applicazione del kernel Una volta usata la mapping function si procede con il calcolo della matrice Θ Θ = K 11 K 1nD K nd 1 K nd n D dove K mn = K(D m, D n ). 6. Clustering Applicazione dell algoritmo K-means per la generazione dei cluster. Se si vuole un flat clustering, vengono generate K partizioni, mentre nel hierarchical clustering viene costruita una gerarchia di cluster. Tale struttura come si può notare supporta entrambe i paradigmi di clustering: nel caso flat, K è un parametro richiesto in input e non vi è alcuna struttura che leghi i cluster tra loro; nel caso hierarchical, si applica una procedura top down ricorsiva; preso un unico grosso cluster in input (l intero corpus) esso viene diviso con tecnica flat, quindi si prende singolarmente ogni nuovo cluster e si itera il procedimento fino al raggiungimento di un criterio si stop. Viene riportato qui di seguito un possibile esempio per i due paradigmi. 64

74 Figura 10: i paradigmi flat e hierarchical Nel caso flat ci si potrebbe chiedere quale sia la miglior strategia per determinare il K ottimo. Non avendo informazioni a priori sul dataset infatti non è nemmeno possibile sapere quante siano le categorie distinguibili. Una possibile strategia consiste nel tentare il flat clustering al variare del parametro K, valutare il costo ca, inteso come la distanza tra i documenti ed i prototipi, e studiarne l andamento. 0,7 0,6 0,5 ca 0,4 0,3 0,2 0, K Figura 11: esempio di andamento del costo al variare di K 65

75 In un grafico come quello in figura si distingue con facilità un ginocchio in corrispondenza del valore K = 3. Oltre quel valore il costo non decresce più in modo significativo: ciò indica che probabilmente quel dataset è caratterizzato da tre categorie fondamentali di dati. C è comunque da notare che non sempre si ottengono situazioni così limpide: a volte potrebbero notarsi più zone del grafico caratterizzate da discontinuità simili, altre invece si troverà un errore linearmente decrescente all aumentare del numero di cluster. Infine, uno strumento di text mining come questo, può procedere con l assegnazione di un nome per i cluster trovati con il K-means. Si parla di calibrazione quando ci si riferisce ad un processo capace di descrivere un cluster. Si può passare da una banale descrizione basata sulle parole più ricorrenti dei documenti del cluster in oggetto, per arrivare a strategie basate sulla semantica, e quindi sui concetti espressi dai testi analizzati. 66

76 Capitolo 6 WordNet: la rete semantico - lessicale Nel capitolo vengono presentate le caratteristiche principali di WordNet. Nel corso del nostro lavoro abbiamo posto particolare attenzione alle versione inglese ed allo studio di diverse relazioni che legano le parole del database. Viene inoltre presentata una carrellata dei progetti italiani ed europei che consentiranno di estendere il progetto a tutte le lingue più diffuse. 6.1 Introduzione a WordNet La versione presa come riferimento è la 2.1, l ultima release per sistemi operativi Windows. On-line è attualmente disponibile anche la 3.0 per sistemi Unix. Sviluppata al Cognitive Science Laboratory di Princeton, dal professor George A. Miller ed i suoi collaboratori, WordNet è una banca dati semantico concettuale, nata a partire dagli anni 80 nell ambito di un progetto di psicolinguistica. Attualmente costituisce uno standard de-facto, in quanto è stato assunto come modello di riferimento per diverse risorse analoghe sviluppate ed in via di sviluppo, in Europa e nel resto del mondo. WordNet somiglia ad un thesaurus, per la sua organizzazione basata su concetti legati fra loro da relazioni semantiche di vario tipo. I nodi di questa rete, la nozione centrale intorno alla quale si sviluppa l intero ambiente, è il synset, un insieme di sinonimi appartenenti alla stessa categoria sintattica: nomi, verbi, avverbi ed aggettivi. Più precisamente all interno del synset troviamo una raccolta di lemmi ed una corrispondente glossa. Con lemma ci si riferisce evidentemente ad una parola, a cui possono essere associati uno o più significati. Con glossa si indica invece la descrizione del significato racchiuso dal synset, una definizione valida per tutti i lemmi elencati. 67

77 Per comprendere meglio la struttura di WordNet, si rende necessario analizzare una parola in termini delle sue due componenti fondamentali: la word form, cioè la pronuncia, il modo in cui viene letta e scritta, e il word meaning, cioè il concetto che essa racchiude. La matrice lessicale si basa sulle proprietà di sinonimia e di polisemia. Sinonimia sta ad indicare che un significato può essere espresso attraverso molte parole (un word meaning molte word form), polisemia è invece il caso di una parola dotata di molteplici significati (una word form molti word meaning). Complessivamente si hanno quindi corrispondenze del tipo molti a molti, schematizzabili come in figura 12. Figura 12: il concetto di matrice lessicale Le righe individuano dei synset: come già detto ad un synset corrispondono una definizione e più lemmi, quindi esprime la sinonimia. Le colonne individuano singoli lemmi: ogni lemma può avere più significati, e quindi appartenere contemporaneamente a più synset; questa è la polisemia. Un esempio può chiarire ulteriormente tali concetti: in figura 13 è riportato il risultato di WordNet per il lemma bike. Word Meanings a motor vehicle with two wheels and a strong frame a wheeled vehicle that has two wheels and is moved by foot pedals Word Forms bike motorcycle bike bicycle cycle wheel Figura 13: un esempio di matrice lessicale 68

78 Vi sono due grandi famiglie di relazioni: relazioni lessicali, che legano lemmi appartenenti a synset diversi, e relazioni semantiche, che legano synset ad altri synset. Alla prima categoria appartengono le seguenti relazioni: Sinonimia, secondo la definizione per la quale due termini sono sinonimi se, considerato un certo contesto linguistico, la sostituzione di un termine con l altro non varia il valore della frase; Antinomia, quando due termini sono l uno il contrario dell altro; Relazione di pertinenza, che individua relazioni del tipo associato con, pertinente a ; Vedi anche, relazioni tra lemmi di diversi synset, per motivi di diversa natura; Relazione participiale, che fissa legami tra lemmi di diverse categorie sintattiche, collegando avverbi ed aggettivi a nomi e verbi da cui derivano; Derivato da, che lega gli aggettivi ad eventuali nomi stranieri da cui derivano. Tutte le relazioni vengono individuate da puntatori e da caratteri speciali, a meno della sinonimia indicata dalla semplice appartenenza dei lemmi allo stesso synset. Le relazioni semantiche meritano invece un paragrafo a parte, per l importanza che hanno ricoperto all interno del nostro progetto. 6.2 Le relazioni semantiche Mettono in relazione diversi synset, quindi rappresentano il legame tra concetti, e non tra semplici lemmi Iponimie ed iperonimie Legano i synset gerarchicamente a seconda del livello di specializzazione / generalizzazione. Si segue la relazione di iponimia per scendere di livello: dati X ed Y, due generici synset, X è iponimo di Y se X is a kind of Y. L iperonimia collega invece due concetti nel verso opposto. 69

79 Si può poi dire che X, in quanto iponimo di Y, eredita tutte le sue caratteristiche di Y ed in aggiunta ha almeno un altra peculiarità, tale da distinguerlo dal suo superiore. Questi link tra diversi synset esistono solo per interrogazioni di WordNet fatte ponendo in input nomi o verbi. Si capisce che la relazione è un mal si associa ai verbi. Infatti ci si riconduce alle toponimie: dati due verbi V 1 e V 2 la relazione si esprime come V 1 is to V 2 in some particular manner. Come vedremo più dettagliatamente nel seguito, nel nostro lavoro risulta particolarmente utile cercare una generalizzazione del vocabolo inserito, quindi abbiamo prestato grande attenzione alle iperonimie. In figura 14 è riportato un esempio di ricerca di questo tipo. Figura 14: esempi di ricerca di iperonimie È molto interessante osservare come WordNet leghi la parola pistola al concetto di arma o leghi il verbo cantare alla comunicazione. Ovviamente bisogna fare attenzione a non salire troppo nella gerarchia, arrivando a concetti eccessivamente generici e del tutto privi di informazione. 70

80 6.2.2 Meronimie ed olonimie Sono relazioni semantiche che esprimono parti di un insieme, Y has an X oppure X is a part of Y. Cercare le meronimie di un synset vuol dire cercarne le parti, mentre l olonimia punta all insieme di appartenenza. Bisogna osservare che questo tipo di relazione assume diverse sfaccettature, infatti in WordNet sono codificati ben tre tipi meronimie: part of per legare un oggetto con le sue componenti, member of ad indicare un oggetto costituito da una collezione di elementi, substance of ad indicare di cosa è fatto un certo oggetto. Una ricerca di questo tipo può essere fatta solo sui nomi, ed anche in tal caso, per noi assume maggior importanza risalire nella gerarchia, per collocare un oggetto all interno di un certo insieme. Si supponga ad esempio di disporre di un documento caratterizzato da numerose occorrenze delle parole Genova e La Spezia. Figura 15: esempi di ricerca di olonimie Sottoporre un testo a WordNet potrebbe quindi riuscire nel compito di far capire ad un software che si parla della regione Liguria, senza che questa venga mai citata Altre relazioni semantiche WordNet dispone inoltre delle seguenti relazioni: Implicazione, tra due verbi che esprimono azioni necessariamente collegate, ad esempio mangiare implica masticare ed ingoiare ; Relazione causale, non molto diversa dall implicazione, ma senza inclusione temporale; Raggruppamento di verbi, per riunire synset, appartenenti alla categoria sintattica dei verbi, concettualmente simili; 71

81 Similarità, tra aggettivi, legati da relazioni di antinomia; Attributo, a rappresentare il legame che intercorre fra un aggettivo ed un nome di cui esprime il valore; Coordinazione, tra synset caratterizzati dalla stessa iperonimia. 6.3 Morphy, lo stemmer di WordNet Come un qualunque dizionario, anche WordNet per ogni lemma contiene una forma base, quindi nomi solo al singolare e verbi all infinito. Perciò tra le funzioni di libreria, vi è anche una famiglia di morphing functions, capaci di gestire un ampio set di trasformazioni morfologiche sulle parole poste in input, ammissibili anche in forme flesse, al fine di associarle alle voci del database. A tal fine vi sono due strumenti che, usati intelligentemente, conducono WordNet al risultato desiderato: liste di desinenze flessive, differenti a seconda della categoria sintattica, che vengono scollegate dalla parola immessa, sperando di raggiungere una forma base; liste di eccezioni, anche in questo caso diverse tra nomi, aggettivi, verbi ed avverbi, in cui sono elencate forme flesse non regolari e quindi non diversamente processabili. Una parola può avere più di una forma base, per questo la funzione morfologica può essere chiamata una prima volta passando stringa e categoria sintattica. Il risultato è una forma base, e successive chiamate alla stessa funzione restituiscono le forme base alternative. Se non ci sono corrispondenze con il database, Morphy restituisce NULL. Figura 16: suffissi e desinenze di Morphy 72

82 Le parole singole sono di gestione relativamente facile: prima si fa una ricerca tra le eccezioni e quindi tra i suffissi. Ma il database di WordNet ha anche molte collocations", termini composti da più parole (ad esempio fast food, memorizzate nel database collegate da un underscore, fast_food ), che hanno un significato specifico se prese insieme. In questa situazione il processo di morphing può essere meno banale. 6.4 Il software WordNet WordNet è disponibile gratuitamente, scaricabile dal suo sito ufficiale [25]. Per i sistemi operativi Microsoft Windows è distribuito il package autoinstallante per la versione 2.1. WordNet è interamente scritto in linguaggio conforme allo standard ANSI C, e viene distribuito in due forme, per l uso da prompt dei comandi oppure attraverso una semplice interfaccia grafica, il WordNet Browser. Esplorando la directory del programma troviamo le cartelle: dict, contenente il dizionario nel programma, per tutte le categorie sintattiche; bin, con gli eseguibili; doc, dove è raccolta la documentazione, nei formati html, pdf e ps; lib, contenente le librerie; src, con i sorgenti: in include sono raccolti gli header, wn e wnb contengono sostanzialmente due main distinti, per WN da prompt e per il WNB, infine in lib si trovano tutti i file.c con le implementazioni delle funzioni Il database WordNet Per ogni categoria sintattica vi sono due file fondamentali, index.pos e data.pos (pos part of speech, altro modo di riferirsi alle categorie sintattiche). Gli altri file contenuti in dict sono di ausilio alle funzioni di ricerca ed al WordNet Browser. 73

83 Il database è in formato ASCII, quindi leggibile tanto dalla macchina quanto dall uomo, e facilmente accessibile per chiunque voglia adottarlo per una propria applicazione. Nell index file sono presenti tutti i lemmi del dizionario, disposti in ordine alfabetico e seguiti da una lista di byte, il synset_offset. Tutti i vocaboli sono in minuscolo, la ricerca è case - insensitive. Il data file invece si preoccupa delle informazioni relative ai synset, ed i puntatori che stabiliscono le varie relazioni semantiche sono risolti attraverso il synset_offset. I file pos.exc elencano le eccezioni di cui si è già parlato nel paragrafo relativo a Morphy. Ogni lemma, secondo la matrice lessicale, può essere legato a molti concetti, quindi a molti senses. I sensi sono ordinati secondo un criterio frequenza d uso stimata, perciò il senso 1 è quello più significativo. La frequenza è determinata in base al numero di volte in cui un senso è stato contrassegnato nei testi di concordanza semantica. Queste informazioni sono distribuite nei file index e nel file cntlist. Per ulteriori dettagli sul formato di questi file si rimanda alla documentazione [26] Funzioni di libreria ed API Le funzioni di libreria sono divise in quattro categorie, e definite in quattro corrispondenti file sorgente: Database search, file search.c, funzioni di ricerca nel database; Morphology, file morph.c, funzioni di stemming; Utility, file wnutil.c, funzioni di varia utilità in WordNet; Binary search, file binsrch.c, funzioni di ricerca binaria. È possibile sviluppare una proprio applicazione che sfrutti tali funzioni e capace di accedere al database. L importante è includere nel proprio lavoro il file wn.h. In questo header vi sono costanti, strutture dati, dichiarazioni esterne per variabili globali inizializzate nel file wnglobal.c e l elenco dei prototipi di tutte le funzioni di libreria API (alla riga 272 del file wn.h si può notare l uso della parola chiave extern come direttiva di collegamento, fondamentale per la compatibilità con file esterni scritti in C++). 74

84 Le nostre attenzioni si sono focalizzate maggiormente sulle funzioni di ricerca, ma prima di accedere al dizionario è sempre necessario chiamare la funzioni wninit (tra le utility) per l apertura del database. Abbiamo speso diverso tempo nello studio del file search.c, per capire le dinamiche di WordNet, i passi fondamentali per l estrazione di un synset e delle informazioni semantiche di nostro interesse. Di grosso aiuto è stata anche l analisi del file wn.c, il codice per l interfaccia da linea di comando, che rappresenta certamente un ottimo esempio di applicazione a WordNet. Riportiamo alcuni dettagli sulle funzioni di maggior interesse: findtheinfo( ), è l algoritmo di ricerca primario in WordNet, e restituisce un output formattato; findtheinfo_ds( ), analogo al primo, ma l output viene fornito in una struttura dati a linked list, più utile all analisi dei dati piuttosto che alla loro visualizzazione. Le due funzioni sopracitate a loro volta si appoggiano a funzioni più specializzate, come getindex( ), read_synset( ) e traceptrs( ). Tutte queste funzioni richiedono in input alcuni o tutti i seguenti parametri di ricerca: char *searchstr, la stringa di ricerca, eventualmente già sottoposta alle funzioni morfologiche; int dbase, indicazione sulla la categoria sintattica e quindi sul database da esplorare; int ptrtyp, il tipo di ricerca da effettuare (l elenco di define in wn.h fissa i valori assumibili da questo parametro); int whichsense, il senso (attenzione, non il numero di sensi) che si vuole studiare: si pone ad esempio ad 1 se si vuole il significato più importante del lemma, ma può anche essere fissato a 0 (ALLSENSES) per una ricerca esaustiva. Come già accennato, wn.h contiene anche le definizioni di importanti strutture dati. Una su tutte è certamente la struttura Synset, piuttosto articolata ed usata come output per l interrogazione del database con findtheinfo_ds( ). 75

85 Volendo infatti studiare il database di WordNet e le relazioni semantiche, la nostra scelta è subito ricaduta su questa funzione. La stringa formattata, output di findtheinfo( ), avrebbe reso il lavoro non altrettanto agevole. Per i dettagli approfonditi sulle strutture dati non c è niente di meglio che osservare direttamente il codice e la documentazione [27], ad ogni modo riportiamo i campi di Synset a nostro avviso più importanti per l estrapolazione delle informazioni: long hereiam, è il synset_offset, in pratica assume il ruolo di ID per il synset; int wcount, il numero di parole racchiuse dal synset; char **words, le parole del synset; struct ss *nextss, il puntatore al synset contenente il prossimo sense per la parola cercata; struct ss *ptrlist, il puntatore al prossimo synset contente le informazioni semantiche richieste nella ricerca. Quindi volendo esplorare tutti i sensi di un lemma, bisogna procedere lungo l intera catena indicata dai puntatori nextss, synset dopo synset; quando il puntatore assume valore NULL si è giunti all ultimo concetto disponibile per quel termine. Seguire i puntatori ptrlist porta invece all esplorazione gerarchica delle relazioni semantiche (in salita o in discesa a seconda della ricerca attuata). Ad ogni livello della gerarchia semantica può esserci più di un synset, quindi non è sempre detto che il campo nextss di un synset puntato da ptrlist sia nullo. Con l ausilio di un esempio e delle seguenti figure chiariamo meglio questi dettagli. Il lemma man possiede 11 significati. Supponiamo di voler fare una ricerca delle iperonimie: in questo modo seguire i puntatori nextss farà procedere nella direzione dei significati meno importanti, mentre seguire i puntatori ptrlist, farà risalire la gerarchia fino ai synset più generici. Nella parte sinistra dell immagine, l output fornito dal WordNet Browser omette la glossa, ma include il campo hereiam. A destra si vogliono evidenziare i collegamenti tra i synset, riferendosi ad essi proprio attraverso il loro numero identificativo, per semplicità di lettura. 76

86 Per gli stessi motivi le rappresentazioni qui di seguito si limitano all esplorazione entro il secondo senso. Figura 17: ricerca del lemma "man" WordNet e WordNet Browser Gli eseguibili forniti con il package forniscono due interfacce per l interrogazione di del database di WordNet. Con WN ci si riferisce all interfaccia da riga di comando. Dal prompt dei comandi è sufficiente raggiungere la directory in cui si trova l eseguibile (cartella bin) ed inserire il comando: wn [ searchstr ] [ -h ] [ -g ] [ -a ] [ -l ] [ -o ] [ -s ] [ -n# ] [ search_option... ] le cui opzioni sono: -h, help per informazioni aggiuntive sulla ricerca richiesta; -g, visualizzazione delle definizioni (glossa) per ogni synset; -a, visualizzazione informazioni dal lexicographer file; -o, visualizzazione del synset_offset per ogni synset; 77

87 -s, visualizzazione del numero del senso per ogni parola visualizzata; -l, visualizzazione di informazioni su WordNet: copyright, versione e licenza; -n#, ricerca effettuata sul senso numero #; -over, visualizzazione di una panoramica su tutti i sensi di searchstr, in tutte le categorie sintattiche. Al posto di [search_option] è richiesto l inserimento di una tra le numerose possibilità di ricerca [28], tra le quali ad esempio: -syns (n v a r ), visualizzazione dei sinonimi e delle iperonimie di primo livello; -hype (n v ), ricerca ricorsiva lungo tutto l albero delle iperonimie; -holon, visualizzazione delle olonimie. I caratteri tra parentesi stanno ad indicare, laddove necessario, le categorie sintattiche per le quali è disponibile quel tipo di ricerca. WNB è l acronimo di WordNet Browser: un interfaccia window - based per l esplorazione dell ambiente WordNet e di tutte le relazioni lessicali e semantiche [29]. Questa GUI si presenta all utente come in figura 18. Figura 18: WordNet Browser 78

88 6.5 Global WordNet Nel corso degli anni il progetto WordNet ha preso piede in gran parte del globo. Ricercatori di tutto il mondo si sono impegnati nello sviluppo di database analoghi a quello di Princeton, realizzando così una struttura che si spera possa consentire un analisi semantica dei testi in tutte le lingue più diffuse. Per un miglior sviluppo i progetti sono riuniti e coordinati in un unica grande associazione pubblica e non commerciale, Global WordNet. L obiettivo è quello di promuovere la cooperazione, la condivisione delle risorse e delle informazioni ed anche una standardizzazione del formato comune per tutti i WordNet, che favorisca la realizzazione di un indice universale per i significati corrispondenti ai lemmi di tutto il mondo. Oltre al WordNet inglese del prof. Miller, l altro mattone fondamentale è certamente EuroWordNet EuroWordNet EuroWordNet [30] è un database multilingue comprendente i WordNet di molte lingue europee: olandese, italiano, spagnolo, francese, ceco ed estone. Similmente a quello inglese l organizzazione è fondata sui synset. Ogni WordNet ha un suo sistema di lessicalizzazione indipendente, ma sono tutti collegati da un Inter-Lingual-Index riferito al WordNet di Princeton. Questa connessione dà accesso ad una top-ontology che rende possibile il passaggio tra parole di ugual significato, ma appartenenti a lingue diverse, e che crea un sistema semantico comune a tutti i database. Molti nuovi progetti europei ed extraeuropei si stanno conformando al formato imposto dall EuroWordNet Database Editor Polaris: svedese, norvegese, danese, greco, portoghese e molti altri. L Inter-Lingual-Index congiunge tutte le lingue basandosi sul database inglese del Princeton WordNet

89 Figura 19: architettura del database di EuroWordNet Si capisce che dover affrontare software e database diversi per ogni lingua, renderebbe l applicazione dei WordNet quasi impossibile in qualunque progetto di ingegneria linguistica come è anche il nostro, orientato alla classificazione di documenti il più possibile eterogenei e multilingue. Tuttavia l indice comune interlingue promette di risolvere questi problemi e di aprire WordNet ad una sempre maggior diffusione. 80

90 Capitolo 7 L interfaccia per WordNet Una volta chiariti i nostri obiettivi e tutti i dettagli su WordNet, in questo capitolo passiamo all analisi della classe da noi sviluppata, che fornirà un interfaccia utile per il collegamento al clusterizzatore di documenti. Abbiamo realizzato la classe nel rispetto di semplici regole di formattazione, e con commenti doxygen like [31], per la creazione automatica della documentazione. Si vuole creare una sorta di guscio che incapsuli la libreria WordNet, e che faciliti la chiamata a funzioni di ricerca semantica. Essendo ben noto l onere computazionale di tali operazioni, si è cercata costantemente un ottimizzazione delle performance, alla ricerca del miglior compromesso tra accuratezza dei risultati e velocità di calcolo. Gli oggetti di questa classe, chiamata WordNetIF, verranno istanziati dal clusterizzatore e saranno utili alla costruzione del descrittore semantico di documenti e cluster. 7.1 Membri di WordNetIF Tutti i membri della classe sono dichiarati protected, quindi privati dal punto di vista degli utilizzatori che potranno accedervi solamente attraverso delle apposite funzioni get, ma visibili dalle eventuali classi derivate. Adottiamo abitualmente l accorgimento di nominarli _nomemembro, in modo che l underscore consenta una rapida distinzione tra essi ed altre variabili. WordNetIF vuole rappresentare un oggetto ricercatore di semantica : viene interrogato con una stringa ed immagazzina i risultati nei suoi membri; questi saranno quindi letti da chi all esterno vorrà estrarre le nuove informazioni. Tutto il programma usa come cardine fondamentale il codice identificativo dei synset, il campo hereiam di cui abbiamo parlato nel capitolo precedente. Per maggior chiarezza è qui rinominato SynsetID, ma continua ad essere una variabile di tipo unsigned long. 81

91 Abbiamo usato largamente le linked list, che consentono una facile gestione degli insiemi di parole da gestire. Ecco come si presenta la dichiarazione dei membri nel file WordNetIF.h. /// Searched word, saved into the class char *_searchword; /// Output list of synonyms of the searched word pointerlist<synsetid> _synonymslist; /// Number of hypernyms lists int _numofhypslists; /// Output lists of hypernyms of the searched word pointerlist<synsetid> *_hypslists; /// Output list of holonyms of the searched word pointerlist<synsetid> _holonymslist; /// Output list of meronyms of the searched word pointerlist<synsetid> _meronymslist; /// Output vector of a single searched WordNet synset char ** _synsetwords_array; /// Size of _synsetwords_array vector int _synsetwords_arraydim; /// Output list of a single searched WordNet synset pointerlist<char *> _synsetwords_list; Pur avendo costantemente a che fare con parole, evitiamo invece l uso di oggetti String. La gestione attraverso char *, anche se un po meno pratica, è più efficiente ed in linea con gli output di WordNet. _searchword, senza troppa fantasia, è il membro usato per il salvataggio dell ultimo vocabolo ricercato, quindi l unico ad essere direttamente caricato dall utilizzatore esterno. Gli altri raccolgono invece i risultati provenienti dal database semantico. Studiando attentamente la funzione findtheinfo_ds( ) (vedi capitolo precedente) abbiamo notato che la ricerca viene suddivisa sostanzialmente in due fasi: un primo recupero degli hereiam, quindi una lettura dei corrispondenti synset, con recupero delle stringhe. Questo ci ha spinto a seguire la stessa impostazione, ritardando il più possibile l onerosa lettura dei vocaboli. Le funzioni di ricerca scrivono tutte su liste di SynsetID. Caso particolare è quello della ricerca di iperonimie: in tale situazione è necessario salvare un albero di SynsetID e questo implica l uso di un array di liste, per il salvataggio dell intero output. L utente esterno a questo punto dispone delle informazioni richieste, e può decidere in quale misura sfruttare le informazioni recuperate, andando ad interrogare il database solo 82

92 sui synset di maggior interesse: appositi metodi forniranno in output le _synsetwords, a scelta in un array oppure in una lista. 7.2 Metodi di WordNetIF La quasi totalità dei metodi è dichiarata public, e rappresenta l interfaccia dell oggetto con l esterno. /** BASIC HANDLING */ /// Default initialization void Init(); /// Copy initialization void Init( WordNetIF & X); /// Object erasure void Reset(); /// Erasure only for the single synset data void ResetSynsetContent(); /// Outputs internal errors void ErrorMessage(char *string); /// WordNet database initialization void InitWordNetDatabase(); /// Basic class behaviour, this method searches the synonyms of string int SynonymsOf(char *string, int synsets=0, int partofspeech=1); /// This method searches the hypernyms of string int HypernymsOf(char *string, int synsets=0, int branchdepth=0, int partofspeech=1); /// This method searches the holonyms of string (only for NOUNS) int HolonymsOf(char *string, int synsets=0); /// This method searches the meronyms of string (only for NOUNS) int MeronymsOf(char *string, int synsets=0); Tralasciando i metodi fondamentali, quali costruttori distruttore ed alcuni operatori sovraccaricati, l interfaccia presenta innanzitutto alcune funzioni di gestione: Init( ), anche per copia da oggetti dello stesso tipo, e Reset( ). Importante è il metodo InitWordNetDatabase( ), che chiama a sua volta la funzione wninit() di WordNet, per l apertura dei file del database: operazione indispensabile affinché le ricerche abbiamo buon esito. 83

93 Il cuore della nostra classe è tutto concentrato nelle funzioni di ricerca, che sono giunte a queste versioni finali dopo diverse evoluzioni. Dapprima abbiamo concentrato gli sforzi sulla ricerca di sinonimi ed iperonimie. Sul finire del lavoro abbiamo aggiunto le funzioni per meronimie ed olonimie, per una semantica ancora più completa ed accurata. int WordNetIF::SynonymsOf(char *string, int synsets, int partofspeech) { /// The following implementation is valid when a valid WordNet support /// is declared in the config file. #ifndef WORDNET_SUPPORTED_ cerr << "Invalid call to Synonym search - WordNet not supported\n" <<flush; return -1; #else IndexPtr outidx; /// Cleaning memory spaces Reset(); /// Controls about "synsets" parameter if(synsets < 0) { cerr<<"error: senses not valid - search interrupted"<<endl; return -1; } /// Controls about "string" parameter if((string == 0) (strlen(string) == 0)) { cerr<<"error: string not valid - search interrupted"<<endl; return -1; } /// Controls about "partofspeech" parameter if((partofspeech < 1) (partofspeech >3)) { cout<<"error: partofspeech not valid in WordNetIF::SynonymsOf" <<endl; return 0; } /// If synsets = 0 (ALLSENSES), set synsets to high value if(!synsets) synsets=50; /// Allocating a string space _searchword = new char[ strlen(string)+1 ]; /// Copies search string strcpy_s(_searchword, strlen(string)+1, string); /// Search into WordNet: only the hereiam of synonyms of nouns outidx = findhereiam(_searchword, partofspeech); 84

94 /// Filling _synonymslist with founded hereiam if(outidx!= NULL) { for(int i = 0; i < outidx->sense_cnt; i++) { if(i < synsets) _synonymslist.insertlast(outidx->offset[i]); else break; } free_index(outidx); } return 0; #endif } Questa e le altre funzioni di ricerca seguono lo stesso schema di massima: innanzitutto un controllo sull ammissibilità dei parametri in ingresso, allocazione dinamica e copia della stringa di ricerca, chiamata a WordNet ed infine copia dei risultati nel apposito membro. findhereiam( ) in realtà non è una delle funzioni di ricerca messe a disposizione da WordNet, ma è ancora un metodo (protected) di WordNetIF. IndexPtr WordNetIF::findhereiam(char *searchstr, int partofspeech) { IndexPtr idx; /// Controls about passed parameters if((searchstr == 0) (strlen(searchstr) == 0)) { cout<<"error: string not valid in WordNetIF::findhereiam" <<endl; return 0; } if((partofspeech < 1) (partofspeech >3)) { cout<<"error: partofspeech not valid in WordNetIF::findhereiam" <<endl; return 0; } /// Main cycle, collecting all references of seached word into the /// WordNet Index files idx = getindex(searchstr, partofspeech); return(idx); } La ricerca dei sinonimi è estremamente semplice. Il codice messo a disposizione dal software di Princeton prevede chiamate alle funzioni getindex( ) per recuperare i synset dei 85

95 sinonimi, traceptrs_ds( ) per le ricerche più complesse, read_synset( ) per il recupero delle stringhe: complessivamente risulta piuttosto pesante. Questo ci ha spinto, almeno nel caso dei sinonimi, ad evitare tale funzione e a costruirne una personalizzata che agisse più a basso livello, migliorando notevolmente le prestazioni in termini di tempi di ricerca. Il risultato puntato da un SynsetPtr, viene infine copiato nella lista _synonymlist semplicemente grazie al metodo InsertLast( ). L ordine dei synset in uscita da WordNet non è casuale, ma considera già diversi gradi di importanza per i vari significati. int WordNetIF::HypernymsOf(char *string, int synsets, int branchdepth, int partofspeech) { /// The following implementation is valid when a valid WordNet support /// is declared in the config file. #ifndef WORDNET_SUPPORTED_ cerr << "Invalid call to Hypernyms search - WordNet not supported\n"<<flush; return -1; #else SynsetPtr outbuf, outbufint; SynsetID hereiam; listitem<synsetid> *speediterator = 0; int branchlength = 0, listcnt = 0, i; /******CONTROLLO PARAMETRI NON RIPORTATO******/ /// Copies search string strcpy_s(_searchword, strlen(string)+1, string); /// Search into WordNet: if synsets > 1 the search is less /// performing, and is necessary call "findtheinfo_ds" with full /// number of senses if(synsets == 1) outbuf = findtheinfo_ds(_searchword, partofspeech, -HYPERPTR, 1); else outbuf = findtheinfo_ds(_searchword, partofspeech, -HYPERPTR, ALLSENSES); outbufint = outbuf; if(outbuf!= NULL) { /// Cycle used for read the length of the list returned from /// Wordnet for(listcnt = 0; ((outbufint!= NULL) && (listcnt < synsets)); listcnt++) outbufint = outbufint->nextss; 86

96 /// Allocation of the hypernyms lists vector. Its lenght is /// equal to "synsets" param or, if less, to the number of /// synsets retrieved by findtheinfo_ds(). _hypslists = new pointerlist<synsetid>[ listcnt ]; if(!_hypslists) { cerr << "Error allocating array _hypslists during hypernyms search"<<endl; return -1; } /// Saving the number of founded lists _numofhypslists = listcnt; /// For every sense: for(i = 0; i<_numofhypslists; i++) { /// outbuf is used to scan every first synset related to the /// word, outbufint is used to explore every hypernyms chain outbufint = outbuf; branchlength=0; /// "Usual" hypernym case management; this control is used /// also for safety purposes if(outbufint->ptrlist!= NULL) { /// WARNING: the first synset of every list contains only /// synonyms: then the function skip these informations. outbufint = outbufint->ptrlist; /// Scanning the list of true parents, /// paying attention to the branchdepth bound for( ;((outbufint!= NULL) && (branchlength < branchdepth)); outbufint = outbufint->ptrlist ) { hereiam = outbufint->hereiam; _hypslists[i].insertlast(hereiam); branchlength++; } } /// "INSTANCE OF" case management. In this case, instead a /// "usual" hypernym, the function gives another type of /// parent, linked by a "INSTANCE OF" relation. else if((outbufint->ptrtyp!= NULL) && (outbufint->ptroff!= NULL)) { /// Check the type of data retrieved if( *(outbufint->ptrtyp) == INSTANCE) { /// WARNING: the first synset of every list contains only /// synonyms: then the function skip these informations. /// Reading of the next synset identifier, and saving hereiam = *(outbufint->ptroff); _hypslists[i].insertlast(hereiam); /// Now the depth of results is one. branchlength = 1; 87

97 /// If in the request there is branchdepth > 1, continue /// with hypernyms of the new word: /// for example "Moon" is INSTANCE OF "satellite", /// so hypernyms of "satellite" are now searched if (branchdepth > 1) { /// Code inspired to findtheinfo_ds() function: /// first a SynsetPtr is prepared, with the SynsetID /// of the new desired word outbufint = read_synset(partofspeech, hereiam, 0); if(outbufint!= 0) { /// Then the searched hypernyms are inserted into /// outbufint. Tracepointer_ds perform the /// recursive low-level hypernyms search. outbufint = traceptrs_ds(outbufint, HYPERPTR, partofspeech, 1); } /// Scan the hypernyms of the INSTANCE OF word /// founded above, and save them into _hypslists /// (paying attention to the branchdepth bound) for(;((outbufint!= NULL) && (branchlength < branchdepth)); outbufint = outbufint->ptrlist ) { hereiam = outbufint->hereiam; _hypslists[i].insertlast(hereiam); branchlength++; } } } } outbuf = outbuf->nextss; }// closing loop "for every sense" } return 0; #endif } Come si può vedere, la ricerca delle iperonimie risulta essere ben più articolata della prima. La figura 17 al capitolo 6 illustra il collegamento di più synset proprio nel caso di ricerca di iperonimie. Per poter salvare la struttura ad albero di questo caso, è necessario usare un vettore di liste. Ma questo non giustifica certo tale aumento di codice. In realtà il più grosso grattacapo è stato gestire il caso Instance Of: nella maggior parte dei casi, la relazione è un è espressa da una iperonimia convenzionale, ma quando si ha a che fare con nomi propri, ad esempio di città, stati, ecc., il risultato non si trova più seguendo il puntatore ptrlist. 88

98 La conseguenza è che il nostro programma, interrogato con Moon, non rispondeva in alcun modo, mentre WordNet originale sosteneva che il synset padre fosse satellite : Luna è istanza dell oggetto satellite, così come Pechino è istanza di capitale nazionale, o ancora Italia è istanza di paese europeo. Tutti output che la nostra prima versione di HypernymsOf( ) ignorava. Il problema non finisce qui: se la richiesta prevede un esplorazione dei parent con profondità superiore a quella unitaria, una volta giunti a satellite bisogna riprendere la ricerca convenzionale per poter completare la catena. Luna è istanza dell oggetto satellite, che è un corpo celeste, che è un oggetto naturale e così via. È stato possibile implementare questo caso particolare osservando che al verificarsi di Instance Of i campi del SynsetPtr in uscita da findtheinfo_ds( ) hanno le seguenti caratteristiche: ptrlist non punta ad alcun synset, ptrtyp contiene un codice identificativo di questa situazione, e ptroff contiene il SynsetID ricercato. /// Searching "PART OF" relations outbufp = findtheinfo_ds(_searchword, NOUN, ISPARTPTR, 1); /// Searching "MEMBER OF" relations outbufm = findtheinfo_ds(_searchword, NOUN, ISMEMBERPTR, 1); /// Searching "SUBSTANCE OF" relations outbufs = findtheinfo_ds(_searchword, NOUN, ISSTUFFPTR, 1); /// Searching "HAS PART" relations outbufp = findtheinfo_ds(_searchword, NOUN, HASPARTPTR, 1); /// Searching "HAS MEMBER" relations outbufm = findtheinfo_ds(_searchword, NOUN, HASMEMBERPTR, 1); /// Searching "HAS SUBSTANCE" relations outbufs = findtheinfo_ds(_searchword, NOUN, HASSTUFFPTR, 1); Il codici di HolonymsOf e MeronymsOf non aggiungono informazioni particolari rispetto a quanto già detto. Va però sottolineato, come già accennato al capitolo 6, che queste sono ricerche composte da tre tipi di relazioni. È parte di, è membro di, è sostanza di sono tutte olonimie, ha parti, ha membri, ha sostanze sono tutte meronimie. 89

99 Per questo motivo l unica soluzione che permette una ricerca completa è una triplice chiamata a findtheinfo_ds( ). I SynsetPtr risultanti vengono quindi letti e copiati in liste, esattamente come già osservato negli altri casi. L interfaccia di WordNet presenta infine tutte le funzioni di accesso ai membri. /** Access Functions */ /// Gets the content of _synonymslist pointerlist<synsetid> GetSynsList(); /// Gets a list of hypernyms pointerlist<synsetid> GetHypsList(int listnum); /// Gets the content of _holonymslist pointerlist<synsetid> GetHolsList(); /// Gets the content of _meronymslist pointerlist<synsetid> GetMersList(); /// Gets the value of _numofhypslists int GetNumOfHypsLists(); /// Gets the value of _synsetwords_arraydim, the lenght of /// _synsetwords_array int Get_synsetword_arraydim(); /// Gets the content of _synsetword_array (a pointer to internal /// member) char **Get_synsetword_array(); /// Gets the content of _synsetword_array (a copy of internal member) char **Get_synsetword_array_copy(); /// Gets the content of _synsetword_array (a pointer to internal /// member), but first request the fetching of a new synset char **Get_synsetword_array(SynsetID index, int partofspeech=1); /// Gets the content of _synsetword_array (a copy of internal member), /// but first request the fetching of a new synset char **Get_synsetword_array_copy(SynsetID index, int partofspeech=1); /// Gets the content of _synsetword_list (a copy of internal member) pointerlist<char *> Get_synsetword_list_copy(); /// Gets the content of _synsetword_list (a copy of internal member), /// but first request the fetching of a new synset pointerlist<char *> Get_synsetword_list_copy(SynsetID index, int partofspeech=1); /// Gets the lenght of _synsetwords_list int Get_synsetword_listdim(); I primi quattro metodi fanno banalmente il return delle liste richieste. Nel caso delle iperonimie si può prima interrogare GetNumOfHypsList( ) per conoscere le dimensioni dell output, quindi decidere quante e quali liste leggere nel membro di WordNetIF. 90

100 Una volta ottenuti i SynsetID (ed eventualmente filtrati / elaborati) l utente esterno deve poter recuperare i vocaboli. I synset vengono forniti sia in formato array che in formato liste, in cui ogni elemento è una stringa di caratteri. Nel caso dell array si distingue poi tra un metodo che ritorna il puntatore al membro ed una più sicura funzione che fa una copia esatta dell array allocando nuova memoria. Si può notare l overloading dei metodi Get_synsetword_array_copy( ) e Get_synsetword_list_copy( ). Se chiamati senza argomenti, ritornano l ultimo synset letto, già presente nei membri _synsetword_array e _synsetword_list di WordNetIF. Richiedendo invece uno specifico SynsetID, queste funzioni interrogano il database prima di rispondere. Più precisamente per l esecuzione di tale compito, si appoggiano a funzioni dichiarate protected, FetchSynsetArray( ) e FetchSynsetList( ), invisibili all utente esterno. Al di là del membro di destinazione, questi metodi sono sostanzialmente uguali. int WordNetIF::FetchSynsetList(SynsetID index, int partofspeech) { int i; SynsetPtr result = 0; char *element = 0; /// If the index passed is not a valid synset index, exit if(index < 0) { cerr<<"error: the index passed is not a valid synset index" <<endl; return NULL; } /// Controls about "partofspeech" parameter if((partofspeech < 1) (partofspeech >3)) { cout<<"error: partofspeech not valid in WordNetIF::FetchSynsetArray"<<endl; return 0; } /// FetchSynsetList can be called a lot of times. Better if there's /// a reset of the previous results, if exists ResetSynsetContent(); /// Calling the WordNet function read_synset, retrieving the entire /// synset result = read_synset(partofspeech,index,0); /****** COPIA DI result IN LISTA NON RIPORTATA ******/ 91

101 Non fanno altro che incapsulare una chiamata alla funzione read_synset( ) di WordNet. Una volta aggiornato il synset da porre in output, la funzione di get termina con la consueta operazione di copia e return. 7.3 Performance La pesantezza delle operazioni che WordNetIF deve inevitabilmente sostenere ha fatto sì che tutto lo sviluppo fosse orientato al perseguimento delle migliori prestazioni possibili: minimizzazione degli accessi al database e numerosi gradi di libertà nel settaggio dei parametri di ricerca. In ogni fase del lavoro ci siamo soffermati su test di performance per trovare il corretto equilibrio tra bontà delle informazioni e tempi di elaborazione. Fare un interrogazione approfondita al database di WordNet non solo pesa sulla tempistica, ma ritorna una quantità eccessiva di informazioni, che finiscono poi con l essere difficilmente filtrabili. Alcuni termini hanno veramente molti significati, e considerarli tutti può portare a concetti anche distanti da quelli realmente presenti nei documenti analizzati. Una parola come round ad esempio ha quattordici significati diversi nel database dei nomi, così come ride in quello dei verbi. Fortunatamente i significati non sono ordinati casualmente. Con ogni buona probabilità il concetto cercato ricade entro i primi due o tre sensi restituiti da WordNet. Nel caso delle iperonimie l esplorazione deve poi essere confinata entro due bound: ecco il significato dei parametri synsets e branchdepth. Il primo, presente in tutte le funzioni di ricerca, chiede di esplorare al massimo quel numero di significati. Il secondo limita l esplorazione della catena di parent, per evitare il raggiungimento di vocaboli privi di informazione. Anche quest ultimo è un problema non banale: se WordNet viene interrogato con una parola già abbastanza generica come person, a profondità di ricerca branchdepth = 2 ci si trova al parent living thing, che non vuol dire sostanzialmente nulla. Se invece si ricerca policeman, lo stesso parametro porta ad un ottimo risultato quale defender, guardian. 92

102 In generale, siamo giunti alla conclusione che i risultati migliori si ottengono con bound abbastanza vincolanti. Questo non ci dispiace troppo, in quanto ricerche limitate portano anche a tempi di elaborazione ridotti. La ricerca dei soli sinonimi è di gran lunga la più veloce, ma non semanticamente rilevante come quella di iperonimie, olonimie e meronimie. Il test seguente mostra una ricerca effettuata sul lemma car e mette a confronto le performance di ricerca di SynonymsOf e HypernymsOf. L interrogazione viene effettuata consecutivamente per 500 volte, quindi i tempi visualizzati sono la media tra tutte le iterazioni. Gli output di WordNetIF sono in questo caso i SynsetID, la cui correttezza si può facilmente verificare confrontandoli con gli output del WordNet Browser. I parametri di ricerca sono synsets = 2 e branchdepth = 2. Le prove sono state effettuate su un PC dotato di processore Intel Core 2 Duo T GHz. Figura 20: test performance WordNetIF La differenza tra i due tempi di ricerca, come si può vedere, arriva ad essere anche di due ordini di grandezza. Questo perché WordNet di per se non permette di fare una ricerca limitata. La chiamata a findtheinfo_ds( ) restituisce tutto il contenuto del database: si può chiedere uno specifico senso e non sensi in una certa quantità. Infatti tale funzione ha solo un parametri whichsense che se noi specifichiamo ad esempio uguale a 2, fa sì che il risultato contenga solo il secondo senso, non i primi due. Esattamente il contrario di ciò che ci sarebbe servito. 93

103 La profondità dei parent invece non può proprio essere controllata. Ponendo il nostro parametro synsets = 1, la chiamata a findtheinfo_ds ( ) avrà whichsense = 1 e sarà più performante. Diversamente, siamo stato costretti a chiamare la stessa funzione con ALLSENSES, che fa una ricerca totale, anziché affrontare cicli for di chiamate a findtheinfo_ds( ), ancora più onerosi. In definitiva, possiamo semplicemente limitare i danni copiando nelle liste solo le informazioni di nostro interesse. Probabilmente intervenire direttamente sul codice di WordNet potrebbe portare a risultati migliori. 94

104 Capitolo 8 Risultati sperimentali Per dimostrare le immense potenzialità di un software di text mining sono stati condotti alcuni esperimenti, analizzando un dataset di documenti testuali, riportando l output del software successivo all analisi e osservando i risultati ottenuti con l ottica dell analista investigativo. L articolo [32] mostra i risultati sperimentali effettuati con un software di text mining in grado di analizzare documenti testuali e raggrupparli in cluster. È stato analizzato il database di Enron per simulare un contesto di investigazioni e utilizzare informazioni il più possibile adiacenti ad un caso reale. Il database Enron fornisce informazioni sul corpo di messaggi , adatti ad un test di applicazioni di text mining a scopi investigativi. Il dataset fu diffuso in rete dal Federal Energy Regulatory Commission, successivamente all inchiesta sul caso riguardante l azienda Enron. Il contenuto è rappresentato da messaggi di posta elettronica, di proprietà di 158 impiegati della Enron, in gran parte dirigenti. Ogni messaggio comprende gli indirizzi e- mail del mittente e del destinatario, data, ora, titolo dal messaggio, contenuto. Una ulteriore versione del dataset è stata pubblicata nel 2004 da William Cohen, della Carnegie Mellon University, migliorata in termini di integrità dei dati e consistenza. Questa versione rende possibile il confronto dei risultati sperimentali con altre prove presenti in letteratura. Per costruire un buon campione, partendo dalla grande massa di dati disponibili, sono stati impiegati i messaggi di cinque impiegati scelti casualmente, ovvero White S., Smith M., Solberg G., Ybarbo P. e Steffes J. Sono stati costruiti cinque scenari diversi, processando separatamente i dati dei singoli dipendenti. È stato ipotizzato che ogni contenuto dei messaggi di posta sia descrittivo del ruolo che il mittente aveva nell azienda. Ai fini dell analisi è stato utilizzato solo il corpo di ogni messaggio, escludendo ogni altra informazione quale, per esempio, titolo, data e ora. 95

105 La seguente tabella mostra il numero di appartenenti ad ogni dipendente scelto: Tabella 1: di 5 dipendenti Enron L esperimento condotto è stato effettuato imponendo il numero di 10 cluster, entro i quali raggruppare i messaggi del dipendente scelto. Il numero è stato deciso sulla base del bisogno di ottenere un numero limitato di gruppi informativi. Le tabelle che seguono mostrano tutti i risultati ottenuti nell esperimento, mostrando i termini caratterizzanti ognuno dei 10 cluster organizzati dall applicazione. Per ogni riga sono elencate le parole più importanti tra le venti parole più frequenti all interno del cluster. Si fornisce una legenda delle abbreviazioni più significative: ect significa Enron Capital & Trade Resources; hpl significa Houston Pipeline Company; epmi significa Enron Power Marketing Inc.; mmbtu significa Million British Thermal Units; dynegi significa Dynegy Inc., una grossa azienda di centrali elettriche a gas e a carbone, che nel 2001 aveva condotto delle acquisizioni sfavorevoli a Enron. Tabella 2: risultati per White S. 96

106 Dal punto di vista investigativo tali tabelle possono offrire alcune informazioni importanti. Dai risultati di White S., e in particolare osservando il cluster numero 2, si vede tra le parole più frequenti confidential, il che rende questo gruppo di messaggi candidato ad un analisi molto più accurata. Dello stesso proprietario, il cluster numero 7 esibisce strani contenuti, ovvero un gran numero di nomi di persone. Questo può suggerire che tali siano riguardanti la vita privata del proprietario. Tabella 3: risultati per Smith M. Le informazioni ricavate riguardo a Smith M. consentono di osservare un cluster fortemente caratterizzato da informazioni non concernenti il lavoro, in particolare il cluster numero 10. Anche in questo caso, una analisi molto più approfondita sui messaggi appartenenti al cluster 10 potrebbe portare a scoprire molto sulla vita privata del proprietario. Tabella 4: risultati per Solberg G. 97

107 Osservando questa tabella non si nota nulla di particolare; tuttavia è curioso notare che molti cluster siano caratterizzati da parole del linguaggio tecnico informatico, e in gran parte relativi a dati e guasti. Tabella 5: risultati per Ybarbo P. Anche osservando i dati estratti dai messaggi di Ybarbo P. non si nota nulla di particolare, anche se si capisce facilmente il suo grande coinvolgimento in affari internazionali. Tabella 6: risultati per Steffes J. I risultati sperimentali ottenuti analizzando la situazione di Steffes J. sono molto più interessanti. Si osserva un cluster, il numero 6, fortemente caratterizzato da informazioni finanziarie, sui mercati e sugli investitori. Analizzandolo si potrebbe capire molto sulla situazione finanziaria del gruppo Enron. Infine, è presente in maniera massiccia la sigla ferc, che significa Federal Energy Regulatory Commission. Le informazioni riguardanti Steffes possono quindi fornire addirittura elementi interessanti riguardo all inchiesta condotta proprio dalla FERC sulla Enron. 98

Tecniche di riconoscimento statistico

Tecniche di riconoscimento statistico On AIR s.r.l. Tecniche di riconoscimento statistico Applicazioni alla lettura automatica di testi (OCR) Parte 4 Reti neurali per la classificazione Ennio Ottaviani On AIR srl ennio.ottaviani@onairweb.com

Dettagli

Università degli Studi di Salerno

Università degli Studi di Salerno Università degli Studi di Salerno Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea in Informatica Tesi di Laurea Algoritmi basati su formule di quadratura interpolatorie per GPU ABSTRACT

Dettagli

Tecniche di riconoscimento statistico

Tecniche di riconoscimento statistico Tecniche di riconoscimento statistico Applicazioni alla lettura automatica di testi (OCR) Parte 8 Support Vector Machines Ennio Ottaviani On AIR srl ennio.ottaviani@onairweb.com http://www.onairweb.com/corsopr

Dettagli

Università degli Studi di Napoli Federico II

Università degli Studi di Napoli Federico II Università degli Studi di Napoli Federico II Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Tesi sperimentale di Laurea Triennale Calcolo ad alte prestazioni basato su GPU Un modello ibrido

Dettagli

Corso di Alfabetizzazione Informatica

Corso di Alfabetizzazione Informatica Corso di Alfabetizzazione Informatica Lezione 6 a.a. 2010/2011 Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono: diversi

Dettagli

Lezione1. Cos è la computer grafica. Lezione del 10 Marzo 2010. Michele Antolini Dipartimento di Ingegneria Meccanica Politecnico di Milano

Lezione1. Cos è la computer grafica. Lezione del 10 Marzo 2010. Michele Antolini Dipartimento di Ingegneria Meccanica Politecnico di Milano Lezione1 Informatica Grafica Cos è la computer grafica Lezione del 10 Marzo 2010 Grafica OpenGL vs Direct Dipartimento di Ingegneria Meccanica Politecnico di Milano 1.1 Tubo a Raggi Catodici Cathode Ray

Dettagli

PDF created with pdffactory trial version www.pdffactory.com. Il processo di KDD

PDF created with pdffactory trial version www.pdffactory.com. Il processo di KDD Il processo di KDD Introduzione Crescita notevole degli strumenti e delle tecniche per generare e raccogliere dati (introduzione codici a barre, transazioni economiche tramite carta di credito, dati da

Dettagli

Installazione di IBM SPSS Modeler 14.2 Client (licenza di rete)

Installazione di IBM SPSS Modeler 14.2 Client (licenza di rete) Installazione di IBM SPSS Modeler 14.2 Client (licenza di rete) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Client versione 14.2 con licenza di rete. Questo documento è stato

Dettagli

LabVIEW offre un ambiente di programmazione grafica

LabVIEW offre un ambiente di programmazione grafica 03 COME OTTIMIZZARE IN LABVIEW APPLICAZIONI DI TEST AUTOMATIZZATI PER PROCESSORI MULTICORE David Hall Vediamo come delle applicazioni scritte in LabVIEW possono essere ottimizzate sfruttando tecniche di

Dettagli

Installazione di IBM SPSS Modeler 14.2 Client (utente singolo)

Installazione di IBM SPSS Modeler 14.2 Client (utente singolo) Installazione di IBM SPSS Modeler 14.2 Client (utente singolo) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Client versione 14.2 con licenza per utente singolo. Una licenza

Dettagli

SISTEMI INFORMATIVI AZIENDALI

SISTEMI INFORMATIVI AZIENDALI SISTEMI INFORMATIVI AZIENDALI Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento: Alla fine di ogni lezione Modalità esame: scritto 1 Data Mining. Introduzione La crescente popolarità

Dettagli

Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM. Davide Barbieri

Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM. Davide Barbieri Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM Davide Barbieri Contatti skype: davbar86 mail: davide.barbieri@ghostshark.it Panoramica corso Introduzione al mondo delle GPU Modello GPGPU Nvidia

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono:

Dettagli

Software. Definizione, tipologie, progettazione

Software. Definizione, tipologie, progettazione Software Definizione, tipologie, progettazione Definizione di software Dopo l hardware analizziamo l altra componente fondamentale di un sistema di elaborazione. La macchina come insieme di componenti

Dettagli

KNOWLEDGE MANAGEMENT. Knowledge Management. Knowledge: : cos è. Dispense del corso di Gestione della Conoscenza d Impresa

KNOWLEDGE MANAGEMENT. Knowledge Management. Knowledge: : cos è. Dispense del corso di Gestione della Conoscenza d Impresa KNOWLEDGE MANAGEMENT Pasquale Lops Giovanni Semeraro Dispense del corso di Gestione della Conoscenza d Impresa 1/23 Knowledge Management La complessità crescente della società, l esubero di informazioni

Dettagli

VC-dimension: Esempio

VC-dimension: Esempio VC-dimension: Esempio Quale è la VC-dimension di. y b = 0 f() = 1 f() = 1 iperpiano 20? VC-dimension: Esempio Quale è la VC-dimension di? banale. Vediamo cosa succede con 2 punti: 21 VC-dimension: Esempio

Dettagli

Sistemi RAID. Sistemi RAID. Sistemi RAID

Sistemi RAID. Sistemi RAID. Sistemi RAID Sistemi RAID 1 Sistemi RAID Dei tre elementi fondamentali di un qualsiasi sistema computerizzato: processore, memoria primaria, memoria secondaria, quest ultimo è di gran lunga il più lento. Inoltre, il

Dettagli

Sistemi RAID. Sistemi RAID

Sistemi RAID. Sistemi RAID Sistemi RAID 1 Sistemi RAID Dei tre elementi fondamentali di un qualsiasi sistema computerizzato: processore, memoria primaria, memoria secondaria, quest ultimo è di gran lunga il più lento. Inoltre, il

Dettagli

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache... Appunti di Calcolatori Elettronici Concetti generali sulla memoria cache Introduzione... 1 Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Dettagli

UNIVERSITÀ DEGLI STUDI DI GENOVA FACOLTÀ DI IGNEGNERIA TESI DI LAUREA: USO DI SEMANTICHE DI DOMINIO IN APPLICAZIONI DI TEXT MINING

UNIVERSITÀ DEGLI STUDI DI GENOVA FACOLTÀ DI IGNEGNERIA TESI DI LAUREA: USO DI SEMANTICHE DI DOMINIO IN APPLICAZIONI DI TEXT MINING UNIVERSITÀ DEGLI STUDI DI GENOVA FACOLTÀ DI IGNEGNERIA Corso di Laurea in Ingegneria Elettronica Anno accademico 2010 2011 TESI DI LAUREA: USO DI SEMANTICHE DI DOMINIO IN APPLICAZIONI DI TEXT MINING Relatore:

Dettagli

Sistemi RAID tutti i dati che contiene RAID

Sistemi RAID tutti i dati che contiene RAID Sistemi RAID 1 Sistemi RAID Dei tre elementi fondamentali di un qualsiasi sistema computerizzato: processore, memoria primaria, memoria secondaria, quest ultimo è di gran lunga il più lento. Inoltre, il

Dettagli

A parte alcuni dispositivi rudimentali dell'antichità classica, non vi furono progressi tecnologici rilevanti fino a circa il 1650 Per tre secoli,

A parte alcuni dispositivi rudimentali dell'antichità classica, non vi furono progressi tecnologici rilevanti fino a circa il 1650 Per tre secoli, Storia del Calcolatore A parte alcuni dispositivi rudimentali dell'antichità classica, non vi furono progressi tecnologici rilevanti fino a circa il 1650 Per tre secoli, vennero ideati dispositivi meccanici

Dettagli

Informatica 1. 6 Sistemi operativi e software. ing. Luigi Puzone

Informatica 1. 6 Sistemi operativi e software. ing. Luigi Puzone Informatica 1 6 Sistemi operativi e software ing. Luigi Puzone Windows caratteristiche principali: Windows è un Sistema Operativo Con Interfaccia Grafica Multiutente Multitasking Multithreading Multiprocessing

Dettagli

Fondamenti di Informatica 7. Linguaggi di programmazione

Fondamenti di Informatica 7. Linguaggi di programmazione I linguaggi di alto livello Fondamenti di Informatica 7. Linguaggi di programmazione Introduzione alla programmazione Caratteristiche dei linguaggi di programmazione I linguaggi di programmazione di alto

Dettagli

Termini che è necessario capire:

Termini che è necessario capire: Per iniziare 1........................................ Termini che è necessario capire: Hardware Software Information Technology (IT) Mainframe Laptop computer Unità centrale di elaborazione (CPU) Hard

Dettagli

Progetto ASTREA WP2: Sistema informativo per il monitoraggio del sistema giudiziario

Progetto ASTREA WP2: Sistema informativo per il monitoraggio del sistema giudiziario Progetto ASTREA WP2: Sistema informativo per il monitoraggio del sistema giudiziario Nell ambito di questa attività è in fase di realizzazione un applicativo che metterà a disposizione dei policy makers,

Dettagli

Breve introduzione al Calcolo Evoluzionistico

Breve introduzione al Calcolo Evoluzionistico Breve introduzione al Calcolo Evoluzionistico Stefano Cagnoni Dipartimento di Ingegneria dell Informazione, Università di Parma cagnoni@ce.unipr.it 1 Introduzione Il mondo fisico ed i fenomeni naturali

Dettagli

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso 1 Introduzione all informatica: algoritmi, linguaggi e programmi Indice 1. Introduzione 2. Risoluzione automatica di problemi - Algoritmi

Dettagli

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra.

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra. Appunti di Calcolatori Elettronici Modello di macchina multilivello Introduzione... 1 Linguaggi, livelli e macchine virtuali... 3 La struttura a livelli delle macchine odierne... 4 Evoluzione delle macchine

Dettagli

D3.1 Documento di analisi della visualizzazione 3D in ambiente Cloud e relative problematiche

D3.1 Documento di analisi della visualizzazione 3D in ambiente Cloud e relative problematiche D3.1 Documento di analisi della visualizzazione 3D in ambiente Cloud e relative problematiche Il Cloud Computing La visualizzazione nella Cloud Problematiche Virtualizzazione della GPU Front end Virtualization

Dettagli

Piattaforma aziendale IBM Cognos per Business Intelligence

Piattaforma aziendale IBM Cognos per Business Intelligence Piattaforma aziendale IBM Cognos per Business Intelligence Considerazioni principali Ottimizzate le prestazioni con l'elaborazione in-memory e l'evoluzione dell'architettura Ottimizzate i vantaggi dell'implementazione

Dettagli

Novità di Visual Studio 2008

Novità di Visual Studio 2008 Guida al prodotto Novità di Visual Studio 2008 Introduzione al sistema di sviluppo di Visual Studio Visual Studio Team System 2008 Visual Studio Team System 2008 Team Foundation Server Visual Studio Team

Dettagli

Feature Selection per la Classificazione

Feature Selection per la Classificazione 1 1 Dipartimento di Informatica e Sistemistica Sapienza Università di Roma Corso di Algoritmi di Classificazione e Reti Neurali 20/11/2009, Roma Outline Feature Selection per problemi di Classificazione

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

Sistemi Operativi. Modulo 2. C. Marrocco. Università degli Studi di Cassino

Sistemi Operativi. Modulo 2. C. Marrocco. Università degli Studi di Cassino Sistemi Operativi Modulo 2 Schema di un Sistema di Calcolo Programmi Dati di Input Calcolatore Dati di output Modello di von Neumann Bus di sistema CPU Memoria Centrale Memoria di Massa Interfaccia Periferica

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

Support Vector Machines introduzione. Vittorio Maniezzo Università di Bologna

Support Vector Machines introduzione. Vittorio Maniezzo Università di Bologna 7 Support Vector Machines introduzione Vittorio Maniezzo Università di Bologna 1 SVM - introduzione Le SV machinessono state sviluppate negli AT&T Bell Laboratoriesda Vapnike colleghi (Boseret al., 1992,

Dettagli

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 25 febbraio 2015. Corso di laurea in Matematica

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 25 febbraio 2015. Corso di laurea in Matematica Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 25 febbraio 2015 1 / 42 INFORMATICA Varie definizioni: Scienza degli elaboratori elettronici (Computer Science)

Dettagli

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi Evoluzione dei sistemi operativi (4) Sistemi multiprogrammati! più programmi sono caricati in contemporaneamente, e l elaborazione passa periodicamente dall uno all altro Evoluzione dei sistemi operativi

Dettagli

ACQUISTARE LA WORKSTATION PERFETTA

ACQUISTARE LA WORKSTATION PERFETTA ACQUISTARE LA WORKSTATION PERFETTA UNA GUIDA ALL ACQUISTO PER OTTENERE IL MASSIME PRESTAZIONE E AFFIDABILITÀ CON IL CAD/CAM SOMMARIO Considerazioni sulle prestazioni... 2 1. CPU... 3 2. GPU... 3 3. RAM...

Dettagli

Prefazione. Contenuti

Prefazione. Contenuti Prefazione Il sistema operativo costituisce uno dei componenti fondamentali di ogni sistema di elaborazione, in particolare è quello con cui l utente entra direttamente in contatto quando accede al sistema,

Dettagli

Master SIT Settembre 2006. Corso Web & GIS - Master in Sistemi Informativi Territoriali AA 2005/2006. Chiara Renso. ISTI- CNR c.renso@isti.cnr.

Master SIT Settembre 2006. Corso Web & GIS - Master in Sistemi Informativi Territoriali AA 2005/2006. Chiara Renso. ISTI- CNR c.renso@isti.cnr. COSTRUIRE APPLICAZIONI WEB GIS: SERVIZI E STRATEGIE Corso - Master in Sistemi Informativi Territoriali AA 2005/2006 ISTI- CNR c.renso@isti.cnr.it I servizi WebGIS...1 Download di dati...3 Visualizzazione

Dettagli

CAPITOLO 1 I SISTEMI OPERATIVI

CAPITOLO 1 I SISTEMI OPERATIVI CAPITOLO 1 I SISTEMI OPERATIVI Introduzione ai sistemi operativi pag. 3 La shell pag. 3 Tipi di sistemi operativi pag. 4 I servizi del sistema operativo pag. 4 La gestione dei file e il file system Il

Dettagli

I Modelli della Ricerca Operativa

I Modelli della Ricerca Operativa Capitolo 1 I Modelli della Ricerca Operativa 1.1 L approccio modellistico Il termine modello è di solito usato per indicare una costruzione artificiale realizzata per evidenziare proprietà specifiche di

Dettagli

CAPITOLO 5 - Sistemi Operativi Moderni

CAPITOLO 5 - Sistemi Operativi Moderni CAPITOLO 5 - Sistemi Operativi Moderni PRESENTAZIONE DI INSIEME Vedremo ora come si è evoluta nel tempo la struttura di un sistema operativo, per passare dalle vecchie strutture di tipo normalmente modulari,

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

corrispondente server Web (l applicazione server) viene inviata una richiesta, alla quale il server normalmente risponde inviando la pagina HTML che

corrispondente server Web (l applicazione server) viene inviata una richiesta, alla quale il server normalmente risponde inviando la pagina HTML che Prefazione In questo volume completiamo l esplorazione del linguaggio Java che abbiamo iniziato in Java Fondamenti di programmazione. I due testi fanno parte di un percorso didattico unitario, come testimoniano

Dettagli

Ottimizzazioni delle prestazioni di un Web server Ottimizzazioni delle prestazioni di un Web server

Ottimizzazioni delle prestazioni di un Web server Ottimizzazioni delle prestazioni di un Web server Pagina 1 di 5 Ottimizzazioni delle prestazioni di un Web server Ottimizzazioni delle prestazioni di un Web server Spesso il server non è in grado di gestire tutto il carico di cui è gravato. Inoltre, una

Dettagli

10 argomenti a favore dell over IP

10 argomenti a favore dell over IP Quello che i fornitori di telecamere analogiche non dicono 10 argomenti a favore dell over IP Le telecamere di rete non sono certo una novità, infatti il primo modello è stato lanciato nel 1996. Nei primi

Dettagli

MODULO 1. 1.1 Il personal computer. ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale

MODULO 1. 1.1 Il personal computer. ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale MODULO 1 1.1 Il personal computer ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale 1.1 Il personal computer Il PC Hardware e software Classificazioni del software Relazione tra

Dettagli

Tecniche di riconoscimento statistico

Tecniche di riconoscimento statistico On AIR s.r.l. Tecniche di riconoscimento statistico Applicazioni alla lettura automatica di testi (OCR) Parte 1 - Introduzione generale Ennio Ottaviani On AIR srl ennio.ottaviani@onairweb.com http://www.onairweb.com/corsopr

Dettagli

VoipNet. La soluzione per la comunicazione aziendale

VoipNet. La soluzione per la comunicazione aziendale VoipNet La soluzione per la comunicazione aziendale grave crisi economica fase recessiva mercati instabili terremoto finanziario difficoltà di crescita per le aziende Il mercato La nuova sfida per le aziende:

Dettagli

PROGRAMMAZIONE GENERALE DI INFORMATICA a.s.2014/2015

PROGRAMMAZIONE GENERALE DI INFORMATICA a.s.2014/2015 LICEO SCIENTIFICO LICEO SCIENTIFICO opzione SCIENZE APPLICATE LICEO CLASSICO G. BODONI 12037 SALUZZO DIPARTIMENTO DI MATEMATICA FISICA E INFORMATICA PROGRAMMAZIONE GENERALE DI INFORMATICA a.s.2014/2015

Dettagli

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi : di base e applicativo L HardWare (monitor, tastiera, circuiti, stampante, ) è il nucleo fondamentale del calcolatore ma da solo non serve a nulla. Bisogna utilizzare il software per poterlo fare funzionare.

Dettagli

Indice generale. 1 Il calcolatore: astrazioni. 2 Le istruzioni: il linguaggio. e tecnologia 1. dei calcolatori 57

Indice generale. 1 Il calcolatore: astrazioni. 2 Le istruzioni: il linguaggio. e tecnologia 1. dei calcolatori 57 I Indice generale Prefazione viii 1 Il calcolatore: astrazioni e tecnologia 1 1.1 Introduzione 1 Tipi di calcolatore e loro caratteristiche 2 Cosa si può imparare da questo libro 5 1.2 Cosa c è dietro

Dettagli

Classificazione del software

Classificazione del software Classificazione del software Classificazione dei software Sulla base del loro utilizzo, i programmi si distinguono in: SOFTWARE Sistema operativo Software applicativo Sistema operativo: una definizione

Dettagli

Basi di dati. Basi di dati = database. Basi di dati

Basi di dati. Basi di dati = database. Basi di dati Basi di dati Da leggere: Cap. 6 Sawyer, Williams (testo A) Basi di dati = database Sono una delle applicazioni informatiche che hanno avuto il maggiore utilizzo in uffici, aziende, servizi -> oggi anche

Dettagli

Lezione 5: Software. Firmware Sistema Operativo. Introduzione all'informatica - corso E

Lezione 5: Software. Firmware Sistema Operativo. Introduzione all'informatica - corso E Lezione 5: Software Firmware Sistema Operativo Architettura del Calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti: Hardware e Software Firmware: strato di (micro-)programmi

Dettagli

Istruzioni di installazione di IBM SPSS Modeler Server 15per Windows

Istruzioni di installazione di IBM SPSS Modeler Server 15per Windows Istruzioni di installazione di IBM SPSS Modeler Server 15per Windows IBM SPSS Modeler Server può essere installato e configurato per l esecuzione in modalità di analisi distribuita insieme ad altre installazioni

Dettagli

Sistemi Informativi e WWW

Sistemi Informativi e WWW Premesse Sistemi Informativi e WWW WWW: introduce un nuovo paradigma di diffusione (per i fornitori) e acquisizione (per gli utilizzatori) delle informazioni, con facilità d uso, flessibilità ed economicità

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Il Sistema Operativo Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Cos

Dettagli

Il software: natura e qualità

Il software: natura e qualità Sommario Il software: natura e qualità Leggere Cap. 2 Ghezzi et al. Natura e peculiarità del software Classificazione delle qualità del software Qualità del prodotto e del processo Qualità interne ed esterne

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

MICROSOFT DYNAMICS: SOLUZIONI GESTIONALI PER L AZIENDA

MICROSOFT DYNAMICS: SOLUZIONI GESTIONALI PER L AZIENDA MICROSOFT DYNAMICS: SOLUZIONI GESTIONALI PER L AZIENDA Microsoft Dynamics: soluzioni gestionali per l azienda Le soluzioni software per il business cercano, sempre più, di offrire funzionalità avanzate

Dettagli

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE Relatore: prof. Michele Moro Laureando: Marco Beggio Corso di laurea in Ingegneria Informatica Anno Accademico 2006-2007

Dettagli

ISTITUTO TECNICO ECONOMICO MOSSOTTI

ISTITUTO TECNICO ECONOMICO MOSSOTTI CLASSE III INDIRIZZO S.I.A. UdA n. 1 Titolo: conoscenze di base Conoscenza delle caratteristiche dell informatica e degli strumenti utilizzati Informatica e sistemi di elaborazione Conoscenza delle caratteristiche

Dettagli

Regressione non lineare con un modello neurale feedforward

Regressione non lineare con un modello neurale feedforward Reti Neurali Artificiali per lo studio del mercato Università degli studi di Brescia - Dipartimento di metodi quantitativi Marco Sandri (sandri.marco@gmail.com) Regressione non lineare con un modello neurale

Dettagli

uomo Software (sistema operativo) hardware

uomo Software (sistema operativo) hardware uomo Software (sistema operativo) hardware 1 Sistema operativo Insieme di programmi che svolgono funzioni essenziali per l uso del sistema di elaborazione Questi programmi sono i primi ad essere eseguiti

Dettagli

Basi di Dati. Introduzione ai sistemi di basi di dati. K.Donno - Introduzione ai sistemi di basi di dati

Basi di Dati. Introduzione ai sistemi di basi di dati. K.Donno - Introduzione ai sistemi di basi di dati Basi di Dati Introduzione ai sistemi di basi di dati Introduzione ai sistemi di basi di dati Gestione dei Dati Una prospettiva storica File system verso DBSM Vantaggi di un DBMS Modelli dei dati Utenti

Dettagli

Automazione di Test di Sistemi Embedded. Sintesi

Automazione di Test di Sistemi Embedded. Sintesi UNIVERSITÀ DEGLI STUDI DI MILANO - BICOCCA Facoltà di Scienze Matematiche, Fisiche e Naturali Dipartimento di Informatica Sistemistica e Comunicazione Corso di Laurea Magistrale in Informatica Automazione

Dettagli

I SISTEMI OPERATIVI CONCETTI INTRODUTTIVI

I SISTEMI OPERATIVI CONCETTI INTRODUTTIVI I SISTEMI OPERATIVI CONCETTI INTRODUTTIVI Il Software Software di Base Sistema Operativo (Software di base essenziale) Software di base non essenziale Utility Driver Software applicativi (Applicazioni)

Dettagli

Introduzione ai sistemi di basi di dati

Introduzione ai sistemi di basi di dati Basi di Dati Introduzione ai sistemi di basi di dati Alessandro.bardine@gmail.com alessandro.bardine@iet.unipi.it Introduzione ai sistemi di basi di dati Gestione dei Dati Una prospettiva storica File

Dettagli

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software: 1 SOFTWARE È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software: SOFTWARE DI SISTEMA (o di base), che deve gestire le funzioni

Dettagli

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Sommario Introduzione Definizione di WCET Importanza del WCET Panoramica dei classici metodi per calcolare il WCET [1] Utilizzo di

Dettagli

A cura di: Dott. Ing. Elisabetta Visciotti. e.visciotti@gmail.com

A cura di: Dott. Ing. Elisabetta Visciotti. e.visciotti@gmail.com A cura di: Dott. Ing. Elisabetta Visciotti e.visciotti@gmail.com Il termine generico rete (network) definisce un insieme di entità (oggetti, persone, ecc.) interconnesse le une alle altre. Una rete permette

Dettagli

Il guadagno informativo negli alberi decisionali: un nuovo approccio

Il guadagno informativo negli alberi decisionali: un nuovo approccio Il guadagno informativo negli alberi decisionali: un nuovo approccio Sommario Descrizione del problema... 2 Il guadagno informativo di Nanni... 3 Il software Weka... 3 Cos è Weka... 3 Il guadagno Informativo

Dettagli

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi: Modulo 8 Elettronica Digitale Contenuti: Introduzione Sistemi di numerazione posizionali Sistema binario Porte logiche fondamentali Porte logiche universali Metodo della forma canonica della somma per

Dettagli

Svantaggi della Commutazione di Circuito. Commutazione di Pacchetto. Struttura di un Pacchetto

Svantaggi della Commutazione di Circuito. Commutazione di Pacchetto. Struttura di un Pacchetto Università degli studi di Salerno Laurea in Informatica I semestre / Commutazione di Pacchetto Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Svantaggi della Commutazione

Dettagli

EIPASS Junior Programma analitico d esame Scuola Primaria

EIPASS Junior Programma analitico d esame Scuola Primaria eipass EIPASS Junior Programma analitico d esame Scuola Primaria Programma analitico d esame EIPASS Junior Scuola Primaria Premessa La nascita, lo sviluppo e il consolidamento delle competenze digitali

Dettagli

Il Software... A.A. 2013-14 Informatica 96

Il Software... A.A. 2013-14 Informatica 96 Il Software... A.A. 2013-14 Informatica 96 Il software L hardware non è direttamente utilizzabile Sono necessari dei programmi per far svolgere delle funzioni all insieme di circuiti Informatica 97 Il

Dettagli

Sistemi Mobili e Wireless Android Introduzione alla piattaforma

Sistemi Mobili e Wireless Android Introduzione alla piattaforma Sistemi Mobili e Wireless Android Introduzione alla piattaforma Stefano Burigat Dipartimento di Matematica e Informatica Università di Udine www.dimi.uniud.it/burigat stefano.burigat@uniud.it Cos'è Android?

Dettagli

Funzioni del Sistema Operativo

Funzioni del Sistema Operativo Il Software I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (ferramenta). La struttura del calcolatore può essere schematizzata come una serie di

Dettagli

Data Mining in SAP. Alessandro Ciaramella

Data Mining in SAP. Alessandro Ciaramella UNIVERSITÀ DI PISA Corsi di Laurea Specialistica in Ingegneria Informatica per la Gestione d Azienda e Ingegneria Informatica Data Mining in SAP A cura di: Alessandro Ciaramella La Business Intelligence

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Il software di base Software

Dettagli

Alfresco ECM. La gestione documentale on-demand

Alfresco ECM. La gestione documentale on-demand Alfresco ECM La gestione documentale on-demand Alfresco 3.2 La gestione documentale on-demand Oltre alla possibilità di agire sull efficienza dei processi, riducendone i costi, è oggi universalmente conosciuto

Dettagli

STRUMENTO DI SUPPORTO PER L ANALISI DEL RISCHIO-RAPINA

STRUMENTO DI SUPPORTO PER L ANALISI DEL RISCHIO-RAPINA Convegno ABI BANCHE E SICUREZZA 2007 STRUMENTO DI SUPPORTO PER L ANALISI DEL RISCHIO-RAPINA Fabrizio Capobianco Responsabile Ufficio Gestione Sicurezza - SGS Gruppo Banco Popolare di Verona e Novara Caratteristiche

Dettagli

File System Distribuiti

File System Distribuiti File System Distribuiti Introduzione Nominazione e Trasparenza Accesso ai File Remoti Servizio Con/Senza Informazione di Stato Replica dei File Un esempio di sistema 20.1 Introduzione File System Distribuito

Dettagli

Introduzione. File System Distribuiti. Nominazione e Trasparenza. Struttura dei DFS. Strutture di Nominazione

Introduzione. File System Distribuiti. Nominazione e Trasparenza. Struttura dei DFS. Strutture di Nominazione File System Distribuiti Introduzione Nominazione e Trasparenza Accesso ai File Remoti Servizio Con/Senza Informazione di Stato Replica dei File Un esempio di sistema Introduzione File System Distribuito

Dettagli

IL DSP - Digital Signal Processor

IL DSP - Digital Signal Processor IL DSP - Digital Signal Processor Processore dei segnali digitali 1. Generalità Il Digital Signal Processor (DSP, processore di segnali digitali) è un particolare tipo di microprocessore, ottimizzato per

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 1 Sistema software 1 Prerequisiti Utilizzo elementare di un computer Significato elementare di programma e dati Sistema operativo 2 1 Introduzione In questa Unità studiamo

Dettagli

Laboratorio di Programmazione 2

Laboratorio di Programmazione 2 Laboratorio di Programmazione 2 Docente: Luca Forlizzi Orario: lun. 15:00-17:00, mar. 17:00-19:00, gio. 17:00-19:00 Ricevimento: lun. 17:00-18:00, mar. 16:00-17:00 Contatti: ricevimento (Coppito 2, stanza

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

SOLUTION BRIEF CA ERwin Modeling. Come gestire la complessità dei dati e aumentare l'agilità del business

SOLUTION BRIEF CA ERwin Modeling. Come gestire la complessità dei dati e aumentare l'agilità del business SOLUTION BRIEF CA ERwin Modeling Come gestire la complessità dei dati e aumentare l'agilità del business CA ERwin Modeling fornisce una visione centralizzata delle definizioni dei dati chiave per consentire

Dettagli

Progettazione di Sistemi Interattivi. Gli strati e la rete. Struttura e supporti all implementazione di applicazioni in rete (cenni)

Progettazione di Sistemi Interattivi. Gli strati e la rete. Struttura e supporti all implementazione di applicazioni in rete (cenni) Progettazione di Sistemi Interattivi Struttura e supporti all implementazione di applicazioni in rete (cenni) Docente: Daniela Fogli Gli strati e la rete Stratificazione da un altro punto di vista: i calcolatori

Dettagli

L ottimizzazione dei processi con Microsoft Office System: come generare e misurare il valore per le aziende

L ottimizzazione dei processi con Microsoft Office System: come generare e misurare il valore per le aziende MICROSOFT BUSINESS DESKTOP MICROSOFT ENTERPRISE CLUB Disponibile anche sul sito: www.microsoft.com/italy/eclub/ L ottimizzazione dei processi con Microsoft Office System: come generare e misurare il valore

Dettagli

1.3 Concetti base dell Informatica: Elaboratore

1.3 Concetti base dell Informatica: Elaboratore 1.3 Concetti base dell Informatica: Elaboratore Insegnamento di Informatica Elisabetta Ronchieri Corso di Laurea di Economia, Universitá di Ferrara I semestre, anno 2014-2015 Elisabetta Ronchieri (Universitá)

Dettagli

PROGRAMMAZIONE ANUALE DEL DIPARTIMENTO DI INFORMATICA E TELECOMUNICAZIONI ISTITUTO TECNICO a.s. 2015-16

PROGRAMMAZIONE ANUALE DEL DIPARTIMENTO DI INFORMATICA E TELECOMUNICAZIONI ISTITUTO TECNICO a.s. 2015-16 PROGRAMMAZIONE ANUALE DEL DIPARTIMENTO DI INFORMATICA E TELECOMUNICAZIONI ISTITUTO TECNICO a.s. 2015-16 SECONDO BIENNIO Disciplina: INFORMATICA La disciplina Informatica concorre a far conseguire allo

Dettagli