SlideShare a Scribd company logo
”Sapienza”, Universit`a di Roma
Facolt`a di Ingegneria dell’Informazione,
Informatica e Statistica
Tesi di Laurea Magistrale in
Informatica (ex. DM270)
Un componente NER Multi-language
per il TermExtractor
Relatore Candidato
Prof. Paola Velardi Sofien Vannutelli
Anno Accademico 2013/2014
”Sapienza”, Universit`a di Roma
Facolt`a di Ingegneria dell’Informazione,
Informatica e Statistica
Tesi di Laurea Magistrale in
Informatica (ex. DM270)
Un componente NER Multi-language
per il TermExtractor
Relatore Candidato
Prof. Paola Velardi Sofien Vannutelli
Anno Accademico 2013/2014
Ringraziamenti
”Fatti non foste per viver come bruti, ma per seguir virtute e canoscenza”
DANTE (Canto XXVI).
In questa pagina, tutta mia, voglio prendere l’occasione per ringraziare tutte quelle
persone che, con il loro aiuto e con il loro impegno, mi hanno aiutato a crescere,
maturare e a diventare la persona che sono oggi. Ringrazio quindi: tutti il collegio
dei professori e dei ricercatori del Dipartimento di Informatica, in particolare la
mia relatrice, la Prof. Paola Velardi, per la sua professionalit`a, disponibilit`a ed
attenta assistenza, il Prof. Panizzi per l’ottimo rapporto d’amicizia creato durante
la collaborazione nella preparazione degli eventi ITMeeting e il Prof. Giancarlo
Bongiovanni per la sua bont`a e disponibilit`a infinita; tutto il personale della Di-
dattica, in particolare la responsabile, la Dott.ssa Alessandra Fremiotti, per la sua
grande professionalit`a e disponibilit`a verso tutti gli studenti dei corsi di Informat-
ica; e tutto il personale Tecnico ed Amministrativo; tutto il collegio dei professori
d’arabo dell’Institut Bourguiba des Langues Vivantes di Tunisi, nessuno `e escluso.
Ringrazio i miei genitori che mi hanno dato la possibilit`a di studiare, perch´e solo
con lo studio si pu`o arrivare a capire davvero l’importanza delle cose. Grazie an-
che agli amici, perch`e la vita non `e fatta solo di libri e di famiglia, ma anche di
risate e momenti passati in compagnia, senza pensare ai doveri. E per finire voglio
ringraziare VIVIANA ARRIGONI, con cui ho stupidamente e tristemente rotto un
bellissimo rapporto di amicizia, alla quale va il merito di avermi letto e corretto i
miei strafalcioni di questa sezione.
Grazie a tutti.
Contents
1 Introduzione 7
2 Background 10
2.1 Che cosa `e il Natural Language Processing? . . . . . . . . . . . . . 10
2.2 Il Natural Language Processing e la linguistica . . . . . . . . . . . . 12
2.2.1 Sintassi e semantica . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Contesto e pragmatica . . . . . . . . . . . . . . . . . . . . . 12
2.2.3 Due punti di vista . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.4 Task e super-task . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.5 Strumenti a disposizione . . . . . . . . . . . . . . . . . . . . 15
2.3 TermExtractor: un estrattore terminologico . . . . . . . . . . . . . 20
2.4 Caratteristiche della lingua araba . . . . . . . . . . . . . . . . . . . 21
2.4.1 Storia e prospettive correnti . . . . . . . . . . . . . . . . . . 21
2.4.2 Ortografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.3 Morfologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4.4 Generazione delle parole dalla forma base . . . . . . . . . . 24
2.4.5 Struttura della parola araba . . . . . . . . . . . . . . . . . . 25
2.4.6 L’ambiguit`a nella lingua araba . . . . . . . . . . . . . . . . 27
2.4.7 I nomi propri nella lingua araba . . . . . . . . . . . . . . . . 27
2.4.8 Struttura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4.9 Sintassi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.10 Peculariet`a e sfide nella corretta rilevazione e classificazione
dei nomi propri in arabo . . . . . . . . . . . . . . . . . . . . 30
3 Stato dell’arte 32
3.1 Metodi di apprendimento per i sistemi NER . . . . . . . . . . . . . 33
3.1.1 Apprendimento Supervisionato . . . . . . . . . . . . . . . . 33
3.1.2 Apprendimento Semi-supervisionato . . . . . . . . . . . . . 34
3.1.3 Apprendimento Non Supervisionato . . . . . . . . . . . . . . 34
3.2 Stato dell’arte e related work dei sistemi English NER . . . . . . . 36
2
3.3 Stato dell’arte e related work dei sistemi Italian NER . . . . . . . . 39
3.4 Stato dell’arte e related work dei sistemi Arabic NER . . . . . . . . 42
4 Descrizione del parser LingPipe 44
4.1 Una breve panoramica . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Elenco delle risorse e delle lingue disponibili . . . . . . . . . . . . . 46
4.3 Il diagramma dei componenti . . . . . . . . . . . . . . . . . . . . . 48
4.4 Named Entity Recognition di LingPipe . . . . . . . . . . . . . . . . 50
4.4.1 Regular Expression-Based Chunker . . . . . . . . . . . . . . 50
4.4.2 Dictionary-Based Chunker . . . . . . . . . . . . . . . . . . . 51
4.4.3 Model-Based Chunker . . . . . . . . . . . . . . . . . . . . . 52
4.4.4 Addestramento del modello per un sistema NER . . . . . . 54
4.5 Part-Of-Speech Tagger di LingPipe . . . . . . . . . . . . . . . . . . 60
4.5.1 POS tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.5.2 Addestramento del modello per un sistema POS Tagger . . 61
4.5.3 Lettura del modello . . . . . . . . . . . . . . . . . . . . . . 63
4.5.4 Tokenizzazione . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.5.5 Analisi dei token . . . . . . . . . . . . . . . . . . . . . . . . 63
4.5.6 Risultato finale . . . . . . . . . . . . . . . . . . . . . . . . . 64
5 Analisi del modulo POS Tagger di LingPipe 65
5.1 POS Tagger: confronto con il TreeTagger . . . . . . . . . . . . . . . 65
5.1.1 TreeTagger . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.1.2 Che cosa sono i tag-set? . . . . . . . . . . . . . . . . . . . . 68
5.1.3 L’algoritmo Tag-Set Reduction . . . . . . . . . . . . . . . . 68
5.1.4 L’applicazione Tag-Set Reduction Computing . . . . . . . . 71
5.1.5 Applicazione della riduzione del tag-set per il TreeTagger . . 73
5.1.6 Applicazione della riduzione del tag-set per il POS Tagger
di LingPipe . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.1.7 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6 Architettura del sistema 83
6.1 La progettazione in UML del sistema . . . . . . . . . . . . . . . . . 83
6.1.1 Glossario di Progetto . . . . . . . . . . . . . . . . . . . . . . 83
6.1.2 Gli attori . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.1.3 Requisiti del sistema . . . . . . . . . . . . . . . . . . . . . . 84
6.1.4 Requisiti Funzionali . . . . . . . . . . . . . . . . . . . . . . 85
6.1.5 Requisiti Non-Funzionali . . . . . . . . . . . . . . . . . . . . 86
6.1.6 Casi d’Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.1.7 Analisi dei punti funzione . . . . . . . . . . . . . . . . . . . 87
6.1.8 Diagramma delle Attivit`a . . . . . . . . . . . . . . . . . . . 90
3
6.1.9 Diagramma dei Componenti . . . . . . . . . . . . . . . . . . 94
6.1.10 Gestione requisiti non-funzionali . . . . . . . . . . . . . . . 97
6.2 Schema dell’architettura . . . . . . . . . . . . . . . . . . . . . . . . 99
6.2.1 Estrazione delle frasi . . . . . . . . . . . . . . . . . . . . . . 101
6.2.2 Grammar Configuration . . . . . . . . . . . . . . . . . . . . 101
6.2.3 Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.2.4 Merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.3 Il modulo English NER . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.3.1 Differenze del modulo E-NER . . . . . . . . . . . . . . . . . 110
6.4 Il modulo Italian NER . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.4.1 Differenze del modulo I-NER . . . . . . . . . . . . . . . . . 113
6.5 Il modulo Arabic NER . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.5.1 Differenze del modulo A-NER . . . . . . . . . . . . . . . . . 116
7 Valutazioni 118
7.1 Accuratezza, Precision, Recall e F1-Score . . . . . . . . . . . . . . . 118
7.2 Valutazione delle prestazioni . . . . . . . . . . . . . . . . . . . . . . 120
7.2.1 Valutazione delle annotazioni con ENAMEX Named Entities 124
7.2.2 Valutazione del component di estrazione terminological NER
Multi-language . . . . . . . . . . . . . . . . . . . . . . . . . 126
7.3 Riepilogo e conclusioni finalli sulla valutazione . . . . . . . . . . . . 129
8 Applicazioni Future 131
8.1 Sistemi Question & Answer . . . . . . . . . . . . . . . . . . . . . . 131
8.2 Sistemi per la ricerca di letteratura accademica . . . . . . . . . . . 133
8.3 Applicazioni web e-commerce . . . . . . . . . . . . . . . . . . . . . 134
A Apprendimento Automatico 135
B Hidden Markov Models 137
C Espressioni regolari 140
Bibliography 142
4
List of Tables
2.1 Esempi di generazione di forme basi. . . . . . . . . . . . . . . . . . 25
2.2 Proclitiche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3 Enclitiche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1 I migliori quattro sistemi sul task Entity Estraction al MUC. . . . . 37
4.1 Lista di Token e di Entity Tag associati in una frase. . . . . . . . . 56
4.2 Lista di Token e di Entity Tag generati da un modello stocastico
(HMM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3 Lista di Token e di Entity Tag associati in una frase. . . . . . . . . 59
4.4 Le sequenze legali con il sistema BIO. . . . . . . . . . . . . . . . . . 59
4.5 Lista di Token e di Entity Tag associati in una frase. . . . . . . . . 61
5.1 Tabella di Mapping per la riduzione del tag-set di TreeTagger. . . 74
5.2 Tabella di Mapping per la riduzione del tag-set di TreeTagger (2). 75
5.3 Tabella di Mapping per la riduzione del tag-set di TreeTagger (3). 76
5.4 Tabella di Mapping per la riduzione del tag-set di LingPipe. . . . . 77
5.5 Tabella di Mapping per la riduzione del tag-set di LingPipe (2). . . 78
5.6 Tabella di Mapping per la riduzione del tag-set di LingPipe (3). . . 79
5.7 Tabella di Mapping per la riduzione del tag-set di LingPipe (4). . . 80
5.8 Tabella riassuntiva dei risultati finali. . . . . . . . . . . . . . . . . . 82
6.1 Tabella dei coefficienti. . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2 Valori di aggiustamento dei VAF. . . . . . . . . . . . . . . . . . . . 89
6.3 Tabella riassuntiva per l’applicazione della Capitalizzazione Con-
venzionale, come regola, nella valutazione dei linguaggi. S = si
capitalizzata; N = non capitalizzata; Q = qualche volta. . . . . . . 103
6.4 Elenco delle regole (ambigue e non-ambigue) utilizzate per la con-
figurazione della grammatica. . . . . . . . . . . . . . . . . . . . . . 110
6.5 Elenco delle regole, ambigue e non-ambigue, utilizzate per la con-
figurazione della grammatica. . . . . . . . . . . . . . . . . . . . . . 113
5
6.6 Elenco delle regole (solo non-ambigue) utilizzate per la configu-
razione della grammatica. . . . . . . . . . . . . . . . . . . . . . . . 117
7.1 Risultati della valutazione per la lingua araba. . . . . . . . . . . . . 126
7.2 Risultati della valutazione per la lingua italiana. . . . . . . . . . . . 126
7.3 Accuratezza raggiunta per la lingua inglese. . . . . . . . . . . . . . 127
7.4 Accuratezza raggiunta per la lingua italiana. . . . . . . . . . . . . . 127
7.5 Accuratezza raggiunta per la lingua araba. . . . . . . . . . . . . . . 127
7.6 Accuratezza totale del component di estrazione terminological NER
Multi-language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
6
Chapter 1
Introduzione
I motori di ricerca ”tradizionali” abbinano i documenti basandosi unicamente sulle
parole chiave della query dell’utente. Tuttavia esistono degli strumenti in grado
di fornire risultati pi`u precisi eseguendo l’analisi semantica del testo.
Il Named Entity Recognition (NER) `e uno di questi strumenti, che meglio com-
prende le tecnologie per l’analisi del testo ed `e uno dei pilastri per il trattamento dei
contenuti non strutturati; per fare questo, esistono diversi approcci, che possono
essere anche combinati insieme.
Uno di questi strumenti `e noto come Named Entity Recognition (NER) `e una
sotto-area dell’elaborazione del linguaggio naturale.
NER, inoltre, `e anche un sub-task dell’Information Extraction1
, in quanto ha come
obiettivo quello di estrarre i nomi propri o entit`a2
proprie (in inglese Named En-
tities o NEs) di: persone, organizzazioni, toponimi, espressioni temporali, valori
numerici, nomi di prodotti, nomi di geni, URLs ed indirizzi email, provenienti da
un set di testi non strutturati, provenienti da varie fonti (per esempio: pagine web,
newsletters, twitter, etc.), si vuole estrarre ed identificare tutte le entit`a proprie
al loro interno. NER `e uno dei pilastri per il trattamento dei contenuti non strut-
turati, in quanto i nomi propri sono pervasivi nei testi e molto frequenti nelle query
degli utenti. Il problema della NER viene risolto utilizzando diversi approcci, che
1
L’Information Extraction `e un task particolarmente complesso, che ha come obiettivo quello
di estrarre automaticamente informazioni strutturate da un testo non strutturato. Le infor-
mazioni estratte consentono di descrivere il contenuto dei documenti, in quanto l’utente accede
prima all’informazione ed in seguito al documento in cui essa `e contenuta.
2
In un contesto di questo genere, un’entit`a `e definita come il nome di: una persona, un luogo,
un’organizzazione, una dimensione, una data/ora, o di un qualsiasi altro termine, che spiega il
tipo di sostantivo.
7
possono essere anche combinati insieme.
Figure 1.1: Schema di un tipico sistema di Information Extraction con i moduli
in cascata.
La differenza, tra il testo strutturato ed il testo non strutturato (o di dominio
aperto), `e che il testo strutturato risiede in uno schema relazionale di una base
di dati, dove a ciascuna colonna gli si associa un attributo e il testo stesso `e
contenuto in una cella, grazie alla quale esso assume un significato esplicito, per
esempio: una colonna numerica intitolata ”prezzo” rappresenta il costo di un certo
articolo; mentre nel testo non strutturato, l’estrazione delle stesse informazioni
`e pi`u difficile, poich`e non esiste alcuna struttura sottostante, tranne quella del
linguaggio stesso (morfologia, grammatica).
L’obiettivo di questa tesi `e di arricchire un sistema di estrazione terminological pre-
esistente, TermExtractor[21] uno strumento di riconoscimento di Named Entities,
per tre lingue: inglese, italiano e arabo. La tesi `e articolata come segue:
• Nel Capitolo 2 viene fatta una breve panoramica dell’area dell’Elaborazione
del Linguaggio Naturale, viene descritto il component di estrazione termi-
nological TermExtractor, e si descrivono alcune caratteristiche della lingua
araba. Infatti, la parte pi`u complessa di questo lavoro `e stata costruire
il component NER per la lingua araba, che presenta particolari elementi
che rendono pi`u difficile utilizzare algoritmi NER comunemente usati per le
lingue europee.
• Nel Capitolo 3 viene presentato lo stato dell’arte nell’area della NER, in
generale e per le tre lingue considerate in questa tesi.
• Nel Capitolo 4 si descrive LingPipe, un toolkit liberamente disponibile per
la costruzione di sistemi per l’analisi del linguaggio naturale. LingPipe si `e
rivelato particolarmente versatile per gli obiettivi di questa tesi.
• Nel Capitolo 5 si descrive l’analisi prestazionale del modulo Part-of-Speech
Tagger di LingPipe, confrontandolo con il TreeTagger.
• Nel Capitolo 6 `e dedicato alla valutazione delle prestazioni.
• Il Capitolo 7 `e dedicato ad esporre le conclusion e ad analizzare possibili
futuri sviluppi.
8
• Infine, il Capitolo 8 `e dedicato ad esporre e conclusioni e ad analizzare pos-
sibili futuri sviluppi.
9
Chapter 2
Background
2.1 Che cosa `e il Natural Language Processing?
Un dialogo molto famoso, che si trova sul Web, `e tra il programma Eliza
ed uno dei suoi autori. Eliza `e un’invenzione AI del 1960, la quale imp-
iega un metodo primitivo di pattern-matching, per rispondere agli utenti,
sostenendo, di sorta, una conversazione. L’obiettivo di Eliza era quello di
ricoprire il ruolo di psicoterapista, cos`ı che essa poteva sostenere una con-
versazione terapeutica con il paziente, anche se nel lungo andare le risposte
di Eliza si potevano deteriore in schiocchezze. Attualmente, ci sono in giro
altri programmi identici ad Eliza, ma questi non hanno migliorie rispetto
all’originale, ovvero non implementano dei nuovi trucchi linguistici.
Il termine Natural Language Processing[11, 19] (NLP) `e usato per descrivere nor-
malmente la funzione di un software o di un componente hardware all’interno di
un sistema informatico, che analizza o sintetizza il linguaggio parlato (o scritto).
L’epiteto naturale `e quindi destinato a fare una distinzione tra il linguaggio umano
e la scrittura dei linguaggi pi`u formali1
oppure i linguaggi di programmazione2
. Il
Natural Language Understanding3
(NLU) (in italiano Comprensione del Linguag-
gio Naturale) `e associato ad un’obiettivo pi`u ambizioso, ovvero, avere un sistema,
all’interno di una macchina, che `e in grado comprendere il linguaggio naturale,
come se fosse un essere umano.
Questo significa che `e possibile programmare una macchina, ad esempio: una
macchina che sia in grado di comprendere il codebyte di Java.
1
Come le notazioni matematiche o logiche.
2
Come il Java, il LISP, il C++, etc.
3
Il Natural Language Understanding `e un sub-topic del Natural Language Processing e si
occupa di far comprendere, ad una macchina, la lettura di un testo scritto in linguaggio naturale.
10
`E anche possibile programmare un computer per risolvere molti enigmi matematici
e logici, e dimostrare teoremi ed anche venire con nuove congetture, ma l’analisi
delle parole e del testo da parte di un calcolatore rimane pieno di problemi, sia
pure interessanti.
Si potrebbe pensare, che nessuno di questi problemi potrebbero avere un minimo
di interesse commerciale, se non fosse per il fatto, che la necessit`a di informazioni,
come oggi, sia cresciuta in modo esponenziale, rispetto agli altri mercati. Esse,
ormai, sono disponibili in formato digitale, con libero accesso, una dimostrazione
concreta n`e `e il Web. La questione, quindi, non `e pi`u la mancanza di informazioni,
ma la mancanza di strumenti per la loro organizzazione ed offrirle al prezzo giusto
ed al momento giusto. La maggior parte di queste informazioni `e ancora espressa
in un formato testuale, piuttosto che: in immagini, in grafici, in suoni, etc. Molte
di queste risiedono nei database relazionali e sono state estratte dai documenti in
formato digitale, fogli di calcolo e tabelle.
Ambiguit`a nel Natural Language Processing
L’ambiguit`a linguistica `e qualche volta una sorgente di umorismo, ma molte
parole e frasi hanno molteplici interpretazioni, che passano inosservate. Per
esempio, il nome ”bank” assume molti significati nella lingua inglese. Esso
pu`o riferirsi ad un’istituto bancario oppure ad un margine di un fiume. Le
persone raramente confondono questi significati, a causa dei diversi con-
testi in cui i token di questa parola occorrono ed il perch`e della conoscenza
reale della parola. Ad esempio, chiunque legga i giornali conosce che, ”the
West Bank of Jordan” non si riferisce ad un istituto bancario, bens`ı alla
sponda occidentale della Giordania4, quindi il termine ”bank” `e un’istanza
dell’ambiguit`a lessicale. Intere frasi possono essere ambigue rispetto alla
loro struttura e quindi anche il loro significato.
4
Esso `e un territorio senza sbocco al mare sulla riva occidentale del fiume Giordano, nel Vicino
Oriente.
11
2.2 Il Natural Language Processing e la linguistica
`E necessario prima dare alcune brevi definizioni sui concetti della linguistica tradi-
zionale[11, 19]. Le sezioni, che seguono, introdurranno alcuni concetti e termi-
nologie, che sono il tema comune di discussione in questo campo. La copertura
di queste tematiche `e destinata ad essere superficiale, ma non in modo semplicis-
tico.
2.2.1 Sintassi e semantica
Chomsky5
fa una netta distinzione tra le frasi, che sono sintatticamente ”anomale”
(o ”non lineari”), come ad esempio
’Furiously sleep ideas green colorless.’
e le frasi, che sono grammaticalmente ben formate, ma semanticamente ”anomale”,
come ad esempio
’Colorless green ideas sleep furiously.’
Il fatto che si `e in grado di ”rompere” le regole del linguaggio, nei due modi com-
pletamente diversi visti sopra, `e spesso portato come prova per la ”scomponibilit`a”
della sintassi e della semantica nel linguaggio. Un presupposto `e che si pu`o prima
analizzare la struttura sintattica di una frase (senza riferimento al significato) e in
seguito di analizzarne la struttura semantica. La separazione di forma e significato
`e tipicamente una caratteristica del progetto di notazioni pi`u formali, come ad es-
empio calcoli logici e linguaggi di programmazione. In tali linguaggi, il significato
di una dichiarazione pu`o essere determinato esclusivamente dalla sua forma. In
altre parole, la semantica di un linguaggio pu`o essere cos`ı definita sulle strutture
valide del linguaggio, senza considerare fattori contestuali o extra-linguistici. In
questo caso, non si e`ın quella ”felice” posizione per quanto riguarda i linguaggi
naturali, dove sono l’ambiguit`a e la soggettivit`a a fare le poesie, le parole crociate,
e le incomprensioni internazionali possibili.
2.2.2 Contesto e pragmatica
La pragmatica, solitamente, `e definita come l’insieme delle regole, che governano
l’uso del linguaggio. Dunque se si dice: ”Tu mi devi cinque euro” questo potrebbe
5
Avram Noam Chomsky `e nato a Philadelphia, il 7 dicembre 1928 ed `e un: linguista, filosofo
e teorico della comunicazione statunitense.
12
essere pi`u di una richiesta di pagamento, che un’affermazione di fatto, indipen-
dentemente da come viene formulata. Da qui il primato spesso viene accordato
ad intenzionare il significato nell’analisi moderna. Per esempio, se digito le parole
”elaborazione del linguaggio naturale” nella form di un motore di ricerca, che cosa
si desidera cercare? Una definizione? Dei riferimenti a delle letterature sul NLP?
Chi sono gli esperti di NLP? Corsi sul NLP? Un motore di ricerca ”intelligente”
potrebbe essere in grado di capire questo, osservando le mie domande precedenti.
Ciascuna delle precedenti query, potrebbero far restituire al motore di ricerca i
seguenti risultati: ”che cosa `e il linguaggio naturale”, ”libri di testo su AI” e
”Linguistic Computing Laboratory Universit`a La Sapienza”.
I termini uso e contesto sono inestricabilmente intrecciati. Alcuni contesti in-
fluenzano radicalmente l’intenzione, dietro un enunciato. `E possibile, quindi, dis-
tinguere due approcci generali per NLP, che affrontano questi problemi in modi
diversi.
Ci sono stati tentativi di costruire grandi teorie dell’uso del linguaggio, ma senza
buoni risultati, arrivando cos`ı a sostenere, che per un dato dominio vi `e un pat-
tern ben specifico, e che `e impossibile averne uno in generale. Infatti, riprendendo
diversi documenti, come articoli di giornale, rapporti giudiziari, registri pubblici,
pubblicit`a, etc.; essi sono tenuti ad avere pattern diversi in base all’uso del lin-
guaggio.
2.2.3 Due punti di vista
Il primo punto di vista `e radicato sul tipo di analisi linguistica, il quale `e stato
accennato precedentemente. A volte viene caratterizzato come ”simbolico”, perch`e
`e costituito in gran parte da regole per la manipolazione di simboli, ovvero da
regole grammaticali, che controllano se una frase `e ben formata oppure no. Data
la forte dipendenza di intelligenza artificiale tradizionale sul calcolo simbolico `e
stato caratterizzato informalmente come Good Old-Fashioned Artificial Intelligence
(GOFAI)6
[14].
Il secondo punto di vista, che ha guadagnato un’ampia importanza negli anni
’90, affonda le sue radici nell’analisi statistica del linguaggio. A volte vengono
caratterizzate come empiriche, perch`e si tratta di dati linguistici, derivanti da
relativi ampi corpora di testi, come i feed news e le pagine web.
6
Nel campo della ricerca in intelligenza artificiale, il Good Old-Fashioned Artificial Intelli-
gence (GOFAI)[14] descrive il pi`u antico approccio originale al raggiungimento dell’intelligenza
artificiale, il quale `e basato sulla logica e sul problem solving.
13
Il modo di guardare a questa distinzione `e puramente metodologica. Il Symbolic
NLP tende a lavorare in modo top-down, imponendo pattern grammaticali ben
noti. Mentre, l’Empiric NLP tende a lavorare in modo bottom-up, partendo dai
testi stessi, cercando dei pattern ed associazioni da modellare, alcuni dei quali
potrebbero non corrispondere a rapporti puramente sintattici o semantici.
Un’altro modo di pensare a questa distinzione `e quello di vedere come i due punti di
vista gestiscono la complessit`a del NLP, in particolare il problema dell’incertezza,
semplificato da fenomeni quali l’ambiguit`a.
`E chiaro che un approccio puramente simbolico deve risolvere l’incertezza, propo-
nendo regole aggiuntive, o fattori contestuali, che devono poi essere formalizzati
in qualche modo. Si tratta di una metodologia basata sulla conoscenza, in quanto
si basa sul fattore umano per identificare e descrivere le regolarit`a nel dominio.
Mentre, l’approccio empirico `e pi`u quantitativo, in quanto tender`a ad associare
probabilit`a attraverso le analisi alternate di dati e di decidere tra loro con dei
metodi statistici.
2.2.4 Task e super-task
Una prima applicazione per il Natural Language Processing (NLP) `e il recupero
di documenti tramite i motori di ricerca; il loro ritrovamento viene fatto in base a
quanto essi sono rilevanti in base alla query dell’utente. Ovviamente, il recupero
dei documenti lo si pu`o eseguire senza un uso significativo del NLP, infatti alcuni
motori di ricerca lo facevano, ma il trend negli anni ’90 `e stato verso la crescente
sofisticazione nell’indicizzazione, nell’identificazione e nella presentazione dei testi
pertinenti.
Correlato, ma non identico, `e il task document routing, in cui gli elementi di un
document feed sono automaticamente inoltrati ad un utente. Il document routing
`e a sua volta legato al task document classification. In questo task, si pensa come
assegnare i documenti in classi, di solito in base al loro contenuto. Nel caso pi`u
generale, un documento potrebbe essere assegnato a pi`u di una classe e le classi
possono essere parte di una struttura pi`u grande.
`E possibile distinguere questa attivit`a dal task document indexing, dove un pro-
gramma assegna automaticamente le parole chiave o le frasi selezionate a un doc-
umento.
A volte il focus non `e sul trovare il documento giusto, ma sul trovare gli obiettivi
informativi specifici in un documento o in un insieme di documenti. Ad esempio,
dato un insieme di articoli finanziari, si potrebbe desiderare di distillare, da ogni
14
articolo, chi ha comprato un certo quantitativo di BTP7
. Normalmente questo `e
l’estrazione di informazioni e fornisce un modo per generare dei valori, che al-
trimenti rimarrebbero sepolti all’interno di una raccolta di documenti. Almeno
alcune forme di documenti di riepilogo possono essere considerati come un tipo
speciale di estrazione di informazioni, in cui un programma tenta di estrarre le
informazioni salienti da uno o pi`u documenti e presentarle come surrogato in un
documento.
Questi compiti, combinati insieme in un certo modo, possono formare un ”super-
task”; ad esempio, un programma potrebbe selezionare i documenti da un feed in
base al loro contenuto, ordinarli in categorie e quindi estrarre alcuni pezzi prove-
nienti da ciascun documento di interesse.
2.2.5 Strumenti a disposizione
L’analisi linguistica del testo procede tipicamente in modo stratificato. I documenti
sono suddivisi in paragrafi, i paragrafi in frasi e le frasi in singole parole. Le parole
in una frase vengono analizzate (sottoposte ad analisi grammaticale) per poi essere
contrassegnate con un’etichetta. Di solito, i parser si basano sui: delimitatori di
frase, tokenizer, stemmer e Part-of-Speech Tagger (POS Tagger). Non tutte le
applicazioni richiedono una suite completa di tali strumenti. Per esempio, tutti i
motori di ricerca svolgono la suddivisione in token dei documenti, ma non tutti
eseguono il part of speech (in italiano le parti del discorso).
Alcuni di questi strumenti, che si andr`a a vedere nelle sezioni successive, sono: i
delimitatori di frase, i tokenizer, gli stemmer, i Part-of-Speech Tagger, i sintagmi
nominali, i riconoscitori di nomi, i parser e le grammatiche.
Delimitatori di frase e tokenizer
Rilevare i bordi di una frase con precisione non `e un task semplice, in quanto i
segni di punteggiatura, che segnano la fine di una frase, sono spesso ambigui. Per
esempio, il periodo pu`o denotare: un punto decimale, un’abbreviazione, la fine
di una frase o un’abbreviazione alla fine di una frase. Allo stesso modo, le frasi
iniziano con una lettera maiuscola, ma non tutte le parole in maiuscolo iniziano
una frase, anche se seguono un periodo.
7
Il Buono del Tesoro Poliennale (BTP) rappresenta un certificato di debito emesso dallo Stato
italiano, con scadenza superiore all’anno solare.
15
A volte, i rivelatori di frase hanno bisogno di un’aiuto da parte dei tokenizer per
disambiguare i caratteri di punteggiatura. I tokenizer (noti anche come gli anal-
izzatori lessicali o ”segmentatori” di parole) segmentano un flusso di caratteri in
unit`a significative, detti token. A prima vista, un tokenizzazione appare piuttosto
semplice, in quanto un token pu`o essere preso come una sequenza di caratteri
separati da spazi bianchi8
. Ad esempio, questa fase pu`o essere fatta tramite un
Automatic Sentence Chunking, il quale analizza un corpus di frasi, costituite da:
punti, punti esclamativi e punti interrogativi, e estraendo una frase per volta,
facendo attenzione, in questo modo, a non ”nascondere” le entit`a proprie. Questo
approccio cos`ı semplice pu`o essere adatto per alcune applicazioni, ma pu`o portare
a delle imprecisioni.
Gli strumenti per la tokenizzazione di solito si basano su:
i. regole,
ii. automi a stati finiti,
iii. modelli stocastici
iv. e modelli lessici per identificare le abbreviazioni o le parole multi-token.
Stemming e Part-Of-Speech Tagger
Nel suo complesso, l’analisi di un testo[4, 5] non pu`o procedere senza quella lessi-
cale, e quindi `e necessario in primo luogo identificare le forme radicali delle occor-
renze di una parola e di determinare la parte del discorso. Nel gergo linguistico, gli
stemmer sono analizzatori morfologici, che associano varianti dello stesso termine
con una forma radicale. La radice pu`o essere pensata come la forma, che dovrebbe
normalmente essere trovata come una voce in un dizionario.
Ci sono due tipi di analizzatori morfologici: Morfologia flessiva e Morfologia
derivazionale.
• Morfologia flessiva esprime relazioni sintattiche tra le parole di una stessa
parte del discorso, mentre la morfologia derivazionale esprime relazioni lessi-
cali tra le parole che possono essere diverse parti del discorso.
• Morfologia derivazionale esprime la creazione di nuove parole da quelle vec-
chie e tenta di mettere in relazione parole diverse attraverso la radice in
comune.
8
Il formato CoNLL rimuove gli spazi vuoti, consentendo di utilizzare un semplice tokenizer
basato sugli spazi. L’interruzione, fatta in questo modo, della frase sugli spazi e sulla pun-
teggiatura potrebbe funzionare bene.
16
Gli analizzatori morfologici fanno largo uso sia di regole e sia di dizionari. Il
lessico tipicamente riguarda tutte le forme di una parola alla sua forma radice.
Queste regole e lessici possono essere efficacemente codificati utilizzando macchine
a stati finiti e supportano la segmentazione della parola, ma limitandosi soltanto
ai termini composti.
Il Part-Of-Speech Tagger si appoggia fondamentalmente su tokenizer e su delim-
itatori di frase, effettuando l’operazione di associazione della parte del discorso a
ciascuna parola in una frase, dove i token vengono etichettati con etichette sin-
tattiche, ovvero esso decide se una data parola `e un: sostantivo, verbo, aggettivo,
etc.
Nell’esempio che segue ci sono due frasi, in inglese, con dei tag associati, in cui `e
presente un’ambiguit`a.
’Visiting/ADJ aunts/N-Pl can/AUX be/V-inf-be a/DET-Indef nui-
sance/ N-Sg.’
’Visiting/V-Prog aunts/N-Pl can/AUX be/V-inf-be a/DET-Indef nui-
sance/ N-Sg.’
Nella prima frase, il termine ’visiting’ `e un aggettivo che modifica il soggetto
’aunts’, mentre nella seconda frase, ’visiting’ `e un gerundio che prende ’aunts’
come un oggetto.
Tuttavia, come illustra l’esempio sopra, a ciascun parola pu`o essere assegnato pi`u
di un POS tag e per questo il ruolo del Part-Of-Speech Tagger `e di scegliere quello
corretto.
Ci sono due approcci principali per implementare un Part-Of-Speech Tagger: basato
su regole e stocastico.
Nel primo caso, si prova ad applicare delle conoscenze linguistiche per escludere
tutte le sequenze di tag, che sono sintatticamente non corrette; infatti questo pu`o
essere fatto attraverso delle regole contestuali, oppure su informazioni morfologiche
per aiutare il processo di disambiguazione.
Nel secondo caso, ci si basa sui data training e si comprendono gli approcci, che
si basano su informazioni di frequenza o di probabilit`a nel disambiguare le asseg-
nazioni dei tag. I tagger stocastici pi`u semplici disambiguano le parole, basandosi
esclusivamente sulla probabilit`a, che una certa parola si verifica con un particolare
tag. Questa probabilit`a viene calcolata da un training set, in cui le parole ed i tag
sono stati gi`a abbinati manualmente da un linguista esperto.
Nota: i tagger pi`u complessi possono usare modelli stocastici molto
17
pi`u avanzati, come gli Hidden Markov Models (HMM) (vedere Appen-
dice A), oppure il Maximum Entropy (ME).
Sintagmi nominali e riconoscitori di entit`a proprie
Spesso c’`e bisogno di andare oltre ad un semplice Part-Of-Speech Tagger, ad esem-
pio, si supponga che si voglia costruire un sistema che estrae notizie di bussiness da
un determinato documento, oppure la necessit`a di indentificare le persone, i nomi
di aziende e loro relazioni. Sapere che una data parola `e un nome proprio, potrebbe
essere utile (e.g. ”Beppe”), per`o utilizzando sotanto il Part-Of-Speech Tagger non
aiuta a riconoscere i nomi propri e i cognomi (e.g. ”Beppe Grillo”).
Per questo compito, i sintagmi nominali9
[26] possono essere di grande aiuto, in
quanto essi in genere svolgono un processo di parser pi`u superficiale rispetto, in-
vece, ad altri parser che svolgono un processo pi`u di profondit`a, che sono stati
citati precedentemente. Questi parser (parziali) hanno come obiettivo quello di
individuare i principali elementi costitutivi, come i sintagmi nominali o ”gruppi
nominali”10
.
Gli estrattori di sintagmi nominali possono essere di due tipi: simbolici11
o statis-
tici.
I Named Entity Recognizers o NER (vedere Sezione 3.1) (in italiano Riconoscitori
di Entit`a Proprie, identificano i nomi propri in uno o pi`u documenti e possono
anche classificare questi nomi propri sul fatto, che designano: le persone, i luoghi,
le aziende, le organizzazioni e simili. Diversamente dagli estrattori di sintagmi
nominali, essi scelgono di trascurare le parti del discorso e di lavorare direttamente
con i token e le loro propriet`a, come ad esempio la Capitalizzazione Convenzionale.
Come per i Part-of-Speech Tagger, essi possono contare sia su regole scritte a mano
e sia sulla costruzione di modelli stocastici (HMM). Tuttavia, la maggior parte dei
NER, attualmente disponibili (tipo quelli commerciali) sono rule-based.
Parser e grammatiche
Il parsing viene eseguito rispetto ad una grammatica, in pratica da un insieme di re-
gole, che dicono quali combinazioni delle parti del discorso generano correttamente
una frase ed una struttura sintattica. L’analisi semantica richiede l’identificazione
9
Il sintagma nominale[26] `e un tipo di sintagma il cui elemento principale `e un nome.
10
I gruppi nominali sono sintagmi nominali parziali.
11
Di solito, in questo caso, si definiscono le regole per ci`o che costituiscono una frase, utilizzando
un’euristica relativamente semplice.
18
di diversi tipi di parole o di frasi, ovvero il riconoscimento di una parola o di una
frase come un nome proprio ed anche l’identificazione del ruolo che essi hanno nella
frase, cio`e se soggetto o oggetto.
Ciascuna semantica differisce l’una dall’altra in base alle feature, che esse hanno,
cio`e, una parola oppure un sintagma nominale pu`o riferirsi a qualcosa di animato
o inanimato, ad una societ`a, ad un’organizzazione, ad un luogo geografico, ad una
data oppure ad una somma di denaro.
Identificare sintagmi nominali `e un compito importante e non banale. Per questo,
l’ingegneria linguistica `e molto impegnata nello scrivere regole grammaticali ef-
ficaci. Nonostante siano state scritte vaste grammatiche di uso generale per la
lingua inglese, nessuna di queste `e riuscita ad ottenere una copertura del 100% di
tutti i costrutti, che si possono incontrare nei testi casuali, come ad esempio gli
articoli di notizie.
Ci sono per`o delle risorse basate su corpus, dove i ricercatori e gli sviluppatori
possono attingere. Ad esempio, il progetto Penn Treebank, presso l’Universit`a
della Pennsylvania, ha come obiettivo quello di annotare i documenti, da insiemi
di testi esistenti, in base alla loro struttura linguistica.
In pratica, questo progetto inserisce i POS tag nei documenti e produce un ”parser
scheletrico”, che attesta la struttura sintattica grezza di una frase, per poi generare
una ”banca” di alberi linguistici.
La struttura sintattica, spesso, viene annotata utilizzando le parentesi per produrre
degli elenchi incorporati.
Un esempio possibile `e questo che segue:
(SS: (SN: (D: Il) (S: cane)) (SV: (V: mangia) (SN: (D: l’) (S: osso)))
Figure 2.1: Struttura della frase rappresentata come un albero.
19
2.3 TermExtractor: un estrattore terminologico
L’estrattore terminologico TermExtractor[21] `e una web application, altamente
performante, sviluppata da ricercatori del Dipartimento di Informatica, per es-
trarre automaticamente dai documenti disponibili di un dato dominio, della ter-
minologia condivisa da una web community.
L’applicazione ha un’architettura a pipeline, composta da 6 fasi principali, come
mostrato in Figure 2.2, che sono:
1. Impostare le opzioni del sistema: in questa fase l’utente pu`o impostare di-
verse opzioni o accettare l’impostazione predefinita;
2. Caricamento dei documenti: gli utenti possono caricare i documenti in pi`u
formati, uno per uno oppure un archivio compresso;
3. Conversione dei documenti: i documenti vengono convertiti in formato testo,
le euristiche vengono usate nel correggere gli errori di conversione (special-
mente dai documenti originati da file in formato PDF);
4. Estrazion dei termini: in questa fase la terminologia viene estratta e filtrata;
5. Validazione della terminologia: in questa fase un partner oppure un team di
partner validano la terminologia;
6. Salvataggio/Scaricamento della terminologia: in questa fase la terminologia
viene salvata oppure scaricata in formato testo, XML o Excel.
Figure 2.2: Struttura della frase rappresentata come un albero.
20
2.4 Caratteristiche della lingua araba
In questa sezione si discute brevemente sui preliminari essenziali, che coprono
una panoramica generale della lingua araba[3] e si enfatizzano gli aspetti, che
concernano la visibilit`a di questo lavoro legato alla parte sull’Arabic NER, ovvero
il riconoscimento delle entit`a proprie per la lingua araba. Di seguito si introducono
concetti sulla lingua araba, come la storia, l’ortografia, la morfologia, la struttura,
etc.
2.4.1 Storia e prospettive correnti
Il termine lingua Semitica, secondo (Lipi´nski 2001), `e stato introdotto nel 1781
dallo storico tedesco AL Schloezer, per mezzo dei figli di Sem (Shem), con una
lunga storia di oltre di 4500 anni. Questa famiglia `e parte della famiglia afro-
asiatica e la sua prima forma scritta `e stata introdotta nel terzo millennio a.C.. Le
lingue semitiche sono state le prime ad ottenere una forma scritta, con la scrittura
Akkadian iniziata nella met`a del terzo millennio a.C.. Attualmente, la lingua
Semitica pi`u parlata `e l’arabo, seguita dall’aramaico e dall’ebraico.
Versteegh (2001) ha proposto un certo numero di identificazioni di caratteris-
tiche per le lingue di famiglia Semitica. Secondo lo studio, una lingua Semitica
dovrebbe avere un sistema di root-pattern morfologico, la presenza di consonanti
enfatiche/gutturali, un sistema di verbi con prefisso e suffisso di coniugazione, cos`ı
come un gran numero di corrispondeze lessicali. Se una lingua `e classificata come
Semitica, essa deve esibire la presenza di tutte queste caratteristiche.
Oggi, l’arabo `e la lingua madre di oltre 317 milioni di persone nei paesi arabi.
Secondo le stime delle Nazioni Unite (UN), nel 2015, ci saranno nei paesi arabi,
quasi 395 milioni di abitanti (fonte UN Development Programme 2009). Inoltre,
l’arabo `e la lingua liturgica religiosa di oltre 1.5 miliardi di musulmani in tutto il
mondo, si tratta di una delle lingue ufficiali delle Nazioni Unite ed `e classificata
sesta in termini di importanza.
Il lavoro fatto da Weber (1997), sulle prime dieci lingue influenti, la lingua araba
si `e classificata quinta. Questa classifica, si basa sulle seguenti misure di punteg-
gio:
1. Il potere economico dei paesi che utilizzano la lingua.
2. Il numero delle principali aree di attivit`a umana in cui la lingua `e importante.
3. Il numero e la popolazione dei paesi che utilizzano la lingua.
21
4. Prestigio socio-letterario della lingua.
Anche se lo studio `e vecchio, in quanto copre il periodo 1980-1990, Weber ritiene
che la sua scoperta non ha bisogno di essere aggiornata, per come la popolazione
mondiale `e cresciuta relativamente. Secondo la internet monitoring agency12
, il
tasso di crescita degli utenti del W3 `e stato del 445% tra il 2000 e il 2010. Il Medio
Oriente ha segnato la secona rete con il pi`u alto tasso di crescita degli utenti nello
stesso periodo, circa il 1825%. Assumendo che la maggior parte di questi utenti
sono di lingua araba, il contenuto web in lingua araba subir`a un forte incremento
nel futuro, per questo si richiede un serio sforzo, per affrontare la necessit`a di avere
strumenti NLP e risorse per l’arabo.
2.4.2 Ortografia
Simile alla propria famiglia Semitica (aramaico e ebraico), l’arabo[3] si scrive da
destra verso sinistra. Essa dispone di 28 lettere, nelle forme di base, tra cui tre
vocali lunghe. Le forme non basiche sono lettere generate da una combinazione di
due lettere. Inoltre, include, come segni diacritici, cinque principali vocali brevi
(non inclusi in alfabeto) e un totale di 13 combinazioni di vocali brevi. Le vocali
lunghe e le vocali brevi sono correlati in un senso, che una vocale lunga `e una doppia
vocale corta. Questi segni diacritici sono utilizzati principalmente per la pronuncia
esatta di consonanti, che a sua volta aiutano a chiarire l’esatta interpretazione. Essi
sono posti sopra o sotto le lettere. Tale processo `e descritto come vocalizzazione
e il testo potrebbe essere: pienamente, parzialmente o mai vocalizzato a secondo
della forma scritta (Buckwalter 2004).
Le lettere della lingua araba hanno una caratteristica corsiva, questo significa che
una lettera pu`o assumere una forma diversa in base alla sua posizione in una
parola, che sono la posizione: iniziale, mediana, finale, o isolata. Solo tre lettere
non sono interessate da questa funzione. Inoltre, sei lettere dell’alfabeto hanno
solo due forme possibili, perch`e solo lettere precedenti possono collegarsi a loro e
queste sei lettere non possono essere collegate alle lettere che seguono (Abdelali
2004).
Una delle caratteristiche principali del testo in arabo `e l’assenza di Capitalizazione,
il che significa, che non presenta differenze ortografiche in termini di casi d’uso.
Un’altra caratteristica `e che c’`e poca punteggiatura, anche se recentemente, questa
`e stata introdotta.
La Kashida [ ] `e un carattere speciale per allungare una lettera. Per esempio
12
www.internetworldstats.com.
22
allungando la lettera [ , H, h] nella parola [ , mHmd, Mohammad] produce la
nuova forma [ ]. `E utilizzato sia per rispettare i vincoli di calligrafia o per la
giustificazione del testo (Elyaakoubi e Lazrek 2005).
2.4.3 Morfologia
L’arabo[3] ha un sistema morfologico complesso, che lo rende altamente flessivo,
con la presenza di prefissazioni, suffissazioni, processi flessionali e derivazionali.
Sebbene ha un sistema complesso, esso `e fortemente strutturato (Kiraz 2002).
In aggiunta all’apposizione13
[26], ha la caratteristica di attaccamento clitico alle
radici. L’arabo ha anche un sistema morfologico ricco, in cui le parole sono es-
plicitamente contrassegnate per causa, genere, numero, determinatezza, modo,
persona, diatesi, tempo ed altre caratteristiche morfologiche (Maamouri et al.
2006).
Esistono due classi di parole generiche: aperta (sostantivo14
e verbo) e chiusa.
La classe dei sostantivi in arabo `e ulteriormente suddivisa in derivati basati sull’origine
della parola, come segue:
• Sostantivi derivati da verbi.
• Sostantivi derivati da altri sostantivi.
• Sostantivi derivati da particelle15
.
• Primitive16
(cio`e sostantivi che non derivano da altre categorie).
Le caratteristiche morfologiche di un sostantivo in arabo ed i loro possibili valori
sono i seguenti:
• Numero: singolare, duale, plurale, collettivo.
• Sesso: maschile, femminile, neutro.
13
L’apposizione[26] (dal latino appositio, ”aggiunta”) `e una nozione della grammatica
tradizionale che indica un’unit`a sintattica (composta di una sola parola o da un sintagma nomi-
nale o preposizionale) riferita ad un nome con cui stia in relazione di coreferenza.
14
I sostantivi in arabo sono un nome o un’unit`a lessicale (la quale descrive una persona, una
cosa o un’idea).
15
Per particelle si intendono: le preposizioni, gli avverbi, le congiunzioni, le particelle inter-
rogative, l’eccezioni, le interiezioni, le negazioni e le subordinazioni; queste, poi, possono essere
racchiuse in una classe, detta classe delle particelle, la quale comprende tutte quelle parole, che
appartengono alla classe delle parole generiche chiuse.
16
Tale categoria, inoltre, comprende quello che sarebbe stato classificato come participi,
pronomi, pronomi relativi, pronomi dimostrativi, pronomi interrogativi e numeri.
23
• Determinatezza: definito, indefinito.
• Causa: nominativo, accusativo, genitivo.
L’inventario dei verbi, per la lingua araba, `e scarso rispetto ad esempio all’inventario
dei verbi di lingua inglese. La carenza di verbi `e causata dalla mancanza di una
precisa significazione o di flusso del tempo come nell’inglese. Le caratteristiche
morfologiche per un verbo in arabo ed i possibili valori sono i seguenti:
• Aspetto: perfettivo (passato), imperfettivo (presente), imperativo (futuro).
• Diatesi: attivo, passivo.
• Tempo: passato, presente, futuro.
• Modo17
[26]: indicativo, congiuntivo, imperativo.
2.4.4 Generazione delle parole dalla forma base
La derivazione morfologica dell’arabo[3] `e basata sul principio delle radici e dei
pattern per generare la classe aperta. Una radice (detta radicale) `e una sequenza
di consonanti, comunemente da tre letterali (Beesley 2001).
Vi `e un insieme finito di radici e si dice, che i sostantivi ed i verbi sono derivati da
un insieme chiuso di circa 10.000 radici (Al-Fedaghi e Al-Anzi 1989), ed il numero
di parole possibili sono stimate essere circa 6 × 1010
(Attia 2000).
Un pattern `e un insieme di trasformazioni, che vengono applicate ad una radice di
consonanti inserendo vocali tra esse. Le vocali possono essere vocali lunghe, ma
comunemente sono le vocali brevi (segni diacritici) (Beesley 2001). Ad esempio,
dato una radice con tre letterali CCC (C rappresenta la consonante) un pattern
frequente `e CvCvCv (v rappresenta la vocale), le consonanti sono fisse mentre le
vocali possono cambiare. Per ogni combinazione di v, un nuovo pattern `e prodotto
dal pattern principale e quindi un nuovo tema18
[26] `e derivato da questo modello.
Dunque, da una singola radice si possono generare centinaia parole nella forma di
sostantivi o di verbi (Ahmed, 2005).
17
Il modo[26] `e una delle tre principali categorie grammaticali che compongono il sistema di
coniugazione verbale.
18
Il tema[26] `e la parte della parola, che resta togliendo la desinenza e che permette l’immediata
inserzione degli elementi di flessione (talvolta coincide con la radice): tema nominale, verbale,
quello che resta togliendo ad una parola, rispettivamente, la desinenza nominale o la desinenza
verbale.
24
Data la radice araba [ , ktb, nozione di scrittura] (una radice a tre letterali),
si potrebbe generare, ad esempio, la forma passata sostituendo le v con le vocali
melodiche (a-a), ”katab”. Questa caratteristica della morfologia araba `e descritta
come morfologia non concatenativa o non lineare. Tre esempi di generazione di
temi sono riportati in Table 2.1.
Table 2.1: Esempi di generazione di forme basi.
Radice/CCC Traslitterazione Melodia/a-a Traslazione Melodia/u-i Traslazione
ktb katab ha scritto kutib scrivere
drs daras appreso duris imparare
jmE jamaE raccolto jumiE raccogliere
Le radici arabe vengono classificate in base al numero delle loro consonanti in:
due letterali, tre letterali, quattro letterali e cinque letterali. Da uno studio fatto
da Elkateb et al. (2006), si afferma che 85% delle parole arabe sono derivate da
radici a tre letterali. Ci sono 15 pattern a tre letterali, di cui almeno nove sono
di uso comune e quattro pattern a quattro letterali sono molto pi`u rari. Tutti
questi pattern subiscono alcuni cambiamenti di tema rispetto alle vocali (Violetta
et al., 2000). Le vocali sono normalmente aggiunte alla radice del modello per tre
letterali CvCvCv e per quattro letterali CvCCvC.
I temi generati dalla stessa radice, sono semanticamente correlati e, d’altra parte,
ne deriva che seguono lo stesso modello per presentare lo stesso stile.
2.4.5 Struttura della parola araba
Di seguito vengono mostrate le varie forme di parole presenti nella lingua araba[3]:
• Proclitiche[26], parole, di solito monosillabi, che, non avendo accento au-
tonomo, si appoggiano prosodicamente alla parola seguente, detta ospite,
formando con essa un’unit`a accentuale, a volte anche a livello di frase. I
verbi possono avere solo una proclitica, mentre i sostantivi possono averne
pi`u di due. Le possibili proclitiche vengono listate in Table 2.2 con la loro
funzione.
25
Table 2.2: Proclitiche.
Morfema Traslitterazione Funzione
+ w+ e
+ f+ in ordine a
+ l+ in ordine a
+ b+ per
+ + w+l+ e +(in ordine a, per)
+ + w+b+ e +(in, a, per)
+ + f+l in ordine a +(per)
+ + f+b in ordine a +(in ordine a, per)
• Prefissi,
• Tema,
• Suffissi,
• Enclitiche, morfemi che occorrono alla fine di una parola e rappresentano
i pronomi possessivi elencati in Table 2.3. La loro funzione `e differente,
secondo la classe della parola a cui essi attribuiscono.
Table 2.3: Enclitiche.
Morfema Traslitterazione Funzione (verbo) Funzione (sostantivo)
+ +y - mio
+ +k tu (singolare) tuo
+ +kma tu (duale) tuo
+ +km tu (plurale maschile) tuo
+ +kn tu (plurale femminile) tuo
+ +h egli suo
+ +hA ella sua
+ +hma loro (duale) loro
+ +hm tu (plurale maschile) loro
+ +hn tu (plurale femminile) loro
26
2.4.6 L’ambiguit`a nella lingua araba
La perdita dei segni diacritici interni, come ad esempio le vocali brevi o la shadda,
porta a diversi tipi di ambiguit`a nei testi in lingua araba[3], sia dal punto di vista
strutturale e sia dal punto di vista lessicale, perch`e diversi segni diacritici rappre-
sentano differenti significati. Questi possono essere risolti solo dalle informazioni
contestuali e di una adeguata conoscenza della lingua. A parte l’ambiguit`a a causa
di segni diacritici mancanti, la lingua araba, come molte altre lingue, affronta il
problema di ambiguit`a tra due o pi`u entit`a proprie.
2.4.7 I nomi propri nella lingua araba
La caratteristica pi`u significativa dei nomi propri arabi[3] `e l’assenza di qualsiasi
caratteristica ortografica speciale per distinguerle dalle altre categorie di parole.
A differenza dell’inglese e di altre lingue con caratteri latini, l’arabo non ha infor-
mazioni di questo tipo.
L’implicazione di questa caratteristica `e altamente significativo a causa del fatto
che i nomi pi`u adatti sono nelle forme di verbi, aggettivi o sostantivi comuni.
Questo rende l’estrazione corretta del sostantivo in arabo strettamente vincolato,
e fortemente influenzata da, passaggi pre-elaborati prima di eseguire il task di
estrazione del sostantivo stessso. Questo task `e pi`u sensibile a errori di livelli di
analisi precedenti alla corretta estrazione del sostantivo rispetto all’inglese.
In questa sezione si spiega come si formano in arabo i sostantivi per le tre tipologie
(PERS, LOC e ORG).
2.4.8 Struttura
Nomi di persone
In termini di struttura del nome di persona, la pi`u piccola componente di un nome
di persona araba[3] potrebbe essere classificato come (1) un componente di base che
potrebbe essere un nome semplice o composto e (2) da affissi. Gli affissi vengono
utilizzati con lo scopo di generare un numero di istanze di nome.
Dunque, ci`o significa che il nome base della persona `e preceduto opzionalmente da
27
uno o due suffissi, come [ , Al, il] (ad esempio ”AlMohammad”) o [ , bw, padre
di] (ad esempio padre di Mohammad) e seguiti da opzionalmente da un suffisso,
come l’aggettivo indicativo ”y”, che si attacca alla fine del nome. I cognomi in
arabo, possono derivare secondo: la professione, il nome della trib`u di nascita della
persona, oppure il luogo di residenza o di nascita.
Nomi di luoghi o di organizzazioni
I nomi delle organizzazioni nella lingua araba[3] comunemente iniziano con un
prefisso seguito da uno o pi`u sintagmi nominali connesi con la congiunzione [ ,
w, e] e seguito opzionalmente da un altro sintagma nominale connesso con una
congiunzione di coordinamento [ , l, per]. I sintagmi nominali potrebbero essere
un singolo o un nome composto opzionalmente seguito da uno o pi`u aggettivi. Il
nome principale nel sintagma nominale potrebbe essere un nome comune o pro-
prio (persona o luogo). Il prefisso dell’organizzazione potrebbe essere un articolo
determinativo [ , Al, il] per produrre una forma definita.
A differenza dei nomi delle organizzazioni, i nomi dei luoghi sono relativamente
semplici, ma non quando essi sono detti dopo le persone. Iniziano con una po-
sizione dei prefissi, ad esempio, la parola ”citt`a”, seguito da un nome proprio. La
maggior parte dei prefissi sono in forma femminile. Tuttavia, diversamente delle
organizzazioni, i luoghi non vanno, dal punto di vista morfologico, d’accordo con
i sostantivi che seguono.
Molti nomi propri in arabo vengono generati nello stesso modo di una
qualsiasi altra parola presente nella lingua araba utlizzando il sistema del
pattern-root morfologico. Infatti, secondo un esperimento fatto Alkharashi
(2009), ha concluso che i nomi di persona sono per lo pi`u generati da radici
arabe, allo stesso modo di qualsiasi altra categorie di parole. `E stato scop-
erto, che solo 16 pattern Arabi contribuiscono alla produzione di oltre il
50% dei nomi di persona nella lingua araba. La radice Hind da sola ha
prodotto 146 nomi. I nomi propri non possono avere le proclitiche, alla
fine della parola, ad essi connessi e le enclitiche potevano essere attaccate
solo al token capo del nome proprio. Inoltre, alcune categorie grammaticali
28
non possono far parte del nome proprio, come: i verbi, i pronomi relativi o
personali. Secondo la sezione precedente, i nomi di persona hanno pattern
interni quali connettori (o prefissi Kunia) e connettori di nome; mentre, i
nomi di luoghi e di organizzazione hanno la presenza di prefissi.
2.4.9 Sintassi
Dato che gli aggettivi seguono i sostantivi in arabo[3], l’individuazione dei contorni
in un nome di organizzazione frase `e problematico. La ragione `e che i nomi di
organizzazione sono di solito sintagmi nominali e possono essere seguiti da aggettivi
che non possono essere facilmente identificati come parte del nome o non, e quindi il
limite che termina lo possono perdere. A volte gli aggettivi che seguono modificano
il prefisso e, a volte il sostantivo principale.
Anche se i ”designatori” di nomi vengono utilizzati all’inizio dei nomi di organiz-
zazione e di luogo, che sono di grande aiuto nel riconoscerli, spesso accade che
non sempre risolvono il problema, in quanto questi trigger sono nomi comuni che
potrebbero essere utilizzati in qualsiasi altro contesto; dato che innesca titoli che
sono normalmente sostantivi e che possono essere seguiti da una serie di aggettivi,
i quali causerebbero la separazione ulteriore del trigger dal nome, con dipendenze
molto pi`u lunghe.
L’annessione viene usato in arabo per formare nomi composti per indicare la pos-
sessivit`a e data l’ampia diffusione dei nomi in arabi nella forma di sostantivi, i nomi
completi potrebbero essere una serie di nomi semplici. La mancanza di un indica-
tore possessivo in arabo come ”of” e ”’s” nella lingua inglese rende una qualsiasi
sequenza di sostantivi ambigui con un potenziale nome completo. Per esempio, il
seguente nome senza un connettore e nessun titolo `e troppo ambiguo per rilevarlo,
infatti [ , Emr Fhd] potrebbe essere interpretato come ”l’et`a di Fhd” oppure
come un nome di una persona ”Emr Fhd”.
29
2.4.10 Peculariet`a e sfide nella corretta rilevazione e classificazione dei
nomi propri in arabo
Il rilevamento dei nomi propri in arabo[3], in generale, `e molto pi`u difficile che in
inglese a causa delle caratteristiche citate sopra. Tuttavia, le sfide non nascono
solo dalla natura delle entit`a proprie, ma in realt`a dai livelli di analisi fatti prima.
La sfida pi`u interessante `e l’ambiguit`a presente nelle entit`a proprie. Per`o, i segni
diacritici in parte risolvono il problema, come alcuni segni ambigui sono esatti segni
diacritici, indipendentemente dal fatto che essi rappresentano un nome proprio o
qualsiasi altra categoria.
Siccome, la lingua araba `e una lingua altamente flessiva[31, 33, 3], cio`e una parola
araba pu`o essere visto come la seguente composizione:
Word = prefix(es) + lemma + suffix(es)
Entrambi i prefissi e suffissi (vedere Sezione 2.4.5) sono autorizzati ad essere com-
binazioni, e quindi una parola pu`o avere zero o pi`u affissi. Dal punto di vista
statistico, questa caratteristica flessiva della lingua araba rende i testi in arabo,
rispetto ai testi scritti in altre lingue che sono mesno complesse morfologicamente,
pi`u sparsi, e, quindi, la maggior parte dei task, per l’Arabic Natural Language
Processing, sono pi`u difficili e pi`u impegnativi.
Figure 2.3: Un banale esempio di una parola araba composta[31, 33].
Nella letteratura si trovano due possibili soluzioni[31, 33] per superare questo osta-
colo, con lo scopo di ridurre la sparsit`a dei dati nei testi arabi. La prima soluzione `e
il Light stemming, che consiste nell’omettere tutti i prefissi e suffissi, che sono stati
aggiunti al lemma per ottenere il significato necessario. Questa soluzione `e con-
veniente per task quali l’Information Retrieval e il Question&Answering (vedere
Sezione 7.1), perch´e le preposizioni, gli articoli e le congiunzioni sono considerati
come parole di arresto e non vengono presi in considerazione per decidere se un
30
documento `e rilevante per una query oppure no, ma `e meno conveniente per i task
NLP come il NER. La seconda soluzione `e Word segmentation, che consiste nel
separare i diversi componenti di una parola da uno spazio; questa tecnica `e in
grado di diminuire la scarsit`a di dati senza provocare perdita di informazioni con-
testuali. Pertanto, questa soluzione `e la pi`u adeguata ai task NLP, che richiedono
di mantenere ai diversi morfemi di parole come il Word Sense Disambiguation,
NER, etc.
31
Chapter 3
Stato dell’arte
Il Named Entity Recognition (NER) e il problema della disambiguazione sono
stati indirizzati in differenti campi di ricerca come: NLP, Web mining e Semantic
Web communities. Tutte queste si accordano sulla definizione di Named Entity,
definizione coniata da Gaishman et al. come un’unit`a di informazione descritta
dal nome proprio di: una persona, un’organizzazione, un luogo, un marchio, un
prodotto, un’espressione numerica (includendo il tempo), la data, la moneta e la
percentuale numerica; tutte queste entit`a possono essere presenti in uno o pi`u
testi.
L’identificazione di questi riferimenti legati a queste entit`a, nei testi non strut-
turati, `e stato riconosciuto come un importante sub-task dell’Information Extrac-
tion (IE). Tale sub-task `e essenziale ed `e stato assegnato al ramo dell’elaborazione
del linguaggio naturale o Natural Language Processing (NLP).
Molti lavori si basano su euristiche e definizioni di pattern (modelli) per riconoscere,
ad esempio, nomi propri di societ`a nei testi. I dati di addestramento `e definito da
un set di scelte euristiche. L’idea `e quella di riconoscere e classificare attraverso
delle regole distinte le feature associate, con esempi positivi e negativi.
Un differente approccio avviene con l’introduzione della tecnica Supervised Learn-
ing (SL). Con gli approcci Semi-Supervised Learning (SSL) e Unsupervised Learn-
ing (UL), si pensa di risolvere questo problema sfruttando un piccolo set iniziale
di dati annotati da ”istruire” e da mostrare al sistema; oppure risolvendolo con il
clustering.
Lasciando i recenti metodi sull’uso di DBpedia, Freebase e YAGO, il Semantic
Web community ha introdotto la mappa delle entit`a proprie, per relazionare i fatti
mostrati da queste antologie di grana fine.
32
La disambiguit`a `e una delle chiavi di sfida in questo scenario ed `e fondata sul
fatto che i termini presi in zone del testo ”isolate” sono naturalmente ambigui.
Quindi, un testo contenente il termine London pu`o riferirsi alla citt`a London dello
stato del Minesota, USA; tutto dipende dal contesto che st`a attorno al termine
London. Similmente: persone, organizzazioni e societ`a possono avere nomi e nick-
name multipli. Questi metodi generalmente provano a trovare nell’intorno del
termine, qualche ”punto”, per contestualizzare la sua ambiguit`a ed a raffinarla, se
possibile.
3.1 Metodi di apprendimento per i sistemi NER
I primi studi fatti sui sistemi NER, si sono basati sulla gestione delle regole, ora
invece si preferisce utilizzare i seguenti metodi di apprendimento per i sistemi
NER[10], (vedere Appendice A) come:
• Apprendimento Supervisionato (Supervised Learning (SL)),
• Apprendimento Semi-supervisionato (SemiSupervised Learning (SSL)) e
• Apprendimento Non Supervisionato (Unsupervised Learning (UL)).
3.1.1 Apprendimento Supervisionato
L’idea del Apprendimento Supervisionato[10, 13] `e quella di studiare le caratter-
istiche delle entit`a proprie, con esempi positivi e negativi, su un insieme grande
di documenti (annotati manualmente) e di progettare le regole per catturare le
istanze di un certo tipo, utilizzando tecniche che includono:
• Hidden Markov Models (HMM),
• Decision Trees,
• Maximun Entropy Models (ME),
• Support Vector Machine (SVM) e
• Conditional Random Fields (CRF).
Il metodo basato sull’Apprendimento Supervisionato consiste nell’etichettare le
parole presenti in un corpus, dove essi vengono annotati come entit`a nelle fasi di
pre-addestramento del corpus stesso; le perfomance del sistema dipendono oltre al
corpus, anche dalla ”robustezza” del vocabolario.
33
Le sfide con l’approccio basato sull’Apprendimento Supervisionato non sono molto
affidabili, per via delle risorse a disposizione e del costo proibitivo per gli ”esempi”
creati.
3.1.2 Apprendimento Semi-supervisionato
La tecnica principale, utilizzata nell’Apprendimento Semi-supervisionato[10], `e
chiamata ”bootstrapping” e richiede un piccolo grado di supervisione, come un
insieme di semi, per iniziare con il processo di apprendimento; dopodich`e si ap-
plica il processo di estrazione e di riconoscimento per trovare dei nuovi oggetti (in
questo caso di entit`a proprie).
La prima tecnica basata sull’Apprendimento Semi-supervisionato `e stata fatta,
implementando le lexical features1
, attraverso le espressioni regolari, per gener-
are delle liste iniziali (seeds) ed attraverso delle regole fisse per il controllo lessi-
cale.
Un secondo approccio utilizzato `e una variante del ”mutual bootstrapping”; esso
usa le relazioni sintattiche, come soggetto-oggetto, per scoprire con pi`u accuratezza
le evidenze contestuali attorno alle entit`a, sfruttando l’output generato da un
sistema POS Tagger.
3.1.3 Apprendimento Non Supervisionato
Un tipico approccio basato sull’Apprendimento Non Supervisionato[10, 17] `e il
clustering2
, questo crea dei gruppi in base alla similarit`a contestuale, ovviamente
esistono altri metodi di Apprendimento Non Supervisionato.
Ad esempio, l’utilizzo di WordNet, come supporto nella ricerca all’interno della
lista delle parole, che co-occorrono pi`u frequentemente nel testo, oppure utilizzando
dei pattern lessicali per il calcolo statistico su un grande corpus di elementi.
In molti sistemi NER, che utilizzano il metodo non supervisionato, applicano il
clustering. Questa tecnica, in passato, `e stata usata da molti ricercatori (Miller
1
Il significato in italiano sta per ”caratteristiche lessicali” di un linguaggio. Per conoscere
a priori, quali sono le lexical features, utilizzate in un linguaggio, ci sono due sorgenti dove `e
possibile acquisire queste informazioni e sono: gli spunti semantici e sintattici.
2
Il clustering o cluster analisys `e un insieme di tecniche per l’analisi multivariata dei dati con
il compito di selezionare e di raggruppare gli elementi omogenei in un data set. Tali teniche si
basano su misure relative alla somiglianza tra gli elementi, calcolandone la distanza reciproca (ad
esempio la distanza euclidea) e quindi se, un dato elemento appartiene o meno ad un insieme,
dipende da quanto lo stesso elemento, preso in esame, `e distante dall’insieme stesso.
34
et al., 2004; Lhang, 2005; Koo et al., 2008; Ratiov & Roth, 2009; Huang e Yates,
2009).
35
3.2 Stato dell’arte e related work dei sistemi English NER
Lo stato dell’arte dei sistemi English NER[10] ha inizio negli anni ’90, dove `e stato
introdotto il concetto di NER, nel Message Understanding Conference (MUC).
Tutte le conferenze sono state finanziate dal Defense Advanced Research Project
Agency (DARPA), per incoraggiare lo sviluppo di metodi nuovi e migliori per
l’Information Extraction, cercando di estrarre informazioni ben precise e ben strut-
turate all’interno di testi non strutturati.
Per poter partecipare al MUC, ciascun team doveva progettare e realizzare un
sistema in grado di svolgere il compito scelto e di essere in grado di avere, la
propria performance, valutata rispetto agli altri team concorrenti.
Questa iniziativa `e stata estremamente fruttuosa per una serie di ragioni[10].
• L’enfasi di avere un sistema reale in esecuzione, evitando la normale tendenza
dei ricercatori a concentrare i loro occhi su orrizzonti lontani.
• La fornitura di materiali uniformi, per i dati di addestramento e di valu-
tazione, incoraggiano una valutazione rigorosa mediante un insieme di met-
riche concordate.
• L’introduzione di un elemento competitivo, che coinvolge un feedback diretto,
ha reso l’esercizio pi`u interessante, rispetto alla normale conferenza tecnica.
Tra i partecipanti al MUC ci sono state sia universit`a, come, ad esempio, le uni-
versit`a di Edinburgh, di Kyoto e del Massachusetts (MIT), e sia privati.
Le prime due conferenze fatte nel 1987 e 1989, si sono occupate nell’analisi di
messaggi durante delle operazioni navali. Il MUC-3 (1993) ed il MUC-4 (1994) si
sono concentrati sull’estrazione di eventi, in particolare ricercando, negli articoli di
giornale, dettagli sugli attacchi terroristici. Per il MUC-3, il punteggio ottenuto dal
miglior sistema `e stato circa il 50% per la Recall ed il 60% per la Precision.
Al MUC-5 (1993), sono state introdotte pi`u task orientati al business, come ad
esempio trovare annunci di joint venture.
Alla sesta conferenza (MUC-6), il task per il Named Entity Recognition fu suddiviso
in tre sub-task: ENAMEX (nomi di persone, nomi di luoghi e nomi di organiz-
zazioni), TIMEX (data e ora di espressione), e NUMEX (per importi monetari e
percentuali). Il miglior sistema ha ottenuto un punteggio circa del 75% per la Re-
call e circa del 75% per la Precision. Gran parte dei sistemi NER hanno utilizzato
l’approccio rule-based fino alla met`a degli anni ’90, e tutt’ora viene utilizzata. Ma
dalla sesta conferenza in poi, gli sviluppatori hanno incominciato a progettare e
sviluppare sistemi basati sulle tecniche dell’apprendimento automatico.
36
Ad oggi, i sistemi NER sviluppati (in varie lingue) si sono evoluti attorno a
questi tre sub-task.
Nel 1998, il MUC-7 ha dimostrato, che l’estrazione di entit`a da articoli di giornali,
per la lingua inglese, era pi`u o meno un problema risolto. I migliori sistemi,
progettati per il MUC-7, hanno segnato dei valori di F1-Score pari al 93.39%,
a fronte di una performance umana stimata di F1-Score circa del 97.60% e del
96.95%. Attualmente lo stato dell’arte dei sistemi NER, per la lingua inglese, `e
rimasto fermo al MUC-7.
In Table 3.1 si mostrano i migliori quattro sistemi, per ciascuna conferenza di valu-
tazione NER, in base ai diversi parametri di valutazione, per ciascun evento.
Table 3.1: I migliori quattro sistemi sul task Entity Estraction al MUC.
Partecipante Sistema Approccio MUC Rank F1-Score Riferimenti
SRA NameTag Regole 6 1 96.42 Krupka 1995,
7 2 91.60 Krupka et Hausm.
1998
SRI FASTUS Regole 6 2 94.00 Appelt et al. 1995
BBN Identifier Stocastico 6 1 93.65 Bikel et al. 1997,
7 2 90.44 Bikel et al. 1999
U.Edinburg LTG Ibrido 7 1 93.39 Mikheev et al.
1998
Le restanti lingue
Una buona parte del lavoro di ricerca NER `e dedicato allo studio della lingua in-
glese, ma una percentuale, forse maggiore, riguarda l’indipendenza del linguaggio
e i problemi del multi-language. Questo lavoro `e stato avviato dalle conferenze
MUC, le quali hanno dato una spinta per la progettazione e realizzazione di NER
in altre lingue. Infatti, nel 1996, `e stata avviata una conferenza correlata al MUC,
denominata Multilingual Entity Task (MET-1) per valutare l’estrazione di infor-
mazioni su testi in lingue diverse dall’inglese, soffermandosi solo sullo spagnolo,
cinese e giapponese; mentre, l’anno successivo, il MET-2 si `e soffermato solamente
sull’estrazioni di entit`a per il cinese ed il giapponese.
Le conferenze sul NER sono iniziate con il MUC, per poi essere continuate con i
shared task nel Conference on Natural Language Learning (CoNNL), sofferman-
dosi oltre alla lingua inglese, anche nelle restanti lingue. Infatti, nel CONLL-2003
37
viene studiato il tedesco. Allo stesso modo, lo spagnolo e l’olandese sono forte-
mente rappresentati, entrambi potenziati da un importante convegno dedicato: il
CONLL-2002. Il cinese viene studiato rilasciando un’abbondante letteratura (ad
esempio, L. J. Wang et al. Del 1992, H.-H. Chen & Lee 1996, S. Yu et al. 1998);
stesso discorso vale per il francese (G. Petasis et al. 2001 Poibeau 2003), per il
greco (S. Boutsis et al. 2000) e per l’italiano (W. Black et al. del 1998, A. Cuc-
chiarelli & Velardi 2001); infine, l’arabo (F. Huang 2005) ha iniziato a ricevere
molta attenzione a progetti su larga scala come il Global Autonomous Language
Exploitation (GALE)3
.
3
http://projects.ldc.upenn.edu/gale/.
38
3.3 Stato dell’arte e related work dei sistemi Italian NER
I sistemi per il trattamento automatico della lingua italiana, vengono affrontati
in EVALITA. EVALITA `e un’iniziativa dedicata alla valutazione del Natural Lan-
guage Processing e degli strumenti vocali per la lingua italiana.
L’obiettivo generale di EVALITA4
`e quello di promuovere lo sviluppo di tecnologie
linguistiche per la lingua italiana, di definire ed estendere l’attuale stato dell’arte
nel ”parsing” della lingua italiana, favorendo l’applicazione di modelli esistenti e
fornendo un quadro di riferimento condiviso, in cui i sistemi e i diversi approcci
possono essere valutati in modo coerente. Infatti, i dati di sviluppo sono in vari
formati e il compito `e composto di attivit`a secondarie, con una valutazione quan-
titativa di diversi tipi di uscite, annotando anche funzioni diverse.
Nella prima edizione[8], del 2007, l’attenzione si `e concentrata principalmente sulle
applicazioni per la lingua italiana, con vari approcci di analisi, ad esempio basato su
regole e stocastico, e paradigmi, ad esempio constituency-based e dependency-based.
L’obiettivo, infatti, era di contribuire, con riferimento all’italiano, per l’indagine
sulle cause della irriproducibilit`a dei risultati di analisi noti in letteratura su lingue
diverse dall’Inglese, come per il ceco, il tedesco, il cinese, l’italiano, e su altri Tree-
Banks Penn. Gli stessi dati di sviluppo, estratti dal Turin University Treebank5
,
ci sono stati per la distribuzione, sia con il TUT nativo (dependency-based) e sia
sul TUT Penn (constituency-based), ed il compito `e stato articolato in due binari
paralleli, rispettivamente sul constituency-based e sul dependency-based.
La valutazione, in EVALITA 2007, si `e basata sull’Italian Content Annotation
Bank (I-CAB). L’I-CAB `e un corpus composto da 525 notizie tratte dal quo-
tidiano locale ”L’Adige”, per un totale di circa 180.000 parole. `E annotato con
informazioni semantiche a diversi livelli:
• espressioni temporali,
• entit`a (persone, organizzazioni, luoghi, e entit`a geo-politiche)
• e le relazioni tra le entit`a (ad esempio, la relazione di affiliazione collegamento
di una persona di una organizzazione).
L’annotazione di I-CAB `e realizzato in collaborazione con CELCT. Finora si sono
4
Ad esempio, esiste un task, denominato News People Search Task[24] (o NePS Task), che
si propone di valutare attraverso i documenti la risoluzione di coreferenza di entit`a proprie
di persone indicate nella cronaca italiana. In esso vengono coinvolti due aspetti problematici:
l’ambiguit`a (persone diverse che hanno lo stesso nome) e le variazioni di nome (nomi diversi
possono riferirsi alla stessa persona).
5
http://www.di.unito.it/∼tutreeb.
39
completati i primi due livelli di annotazione, cio`e le espressioni e le entit`a tem-
porali. L’I-CAB sta diventando un punto di riferimento per le varie informazioni
automatiche per le attivit`a di estrazione, in quanto segue una politica di riuti-
lizzo dei linguaggi di markup gi`a disponibili. In particolare, esso adotta gli schemi
di annotazione sviluppati per l’ACE Entity Detection e per i task: Time Expres-
sions Recognition e Normalization; seguendo le linee guida ACE-LDC per l’Inglese,
dove gran parte dello sforzo `e stato nell’adattamento alle specifiche caratteristiche
morfo-sintattiche della lingua italiana.
Il miglior sistema per il NER dell’italiano `e stato il sistema EntityPro, il quale si
basa sui Support Vector Machine ed `e stato addestrato considerando sia feature
statiche e sia feature dinamiche. Il sistema ha ottenuto una misura F1-Score di
82.14% e la valutazione `e stata fatta sulla base di una corrispondenza esatta.
La seconda edizione[9], del 2009, `e diventata la campagna di valutazione di riferi-
mento sia del Natural Language Processing e sia delle tecnologie vocali per l’italiano.
Quest’ultimo, per la prima volta, `e stato la principale novit`a di EVALITA 2009, in
quanto `e stata organizzata una iniziativa per esso, grazie, sopratutto, al sostegno
del’Italian Association of Speech Science (AISV). Come seconda novit`a rilevante,
lo stesso evento ha iniziato una collaborazione con Passage6
.
Per quanto riguarda il task sul Entity Recognition, esso `e stato suddiviso in due sub-
task: Named Entity Recognition (NER) e Local Entity Detection and Recognition
(LEDR). Come nella precedente edizione, per il primo sub-task, la valutazione `e
stata fatta sull’I-CAB, in cui le entit`a sono state annotate nel formato OBI, o BIO
(vedere Sezione 4.3.3) ed `e stato utilizzato lo stesso data.
I punteggi vanno dal 82.00% al 61.03%, e quattro sistemi (su sette) hanno ottenuto
un punteggio sopra al 79% (considerando la loro migliore conduzione). I quattro
sistemi con il miglior punteggio, infatti, hanno ottenuto punteggi molto vicini in
termini di F1-Score: il sistema con il miglior punteggio (FBK ZanoliPianta) ha ot-
tenuto il 82% (Precision 84.07% e Recall 80.02%); il secondo (UniGen Gesmundo)
81.46% (Precision 86.06% e Recall 77.33%); il terzo (UniTN-FBK-RGB) 81.09%
(Precisione 83.20% e Recall 79.08%); infine il quarto (UniTN Nguyen) 79.77%
(Precision 83.05% e Recall 78.86%). Se i risultati vengono comparati in termini
di Precision e di Recall, si nota, che tutti i sistemi hanno ottenuto dei valori alti
per la Precision rispetto alla Recall, dopo l’esecuzione del task.
L’ultima edizione[30], del 2011, di valutazione del Natural Language Processing e
delle tecnologie vocali per l’italiano, supportato dal gruppo di lavoro NLP dell’AI*IA
(Associazione Italiana per l’Intelligenza Artificiale/Italian Association for Artifi-
6
Passage `e una campagna di valutazione di analisi per il francese, la quale mira a condividere
le metodologie con analoghe iniziative a livello europeo.
40
cial Intelligence) e dall’AISV (Associazione Italiana di Scienze della Voce/Italian
Association of Speech Science). La novit`a introdotta da questa edizione `e che il
task `e stato basato sulle notizie dei telegiornali. Esse sono state gentilmente messe
a disposizione dalla televisione RTTR, un’emitettente locale.
L’annotazione dei dati `e basata sullo standard di ACE-LDC, per Entity Recognition
Task e Normalization Task, ed `e stata adattata alla lingua italiana e limitata al
riconoscimento delle entit`a proprie.
La novit`a principale introdotta per l’edizione 2011 sta nel fatto, che il task `e basato
sulla trasmissione di notizie ed `e consistito in due sub-task7
:
• completo: esibizione dei partecipanti sia nel sub-task per la trascrizione au-
tomatica e sia nel sub-task Named Entity Recognition;
• o solo NER: esibizione dei partecipanti nel Named Entity Recognition sfrut-
tando la trascrizione automatica fornita dagli organizzatori.
Il task sul riconoscimento delle entit`a proprie ha avuto quattro partecipanti, tutti
solo per il sub-task NER, i quali hanno presentato un totale di nove esecuzioni da
valutare ufficialmente. Uno dei partecipanti ha presentato quattro esecuzioni (due
in modalit`a ”chiusa” e due in modalit`a ”aperta”), un altro tre esecuzioni (due
in modalit`a ”chiusa” e una in modalit`a ”aperta”) e due hanno presentato solo
una esecuzione in modalit`a ”chiusa”, per un totale di nove esecuzioni da valutare
ufficialmente.
Nota: Per la modalit`a ”chiusa” si intende solamente quei dati distribuiti
dagli organizzatori e senza risorse aggiuntive8. Mentre per la modalit`a
”aperta” si intende tutte quelle risorse aggiuntive a quelle distribuite dagli
organizzatori.
I risultati F1-Score, ottenuti dai sistemi partecipanti nella valutazione ufficiale,
vanno dal 63.56% al 52.15% nella modalit`a ”aperta” e dal 60.98% al 42.42% nella
modalit`a ”chiusa”, i quali mostrano, che vi `e spazio per miglioramenti in questo
task. Soltanto il sistema con il miglior punteggio, cio`e FBK Alam, ha conseguito
dei risultati discreti in termini di F1-Score (63.56% in modalit`a ”aperta” e 60.98%-
60.67% in modalit`a ”chiusa”). Altri due sistemi hanno ottenuti dei punteggi molto
stretti: FBK Chowdhury ha ottenuto dei risultati leggermente superiori rispetto
UniPi SimiDeiRossi in modalit`a ”chiusa” (57.02% e 56.61% rispettivamente), ma
non ha partecipato alla modalit`a ”aperta” dove UniPi SimiDeiRossi ha ottenuto
un punteggio di 58.19%.
7
Per entrambi i sub-task si sono utilizzati gli stessi dati di addestramento.
8
Per risorse aggiuntive si intende: gazetteer, dizionari di entit`a proprie, ontologie, Wikipedia
e framework per NLP (come TextPro, GATE, OpenNLP, etc).
41
3.4 Stato dell’arte e related work dei sistemi Arabic NER
Per quanto riguarda la lingua araba, ci sono stati pochi sforzi sui sistemi Ara-
bic NER[18]. Questo `e dovuto alla mancanza di risorse di entit`a proprie per
l’arabo, dalla limitata quantit`a di progressi compiuti in generale nel NLP arabo
e, sopratutto, per l’assenza di iniziative dedicate alla valutazione del NLP e degli
strumenti vocali per la lingua araba.
Il primo sistema NER per la lingua araba `e stato sviluppatto da Maloney e Niv
(1998) e si chiama TAGARAB, questo riconoscitore di entit`a proprie integra dentro
di s`e un motore per il riconoscimento di pattern, con l’analisi morfologica. Il ruolo
dell’analizzatore morfologico `e quello di decidere dove un nome finisce e dove inizia
il contesto del ”non nome”; tale decisione dipende sulle parti del discorso della
parola araba e/o dalla sua inflessione. Le prestazioni combinate ottenute per la
Precision, la Recall e F1-Score sono 92.35%, 84.8% e 88.325%.
Abuleil (2004) ha presentato una tecnica per estrarre nomi propri da un testo,
costruendo una base di dati di nomi con la loro classificazione che pu`o essere
sfruttata nei sistemi Question & Answer9
. L’accuratezza del sistema `e stata cal-
colata in termini di Precision e sono: 90.4% per PERS, 93% per LOC e 92.3% per
ORG.
Sami, Moreno e Guiraro (2005) hanno usato un corpora parallelo (spagnolo-arabo)
ed un tagger di entit`a proprie in spagnolo per etichettare i nomi in un corpus arabo.
Ovvero per ogni coppia di frasi, spagnolo-arabo, allineate insieme. Essi usano un
semplice schema di mappatura per traslitterare tutte le parole nelle frasi in arabo
e far ritornare quei abbinamenti con l’entit`a proprie nelle frasi in spagnolo con
le entit`a proprie nelle frasi in arabo. Il loro approcccio `e applicabile solo quando
si dispone di un corpus parallelo. Essi hanno ottenuto, con il loro sistema, una
Precision (90%) ed una Recall (97.5%), rispettivamante alti.
Zitouni, Sorensen, Luo e Florian (2005) hanno adottato l’approccio basato su mod-
ello per la rilevazione e il riconoscimento delle entit`a proprie. Inoltre nello stesso
ambito, una citazione pu`o essere sia un nome, sia un nominale oppure un pronom-
inale. In questo ambito, la definizione di entit`a viene estesa e ridefinita in questo
modo: un entit`a `e un aggregato di tutte le citazioni, di qualsiasi livello, che fanno
a loro volta riferimento ad una entit`a concettuale. Le operazioni di addestramento
e di valutazione del sistema sono stati fatti sui dati del Automatic Content Ex-
9
I sistemi di Question & Answer (QA) (vedere Sezione ), si pongono come approccio alter-
nativo ai tradizionali sistemi di Information Retrieval (IR) e di Information Extraction (IE),
in quanto la differenza st`a nella query, perch`e essa viene analizzata per cercare di capire il suo
significato e per supportare l’estrazione dell’informazione cercata.
42
traction (ACE) del 2003 e una parte del 2004, in lingua araba. L’obiettivo della
valutazione `e stata fatta per investigare sull’utilit`a di derivare le feature in n-gram
nella rilevazione di citazioni da parte del sistema. Lo stemming n-gram features
ha dato un interessante miglioramento in termini di Precision (64.4%), di Recall
(55.7%) e di F1-Score (59.7%).
Benajiba e Rosso hanno sviluppato un sistema, chiamato ANER 2.0 System (2007),
il quale usa l’approccio statistico che sfrutta i modelli probablistici: Maximun En-
tropy (ME) e Conditional Random Fields (CRF). Essi hanno usato un corpus
di loro propriet`a, chiamato ANERCorp, per effettuare l’addestramento e la valu-
tazione del modello CRF. L’ANERCorpus `e composto da un corpus di addestra-
mento e da un corpus di valutazione in modo ad hoc per il NER task. I risultati
combinati, ottenuti nell’esecuzione del task, su tutte le feature in termini di Preci-
sion, Recall, e F1-Score sono stati rispettivamente: 86.9%, 72.77% e 79.21%.
Di recente, Khaled Shaalan e Hafsa Raza, hanno sviluppato un loro sistema, NERA
(Named Entity Recogniton for Arabic) (2009), il quale usa l’approccio basato su
regole, utilizzando tecniche linguistiche basate sulle regole grammaticali della lin-
gua araba. Questo approccio `e motivato dalle caratteristiche e dalle peculariet`a
della lingua. Il sistema NERA prova ad estrarre e a riconoscere le entit`a pro-
prie utilizzando degli Arabic script creati ad-hoc. I risultati combinati, ottenuti
nell’esecuzione del task, su tutte le feature, in termini di Precision, Recall, e F1-
Score sono stati rispettivamente: 91.68%, 90.82% e 92.255%.
43
Chapter 4
Descrizione del parser LingPipe
4.1 Una breve panoramica
Il parser LingPipe[5], come `e stato accennato, `e un insieme di strumenti per
l’elaborazione di testo utilizzando la linguistica computazionale ed `e scritto inter-
amente in Java.
Le potenziali operazioni eseguibili da LingPipe sono:
• Riconoscere i nomi di persone, organizzazioni o luoghi in un documento.
• Classificare automaticamente i risultati della ricerca Twitter in categorie.
• Suggerire correzioni alla query (Forse cercavi... ).
L’architettura di LingPipe `e:
• Efficiente.
• Scalabile.
• Riutilizzabile.
• Robusta.
Inoltre, LingPipe fornisce un insieme di strumenti per l’Information Extraction
ed il Data Mining, tra cui:
• il tracciamento delle entit`a proprie (esempio persone o proteine);
• permette di collegare le entit`a proprie nelle entry di una base di dati;
44
• classificare il testo per tipo di lingua, codifica dei caratteri, generi, argomenti
o sentimenti;
• fare la correzione dello spelling rispetto ad un insieme di testi;
• clustering di documenti da argomenti impliciti e scoprire le tendenze signi-
ficative nel tempo.
Il parser LingPipe implementa la maggior parte dei Document Analisys. Infatti,
in input pu`o avere file di tipo: XML, HTML e testo normale, mentre in output pu`o
essere configurato per restituire file di tipo XML, oltre al file di tipo testo. Tutti
gli input/ouput di tipo XML vengono gestiti attraverso i SAX filter1
, permettendo
cos`ı di combinare catene di handler per una completa elaborazione XML (Entities,
DTD validation, character set, etc).
1
I SAX filter hanno lo stesso pattern come gli stream filter di Java (java.io.InputStramFilter).
45
4.2 Elenco delle risorse e delle lingue disponibili
In generale, le risorse[5, 6] che vengono messe a disposizione, sono:
• API e unit test in codice sorgente Java.
• Modelli multi-lingual, multi-domain e multi-genre.
• N-best output con stime statistiche di confidenza.
• Addestramento on-line (learn-a-little, tag-a-little).
• Modelli thread-safe e decodificatori per il Concurrent-Read Exclusive-Write
(CREW).
• Character encoding-sensitive I/O.
Inoltre, per LingPipe, esistono altri tipi di risorse e strumenti a disposizione, come
dizionari2
, regole, Part-Of-Speech Tagger e Phrase Chunker.
L’approccio di base di LingPipe `e la portabilit`a su pi`u lingue. Tutto ci`o che si deve
cambiare `e il rilevamento della frase e della tokenizzazione. Sono stati costruiti
con successo dei NER per l’inglese, lo spagnolo, l’olandese, il tedesco, il francese,
l’hindi, il cinese e l’arabo.
La rete, in aggiunta, mette a disposizione gazetteer per pi`u lingue, come:
• inglese,
• francese,
• italiano,
• spagnolo,
• arabo,
• cinese e
• tedesco.
2
Per i dizionari LingPipe usa direttamente i gazetteer per la loro creazione, perch`e, grazie a
codesti, `e possibile addestrare le categorie.
46
I POS Tagger, in formato corpora e CoNNL, supportati dalla rete per LingPipe
sono:
• cinese mandarino (pi`u fonti),
• tedesco (pi`u fonti),
• inglese (pi`u fonti),
• spagnolo,
• arabo,
• cecoslovacco allineato con l’inglese,
• greco,
• coreano e
• portoghese.
47
4.3 Il diagramma dei componenti
Nell’Ingegneria del Software, un diagramma dei componenti (o component dia-
gram), `e un diagramma che ha come scopo, quello di rappresentare la struttura
interna dell’intero software modellato, secondo i termini delle sue componenti prin-
cipali e delle relazioni fra di esse.
In questa sezione vengono mostrati due diagrammi[5, 19, 4] dei componenti del
parser di LingPipe: il primo diagramma schematizza e non scende nei dettagli
dei singoli package, mentre il secondo diagramma mostra le classi di maggiore
importanza del parser di LingPipe.
La Figure 4.1 mostra soltanto i package del parser, con le eventuali relazioni tra
essi, che sono: corpus, tokenizer, suffixarray, symbol lm (language model), classify
e tag (tagging).
Figure 4.1: Diagramma dei componenti relativo ai package del parser di LingPipe.
48
La Figure 4.2 mostra le classi, con le eventuali relazioni, dell’intero parser, con
ciascuna classe appartenente al proprio package.
Figure 4.2: Diagramma dei componenti relativo alle classi del parser di LingPipe.
49
4.4 Named Entity Recognition di LingPipe
Il parser LinPipe, per estrarre[5] le entit`a proprie, utilizza i chunker, per ogni tipo
di approccio. Come `e stato accennato nella Sezione LingPipe: il parser adottato,
esso fornisce: per l’approccio basato su regole il Regular Expression-Based Chun-
ker; per l’approccio basato su modello stocastico (HMM) il Model-Based Chun-
ker; e per l’approccio basato su dizionario il Dictionary-Based Chunker, che a sua
volta `e suddiviso in due tipologie: Exact Dictionary-Based Chunker e Approximate
Dictionary-Based Chunker.
Ovviamente, l’intero processo di estrazione delle entit`a proprie `e identico per tutti
e tre gli approcci. Esso `e suddiviso nei seguenti passi:
1. Creazione di un chunker.
2. Applicazione del metodo chunk . . . tramite il chunker creato, per prendere
un chunking.
3. Inizializzazione di un iterator dal chunkSet del chunking.
4. Scorrimento del set di chunk tramite l’oggetto iterator.
a. Per ogni chunk, ritorna un’entit`a propria e il suo tipo associato.
Riepilogando, viene prima creato un chunker ed il metodo chunk . . . del chunker
`e utilizzato per prendere un chunking. La maggior parte del tempo di elaborazione
viene speso nel passo 2 per creare il chunking. Il ciclo scansiona un elenco ordinato
di chunk memorizzati in una lista collegata e per ogni chunk ritorna un’entit`a
propria assieme al tipo (PERS, ORG, LOC e MISC). Il tipo di chunker `e l’unica
differenza nei tre approcci, che si andranno a descrivere di seguito.
4.4.1 Regular Expression-Based Chunker
Il Regular Expression-Based Chunker `e particolarmente semplice se `e possibile
scrivere un’espressione regolare (vedere Appendice C), che cattura l’entit`a propria
prevista dal pattern (modello).
Infatti, il primo passo consiste nello scrivere un’espressione regolare, che cor-
risponde a tutti e solo a quelle entit`a proprie, che si vogliono riconoscere. Un esem-
pio potrebbe essere quello di trovare gli indirizzi email ben formato. Fondamental-
mente, le espressioni regolari sono l’unica parte sostanziale dell’implementazione.
50
4.4.2 Dictionary-Based Chunker
L’utilizzo di un dizionario nella ricerca delle entit`a proprie, talvolta, `e sufficiente
per trovare tutti le entit`a proprie, presenti nel testo, con un dizionario. Ad esem-
pio, un nome come ”50 Cent” o un nome del prodotto simile a ”Galaxy Samsung
S4” pu`o rivelarsi molto difficile da trovare in un testo, utilizzando solo riconosc-
itori stocastici o solo riconoscitori basati su regole. Talvolta un dizionario pu`o
essere utilizzato in combinazione con un sistema di riconoscimento statistico per
migliorare la Recall per i nomi ”difficili”. I nomi tendono ad essere difficili se sono
facilmente confondibili con i numeri o con le parole comuni.
Un’altra strategia che pu`o essere utilizzata, sia per eseguire un riconoscimento
statistico di un’organizzazione inserita in un corpus e quindi utilizzare l’uscita
per costruire un dizionario, che pu`o essere utilizzato per ri-annotare frammenti di
corpus, che possono essere stati persi nel primo passaggio.
Il Dictionary-Based Chunker usa un dizionario3
per identificare le entit`a proprie
all’interno di una stringa. Un dizionario, in LingPipe, `e fatto da una lista di entry,
ciascuna delle quali consiste di una terna formata da: stringa (entit`a propria), tipo
(PERS, ORG, LOC e MISC) e punteggio.
Spesso, per la costruzione dei dizionari si utilizzano i gazetteer di entit`a proprie
(persone, organizzazione e luoghi).
Exact Dictionary-Based Chunker
Nell’Exact Dictionary-Based Chunker, di LingPipe, si `e utilizzato l’approccio pi`u
semplice nel fare un’espressione regolare disgiuntiva o una ricerca su sottostringhe,
tale che da far convergere rapidamente la ricerca all’interno dei dizionari, an-
che di modeste dimensioni. Per questo, LingPipe fornisce un’implementazione
dell’algoritmo di Aho-Corasick4
[2]. La bellezza di questo algoritmo sta nel trovare
tutto tramite gli abbinamenti su un dizionazio in tempo lineare, indipendentemente
dal numero di ”disabbinamenti” o dalla dimensione del dizionario.
Nell’Exact Dictionary-Based Chunker, al costruttore gli vengono forniti: un diziona-
3
Il tipo di struttura utilizzato per i dizionari `e il MapDictionary.
4
L’algoritmo di Aho-Corasick[2] `e un algoritmo per la ricerca di stringhe (o di string matching)
inventato da Alfred V. Aho e Margaret J. Corasick. Esso `e un tipo di algoritmo basato su
dictionary-matching, il quale effettua la ricerca degli elementi in un’insieme finito di stringhe
(ovvero il dizionario) con un testo in input; esso abbina tutti pattern simultaneamente. La
complessit`e dell’algoritmo `e lineare nella lunghezza del pattern, pi`u la lunghezza del testo cercato
e pi`u il numero di abbinamenti in output.
51
rio, un tokenizer factory e due flag. Il dizionario, oltre ad essere popolato con una
entry alla volta, pu`o essere caricato da una versione, precedentemente salvato, da
un file5
. Il tokenizer factory usa il metodo IndoEuropeanTokenizer per creare i
token dal testo, che poi vengono usati nella ricerca all’interno del dizionario, per
fare l’abbinamento delle singole entry.
Approximate Dictionary-Based Chunker
Nell’Approximate Dictionary-Based Chunker, di LingPipe, si implementa sempre
un chunker basato su dizionario, il quale per`o esegue una ricerca per approssi-
mazione. La ricerca, per l’identificazione dei chunk, si basa su di un abbinamento
fuzzy, la quale viene valutata utilizzando una funzione per il calcolo della dis-
tanza. Il dizionario dell’Approximate Dictionary-Based Chunker viene popolato
nello stesso modo del dizionario dell’Exact Dictionary-Based Chunker. Esso, in-
fatti, non si limita a cercare corrispondenze esatte, bens`ı restituisce un’istanza di
tipo WeightedEditDistance, che `e il grado di similitudine tra un chunk ed un entry
del dizionario.
4.4.3 Model-Based Chunker
Implementare un NER utilizzando l’approccio statistico `e relativamente semplice
se esiste un modello addestrato precedentemente. LingPipe attualmente dispone
di tre generici ed addestrabili chunker di tipo stocastico, in particolare di tipo
Hidden Markov Models (HMM), che possono essere utilizzati per il riconoscimento
di entit`a proprie.
CharLmHmmChunker
Il CharLmHmmChunker impiega un estimatore basato su modello stocastico (HMM)
e un tokenizer factory per fare l’addestramento di un chunker. L’estimatore usato
`e un’oggetto della classe AbstractHmmEstimator per la stima del modello sot-
tostante. Esso usa un tokenizer factory per ”spezzare” i chunk in sequenze di
token e tag.
Per l’addestramento del modello, questa classe implementa l’interfeccia ObjectHa-
ndler Chunking , che pu`o essere utilizzato per fornire le istanze di addestramento.
Le istanze di addestramento vengono fornite attraverso un chunk handler nel modo
5
In questo modo non `e necessario crearlo ripetendo la procedura entry per entry.
52
consueto. Per il tag handler, esse richiedono lo standard BIO tagging scheme (per
maggiori dettagli, vedere Sezione 4.4.4) in cui il primo token in un chunk di tipo
X `e etichettato con B X (BEGIN), tutti i token successivi nello stesso chunk
sono etichettati con I X (INSIDE) ed i token che non stanno nel chunk vengono
etichettati con O. Inoltre, questo chunker pu`o essere addestrato con le entries
del dizionario tramite un’opportuno metodo, dove chiamandolo si addestrano le
probabilit`a di emissione, per i relativi tag, determinati dalla suddivisione in token
della sequenza di caratteri (dopo la conversione al sottostante tag schema definito
nella classe HmmChunker).
Questo chunker `e basato sulla codifica di chunking all’interno del problema di
etichettatura (`e un contesto leggermente pi`u ricco e pi`u sensibile della codifica
standard I/O). Allora, un model character language gestisce la codifica, per ogni
tag (o stato) nel modello, e un modello di transizione bi-gram con probabilit`a
massima. Questo chunker esegue: il First-Best output, il N-Best output e il
Confidence output.
Riassumendo, questo parser `e il pi`u semplice anche se ha un chunker meno ac-
curato, ma in compenso ha una buona Recall per il emphConfidence output e
possiede delle stime abbastanza affidabili e se `e abilitata la funzione di caching,
esso `e molto veloce .
CharLmRescoringChunker
Il CharLmRescoringChunker estende la classe AbstractCharLmRescoringChunker
e fornisce un chunker, di tipo long-distance character language model-based, che
opera con il rescoring dell’uscita, avendo un chunker di tipo character language
model. Il modello esegue il rescoring sui chunker sottostanti. Essi sono un’istanza
della classe CharLmHmmChunker, i quali vengono configurati fornendo al costrut-
ture le seguenti specifiche: il tokenizer factory, la lunghezza del n-gram, il numero
di caratteri ed il rapporto di interpolazione. Il modello di rescoring utilizzato da
questo chunker si basa su un character language model delimitato per ogni tipo
di chunk, processando ulteriormente il testo non presente nei chunk con il char-
acter language model. L’addestramento viene fatto nel modo usuale, attraverso
una chiamate al metodo per il chunk handler, il quale, a sua volta, implementa
l’interfaccia ObjectHandler Chunking , permettendo cos`ı il suo addestramento
tramite dei chunking di esempi.
Questo chunker possiede un’ottima Precision, ma `e il pi`u lento fra tutti i chunker6
.
Esso usa un CharLmHmmChunker (si veda il punto precedente) per generare le
6
Questo accade sopratutto quando effettua due volte il calcolo dei punteggi sulle N-Best List.
53
ipotesi, che poi ricalcola utilizzando la distanza maggiore dei modelli di tipo lan-
guage character. Esso tende ad approssimare la confidenza stimata attraverso le
N-Best List, la quale per`o viene attenuata dal modello.
TokenShapeChunker
Il TokenShapeChunker utilizza il TokenShapeDecode per il named-entity e il tok-
enizer factory per implementare un entity detection, attraverso l’interfaccia Chunk.
Un chunker named-entity viene costruito partendo da un tokenizer factory e da un
decoder. Il tokenizer factory crea i token, i quali poi vengono inviati al decoder; i
tipi di chunk identificati sono derivati dai tipi di named-entity trovati. I token e
gli spazi bianchi restituiti dal tokenizzatore vengono concatenati per formare, nel
testo sottostante, una ”slice” (fetta) di chunk, restituiti dallo stessi chunker. Cos`ı
un tokenizer, simile al Stop List tokenizer o al Porter stemmer tokenizer, creer`a
una ”slice” di carattere, il quale non si abbiner`a all’input. Inoltre, `e possibile uti-
lizzare un filtro whitespace-normalizing tokenizer, come ad esempio per produrre
un testo normalizzato per la base di chunk.
Questo chunker funziona con un modello generativo, per prevedere congiuntamente
il token successivo ed il tag succesivo, i quali sono basati dal token precedente
e dal tag precedente. Le parole sconosciute o rare sono sostituite tramite una
classificazione Morphologically-Based (basati su un’istanza di TokenCategorizer).
Per utilizzare un chunker (ovvero per l’addestramento del modello) di questo tipo,
bisogna utilizzare la classe TrainTokenShapeChunker.
Riassumendo, questo chunker `e molto veloce, ma dispone solo del First-Best Output
e le sue prestazioni, normalmente, sono a met`a strada tra CharLmRescoringChun-
ker e CharLmHmmChunker.
4.4.4 Addestramento del modello per un sistema NER
Come `e stato accennato, il NER ha come compito quello di etichettare una data
sequenza di parole, in cui si assegna un fissato tag per ogni parola appartenente
alla frase in ingresso. Per poter fare l’addestramento del modello, indiferentemente
dalla lingua su cui si voglia costruire il proprio riconoscitore delle entit`a proprie,
si utilizza, per lo schema di codifica, il sistema BIO (o sistema OBI ). Con il tag
B X (Begin) si rappresenta la prima parola di un’entit`a propria di tipo X, per
esempio, al posto della X, PERS (Person) o LOC (Location). Il tag I X (Inside)
indica che una parola `e parte di un’entit`a propria, ma non `e la prima parola. Il
54
tag O (Outside) `e utilizzato per tutte le parole, che non sono delle entit`a proprie
(un esempio `e in Table 4.1 con una frase etichettata).
Figure 4.3: Addestramento e valutazione di un modello stocastico (HMM) per
NER.
Il chunker basato su modello `e tra i pi`u complessi rispetto ai due chunker prece-
denti; in questo approccio, il chunking con il miglior valore viene restituito dal
chunker pre-compilato, che `e stato letto da un file7
, il quale contiene un EN-
TITY MODEL.
Per la fase di addestramento del modello, bisogna quindi avvalersi dei dati di
addestramento, che devono contenere un ampio numero di token etichettati. Per
esempio, si consideri la frase ”Mr. Smith goes to Washington.” mostrata in Table
4.1, la quale mostra la lista di token e degli entity tag associati alla frase.
7
Questo file contiene un modello, il quale `e stato creato da un’addestramento precedente, su
dei dati di addestramento.
55
Table 4.1: Lista di Token e di Entity Tag associati in una frase.
Token tag
Mr. B PERS
Smith I PERS
goes O
to O
Washington B LOC
. O
Ogni tag `e costituito da un prefisso e un suffiso che indica il tag del corrente, del
precedente o del seguente token.
`E possibile costruire un modello, da un insieme di dati di addestramento, per
etichettare i token con gli entity tag. Il modello continua a tracciare il numero di
transizioni da un tag all’altro ed il numero di occorrenze di una parola dato un
tag.
Ora, si prenda in considerazione la frase precedente, la quale `e composta da sette
token (vedere la tabella precedente). Si `e in grado di impostare gli entity tag per
la data frase da una tabella di 6 righe e 9 colonne. In Table 4.2 si mostra solo
alcune delle nove colonne per brevit`a, dove ogni colonna rappresenta un entity tag;
essa contiene i token e gli entity tag generati da un modello.
Table 4.2: Lista di Token e di Entity Tag generati da un modello stocastico
(HMM).
Token B LOC · · · B PERS I PERS O
Mr. X
Smith X
goes
to
Washington X
. X
I valori della prima riga sono calcolati dal prodotto della probabilit`a di
iniziare in una colonna con tag x e la probabilit`a della parola ”Mr”, pre-
sente nel modello, per l’entity tag x. Le rimanenti righe della tabella, fatta
un’eccezione per l’ultima riga, sono calcolate dal prodotto della probabilit`a
di transizione, dall’entity tag x all’entity tag y, con la probabilit`a del token,
presente nel modello, per il dato entity tag. Infine, l’ultima riga nella tabella
`e il prodotto della probabilit`a di finire con un entity tag x e la probabilit`a
56
del carattere ”.”, presente nel modello, per il tag x.
Nel caso dell’esempio, l’insieme dei tag per i sette token della frase sono estratte
dalla tabella, iniziando dall’ultimo token e lavorando all’indietro fino ad arrivare
al primo token. Per ciascun token si calcola l’entity tag con la pi`u alta probabilit`a
utilizzando la tabella (o matrice) delle probabilit`a presente in Table 4.2.
L’output di questo algoritmo non pu`o essere utilizzato direttamente, in quanto se
ne occupa la classe HmmChunk, che ne gestisce la loro decodifica per i vari entity
tag (PERS, LOC, ORG e MISC), che vengono restituiti nel chunk.
In LingPipe `e possibile effettuare l’addestramento di un corpus e la cross-validation;
inoltre, `e possibile, sia con un chunker di tipo stocastico o sia con un chunker di
tipo stocastico con rescoring, utilizzare dei dizionari8
durante la fase di training
delle categorie. Esso, quindi, permette di costruire dei proprio modelli da utilizzare
all’interno dei sistemi NER, che applicano l’approccio statistico.
Funzioni di LingPipe per l’addestramento del modello
Per fare ci`o `e necessario, che le posizioni vengano ”alimentate” attraverso il metodo
trainDictionary . . . . Questo metodo non `e astratto ed `e disponibile sia per un
tradizionale chunker di tipo stocastico, attraverso la funzione CharLmHmmChun-
ker . . . , e sia per un chunker di tipo stocastico con rescoring, attraverso la funzione
CharLmRescoringChunker . . . .
Invece, per l’addestramento del modello, che sfrutta i dizionari, `e necessario uti-
lizzare il metodo trainDictionary . . . , cosicch`e nella fase di addestramento, la
Precision del modello aumenti. Questo metodo non `e astratto ed `e disponibile sia
per il tradizionale chunker di tipo stocastico (chunk.CharLmHmmChunker) e sia
per la versione rescoring (chunk.CharLmRescoringChunker).
Core Business Intelligence
Il Core Business Intelligence, ovvero colui che si occupa della gran parte del lavoro
di parsing del corpus annotato manualmente, `e la classe BioTagChunkCodec9
, la
quale si occupa sia del parsing, sia del chunking e sia della convalida del parsing.
La classe BioTagChunkCodec implementa un chunk per taggare sulla base dello
schema di codifica, ad esempio il sistema BIO (o sistema OBI ), assieme ad uno
specifico factory tokenizer.
8
In questo caso, i dizionari vengono utilizzati come gazetteer.
9
Questa classe `e thread-safe.
57
Lo schema di codifica/decodifica del sistema BIO
La base del sistema BIO `e quella di ”spezzare” il chunk, di tipo stocastico, in una
successione di token. Il primo token di tipo X in a chunk `e etichettato con B X,
e le sottosequenze di token in un chunk di tipo X sono etichettati con I X. Tutti
gli altri chunk sono etichettati con il tag O.
Si consideri, per esempio, la seguente stringa in input:
John Jones Mary and Mr. J . J . Jones ran to Washington .
012345678901234567890123456789012345678901236567890123
0 1 2 3 4 5
e la suddivisione in blocchi con questa data stringa:
(0 ,10):PERS, (11 ,15):PERS, (24 ,35):PERS, (43 ,13):LOC
L’indicizzazione viene fatta sia sul primo e sia sull’ultimo carattere, inoltre, si nota
che le due entit`a proprie (che sono due nomi di persona) ”John Jonus” e ”Mary”,
sono due chunk seperati di tipo PERS; mentre il blocco per ”Washington” appare
prima della fine del periodo ed `e un entit`a propria di tipo LOC.
Nel caso in cui si ha un tokenizzatore, che ”spezza” gli spazi e la punteggiatura, il
token inizia a partire dal + e continua attraverso i segni −.
John Jones Mary and Mr. J . J . Jones run to Washington .
+−−− +−−−− +−−− +−− +−+ ++ ++ +−−−− +−− +− +−−−−−−−−−+
In Table 4.3 i token si trovano nella colonna di destra, mentre nella colonna di
sinistra si trovano i tag utilizzati dalla schema di codifica/decodifica del sistema
BIO, utilizzati da LingPipe.
Nota: in ciascun blocco si possono avere un qualsiasi numero di
token.
Vi `e un singolo tag O con solo il prefisso di default; per il tag B X ed il tag I X
hanno entrambi il prefisso predefinito, mentre il suffisso `e diverso per tutti i tipi
di X chunk10
.
10
Con il simbolo X si intende, ad esempio: PERS, ORG, MISC, DATE, etc.
58
Table 4.3: Lista di Token e di Entity Tag associati in una frase.
Token Tag
John B PERS
Jones I PERS
Maby B PERS
and O
Mr. B PERS
J. I PERS
J. I PERS
Jones I PERS
ran O
to O
Washington B LOC
. O
Le sequenze di tag legali
Le sequenze dei tag legali sono descritte in Table 4.4, in cui la prima colonna
riporta schematicamente i tag e la seconda colonna mostra i tag che li seguono,
con le variabili che vanno su tutti i tipi di chunk:
Table 4.4: Le sequenze legali con il sistema BIO.
Tag Successivi tag legali
O O, B X
B X O, I X, B Y
I X O, I X, B Y
Nota: il tentativo di codificare etichette, con sequenze di tag illegali,
comporter`a al sollevamento di una eccezione.
59
4.5 Part-Of-Speech Tagger di LingPipe
Il Part-of-Speech Tagging11
(POS Tagging) `e un task complesso del NLP e consiste
nell’assegnazione automatica di un Part-of-Speech tag (POS tag) a ciascuna parola
in un testo. Sfortunatamente, la stessa parola pu`o essere taggata con differenti
POS tag, per questo il POS Tagging `e un task per la disambiguazione. Infatti,
egli assegna l’etichetta ad una parola in un testo (corpo) in corrispondenza ad una
particolare parte del discorso, basandosi sia sulla sua definizione, cos`ı come il suo
contesto, cio`e in rapporto con le parole adiacenti e collegate in una frase o in un
paragrafo.
Quindi, per fare questo tipo di ricoscimento `e necessario avere un modello stocas-
tico, in particolare un Hidden Markov Models (HMM), il quale `e stato preceden-
temente addestrato su una sequenza di frasi precedentemente etichettate, e poi
salvato su file. Con il modello, si pu`o effettuare l’operazione di associazione dei
POS tag[4, 5, 19] ai token, durante il processo di POS Tagging.
4.5.1 POS tag
Un POS Tagger assegna il tag pi`u probabile a ciascun token del testo utilizzando
il modello. Il numero standard dei POS tag sono otto. Essi sono: aggettivi,
avverbi, congiunzioni, articoli determinativi, nomi, preposizioni e verbi, i quali
vengono usati per trovare riferimenti ai nomi propri, alle frasi e identificare eventi
nel testo. Questo numero `e sufficiente per quei task, che hanno bisogno solo di
identificare i nomi o gli aggettivi senza ogni ulteriore qualificazione. I tag set usati
per identificare le parti del discorso a un livello pi`u dettagliato possono avere 100
o pi`u tag, che descrivono con maggior dettaglio una parte del discorso.
11
Nel corpus linguistico, il Part-of-Speech Tagging viene chiamato anche grammatical tagging
o word-category disambiguation.
60
4.5.2 Addestramento del modello per un sistema POS Tagger
Per la fase di addestramento del modello, bisogna avvalersi di un grande insieme
di frasi etichettate similmente alla frase mostrata in Table 4.4. Queste frasi cos-
tituiscono il modello che viene utilizzato per predire i tag delle parole presenti
nell’insieme di validazione.
Table 4.5: Lista di Token e di Entity Tag associati in una frase.
Token tag
The at
wartime nn
protocol nn
of in
September np
12 cd
. .
In un linguaggio dinamico, il lessico e la sintassi cambiano nel tempo e perci`o il
modello addestrato su tale linguaggio, non sar`a pi`u ben performante. Il modello
memorizza le stime di probabilit`a di transizioni di stato e lo stato data una certa
parola.
Figure 4.4: Addestramento del modello stocastico (HMM) per POS Tagger.
61
Il problema del POS Tagging pu`o essere essere indicato come l’identificazione del
pi`u probabile tag t1,n data la parola w1,n da una frase di lunghezza n. Si nota,
che il modello statistico (HMM) trova la sequenza dei tag pi`u simili per le parola
presenti nell’intera frase.
In questo modo `e possibile applicare la regola di Bayes per definire il problema
come
arg max
t1,n
p(t1,n|w1,n) = arg max
t1,n
p(w1,n|t1,n) × p(t1,n) (4.1)
= arg max
t1,n
n
i=1
p(w1,n|t1,n) × p(t1,n)
La prima parte dell’espressione (4.1) a destra dell’uguale rappresenta l’informazione
lessicale, che data la probabilit`a di una parola w1,n di essere vista con il tag t1,n,
mentre la seconda parte dell’espressione (4.1), sempre a destra dell’uguale, esprime
la probabilit`a del tag t1,n. La parte destra dell’espressione (4.1) pu`o essere estesa
usando la regola di chain per calcolare la probabilit`a, che una data parola w1,n sia
dipendente solo su un tag e non su una sequenza di tag. Il massimo del prodotto
di queste due probabilit`a d`a il tag pi`u probabile, che avrebbe generato la parola
osservata. Il numero delle possibili combinazioni di sequenze di tag di lunghezza n
`e grande e ci vorrebbe tempo per trovare la migliore di tutte queste possibilit`a. Per
questo, si fa qualche ipotesi per semplificare il calcolo. Si assume, che le parole
siano condizionalmente indipendenti l’uno dall’altro in un tag e un tag dipende
solo dal tag precedente.
Sulla base di questi presupposti, si pu`o stimare la probabilit`a di una data parola
w dato un tag t come il rapporto del numero di volte che la parola w `e stato visto
con il tag t e il numero di occorrenze del tag t.
p(w|t) =
Count(w, t)
Count(t)
(4.2)
La probabilit`a di sequenze di tag viene calcolata dal rapporto tra il numero di
volte che un tag tj seguito dal tag ti per il numero di volte che il tag ti `e stato
visto.
p(tj|ti) =
Count(ti, tj)
Count(ti)
(4.2)
62
Normalmente, viene aggiunto uno a tutti i conteggi per gestire i casi di parole
invisibili in entrambe le stime di probabilit`a. Questa operazione (aggiungendo
uno a tutti i conteggi) `e chiamato Laplace smoothing e distribuisce uniformemente
qualche probabilit`a a tutte le parole non viste.
4.5.3 Lettura del modello
Per la lettura del modello e la costruzione del decoder, si richiede soltanto: la
manipolazione del flusso dei dati, assieme al casting e al wrapping degli stessi.
Esso viene caricato leggendo il file che lo contiene, il quale `e posizionato in una
cartella prestabilita, per poi passarlo all’oggetto com.aliasi.hmm.HiddenMarko-
vModel istanziato; una volta terminata la fase di caricamento del modello si chiude
l’oggetto ObjectInputStream; e per finire, si istanzia l’oggetto decoder, al quale gli
viene passato come parametro l’oggetto com.aliasi.hmm.Hidden-MarkovModel del
modello appena caricato.
4.5.4 Tokenizzazione
Il codice per eseguire la decodifica `e molto semplice; in primo luogo, l’input ar-
riva sotto forma di righe di testo e si ha quindi bisogno di scomporlo in singoli
chunk.
Questo lo si fa con la creazione di un oggetto tokenizzatore, che permette di definire
un token come la pi`u lunga sequenza contigua non vuota di simboli alfabetici (pL),
cifre (d), trattini () ed apostrofi ( ); ma anche di singoli caratteri diversi dagli
spazi (S).
4.5.5 Analisi dei token
Per effettuare l’analisi dei token[4, 5], `e necessario avere una funzione che legge
da una cartella uno/pi`u file, con all’interno uno/pi`u documento/i ed un modello
statistico (HMM) addestrato, in questo caso, per poi eseguirci, sopra al/i docu-
mento/i, l’operazione di Part-of-Speech Tagger.
63
4.5.6 Risultato finale
Il risultato finale, che viene prodotto dal processo di POS Tagging sul testo in
input, `e una lista di token assieme ai loro associati POS tag.
Questo processo in LingPipe viene fatto prendendo i singoli token, elaborati prece-
dentemente, per poi taggarli ciascuno singolarmente.
Il modello utilizzato per l’etichettatura dei POS tag, non fa altro che creare le
ipotesi di probabilit`a in base alle posizioni dei token all’inizio o alla fine della
singola frase.
Si consideri, per esempio, la seguente stringa in input:
Time f l i e s l i k e s an arrow . This i s a second sentence .
Il risultato che si ottiene dal processo di POS Tagging `e il seguente:
Time/nn
f l i e s /vbz
l i k e s / cs
an/ at
arrow/nn
. / .
This/dt
i s /bez
a/at
second/od
sentence /nn
. / .
64
Chapter 5
Analisi del modulo POS Tagger di
LingPipe
Si `e effettuato l’analisi prestazionale del modulo POS Tagger di LingPipe ed even-
tualmente si `e pensato anche di sostituirlo con quello gi`a, il TreeTagger, presente
nell’estrattore terminologico TermExtractor, nel caso si fossero ottenuti risultati
soddisfacenti.
5.1 POS Tagger: confronto con il TreeTagger
5.1.1 TreeTagger
Il TreeTagger[25] `e un software Open Source, sviluppato da Helmut Schmid presso
l’Universit`a di Stoccarda, che consente di analizzare un testo ed ottenere il Part-
of-Speech[11] e la lemmatizzazione delle singole parole.
Due sono i vantaggi derivanti dalla lemmatizzazione e dall’etichetattura del testo.
Il primo vantaggio (derivante dalla lemmatizzazione) `e quello dell’ottimizzazione
delle basi di dati. Infatti in esse, saranno presenti solamente i lemmi ai quali
verranno ricondotte le forme presenti nel testo. I verbi saranno presenti nella base
di dati coniugati all’infinito e non in tutte le possibili forme in cui possono essere
coniugati; i sostantivi saranno presenti al singolare; aggettivi ed avverbi in inglese
non avrebbero teoricamente bisogno di essere lemmatizzati poich´e indeclinabili.
Ci`o comporta un notevole snellimento della base di dati e quindi un minore spazio
65
di memoria occupato da esso, ed un aumento non indifferente della velocit`a di
processo del software e di conseguenza dell’analisi.
Il secondo vantaggio (derivante dall’etichetattura) consiste nel fatto che i software
realizzati potranno effettuare ricerche nella base di dati soltanto su parole apparte-
nenti a determinate categorie grammaticali riducendo sensibilmente il numero di
query da effettuare ed aumentando di conseguenza le prestazioni del software. Si
potrebbe per esempio voler analizzare solo i nomi o solo gli avverbi. L’etichettatura
permette inoltre di dividere i lemmi presenti nella base di dati in tabelle diverse
secondo la categoria grammaticale.
Il TreeTagger[6] utilizza dei parametri di lingua, i quali vengono forniti diretta-
mente dal suo sito, per il suo utilizzo con testi in inglese, francese, tedesco, italiano,
spagnolo, russo, bulgaro e olandese. I parametri per altre lingue sono disponibili
da siti collegati alla pagina web TreeTagger. Per una lingua per la quale non es-
istono parametri, `e necessario annotare a mano alcuni data-tag, e quindi eseguire
un programma di training (fornito con il TreeTagger) per creare i parametri.
Per fare dei test comparativi tra TreeTagger e POS Tagger di LingPipe[19, 4]
si `e utilizzato il wrapper Java per il TreeTagger, sviluppato da Richard Eckart
de Castilho. Il TreeTagger4Java1
`e stato scritto con particolare attenzione alla
indipendenza della piattaforma ed `e facile da integrare nelle applicazioni, `e scritto
in Java ed `e per questo portabile su tutti i sistemi operativi, come: OS X, Ubuntu
Linux e Windows.
TT4J
Nel TT4J, la classe principale `e TreeTaggerWrapper. Esso genera e mantiene
un processo TreeTagger per ogni istanza di questa classe. Il processo associato
termina se il TT4J termina, oppure il processo viene riavviato automaticamente,
se il modello subisce delle modifiche; altrimenti il processo resta in esecuzione
(background), permettendo cos`ı di risparmiare del tempo.
1
Per semplicit`a, d’ora in avanti, lo si abbrevia a TT4J.
66
Il processo rimane inattivo quando non viene utilizzato, consumando solo un p`o
di memoria, fatta eccezione della CPU, che non viene impegnata.
Durante l’analisi, due thread sono utilizzati per comunicare con il TreeTagger.
Un thread scrive il token al processo TreeTagger, mentre l’altro thread riceve i
token analizzati.
Gli utenti all’interno del TT4J, includono un tokenizer, in quanto lo stesso non
dispone la funzione di tokenizzazione, questo perch`e ci sono delle librerie, che lo
svolgono in maniera ottima. Per esempio, un buon tokenizzatore in lingua inglese
`e presente nel parser della Stanford.
Per poter utilizzare il TT4J[4, 6] si `e implementato una piccola applicazione, che
legge da una cartella uno o pi`u file, con uno o pi`u testi, ed un modello adde-
strato per la lingua inglese, il quale viene utlizzato sul/sui testo/i per fare il POS
Tagging.
Per effettuare facilmente l’operazione di tokenizzazione, perch`e il TreeTagger non
offre metodi per fare questa operazione, `e stato integrato nell’applicazione la classe
PennTreebankTokenizerFactory2
di LingPipe e si implementa il metodo, che effet-
tua la tokenizzazione del testo.
Essa permette di effettuare l’operazione di tokenizzazione secondo lo standard
Penn Treebank; il metodo per tokenizer prende un array di stringhe, l’indice di
inizione e di fine. Per ricevere il token analizzato, si `e dovuto impostare un To-
kenHandler personalizzato con il metodo SetHandler . . . .
2
Nella classe PennTreebankTokenizerFactory si definisce l’espressione regolare.
67
5.1.2 Che cosa sono i tag-set?
Il tag-set `e un insieme di etichette, dove ciascuna di esse descrive il significato
(semantico o grammaticale) di un lessema a cui viene associato il tag. Esistono
varie tipologie di tag-set che vengono utilizzati; in questo particolare caso di stu-
dio, sono stati usati il Brown Corpus Tag-Set ed il TreeTagger Tag-Set, anche se
quest’ultimo si ispira al Penn TreeBank Project, ma il suo tag-set `e leggermente
diverso e pi`u grande3
del Penn TreeBank Project[25].
5.1.3 L’algoritmo Tag-Set Reduction
Come si `e accennato, per fare il confronto tra i due sistemi `e stato necessario
”ridurre” i singoli token etichettati secondo le regole del Brown Corpus Tag-Set e
del TreeTagger Tag-Set con i tag del Penn TreeBank Project[25].
Una tecnica trovata in rete, per la riduzione di un qualsiasi tag-set, `e quella pro-
posta da Thosten Brants[29]4
, dell’Universit`a di Saarlandes, il quale propone un
modo per creare un tag-set ridotto da un tag-set originario tale che le categorie, con
una distribuzione di frequenza molto simile in un corpus, siano combinate senza
perdere informazioni fornite dall’insieme dei tag originari. Questo viene fatto uti-
lizzando un algoritmo di clustering, per distribuire, con una certa probabilit`a, i tag
originari nelle classi, dove ciascuna di queste classi rappresenta il tag ridotto. Il
testo in input sar`a privo di ambiguit`a con il nuovo tagset ridotto, facendo in modo
che il tag originario sia ancora identificabile univocamente da quello nuovo.
3
Il TreeTagger Tag-Set contiene 58 tag.
4
La proposta messa a disposizione da Thosten Brants `e stata introdotta e valutata durante
un esperimento.
68
L’algoritmo proposto, denominato Tag-Set Reduction, prende spunto proprio da
questa tecnica, ma al posto di utilizzare la tecnica di clustering, si `e optato invece
per il metodo basato su regole, sotto forma di espressioni regolari, le quali associano
al tag originario in input, il nuovo tag ridotto; questa operazione pu`o essere vista
come funzione di riduzione sul tag-set originario (vedere Figure 4.4).
Figure 5.1: Funzione di riduzione del tag-set dell’algoritmo Tag-Set Reduction.
La funzione dell’algoritmo fRed non fa altro, che prendere in input un tag-set orig-
inario di partenza ed un’insieme formato da coppie di (tag-set di riduzione, regola
di riduzione), e trasforma tale tag-set originario nel nuovo tag-set ridotto.
Formalmente la funzione viene definita in questo modo
fRed : TagSetOrig × RegExpr → TagSetRed,
assicurando l’unicit`a dell’operazione di riduzione, in quanto le espressioni regolari
non vanno in conflitto tra di loro, evitando cos`ı di andare a trasformare (o sosti-
tuire) tag precedentemente trasformati (o sostituiti). Infatti una volta applicata
la regola corretta al tag originario si ottiene l’equivalente tag ridotto.
69
Di seguito, viene mostrato sia lo pseudo-codice dell’algoritmo.
prec.c.: tagRed, rule ∈ RuleSet,
tag ∈ TagSetOrig;
post.c.: TagSetRed;
function Tag-SetReduction(RuleSet, TagSetOrig)
TagSetRed := {0};
for tag ∈ TagSetOrig do
for rule, tagRed ∈ RuleSet do
if matches(tag, rule) then
TagSetRed := TagSetRed ∪ tagRed ;
break;
end if
end for
end for
return TagSetRed;
end function
La complessit`a computazionale `e
O(|m| × |n| × |k|),
dove:
m `e il numero dei tag da ridurre;
n `e il numero dei tag di riduzione;
k `e il tempo che impiega la regola a controllare, sotto forma di espressione
regolare, se il tag in analisi `e riducibile o non riducibile.
Ovviamente esiste un’altra soluzione, che permette di abbassare tale costo com-
putazionale andando ad utilizzare la hash table5
[28], come struttura dati per la
memorizzazione delle regole, in quanto in base alla grandezza dell’array in cui
avviene la ricerca e la memorizzazione delle informazioni, si ha una tabella della
complessit`a computazionale del tempo necessario alla ricerca stessa. Perci`o con
un maggiore spazio disponibile, corrisponder`a un minor tempo necessario nel caso
peggiore.
5
La hash table[28] `e una struttura dati usata per mettere in corrispondenza una data chiave
con un dato valore. Viene usata per l’implementazione di strutture dati astratte associative come
Map o Set.
70
5.1.4 L’applicazione Tag-Set Reduction Computing
Per l’esecuzione dell’esperimento si dovuto fare, oltre alla progettazione, l’implemen-
tazione dell’algoritmo Tag-Set Reduction insieme all’applicazione Tag-Set Reduc-
tion Computing, che lo incorpora (mostrata in Figure 4.5). Entrambi sono stati
scritti nel linguaggio di programmazione Java.
L’applicazione Tag-Set Reduction Computing, prende in input tre file: il primo file
contiene le coppie formate da (tag-set di riduzione, regola di riduzione), il secondo
file contiene i tag-set originali da ridurre, ed il terzo file contiene i token. In output,
esso restituisce un file contenente la ricostruzione della stringa con i token associati
ai tag ridotti dall’algoritmo.
La GUI dell’applicazione `e composta in questo modo:
i. una text area per la visualizzazione dei messaggi riguardanti:
a. il caricamento del file formato dalle coppie (tag-set di riduzione, regola
di riduzione),
b. il caricamento del file con i tag-set originari da ridurre,
c. il caricamento del file dei token,
d. il calcolo della riduzione dei tag-set,
e. il caricamento dei token,
f. la ricostruzione della stringa con i token associati ai nuovi tag ridotti,
g. gli errori sollevati dall’applicazione.
ii. un men`u per:
a. settare il path del file formato dalle coppie (tag-set di riduzione, regola
di riduzione),
b. settare il path del file coni tag-set originali,
c. settare il path del file con i token.
71
Il Tag-Set Reduction Computing `e un’applicazione multithreading, questo perch`e
le applicazioni che utilizzano il multithread sono pi`u reattive nei confronti degli
input degli utenti in quanto l’interfaccia utente (la GUI o la linea di comando)
rimane attiva, mentre le attivit`a che richiedono un uso intensivo del processore
vengono eseguite su thread diversi. Inoltre, il multithread si rivela utile anche per
la creazione di applicazioni scalabili, poich´e consente di aggiungere thread man
mano che aumenta il carico di lavoro.
Le funzioni dell’applicazione hanno associato un thread per la propria esecuzione;
la parte logica e la parte dell’interfaccia grafica dell’utente (GUI) hanno entrambe
due thread associati per il loro funzionamento. Nella fase di avvio un thread si
occupa di inizializzare e visualizzare la GUI, mentre un’altro thread si occupa di
eseguire il kernel dell’applicazione (la logica), in quanto si vuole evitare inutili
attese, come il blocco della GUI e le operazioni che vengono eseguite in modo
concorrente.
Figure 5.2: GUI dell’applicazione Tag-Set Reduction Computing.
72
5.1.5 Applicazione della riduzione del tag-set per il TreeTagger
Il test `e stato effettuato su un set di documenti, scritto in lingua inglese, presi dal
sito web CoNLL-2009 Shared Task, in particolare a questo link:
http://ufal.mff.cuni.cz/conll2009-st/trial-data.html.
Figure 5.3: GUI dell’applicazione Tag-Set Reduction Computing in esecuzione per
il TreeTagger.
73
Tabella di Mapping per il TreeTagger
In Table 4.6 vengono mostrate le regole di associazione al tag in lettura e le regole
di riduzione al tag ridotto.
Table 5.1: Tabella di Mapping per la riduzione del tag-set di TreeTagger.
Tabella di Mapping
Tag in lettura Regola di riduzione Tag ridotto
SENT (SENT|?|!) .
?
!
− (−| : |@| + |ˆ||/| =) HY PH
: ” ”
@
+
ˆ

/
=
( (() (
) ()) )
, (, ) ,
−− (−−) :
DT (DT) DT
CC (CC) CC
CD (CD) CD
EX (EX) EX
FW (FW) FW
IN (IN) IN
JJ (JJ) JJ
JJR (JJR) JJR
JJS (JJS) JJS
LS (LS) LS
MD (MD) MD
NN (NN) NN
NNP (NNP) NNP
NNS (NNS) NNS
NPS (NNPS) NNPS
74
Table 5.2: Tabella di Mapping per la riduzione del tag-set di TreeTagger (2).
Tabella di Mapping (cont.)
Tag in lettura Regola di riduzione Tag ridotto
PDT (PDT) PDT
POS (POS) POS
PP (PRP) PRP
PP$ (PRP$) PRP$
RB (RB) RB
RBR (RBR) RBR
RBS (RBS) RBS
RP (RP) RP
UH (UH) UH
V B (V B|V D|V H|V V ) V B
V D
V H
V V
V BD (V BD|V V D|V HD|V V D) V BD
V V D
V HD
V V D
V BG (V BG|V DG|V HG|V V G) V BG
V V D
V HD
V V D
V BN (V BN|V DN|V HN|V V N) V BN
V DN
V HN
V V N
V BP (V BP|V DP|V HP|V V P) V BP
V DP
V HP
V V P
75
Table 5.3: Tabella di Mapping per la riduzione del tag-set di TreeTagger (3).
Tabella di Mapping (cont.)
Tag in lettura Regola di riduzione Tag ridotto
V BZ (V BZ|V DZ|V HZ|V V Z) V BZ
V DZ
V HZ
V V Z
WDT (WDT) WDT
WP (WP) WP
WP$ (WP$) WP$
WRB (WRB) WRB
5.1.6 Applicazione della riduzione del tag-set per il POS Tagger di
LingPipe
Lo stessa procedura `e stata eseguita per il POS Tagger di LingPipe. In questo
caso abbiamo ottenuto pi`u tipologie di risultati.
Figure 5.4: L’applicazione Tag-Set Reduction Computing in esecuzione per il
LingPipe.
76
Tabella di Mapping per LingPipe
In Table 4.7 vengono mostrate le regole di associazione al tag in lettura e le regole
di riduzione al tag ridotto.
Table 5.4: Tabella di Mapping per la riduzione del tag-set di LingPipe.
Tabella di Mapping
Tag in lettura Regola di riduzione Tag ridotto
? ((?|.|!|; | :) .
.
!
;
:
− (−| : |@| + |ˆ||/| =) HY PH
@
+
ˆ
|
=
/
( (() (
) ()) )
, (, ) ,
−− (−−) −−
abl (abl|abn|abx|ap$|at| DT
ap|dt|dt$|dti|dts|dtx)
abn ” ”
abx ” ”
ap ” ”
ap$ ” ”
at ” ”
ap ” ”
dt ” ”
dt$ ” ”
dti ” ”
dts ” ”
77
Table 5.5: Tabella di Mapping per la riduzione del tag-set di LingPipe (2).
Tabella di Mapping (cont.)
Tag in lettura Regola di riduzione Tag ridotto
cc (cc|cs) CC
cs
cd (cd|od) CD
od
ex (ex) EX
fw (fw|nc) FW
nc
in (in) IN
jj (jj) JJ
jjr (jjr) JJR
jjs (jjs|jjt) JJS
jjt
md (md) MD
nn (nn) NN
np (np|np$) NNP
np$ ” ”
np (nns) NNP
(nps|nps$) POS
nps$
nns (nns) NNS
prp (prp|pn|pp|ppl|ppls|ppo PRP
|pps|ppss)
pn
pp
ppl
ppls
ppo
pps
ppss
78
Table 5.6: Tabella di Mapping per la riduzione del tag-set di LingPipe (3).
Tabella di Mapping (cont.)
Tag in lettura Regole di riduzione Tag ridotto
pp$ (pp$|pn$|pp$$|prp$) PRP$
pn$
pp$$
prp$
rb (rb|rn| ∗ |abl|abn|abx|nr) RB
rn
∗
abl
abn
abx
nr
rbr (rbr) RBR
rbs (rbs|ql|qlp) RBT
ql
qlp
rp (rp) RP
uh (uh) UH
vb (vb|be|do|hv) V B
be
do
hv
vbd (vbd|bed|bedz|hvd) V BD
bed
bedz
hvd
vbg (vbg|hvg|beg) V BG
hvg
beg
vbn (vbn|ben|dod|hvn) V BN
ben
dod
hvn
79
Table 5.7: Tabella di Mapping per la riduzione del tag-set di LingPipe (4).
Tabella di Mapping (cont.)
Tag in lettura Regole di riduzione Tag ridotto
vbp (vbp|bem|ber) V BP
bem
ber
vbz (vbz|bez|doz) V BZ
bez
doz
wdt (wdt) WDT
wpo (wpo|wps) WP
wps ” ”
wp$ (wp$) WP$
wrb (wrb|wql) WRB
wql ” ”
5.1.7 Conclusioni
Per confrontare i due sistemi (TreeTagger e POS Tagger di LingPipe), si `e fatto
uso di un modello di verit`a, messo a disposizione dalla Thirteenth Conference on
Computational Natural Language Learning (CoNLL 2009).
I risultati restituiti dal TreeTagger e dal POS Tagger di LingPipe non sono
equivalenti, anche se si `e utilizzato l’algoritmo di riduzione, dalle regole del Brown
Corpus Tag-Set alle regole del Penn TreeBank Project. La stessa operazione di
riduzione `e stata fatta anche per le regole del sistema TreeTagge, dopodich`e `e stato
possibile applicare l’algoritmo di validazione con il modello di verit`a.
Per fare la validazione, l’algoritmo prende in input il file con i valori restituiti dal
singolo sistema (TreeTagger o dal POS Tagger di LingPipe) e il file con il modello
di verit`a del CoNLL2009. Si confronta ciascun valore presente nella lista dei valori
prodotti dal dal singolo sistema, con ciascun valore del modello di verit`a; se sono
uguali, allora, si incrementa il numero di tag ”presi” e si selezionano i successivi
due valori, uno dalla lista dei valori prodotti dal dal singolo sistema e l’altro dal
modello di verit`a, facendo nuovamente il confronto; iterando fino ad avere letti
tutti i valori della lista dei valori prodotti dal singolo sistema e confrontati tutti
con i valori del modello di verit`a. Terminata la fase di conteggio dei tag ”presi”,
si calcola la Precision, la Recall e la F1-Score.
80
Il calcolo della Precision, della Recall e del F1-Score
Come `e stato affermato prima, per valutare[20] entrambi i sistemi (TreeTagger e
POS Tagger di LingPipe), l’operazione di valutazione viene fatta confrontando i
valori prodotti dal singolo sistema, con i valori del modello di verit`a valido, creato
appositamente da un linguista esperto.
Per fare questo tipo di operazione si utilizzano la Precision, la Recall e la F1-Score
(vedere Sezione 6.1 e Sezione 6.2), che sono tre comuni classificazioni statistiche,
utilizzate in diversi ambiti, come per esempio l’Information Retrieval.
La Precision pu`o essere vista come una misura di esattezza o di fedelt`a o di cor-
rettezza, mentre la Recall `e una misura di completezza. Durante l’attivit`a di
classificazione, i termini true-positives, true-negatives, false-positives e
false-negatives fanno il confronto dei risultati del classificatore con un test
tramite un giudizio esterno (o modello di verit`a). I termini positivi e negativi si
riferiscono alla previsione del classificatore (a volte conosciuto come l’aspettativa),
e le condizioni di vero e falso si riferiscono al fatto che la previsione corrisponde al
giudizio esterno (noto anche come l’osservazione).
La Precision (P) e la Recall (R), in questo contesto, sono definiti come
P =
tag–presi
num–word–tag
e
R =
tag–presi
num–tot–tag
.
Si ha, che num-word-tag `e numero di parole per cui si `e scelto un tag, mentre
num-tot-tag `e il numero totale delle parole da etichettare.
Siccome entrambi i sistemi, POS Tagger di LingPipe e il TreeTagger, scelgono
sempre un tag per ogni parola, si ha la Precision e la Recall uguali.
Infine, si ha la F1-Score (chiamata anche F-Score o F-Measure), che `e la misura
dell’accura-tezza di un test, la quale considera sia la Precision e sia la Recall di
un test per calcolare il punteggio.
Nella Table 4.10 si mostrano i risultati finali ottenuti, dove il numero di token presi
dal POS Tagger di LingPipe `e di parecchio inferiore al numero dei token presi
dal TreeTagger, differendone di 31; stesso discorso vale per quanto riguarda: la
Precision, la Recall e F1-Score, dove il TreeTagger `e notevolmente avanti rispetto
al POS Tagger di LingPipe.
81
Table 5.8: Tabella riassuntiva dei risultati finali.
Risultati Finali
- TreeTagger POS Tagger di LingPipe
Tag presi 215 su 219 185 su 219
Precision ≈ 99% ≈ 84%
Recall ≈ 99% ≈ 84%
F1-Score ≈ 99% ≈ 84%
In conclusione, si pu`o dire che ci sono delle differenze tra i due sistemi. La prima
differenza sta sicuramente nel processo di tokenizzazione, in quanto `e stato utiliz-
zato lo standard Penn Treebank Tokenization; la seconda riguarda con molta prob-
abilit`a al corpus utilizzato per costruire il modello del POS Tagger di LingPipe, in
quanto i testi utilizzati per l’addestramento sono stati etichettati con il Brown Cor-
pus Tag-Set. Tuttavia, anche se `e stato implementato un’algoritmo di riduzione
dal tag-set originario al tag-set ridotto per aggirare questo problema, i risultati
non sono stati buoni e la differenza che separa i due sistemi `e di ben 14 punti
percentuale.
82
Chapter 6
Architettura del sistema
6.1 La progettazione in UML del sistema
L’obiettivo del sistema `e quello di riconoscere (in arabo, in inglese e in italiano) le
seguenti categorie di entit`a proprie:
• PERS,
• LOC,
• ORG e
• MISC.
6.1.1 Glossario di Progetto
• API : insieme di procedure disponibili al programmatore.
• NER: sistema che estrae e riconose l’entit`a proprie da un testo non strut-
turato.
• Utente: persona abilitata ad accedere al sistema a qualsiasi titolo o scopo.
• Sistema: insieme di elementi interconnessi tra di loro o con l’ambiente esterno
tramite reciproche relazioni.
• Regole: insieme di norme prestabilite, espresse sotto la forma di espressioni
regolari.
83
• Modello: rappresentazione di un oggetto, che corrisponde alla cosa modellata
per il fatto di riprodurne alcune caratteristiche o comportamenti fondamen-
tali, espresso sotto la forma di un modello statistico, per esempio un Hidden
Markov Models (HMM).
• Entit`a proprie o (NEs): identificano chiaramente un elemento da un insieme
di altri elementi, che hanno caratteristiche simili.
6.1.2 Gli attori
I ruoli considerati per gli attori sono:
• Ruolo Utente: `e un utente abilitato ad accedere ed ad utilizzare il sistema.
• Ruolo LingPipe: `e un sistema che fornisce le API per la linguistica com-
putazionale.
• Ruolo Lucene: `e un sistema che fornisce le API per il reperimento ed il
trattamento delle informazioni.
• Ruolo JXL: `e una libreria per leggere, scrivere e modificare dinamicamente
fogli di calcolo Excel.
Figure 6.1: Diagramma degli attori.
6.1.3 Requisiti del sistema
L’analisi dei requisiti rappresenta una delle prime fasi nel ciclo di vita di un
prodotto software, lo scopo generale dell’analisi `e stabilire che cosa il sistema in
84
questione deve fare. In questo caso il progetto si svilupper`a tramite UML. `E im-
portante e indispensabile a questo punto definire i requisiti funzionali e quello non
funzionali.
6.1.4 Requisiti Funzionali
ID Descrizione Priorit`a
RF01 Selezione lingua da parte dell’utente Indispensabile
RF02 Acquisizione di uno o pi`u testi inseriti dall’utente Indispensabile
RF03 Estrazione delle singole frasi nel/i testo/i Indispensabile
RF04 Estrazione e riconoscimento delle entit`a proprie (ambigue Indispensabile
e non ambigue) attraverso delle regole
RF05 Riconoscimento delle entit`a proprie ambigue applicando Indispensabile
un modello stocastico (HMM)
RF06 Applicazione di un filtro per eliminare il rumore presente Indispensabile
(tramite operazioni di stemming e di normalizzazione)
nelle entit`a proprie
RF07 Eliminazione delle entit`a proprie doppione e fusione delle Indispensabile
entit`a proprie riconosciuti
RF08 Salvataggio delle entit`a proprie in un file Excel Indispensabile
Divisione in sotto-requisiti fuzionali
In base ai requisiti di sistema, precedentemente elencati, `e possibile suddividere il
quarto requisito funzionale (RF04), in tre sotto-requisiti:
ID Descrizione Priorit`a
RF04:01 Si provvede alla preparazione del data set training un Indispensabile
set di notizie prese dall’ANSA con gli opportuni tag
OBI o all’acquisizione di un corpus gi`a annotato
RF04:02 Si provvede all’addestramento (o all’acquisizione) del Indispensabile
modello del NER, con gli opportuni test di valutazione
RF04:03 Costruzione delle regole, espresse tramite espressioni Indispensabile
regolari
85
Requisiti di prestazione
ID Descrizione
RNF-PRE01 Sistema con quad-core processor da 2 Ghz in su e 8 Gbytes di RAM
RNF-PRE02 Sistema operativo basato su kernel Linux/Unix e Windows Server
RNF-PRE03 Java VM versione 6 o superiore
6.1.5 Requisiti Non-Funzionali
6.1.6 Casi d’Uso
Il diagramma dei Casi d’Uso `e il risultato dell’attivit`a di ingegneria dei requisiti
ed `e composto da tre componenti:
• attori: i ruoli assunti da soggetti tramite il sistema.
• casi d’uso: quello che gli attori possono fare con il sistema.
• relazioni: rapporti tra attori e casi d’uso.
Figure 6.2: Diagramma dei Casi d’Uso.
86
6.1.7 Analisi dei punti funzione
La metrica dei punti funzione permette una valutazione funzionale del sistema a
partire dalle prime fasi dello sviluppo software, indipendentemente dalle tecnologie
hardware/software utilizzate.
Le linee guida del calcolo Function Points (FP) sono oggi standardizzate dall’orga-
nismo Internazionale Function Point User Group (IFPUG) e tale misura coinvolge
due aree di valutazione:
• Unadjusted Function Point (UFP): riflette le funzionalit`a fornite all’utente
dell’applicazione.
• Value Adjustement Factor (VAF): valorizza la complessit`a delle funzionalit`a
generali fornite all’utente.
Come passo preliminare `e necessario distinguere e classificare le funzionalit`a fornite
dall’utente (e da lui visibili) all’interno di 5 categorie (function types), a loro volta
raggrupabili in due macro aree: funzioni dati e funzioni transazionali.
#In #Out #Query #Ext In #File
RF01 Selezione lingua 1 1 0 1 0
RF02 Acquisizione testo/testi 2 1 0 0 1
RF03 Estrazione frasi dal testo 2 3 0 0 1
RF04 Estrazione e riconoscimento 2 3 0 0 3
delle entit`a proprie (ambigue
e non ambigue) tramite rego-
le
RF05 Riconoscimento delle entit`a 2 3 0 0 2
proprie ambigui tramite
modello stocastico (HMM)
RF06 Applicazione Filtro alle 3 3 0 0 1
entit`a proprie disambiguate
RF07 Eliminazione e fusione 3 3 0 0 1
delle entit`a proprie doppione
RF08 Salvataggio delle entit`a 1 1 0 0 1
proprie in un file Excel
La difficolt`a di realizzazione dei casi d’uso `e stata pesata con un coefficiente
derivante dalla Table 5.1.
A questo punto, supponendo di avere n componenti, il conteggio `e totalmente
87
Table 6.1: Tabella dei coefficienti.
Tipologia Valore Min Max
Facile (Valore 1) 1 0 4
Medio (Valore 2) 2 5 7
Difficile (Valore 2) 3 8 20
definito dalla formala seguente:
UFP =
n
i=1
peso(function(Typei, compli)).
In questo caso particolare si `e ottenuto i seguenti risultati:
#In #Out #Query #Ext In #File #Somma #Diffic. #Parz.
RF01 1 1 0 1 0 3 1 3
RF02 2 1 0 0 1 4 1 4
RF03 2 3 0 0 1 6 3 18
RF04 2 3 0 0 3 8 3 24
RF05 2 3 0 0 2 7 3 21
RF06 3 3 0 0 1 7 3 21
RF07 2 3 0 0 1 6 3 18
RF08 1 1 0 0 1 3 2 6
Totale 115
Value Adjustment Factor (VAF)
Una volta determinato il valore dell’UFP, si deve ”raffinare” il conteggio con un fat-
tore correttivo, che valorizzi la complessit`a della funzionalit`a fornite dall’utente.
Il calcolo del VAF ottenuto, consente di correggere il valore dell’UFP di un 35% e
di giungere al calcolo finale dei punti funzione attraverso la seguente formula:
FP = UFP × V AF
Il VAF `e determinato in base a 14 caratteristiche del sistema, dette General System
Characteristic (GSC), utilizzando al fine di valutare la complessit`a generale del
sistema basandosi su una scala a 6 valori:
0 = non prensene o di nessuna influenza
88
1 = influenza secondaria o poco significante
2 = influenza moderata
3 = influenza media
4 = influenza significante
5 = influenza forte generalizzata
Sommando i singoli valori assegnati alle varie GSC e applicando la seguente formula
si calcola il VAF:
Table 6.2: Valori di aggiustamento dei VAF.
Fi Domanda Peso
1 Il sistema richiede salvataggi e recuperi affidabili? 1
2 Si richiedono comunicazioni di dati? 5
3 Ci sono funzioni di elaborazione distribuita? 0
4 Le prestazioni sono un fattore critico? 5
5 Il sistema funzioner`a in un ambiente operativo esistente, utilizzato 5
a fondo?
6 Il sistema richiede inserimenti di dati in linea? 4
7 L’inserimento di dati in linea richiede che la transizione si articoli 5
in pi`u schemi o pi`u operazioni?
8 I file principali sono aggiornati in linea? 4
9 I dati d’ingresso o di uscita, i file e le interrogazioni sono complessi? 5
10 L’elaborazone interna `e complessa? 5
11 Il codice `e stato progettato per essere riusabile? 5
12 La progettazione comprende anche conversioni ed installazioni? 1
13 Il sistema `e stato progettato per essere installato in pi`u organizzazioni? 2
14 L’applicazione `e stata progettata per facilitare le modifiche e per essere 5
di semplice uso da parte dell’utente finale?
Calcolo dei Function Point (FP):
FP = 115 × [0.65 + (0.01 × 52)] = 115 × 1.17 = 134.55
89
6.1.8 Diagramma delle Attivit`a
Il diagramma delle attivit`a (o Activity Diagram) descrive le attivit`a da svolgere per
realizzare una data funzionalit`a e pu`o essere utilizzato durante la progettazione del
software per dettagliare un determinato algoritmo. Di seguito vengono mostrati i
seguenti diagrammi delle attivit`a.
i. Diagramma delle attivit`a del componente principale (vedi Figure 5.3).
Figure 6.3: Diagramma delle attivit`a del componente principale.
90
ii. Diagramma delle attivit`a del modulo English NER (vedi Figure 5.4).
Figure 6.4: Diagramma delle attivit`a del modulo English NER.
91
iii. Diagramma delle attivit`a del modulo Italian NER (vedi Figure 5.5).
Figure 6.5: Diagramma delle attivit`a del modulo Italian NER.
92
iv. Diagramma delle attivit`a del modulo Arabic NER (vedi Figure 5.6).
Figure 6.6: Diagramma delle attivit`a del modulo Arabic NER.
93
6.1.9 Diagramma dei Componenti
La Figure 5.7 illustra il diagramma dei componenti principale dell’applicazione,
senza scendere nei dettagli dei singoli package dell’applicazione. Esso contiene le
JRE System Library, il Package NER Multi-language, il Package Arabic NER, il
Package English NER, il Package Italian NER e le Referenced Libraries.
Figure 6.7: Diagramma dei componenti relativo alle classi del progetto.
94
La Figure 5.8 illustra il diagramma dei componenti del Package NER Multi-
language, ovvero il Core Bussiness dell’applicazione. Esso contiene le, in det-
taglio, le classi, i metodi e le variabili presenti in esso, assieme alle relazioni fra di
esse.
Figure 6.8: Diagramma dei componenti relativo alle classi del Package NER Multi-
language.
95
La Figure 5.9 illustra il diagramma dei componenti del Package English-NER. Esso
contiene le, in dettaglio, le classi, i metodi e le variabili presenti in esso, assieme
alle relazioni fra di esse.
Figure 6.9: Diagramma dei Componenti relativo alle classi del Package English-
NER.
La Figure 5.10 illustra il diagramma dei componenti del Package Italian-NER. Esso
contiene le, in dettaglio, le classi, i metodi e le variabili presenti in esso, assieme
alle relazioni fra di esse.
Figure 6.10: Diagramma dei Componenti relativo alle classi del Package Italian-
NER.
96
La Figure 5.11 illustra il diagramma dei componenti del Package Arabic-NER.
Esso contiene in dettaglio: le classi, i metodi e le variabili presenti in esso, assieme
alle relazioni fra di esse.
Figure 6.11: Diagramma dei Componenti relativo alle classi del Package Arabic-
NER.
6.1.10 Gestione requisiti non-funzionali
Il sistema non possiede nessuna architettura di tipo client/server, server appli-
cation o desktop application, in quanto esso `e un componente, che deve essere
inserito all’interno dell’estrattore terminologico TermExtractor (una web applica-
tion), perci`o la sua architettura deve essere uguale all’estrattore terminologico
TermExtractor e deve essere eseguibile sul Server.
Requisiti non-funzionali lato Server
Il componente deve permettere di avere pi`u connessioni simultanee, le quali non
hanno bisogno di fare operazioni di lettura/scriittura sul server, ad eccezione del
file con i risultati prodotti dal componente stesso. Infine, il componente non ha
bisogno di memorizzare nessun file o archivio.
97
La configurazione hardware consigliata `e la seguente:
• Processore Intel CPU i7 4.00Ghz con 8MB di cache di secondo livello.
• Ram 16GB DDR3.
• Hard Disk da 500MB ciascuno ad alta velocit`a e connessi in Raid 2.
• Interfaccia Ethernet a 1Gbit.
• Sistema Operativo Linux.
• Java versione 6 o superiore.
98
6.2 Schema dell’architettura
Il sistema, progettato ed implementato, `e un component, che deve essere inserito
all’interno dell’estrattore terminologico TermExtractor, mantenendo e rispettando,
a sua volta, il work-flow dello sistema principale; esso aggiunge la funzione di
estrazione e riconoscimento delle entit`a proprie provenienti da uno o pi`u testi dati
in input, scritti nelle seguenti lingue:
• inglese,
• italiana,
• araba;
ed infine salvandoli sul file in formato Excel.
Come descritto in precendenza, per poter mantenere il work-flow del sistema prin-
cipale, il component possiede l’architettura a pipeline. A sua volta, esso contiene
all’interno tre moduli, che eseguono lo stesso compito, ma con delle leggere dif-
ferenze di funzionalit`a, le quali verrano poi spiegate, con maggiori dettagli.
Il sistema funziona in questo modo: in input prende il tipo della lingua scelta, da
parte dell’utente, e il testo, il quale contiene le news nella lingua selezionata. In
base alla lingua scelta si attiva il modulo NER per quella lingua, con l’istanziazione
di un thread per la gestione dello stesso. L’output, che restituisce il sistema, `e
costituito da una lista, salvata su file Excel, di entit`a proprie etichettate con il tag
specifico (PERS, LOC, ORG e MISC).
La sua architettura, in generale, pu`o essere sintetizzato con lo schema in Figure
5.12, detta Macro del sistema NER, con la quale si mostra l’architettura dell’intero
component di estrazione terminological NER Multi-Language (English NER, Ital-
ian NER e Arabic NER).
99
Figure 6.12: Schema dell’architettura Macro del sistema NER Multi-Language.
Il discorso vale per i singoli moduli NER, i quali possegono l’architettura a pipeline
(anche se tutti e tre i moduli NER differiscono in alcune funzioni). Essi seguono
essezialmente quattro step, che sono:
• Sentence Extraction,
• Grammar Configuration,
• Filter,
• Merge.
Tutti e quattro gli step saranno ampiamenti descritti nelle sezioni successive.
100
6.2.1 Estrazione delle frasi
La prima fase, quella di Sentence Extraction[5], non `e uguale per tutti e tre i
moduli NER.
Il component, prima di iniziare ad estrarre e a riconoscere le entit`a proprie, applica
la funzione per estrarre le frasi da un testo, dove nel caso del modulo Arabic NER,
si utilizzano le regole per il loro riconoscimento, mentre nel caso del modulo English
NER e Italian NER, si utilizza un modello euristico1
, ovvero , ovvero un statistical
language model, sempre per il loro riconoscimento. In entrambi i casi, tale compito
viene eseguito leggendo un testo in input ed estraendo la frase, quando incontra
un ”confine” della frase. Un esempio potrebbe essere, nel caso della lingua inglese:
il punto (”.”), il punto esclamativo (”!”), ed il punto esclamativo (”?”), che sono
tipicamente i caratteri di delimitazione (o di ”confine”) di una frase, analogamente
al carattere di spazio che separa i token.
Figure 6.13: Schema per l’estrazione della frase da un testo tramite un modello
euristico.
Il risultato che si ottiente da questa operazione `e una lista di frasi, le quali sono pi`u
che sufficienti per comprendere il contenuto oppure per estrarre le entit`a proprie
presenti in ciascuna frase del testo stesso.
6.2.2 Grammar Configuration
Nella fase per la Grammar Configuration sono state costruite due tipologie di classi
per le regole e differiscono nei tre moduli NER. Tali classi sono:
- Classi delle regole non-ambigue.
- Classi delle regole ambigue.
La prima classe contiene tutte le regole non-ambigue, per l’estrazione e l’identificazione
delle entit`a proprie, le quali vengono associate univocamente allo specifico tag
1
Tale modello euristico `e lo stesso, che viene utilizzato per trovare i token in un testo.
101
(PERS, LOC, ORG e MISC). Il principio della non-ambiguit`a si basa esclusiva-
mente sulle trigger word all’iterno della regola. Il compito della trigger word `e
quello di far attivare la regola, ovvero il processo di estrazione e riconoscimento
delle entit`a proprie legate alla stessa, nel caso in cui, all’interno del testo in input,
si riscontri la presenza di una o pi`u trigger word. Un esempio di regola non-
ambigua, che si pu`o citare `e quella per le entit`a proprie di tipo PERS, dove si
ha come prefisso la sigla (Mr.|Mrs.|Miss.) prima del nome e/o cognome della
persona.
Mentre, la seconda classe contiene tutte le regole ambigue, per l’estrazione e
l’identificazione delle entit`a proprie, i quali non hanno nessuna associazione uni-
voca, per questo bisogna applicare un algoritmo di disambiguazione che analizza
il contesto delle probabili entit`a proprie estratte e le associa univocamente, con il
tag specifico (PERS, LOC, ORG e MISC). In questo caso, le regole ambigue, che
sono state prese in considerazione sono quelle, che si basano sulla Capitalizzazione
Convenzionale[15] delle parole.
Capitalizzazione Convenzionale
Nei sistemi ortografici europei, questo caso di distinzione dell’alfabeto `e fatto in
base ai contesti, e come viene mostrato secondo la Table 5.3. Come eccezione al
criterio di confidenza adottato, si prova a ”filtrare” le parole capitalizzate estratte
e riconosciute come entit`a proprie, ma che in verit`a non lo sono.
Nell’inizio frase, se una parola inizia una frase o segue la punteggiatura, essa `e
capitalizzata e pu`o essere considerata dal sistema come un’entit`a propria, oppure
essa viene trovata sulla lista delle parole comunemente frequenti. Ciascuna lingua,
in questo caso l’italiano e l’inglese, contiene tutte le parole non capitalizzate pi`u
comunemente frequenti, chiamate anche Stop Word.
Sia nella lingua inglese e sia nella lingua italiana, i nomi comuni non sono capitaliz-
zati, presentando per il criterio adottato una sfida, infatti nomi come euro, dollaro
non vengono identificati come nomi di persona, ma bens`ı vengono identificati come
nomi comuni.
I titoli personali (come Dr., Prof., etc) nella lingua inglese sono convenzionalmente
capitalizzati, mentre nella lingua italiana non sempre sia usa questa convenzione,
in quanto non `e obbligatorio. I titoli spesso o sempre appaiono immediatemente
prima del nome della persona.
Gli acronimi, sia nella lingua inglese e sia nella lingua italiana, sono convenzional-
mente capitalizzate, anche se possono degradere le perfomance nella fase di es-
102
trazione ed identificazione.
Nella lingua inglese le entit`a di forma aggettivale, come la nazionalit`a o come la
religione (per esempio le parole American e Islamic) sono capitalizzate e entrambe,
secondo il CoNLL e BBN vengono identificate come di tipo MISC. Mentre nella
lingua italiana, a differenza della lingua inglese, le forme aggettivali non sono
capitalizzate, come la nazionalit`a o come la religione (per esempio le parole italiana
e cattolica), invece, la forma nominale della nazionalit`a `e capitalizzata.
Table 6.3: Tabella riassuntiva per l’applicazione della Capitalizzazione Conven-
zionale, come regola, nella valutazione dei linguaggi. S = si capitalizzata; N = non
capitalizzata; Q = qualche volta.
Capitalizzata? Inglese Italiano
Pi`u entit`a Y Y
Inizio frase Y Y
Nomi comuni N N
Titoli personali Y Q
Acronimi Y Y
Entit`a aggettivali Y N
Disambiguazione delle entit`a proprie
Per effettuare la disambiguazione delle entit`a proprie, estratte con le regole am-
bigue, si `e deciso di applicare l’approccio basato su modello stocastico (HMM), in
questo modo si `e potuto disambiguarli ed associargli un unico tag e ben specifico.
L’utilizzo di questo approccio necessit`a di un modello, per questo motivo `e stato
necessario implementare un’applicazione, che addestri il modello e testi a livello di
perfomance il modello.
X-NERVal
Per l’addestramento del modello si `e progettato ed implementato un’applicazione,
detta X-NERVal (mostrata in Figure 5.14), la quale `e stata scritta nel linguag-
gio di programmazione Java, per poi utilizzarlo, come parser, LingPipe. Tale
applicazione restituisce in output:
• Un determinato numero di modelli (sotto forma di file binario), dove il nu-
mero dei modelli viene specificato in input, in base al numero di folds, con
cui i dati di addestramento vengono divisi.
103
• Le perfomance2
della validazione dell’addestramento fatti su ciascun modello.
• Le perfomance totali ottenuti da tutti i modelli.
L’applicazione stessa possiede una GUI, suddivisa in:
• una text area per la visualizzazione dei messaggi riguardanti:
– i file letti da input,
– i valori dei parametri inseriti,
– i token ed i tag letti,
– i tipi di tag trovati,
– il numero di token e di frasi letti,
– i valori di Precision, Recalll e F1-Score per ciascun modello e di tutti i
modelli combinati,
– gli errori sollevati dall’applicazione.
• una text field per l’inserimento del numero di fold da parte dell’utente,
• una text field per l’inserimento della lunghezza n-gram da parte dell’utente,
• una text field per l’inserimento del numero chars,
• una text field per l’inserimento del rapporto di interpolazione in formato
decimale,
• una text field per l’inserimento del valore (true/false) per l’utilizzo di
dizionari,
• una text field per l’inserimento del valore (true/false) per l’inclusione di
entit`a di tipo MISC,
• un menu per:
– settare il path del corpus,
– settare il path dei gazetteer (LOC, ORG e PERS).
2
Per perfomance si intende i valori di Recall, di Precision e di F1-Score.
104
Figure 6.14: GUI per l’addestramento e la cross-validation del modello.
X-NERVal `e implementato in multithreading, ciascuna funzione ha associato un
thread per la propria esecuzione. La parte logica e la parte GUI hanno entrambe
due thread associati per il funzionamento. Nella fase di avvio dell’applicazione un
thread si occupa di inizializzare e visualizzare la GUI, mentre un’altro thread si
occupa di eseguire il kernel dell’applicazione (la logica); in questo modo si evitano
attese inutili (o il blocco della GUI) e le operazioni stesse possono essere eseguite
in modo concorrente.
Come mostra l’immagine l’applicazione, attraverso la sua GUI, prende in input i
seguenti parametri3
:
• N-Gram: si intende la lunghezza degli n-gram (sequenza contigua di n ele-
menti di una data sequenza di testo o discorso).
• Num-Chars: `e il numero totale di caratteri unici.
3
Tali parametri sono inizialmente configurati con dei valori di default.
105
• Interpolation-Ratio: `e il rapporto di interpolazione lingua-modello.
• Number-of-Analyses-Rescored: `e il numero di chunking sottostanti rivalutati.
• Including-MISC-Entity-Type: si includono le entit`a di tipo MISC.
• Use-Dictionary: si utilizza uno o pi`u dizionari nella fase di training del
modello (vero o falso).
• Directory-Corpus: il percorso fisico del corpus per il training del modello.
• Directory-Gazetteer: il percorso fisico dei gazetter per il training del modello.
• Number-Folds: il numero di fold, dove ciascun fold `e associato ad un modello.
L’applicazione `e molto semplice, in quanto i passi, che effettua sono:
1. Lettura dei parametri descritti sopra e del corpus assieme ai gazetteer, se
abilitato.
2. Caricamento del corpus ed identificazione dei tipi delle entit`a proprie.
3. Verifica se la sequenza dei tag associati ai token `e legale.
4. Assemblamento delle frasi dai token letti.
5. Addestramento di uno o pi`u modelli applicando il metodo CharLmRescor-
ingChunker (vedere Sezione 4.3.3).
6. Salvataggio dei modelli appena addestrati in file binari.
7. Calcolo delle perfomance per ciascun modello e delle perfomance totali per
tutti i modelli.
6.2.3 Filter
Nella fase Filter, si applicano dei filtri a quelle entit`a proprie estratte dalle regole
ambigue oppure senza ricorrere ad esse analizzando l’intera frase, e poi disam-
biguarle tramite modello. Tale funzione `e composta da 2 step principali, come
mostrato in Figure 5.10, che sono:
1. Eliminazione del rumore attorno alle entit`a proprie.
2. Eliminazione delle eventuali Stop Word presenti nelle entit`a proprie.
106
Figure 6.15: Schema generale degli step della funzione Filter.
Nota: inizialmente nella fase Filter, essa prevedeva 3 step principali; lo
step eliminato `e quello di Normalizzazione e stemming delle entit`a proprie
in quanto non migliorava le perfomance finali del A-NER e in alcuni casi le
stesse peggioravano.
Figure 6.16: Schema generale (vecchio) degli step della funzione Filter.
Il primo step `e uguale per tutti e tre i moduli, in quanto si va ad eliminare il
rumore attorno alle entit`a proprie (all’inizio ed alla fine), come la punteggiatura
ed i caratteri speciali presenti in esse, attraverso delle regole costruite ad hoc per
ciascun modulo NER.
Infine, il secondo step `e uguale per tutti e tre i moduli, in quanto si vanno ad elim-
inare (o ”filtrare”) le eventuali Stop Word, presenti all’interno delle entit`a proprie.
Esse sono quelle parole che, per la loro alta frequenza in una lingua, sono di solito
ritenute poco significative nei sistemi di Information Retrieval e nei sistemi di
Information Extraction. Alcuni esempi di Stop Word sono la punteggiatura, i
caratteri speciali, le preposizioni, le congiunzioni, gli avverbi, etc. Esse risiedono
in un file su formato di testo semplice e sono differenti per ciascun modulo NER.
Queste vengono caricate ogni qual volta, che si esegue il task di estrazione e ri-
conoscimento delle entit`a proprie, da un insieme di documenti.
6.2.4 Merge
Una volta terminata la fase Filter, si procede nell’eliminazione delle entit`a proprie
doppione, in quanto le stesse entit`a proprie possono essere estratte e riconosciute
sia dalle regole ambigue e sia dalle regole non-ambigue. Per quest’ultima oper-
azione, si applica un proprio algoritmo di sub-string searching, che controlla se
esistono entit`a proprie trovate con le regole ambigue, che sono doppioni; se si ver-
fica la condizione, allora le entit`a proprie vengono cancellate, altrimenti no. Una
cosa fondamentale dell’algoritmo, `e che assegna una maggiore importanza alle en-
tit`a proprie trovate con le regole non-ambigue, rispetto alle entit`a proprie trovate
107
con le regole ambigue, in quanto i primi sono pi`u affidabili e veritiere rispetto ai
secondi.
Dopodich`e, si passa allo step successivo, ovvero la fusione delle entit`a proprie
estratte e riconosciute, con le regole non-ambigue e con le regole ambigue, le quali
poi vengono tutte salvati su un file Excel assieme al loro tag specifico (PERS,
LOC, ORG e MISC).
108
6.3 Il modulo English NER
Per la progettazione ed implementazione del modulo English NER[5] (E-NER),
non si `e fatto uso di un corpus in Inglese, in quanto si `e trovato sul sito web di
LingPipe un modello addestrato, usando le news, riguardanti la cronaca inglese e
mondiale.
In detttaglio, con lo schema in Figure 5.15, si mostra l’architettura sintetizzata del
modulo E-NER, la quale viene chiamata Micro del sistema NER.
Figure 6.17: Schema dell’architettura Micro del sistema NER Multi-Language (E-
NER).
109
6.3.1 Differenze del modulo E-NER
Per il riconoscimento del ”confine” della frase all’interno di un testo viene utilizzato
un modello euristico, ovvero un statistical language model. Tale modello euristico
non `e stato necessario addestrarlo, in quanto il sito web di LingPipe, ne mette
uno a disposizione gratuitamente on-line.
Per il riconoscimento delle entit`a proprie con i tag PERS, LOC, ORG e MISC
sono state costruite entrambe le due tipologie di classi di regole (vedere Table 5.3)
e per la disambiguazione delle entit`a ambigue si `e utilizzato un modello, il quale `e
scaricato gratuitamente dal sito web di LingPipe[5].
Table 6.4: Elenco delle regole (ambigue e non-ambigue) utilizzate per la configu-
razione della grammatica.
Regole non-ambigue Regole ambigue
email parole con le iniziali maiuscole
numeri interi
numeri percentuali
numeri telefonici
data
ora in formato CET e AM/PM
persone
organizzazioni
Le operazioni che vengono svolte, durante la fase Filter, nel caso del modulo E-
NER, sono l’eleminazione del rumore attorno alle entit`a proprie ed eventuali Stop
Word.
110
6.4 Il modulo Italian NER
Per la progettazione ed implementazione del modulo Italian NER (I-NER), si `e
fatto uso di un corpus in italiano (annotato dal sottoscritto), perch`e non c’era
nessun sito, che mettesse a disposizione tale risorsa gratuitamente. La costruzione
di questo corpus `e stata fatta raccogliendo, dai principali siti italiani di notizie, le
notizie riguardanti la politica, la finanza, l’attualit`a e lo sport. Esso contiene circa
70K token contrassegnati in formato CoNLL per:
• la persona,
• la localit`a,
• l’organizzazione ed
• i vari tipi di entit`a.
I dati sono stati raccolti da una variet`a di fonti:
Fonte Rapporto in %
http://www.ansa.it/ 44.8%
http://www.primopiano.it 25.5%
http://it.msn.com/ 6.6%
http://www.portalsport.it/ 5.4%
http://www.adn.it/ 5.4%
http://affariitaliani.libero.it/ 1.9%
Altri newspapers e magazines 12.3%
Le prime entry del file sono le seguenti:
Bernanke B − PERS
ha O
fatto O
saltare O
il O
tappo O
sui O
titoli B − MISC
di I − MISC
Stato I − MISC
: O
i O
Btp B − MISC
ai O
111
livelli O
post-elettorale O
. O
Da O
quando O
la O
Federal B − ORG
Reserve I − ORG
...
Con lo schema in Figure 5.16, si mostra l’architettura sintetizzata del modulo
I-NER, la quale viene chiamata Micro del sistema NER.
Figure 6.18: Schema dell’architettura Micro del sistema NER Multi-Language (I-
NER).
112
6.4.1 Differenze del modulo I-NER
Per il riconoscimento del ”confine” della frase all’interno di un testo viene utilizzato
un modello euristico, ovvero un statistical language model. Tale modello euristico
non `e stato necessario costruirlo, in quanto il sito web di LingPipe, ne mette uno
a disposizione gratuitamente on-line.
Lo stesso discorso vale per questo modulo, dove per il riconoscimento delle entit`a
proprie con i tag PERS, LOC, ORG e MISC sono state costruite entrambe le due
tipologie di classi di regole (vedere Table 5.5) e per la disambiguazione delle entit`a
ambigue si `e utilizzato un modello stocastico (HMM), il quale `e stato opportuna-
mente addestrato sul proprio corpus, attraverso l’applicazione X-NERVal, la quale
`e stata dettagliatamente descritta precedentemente.
Table 6.5: Elenco delle regole, ambigue e non-ambigue, utilizzate per la configu-
razione della grammatica.
Regole non-ambigue Regole ambigue
email parole con le iniziali maiuscole
numeri interi
numeri percentuali
numeri telefonici
data
ora in formato CET e AM/PM
persone
organizzazioni
Le operazioni che vengono svolte durante la fase Filter, nel caso del modulo I-NER,
sono:
• l’eliminazione del rumore attorno alle entit`a proprie
• e l’eliminazione di eventuali Stop Word riconosciute come entit`a proprie.
113
6.5 Il modulo Arabic NER
Per la progettazione ed implementazione del modulo Arabic NER (A-NER), si `e
fatto uso di un corpus in arabo (ANERCorpus[32]) disponibilie on-line4
gratuita-
mente, contenente circa 150K token contrassegnati in formato CoNLL per:
• la persona,
• la localit`a,
• l’organizzazione ed
• i vari tipi di entit`a.
Sempre on-line, oltre al corpus, sono disponibili altre risorse; tra cui un insieme
di gazetteer in arabo (ANERGazet[32]). In esso vi `e una raccolta di tre tipi di
gazetteer:
• sedi (continenti, paesi, citt`a, etc),
• persone (nomi di persone) ed
• organizzazioni (societ`a, squadre di calcio, etc).
I dati sono stati raccolti da una variet`a di fonti:
Fonte Rapporto in %
http://www.aljazeera.net/ 34.8%
http://www.raya.com/ 15.5%
http://ar.wikipedia.org/ 6.6%
http://www.alalam.ma/ 5.4%
http://www.ahram.eg.org/ 5.4%
http://www.alittihad.ae/ 3.5%
http://www.bbc.co.uk/arabic/ 3.5%
http://arabic.cnn.com/ 2.8%
http://www.addustour.com/ 2.8%
http://kassioun.org/ 1.9%
Altri newspapers e magazines 17.8%
Le prime entry del file sono le seguente5
:
B − LOC
O
4
Dal sito http://www1.ccls.columbia.edu/∼ybenajiba/downloads.htm.
5
Le parole arabe sono tipicamente scritte da destra verso sinistra.
114
O
O
O
B − ORG
I − ORG
I − ORG
O
B − LOC
I dizionari (noti anche come gazetteer) sono solo liste di nomi propri. Nell’esempio
che segue, le prime entry del dizionario sono:
(ASIA)
Con lo schema in Figure 5.17, si mostra l’architettura sintetizzata del modulo
A-NER, la quale viene chiamata Micro del sistema NER.
115
Figure 6.19: Schema dell’architettura Micro del sistema NER Multi-Language (A-
NER[6]).
6.5.1 Differenze del modulo A-NER
Le regole costruite per l’estrazione delle frasi effettuano un processo basato sul
riconoscimento del ”confine” di una frase, le quale possono essere identificate at-
traverso la presenza di punteggiatura, come: il punto di fine frase (”.”), il punto
esclamativo (”!”) ed il punto interrogativo (”?”), e il carattere di new line (”
n”).
Le regole costruite per la configurazione della grammatica non sono per il riconosci-
mento delle entit`a proprie con i tag PERS, LOC e ORG, ma soltanto per il ri-
conoscimento di entit`a proprie con il tag MISC (vedere in Table 5.6).
116
Table 6.6: Elenco delle regole (solo non-ambigue) utilizzate per la configurazione
della grammatica.
Regole non-ambigue
email
numeri interi
numeri percentuali
numeri telefonici
data
ora in formato CET e AM/PM
Per il riconoscimento delle entit`a proprie con i tag PERS, LOC, ORG (e anche
MISC) `e stato utilizzato il modello sull’intera frase in input. Per l’addestramento e
la validazione del modello si `e utilizzata l’applicazione X-NERVal, la quale `e stata
dettagliatamente descritta precedentemente, ma non si `e fatto uso dei gazetteer
(dizionari), durante la sua fase di addestramento, perch`e la Precision non aumen-
tava.
Le operazioni che vengono svolte durante la fase Filter, nel caso del modulo A-
NER, sono l’eliminazione del rumore attorno alle entit`a proprie e l’eliminazione di
eventuali Stop Word riconosciute come entit`a proprie.
117
Chapter 7
Valutazioni
7.1 Accuratezza, Precision, Recall e F1-Score
La valutazione di un sistema NER viene direttamente fatta in base al confronto
con un modello di verit`a ed i risultati forniti dallo stesso sistema.
I risultati possono essere formulati con le seguenti quantit`a:
- Classe predetta
- Positivo Negativo
Classe Positivo TP (true positives) FN (false negatives)
reale Negativo FP (false positives) TN (true negatives)
TP (true-positives): elementi etichettati correttamente come appartenenti alla
classe positiva.
FP (false-positives): elementi etichettati erroneamente come appartenenti alla
classe positiva.
FN (false-negatives): elementi etichettati erroneamente come appartenenti alla
classe negativa.
TN (true-negatives): elementi etichettati correttamente come appartenenti alla
classe negativa.
Di norma, i parametri utilizzati in questo ambito sono tre: Precision, Recall e
F1-Score.
Definizione. La Recall `e la percentuale di istanze realmente positive
classificate come positive, P = TP
(TP+FN) , ed `e una misura di completezza.
118
Definizione. La Precision `e la percentuale di predizioni positive cor-
rette, P = TP
(TP+FP), ed `e una misura di correttezza.
Definizione. Nella statistica F1-Score (F-Measure o F-score) `e usato
come misura per l’accuratezza di un test.
F1-Score prende in considerazione sia la Precision e sia la Recall. L’indice pu`o
essere visto come la media pesata tra Precision e Recall, e ha connotazione positiva
quando tende a 1 e connotazione negativa quando tende a 0, oppue essa pu`o essere
interpretata come la media pesata della Precision e della Recall, dove un F1-Score
raggiunge il suo punteggio migliore a 1 ed il suo punteggio peggiore a 0.
F1-Score `e definito come
F11
= 2 ·
(PR · RC)
(PR + RC)
.
Un’ulteriore misura `e l’Accurattezza.
Definizione. L’Accuratezza `e la percentuale di istanze sia positive
sia negative classificate correttamente, P = (TP+TN)
(TP+TN+FP+FN)
.
1
Definizione abbreviata di F1-Score.
119
7.2 Valutazione delle prestazioni
I criteri di valutazione delle prestazioni utilizzati per questo progetto, per una
lettura analitica dei risultati ottenuti, sono stati fatti prendendo come spunto
quelli di Shaalan & Raza[18]. Questi sono:
• Eccellente = 90-100%.
• Buona = 80-89%.
• Discreto = 75-79%.
• Sufficiente = 65-74%.
• Scarso ≤ 64%.
Per i risultati ottenuti dal component di estrazione terminological NER Multi-
language bisogna fare una distinguinzione in base alla lingua, ovvero inglese, ital-
iano ed arabo.
Nei paragrafi che seguono, vengono mostrati alcuni esempi di esecuzione per cias-
cuno dei tre moduli (E-NER, I-NER e A-NER), all’interno del component di es-
trazione terminological NER Multi-language.
120
Esempio di esecuzione del modulo A-NER
The Prime Minister stunned Nick Clegg and Ed Miliband by telling them in a
phone call this morning that it was time to bring months of talks to a head. Mr
Cameron will table proposals on Monday for a Royal Charter to set up a new body
to monitor a beefed up regulator. Newspapers would face fines of up to 1 million
and be forced to print prominent apologies by the regulator. However, with Labour
and the Liberal Democrats arguing for a tougher system to be embedded in law,
Mr Cameron does not appear to have the votes in the Commons to win his way.
Cristina Fernandez de Kirchner made the comments last night as Argentinians
celebrated the surprise election of Cardinal Jorge Mario Bergoglio, the 76-year-
old Archbishop of Buenos Aires, to succeed the retired Benedict XVI. The Times
revealed last night that Lord Ahmed of Rotherham. The UK bank bond issues fall
sharply. Why Intel Corporation (INTC) deserves to be bought, now. The Apple
Inc. (AAPL), Advanced Micro Devices, Inc. (AMD).
Figure 7.1: Output prodotto dal modulo E-NER sul testo in input sopra.
121
Esempio di esecuzione del modulo I-NER
Fri Mar 29 11:44:00 CET 2013 Inflazione: a marzo frena a 1,7% Istat, sesto
rallentamento, effetto decelerazione carburanti (ANSA) - ROMA, 29 MAR - A
marzo l’inflazione rallenta ancora, con la crescita dei prezzi al consumo ferma
all’1,7%, dall’1,9% di febbraio. Si tratta della sesta frenata consecutiva, dovuta
soprattutto alla decelerazione annua dei carburanti. Lo rileva l’Istat, si tratta del
tasso piu’ basso da novembre 2010. Su base mensile il rialzo e’ dello 0,3%. A
marzo i prezzi dei prodotti acquistati con pi`u frequenza rincarano del 2% su base
annua, un tasso superiore all’inflazione (1,7%), in frenata rispetto a febbraio. Fri
Mar 29 11:39:00 CET 2013 Fisco: Befera,11 mld rimborsi Iva imprese Lettera
a direttori regionali per accelerare liquidazioni (ANSA) - ROMA, 29 MAR - Nel
2013 l’Agenzia delle Entrate punta a erogare alle imprese rimborsi Iva in conto
fiscale ”per un ammontare complessivo di 11 miliardi”. Cos`ı il direttore Attilio
Befera in una lettera, in cui invita i direttori regionali ”a dedicare ogni risorsa
utile alla liquidazione dei rimborsi nei prossimi 4 mesi”. ”Il volume dei crediti nei
confronti della p.a. e i lunghi tempi di pagamento, rischiano di compromettere -
dice - livelli occupazionali e sono un ostacolo alla crescita”.
Figure 7.2: Output prodotto dal modulo I-NER sul testo in input sopra.
122
Esempio di esecuzione del modulo A-NER
Figure 7.3: Output prodotto dal modulo A-NER sul testo in input sopra.
123
7.2.1 Valutazione delle annotazioni con ENAMEX Named Entities
Attraverso la gestione dei parametri di input elencati nella Sezione 5.2.2 `e possibile
quantificare la qualit`a del modello, prodotto durante la fase di addestramento.
Dal momento, che la complessit`a del modello `e un parametro importante data
l’intensit`a computazionale (sia in fase di creazione, che in fase operativa) pu`o essere
buona pratica eseguire un ciclo di valutazione pi`u volte variando, per esempio, il
numero di fold prima di iniziare la fase di addestramento (e di valutazione), in
modo da poter facilmente individuare il modello, che ha ottenuto il punteggio pi`u
alto.
Infatti, per questo scopo l’applicazione X-NERVal `e sia dotata di una interfaccia
grafica, per il monitoraggio dei risultati (mostrata in Figure 6.2) e contestualmente
il/i modello/i viene/vengono salvato/i su file, e sia dotata, nella parte in basso
dell’interfaccia, di un piccolo pannello per l’aggiustamento dei parametri, i quali
sono stati accennati nella Sezione 6.2.2.
Per ogni ciclo di addestramento-valutazione vengono mostrati, per ciascuna delle
4 tipologie (PERS, ORG, LOC e MISC), gli indici di Precision, di Recall e di
F1-Score; ed infine la combinazione dei valori degli indici per tutte le 4 tipologie,
permettendo cos`ı una visione migliore dei risultati ottenuti.
124
Figure 7.4: Istantanea dell’applicazione X-NERVal durante le fasi di addestra-
mento e di cross-validation (valutazione).
Sia in Table 7.1 e sia in Table 7.2 sono riportati gli indici di Precision, di Recall
e di F1-Score relativi all’iterazione con il punteggio miglior, che hanno prodotto i
modelli, poi utilizzati nei moduli I-NER e A-NER, per il component di estrazione
terminological NER Multi-language.
Le perfomance migliori ottenute, sono state eseguite su una configurazione da 4-
fold di cross-validation ed utilizzando, come sistema di annotazione, quella basata
sul sistema BIO, il quale `e stato ampliamente descritto nella Sezione 4.3.3. In
ciascuna fold si sono utilizzate una parte dei dati di addestramento, provenienti da
varie fonti di notizie (vedere Sezione 6.4, per la lingua italiana, e vedere Sezione
6.5, per la lingua inglese); mentre la parte restante dei dati di addestramento,
vengono utilizzati per la valutazione.
Inoltre, dalle due tabelle, si pu`o vedere che i modelli basati sul character-gram
language offrono dei buoni risultati sfruttando come tipo di annottazione quello
basato sul sistema BIO. L’utilit`a dei character-based-grams sono stati dimostrati
anche altrove (Wilbur et al., 1999; Vasserman, 2004; Townsend et al., 2005). Come
125
`e stato descritto precedentemnte nella Sezione 4.3.3, essi usano un modello stocas-
tico (HMM), il quale `e particolarmente adatto, in quanto permette il token-internal
features, per essere poi combinato con il contesto del token.[22]
Table 7.1: Risultati della valutazione per la lingua araba.
LOC 0, 799 0, 826 0, 812
PERS 0, 741 0, 756 0, 748
ORG 0, 672 0, 528 0, 600
MISC 0, 691 0, 648 0, 669
Combinate 0, 747 0, 722 0, 734
Table 7.2: Risultati della valutazione per la lingua italiana.
LOC 0, 900 0, 829 0, 863
PERS 0, 671 0, 815 0, 736
ORG 0, 784 0, 753 0, 768
MISC 0, 815 0, 843 0, 829
Combinate 0, 786 0, 799 0, 792
7.2.2 Valutazione del component di estrazione terminological NER Multi-
language
Il modo in cui Precision e Recall vengono tipicamente calcolati (vedere anche
Sezione 7.1) `e quello di misurare le entit`a l’una contro l’altra. In questo ambito,
la Precision e la Recall, vengono calcolati in base alla prima definizione sui cri-
teri di corrispondenza. Ad esempio: devono essere in una corrispondenza esatta
(exact match)? C’`e una sovrapposizione della corrispondenza con tutti (Any Over-
lap)? Le intenzioni sono quelle di soddisfare alcuni dei criteri appena citati. In
questo ambito, per tutte e tre le lingue, si `e preso in considerazione il criterio
della corrispondenza esatta (exact match), dove: il true-positive rappresenta le
corrispondenze esatte, il false-positive rappresenta le corrispondenza non esatte ed
il false-negative rappresenta le entit`a non estratte (e non riconosciute).
Nella Table 7.3 si mostra l’accuratezza raggiunta per la lingua inglese, ottenendo
delle prestazioni complessive Buone, cos`ı descritte nella Sezione 7.3.
Nella Table 7.4 si mostra l’accuratezza raggiunta per la lingua italiana, ottenendo
delle prestazioni complessive Buone, sempre descritte nella Sezione 7.3.
126
Infine, nella Table 7.4 si mostra l’accuratezza raggiunta per la lingua araba, ot-
tenendo delle prestazioni complessive Sufficienti, sempre descritte nella Sezione
7.3.
Table 7.3: Accuratezza raggiunta per la lingua inglese.
LOC 0, 875 0, 834 0, 854
PERS 0, 857 0, 875 0, 866
ORG 0, 834 0, 875 0, 854
MISC 0, 834 0, 834 0, 834
Combinate 0, 827 0, 857 0, 842
Table 7.4: Accuratezza raggiunta per la lingua italiana.
LOC 0, 855 0, 845 0, 850
PERS 0, 680 0, 815 0, 740
MISC 0, 780 0, 830 0, 800
ORG 0, 820 0, 830 0, 825
Combinate 0, 784 0, 830 0, 800
Table 7.5: Accuratezza raggiunta per la lingua araba.
LOC 0, 790 0, 820 0, 800
PERS 0, 740 0, 750 0, 750
ORG 0, 670 0, 525 0, 590
MISC 0, 690 0, 645 0, 660
Combinate 0, 723 0, 685 0, 700
127
Mettendo insieme le prestazioni dei tre moduli NER (E-NER, I-NER e A-NER),
si ottiene la Table 7.6, la quale riassume l’accuratezza totale in termini di Preci-
sion e di Recall del component di estrazione terminological NER Multi-language,
raggiungendo cos`ı delle prestazioni complessive pi`u che soddisfacenti.
Table 7.6: Accuratezza totale del component di estrazione terminological NER
Multi-language.
- Precision Recall F1
E-NER 0, 827 0, 857 0, 842
I-NER 0, 784 0, 830 0, 800
A-NER 0, 723 0, 685 0, 700
Totale 0, 778 0, 791 0, 781
128
7.3 Riepilogo e conclusioni finalli sulla valutazione
La valutazione `e stata fatta per:
• il processo di addestramento dei modelli stocastici (HMM) per la lingua ita-
liana e per la lingua araba,
• le prestazioni dei tre moduli (E-NER, I-NER e A-NER) e
• le prestazioni del componente NER Multi-language.
Nella valutazione del processo di addestramento dei modelli per la lingua ital-
iana e per la lingua italiana `e consistita nel trovare la configurazione ottimale dei
parametri di input a disposizione, tali per cui l’accuratezza del modello soddisfi
i requisiti del componente NER Multi-language. Le valutazioni per entrambi i
modelli, hanno dimostrato come l’impostazione dei parametri di input sia in grado
di migliorare la qualit`a del risultato, ma sopratutto quello, che assume il ruolo
cardine, `e la qualit`a del corpus (i dati di addestramento) impiegato nel processo
stesso. Nel corso delle varie iterazioni si `e cercato di introdurre delle migliorie
per aumentare l’accuratezza dei modelli e la qualit`a del testo ottenuto. In base
ai criteri minimi di accettazione introdotti all’inizio di questo capitolo, entrambi
i risultati di valutazione ottenuti, sono pi`u che soddisfacenti, in quanto quello del
modello per la lingua araba sono pi`u che sufficienti e che quello del modello per la
lingua italiana sono buoni.
La seconda valutazione, interessa le prestazioni del componente NER Multi-langua-
ge in base ai dati di ingresso, forniti dall’utente, ovvero non `e pi`u l’algoritmo di
valutazione a determinare la misura di prestazione del processo. In questo caso, per
valutare i tre moduli NER, presenti nel componente NER Multi-language, vengono
utilizzati dei modelli di verit`a, con i quali si mettono a confronto gli NEs presenti
in essi, con le entit`a proprie estratti ed identificati dai tre moduli NER. In questa
misura, per`o, vengono a manifestarsi due problemi, che si possono manifestare nei
vari test, ovvero:
• dal momento che non vi `e una scelta a priori sui dati in ingresso, questi
possono avere caratteristiche molto distanti da quelle dei dati che sono stati
utilizzati durante l’addestramento;
• il modo con cui `e stato costruito l’insieme di addestramento e di valutazione,
incide sulle prestazioni generali: i dati sono il frutto di una raccolta manuale
e di etichettatura manuale di un operatore umano, di articoli di news prove-
nienti da diverse fonti, pertanto questo insieme non `e detto che possa avere
caratteristiche ottimali, in quanto la raccolta e l’etichettatura `e a discrezione
dello stesso operatore umano.
129
Errori frequenti nell’estrazione delle entit`a proprie
L’estrazione delle entit`a proprie `e tuttora un problema pi`u difficile del POS Tag-
ging. La ragione di questa affermazione sta nel fatto che le entit`a proprie possono
estendersi su pi`u token. Per esempio, l’uso della congiunzione nella singola entit`a
propria ”Cable e Wireless” non deve essere trattato come un separatore per le due
entit`a proprie, ”Cable” e ”Wireless”, mentre il ”pezzo” di testo ”IBM e Google”
dovrebbe generare due entit`a proprie separate. Altre strutture di entit`a proprie
complesse includono preposizioni come ”di”, ”delle”, ”del”, etc.. La frase ”Agenzia
delle Entrate” `e una singola entit`a propria, mentre ”Francesco da Roma” dovrebbe
restituire due entit`a proprie separate. Un entit`a propria di tipo PERS come, ad
esempio, ”Professor Calculus” pu`o essere inizialmente espresso con il titolo onori-
fico di professore all’inizio di una frase. Una citazione senza titolo per la stessa
entit`a propria, pu`o rendere la questione pi`u difficile con un sistema di estrazione
per disambiguare l’uso della parola ”Calculus”.
Le parole capitalizzate[15, 19] sono pi`u propense a rappresentare le entit`a proprie,
ma spesso non possono rappresentare una persona, un luogo, o un’organizzazione.
Essi possono essere trovati nel titolo di un articolo o rappresentano un termine
finanziario, medico, o giuridico che non `e incluso nel lessico del NER. Un NER
pu`o anche essere indotto a soggetti, che interpretano ”Policlinico Umberto I” come
un’entit`a propria di persona in base all’uso del titolo onorifico.
Altri errori simili includono la creazione delle entit`a proprie di luoghi come ”New
York Times” o ”Chicago Board of Trade”, infatti molti di questi errori possono
essere risolti utilizzando un gazetteer o un gazetteer geografico per gestire tutte le
entit`a proprie conosciute.
Nota: spesso pu`o accadere che non si riesca a risolvere pi`u citazioni
della stessa persona (co-riferimento), come ”John Smith”, ”J. Smith”
o ”John S.” in un’unica entit`a propria.
130
Chapter 8
Applicazioni Future
Le applicazioni future (alcune di queste sono state sviluppate), che fanno uso di
entit`a proprie estratte da un testo, possono usare la semantica, senza una completa
analisi del testo o una conoscenza significante. Alcune di queste applicazioni, che
ne fanno uso, includono: i sistemi Question & Answer, l’organizzazione dei record
sanitari, la ricerca di letteratura accademica e l’applicazioni web e-commerce.
8.1 Sistemi Question & Answer
Un tradizionale motore di ricerca non pu`o essere utilizzato in questo ambito, in
quanto non si pu`o utilizzare un sistema che si basa semplicemente sull’abbinamento
delle parole chiave della ”domanda”, posta dall’utente, e dal testo presente nei soli
documenti. Ci`o significa che la ”risposta” del sistema pu`o avvenire solo tramite la
ricerca delle entit`a e non per parole chiave.
Per esempio, un analista dell’intelligence, ad esempio della CIA, potrebbe essere
interessato nel trovare i posti di tutti gli incidenti mortali (o violenti) avvenuti
in un periodo di sei mesi attorno a Kabul, citt`a dell’Afghanistan. Con un sis-
tema tradizionale sarebbe molto difficile per l’utente generare una precisa query di
ricerca per trovare la ”risposta” a questa ”domanda”. Le query per le basi di dati
sono molto pi`u precise di un motore di ricerca tradizionale, poich´e le parole chiave
utilizzate nella ricerca devono corrispondere con il testo, per un particolare attrib-
uto. Perci`o si `e in grado di generare una precisa query per la base di dati sulla
”domanda” precedente, con un intervallo di data, longitudine e latitudine, assieme
ad un elenco di parole chiave per episodi di violenza, come attentati o disordini.
Il NER ha come obiettivo quello della compilazione dello schema relazionale, della
131
base di dati, con specifici segmenti di testo provenienti da un testo non strutturato
di notizie (vedere Figure 6.1).
Figure 8.1: Schema generale di un sistema Question & Answer.
Si estrae l’elenco dei luoghi ed il timestamp dagli articoli insieme a un elenco di
parole chiave e di sinonimi. L’elenco dei luoghi `e ulteriormente differenziato in
valori di longitudine e di latitudine. L’elenco delle parole chiave e dei sinonimi
sono indicizzati utilizzando un motore di ricerca come Lucene.
La questione viene tradotta in una o pi`u query per la base di dati e in una sola
query per il motore di ricerca. I risultati di una ricerca delle tabelle della base di
dati restituir`a una serie di articoli di A, che menzionano gli indirizzi vicino a Kabul
nell’intervallo di date specificate. La query per il motore di ricerca restituir`a una
serie di articoli B, che includono le parole chiave come ”bombardamenti” nel testo.
L’intersezione dei due insiemdi di risultati, A e B, dovrebbe restituire gli articoli
che hanno pi`u probabilit`a di essere rilevanti per la ”domanda”.
132
8.2 Sistemi per la ricerca di letteratura accademica
Gli articoli accademici sono in genere pubblicati in un formato standard, con i meta
dati nell’intestazione dell’articolo, per descrivere: il titolo, gli autori, gli indirizzi
e-mail, le organizzazioni, le date e gli abstract.
Per questo si potrebbe popolare uno schema relazionale di una base di dati, ren-
dendo molto pi`u facile la ricerca di un insieme di articoli. Purtroppo, il testo
estratto dagli articoli non contiene demarcazioni, per separare i diversi tipi di
meta-dati e perci`o bisognerebbe avere dei modelli per estrarre il titolo, gli autori,
e gli altri campi di intestazione.
133
8.3 Applicazioni web e-commerce
Il testo proveniente dalle pagine web di un sito e-commerce contengono una lista
di prodotti, caratteristiche dei prodotti e costi dei prodotti. Ancora, vi sono indi-
cazioni di quando la descrizione di un prodotto termina ed inizia un altro prodotto.
Una prima soluzione potrebbe essere quella di costruire un’espressione regolare
sulla base di un testo o un pattern HTML nella pagina web. Questa soluzione non
`e affidabile, poich`e sia il formato e sia il pattern, contenuto in una pagina Web,
possono modificare l’espressione regolare rendendola inutilizzabile. Infatti, non si
pu`o generare manualmente un’espressione regolare per gestire tutti i casi possibili,
perch`e risulterebbe essere difficile e non `e facilmente verificabile.
134
Appendix A
Apprendimento Automatico
L’Apprendimento Automatico[7] (o Machine Learning) `e quella disciplina che si
occupa di produrre algoritmi, che attraverso l’esperienza incrementano le loro
prestazioni in maniera automatica. La disciplina deriva dalla preesistente mod-
ellizzazione statistica dei dati, che costituisce il punto cardine del processo di
automatizzazione con cui il modello stesso viene creato.
Un aspetto fondamentale dell’Apprendimento Automatico `e la scelta del mod-
ello e il suo corretto dimensionamento, con lo scopo di approssimare al meglio
la funzione obiettivo senza incappare nell’overfitting1
(sovra-dimensionamento) o
nell’underfitting2
(sotto-dimensionamento). Sia il sovra-dimensionamento e sia il
sotto-dimensionamento implicano che il modello non `e in grado di generalizzare
correttamente, ossia di fornire risposte corrette a fronte di input diversi da quelli
forniti in fase di addestramento.
Nota: per misuare la capacit`a di generalizzazione `e possibile dividere i
dati a disposizione in due set: il primo set (quello pi`u grande) detto insieme
di addestramento, serve per la fase di apprendimento, mentre il secondo
set (quello pi`u piccolo, dove la sua dimensione deve essere almeno del 10%,
rispetto all’insieme di partenza) serve per la validazione, ed `e detto appunto
insieme di validazione.
Per evitare che il modello inizi ad apprendere anche il rumore dei dati, si applica la
tecnica dell’early stopping, che ha come obiettivo di fermare l’addestramento prima
che si verifichi questo problema. Tenendo traccia delle due funzioni d’errore si ha
1
Si ha un overfitting, durante la fase di apprendimento, quando un modello statistico si adatta
ai dati osservati.
2
Si ha un underfitting, durante la fase di addestramento, quando il modello non `e abbastanza
ricco di parametri per poter approssimare correttamente la funzione obiettivo.
135
che l’errore sull’insieme di addestramento `e una funzione monotona decrescente,
mentre l’errore sull’insieme di validazione ha una funzione con andamento decres-
cente fino a raggiungere un punto di minimo, per poi crescere nuovamente (vedi
figura A.1). Per questo, l’addestramento deve essere fermato in concomitanza con
il punto di minimo.
Figure A.1: Early stopping: funzione di errore.
La scelta dei dati `e un’altro aspetto che pu`o limitare la qualit`a del modelloi: se
tra i dati di addestramento e i dati di validazione esiste una forte correlazione si
incappa in una sovrastima della capacit`a predittiva. Per questo, l’insieme dei dati
deve essere il pi`u eterogeneo possibile. Comunque deve essere sottolineato che gli
algoritmi di apprendimento hanno ottime capacit`a nell’estrarre le caratteristiche
essenziali e nell’isolare le caratteristiche occasionali, suscettibili di errore.
Tipi di learning
L’apprendimento[7] si basa sul principio di sfruttare l’esperienza per migliorare la
qualit`a dei risultati futuri.
• Apprendimento Supervisionato: si forniscono gli ingressi e le corrispondenti
uscite desiderate.
• Apprendimento per Rinforzo: si fornisce una valutazione della qualit`a del
risultato, senza tuttavia indicare la soluzione corretta.
• Apprendimento Non Supervisionato: vengono forniti solo esempi non anno-
tati e deve essere il sistema a definire le categorie in cui i dati sono ripartiti.
• Apprendimento Parzialmente Supervisionato o Apprendimento Semi-supervisionato:
una parte dei dati non presenta etichettatura.
136
Appendix B
Hidden Markov Models
Un Hidden Markov Model1
[1, 23] (HMM) `e una catena di Markov i cui stati non
sono osservabili direttamente.
Per chiarire meglio i concetti, si pu`o ricorrere ad un esempio, che riguarda un
insieme di contenitori di vetro pieni di palline colorate. Si suppone di avere in una
stanza N grandi contenitori riempiti di palline di vari colori, dove ogni contenitore
ha, al suo interno, un certo numero di palline di ciascun colore, ed i colori possibili
sono Σ e nella stanza `e presente anche un folletto, il quale sceglie un recipiente
iniziale secondo un qualche criterio arbitrario, estrae una pallina da esso annotan-
done il colore, dopodich`e la rimette al suo posto. Infine la sequenza ricomincia con
la scelta di un altro contenitore. Nella stanza accanto si trovano degli osservatori e
ad essi il folletto comunica soltanto la sequenza dei colori estratti. Tali osservatori
possono modellare il complessivo processo come un HMM, dove gli stati verranno
rappresentati dal numero di contenitori ed ogni contenitore `e caratterizzato da
determinate probabilit`a per l’uscita di ciascun colore.
Supponendo che il sistema, che si sta delineando, goda della propriet`a di Markov,
secondo cui la probabilit`a che esso si trovi, in un certo stato, al tempo t dipende
soltanto dallo stato all’istante t–1, ma non da quelli degli istanti precedenti.
Esprimendolo matematicamente:
P(xt = sj|xt–1 = si, xt = sk, . . . , x0 = sm) = P(xt = sj|xt–1 = si).
Supponendo anche che le transizioni siano regolate da un insieme di probabilit`a,
1
Un HMM `e particolarmente noto per la loro applicazione come: il riconoscimento di pattern
temporale, il riconoscimento dei gesti, la ricostruzione di segnali, il POS Tagging il riconoscimento
della parola, la lettura ottica dei caratteri, il riconoscimento vocale, etc.
137
indipendenti dal tempo, dette appunto probabilit`a di transizione:
P(xt = sj|xt–1 = si) = ai,j
per ogni t,
1 ≤ i, j ≤ N.
Poich`e le ai,j sono probabilit`a, devono soddisfare i seguenti vincoli:
1. ai,j ≤ 0, per ogni i, j;
2. N
j=1 ai,j = 1, per ogni i.
Figure B.1: Un Hidden Markov Model.
Il modello considerato produce, infine, un’uscita osservabile ad ogni istante di
tempo.
Un modello si dice osservabile se, attraverso le uscita, si conosce con esattezza la
sequenza di stati che il sistema ha percorso. Mentre, si dice che un modello non `e
osservabile nel caso in cui il valore di uscita non sia lo stato.
Per indicare una generica uscita si utilizza vk e per indicare la probabilit`a che il
modello abbia quell’uscita si utlizza bi(k), trovandosi nello stato i, ossia l’uscita vk
`e condizionato dallo stato i. In un modello siffatto, gli unici segnali osservabili sono
le uscite vk e la sequenza degli stati che il sistema attraversa rimane nascosta, anche
se, in generale, non `e dato sapere da quali e quanti stati sia composto il modello.
Per questo motivo si parla di HMM, perch`e, appunto, si fa riferimento alla non
osservabilit`a della sequenza degli stati.
138
Tornando ai modelli markoviani, `e opportuno caratterizzare, in maniera formal-
mente pi`u rigorosa, le loro componenti, ovvero un HMM `e un modello stocastico
composto da:
i. la catena ha un insieme di stati S = s1, s2, s3, . . . , sN ;
ii. Σ diversi simboli, dove Σ = σ1, σ2, σ3, . . . , σK , uno per ogni differente uscita
osservabile;
iii. l’insieme A = ai,j delle probabilit`a di transizione fra stati;
iv. l’insieme B = bj(k) delle probabilit`a di emissione delle uscite osservabili
nei vari stati;
v. la distribuzione di probabilit`a dello stato iniziale ˜π0, dove ˜π0 = P(x1 =
si), 1 ≤ i ≤ n.
Una volta che sono stati scelti i due parametri S e Σ, il modello HMM2
M `e
completamete specificato dalla terna A, B e ˜π0.
Un HMM pu`o essere usato come un generatore per produrre una sequenza di
osservazioni:
O = O1, O2, . . . , OT
dove ogni osservazione Ot `e un simbolo di Σ e T `e il numero di osservazioni della
sequenza. La sequenza O (detta anche evoluzione temporale del modello) viene
generata con il seguente procedimento:
(1) Si sceglie uno stato iniziale si in accordo con l’insieme delle propriet`a iniziali
˜π0.
(2) Si pone t = 1, dove t `e l’indice temporale;.
(3) Si sceglie Ot = vk secondo la distribuzione di probabilit`a bi(k).
(4) Si transita in un nuovo stato trovando l’elemento ai,j nella matrice di tran-
sizione A.
(5) Settare t = t + 1. Se t ≤ T si ritorna al passo (3), altrimenti si esce dalla
procedura.
Tale procedura pu`o essere usata come un generatore di osservazioni, ma anche come
un modello per capire come una data sequenza di osservazioni `e stata generata da
un HMM appropriato.
2
Un generico HMM si trova indicato, in letteratura, con il simbolo γ A, B, ˜π0 , o, pi`u sem-
plicemente γ.
139
Appendix C
Espressioni regolari
Le espressioni regolari[12, 16, 27] vengono utilizzate per trovare delle corrispon-
denze nelle stringhe (o frasi). Quindi se si vuole cercare una sottostringa ”abc”
all’interno delle stringhe, esse devono contenere esattamente queste lettere nella
stessa sequenza, affinch`e venga trovato il riscontro.
Molti sviluppatori hanno familiarit`a con queste espressioni per il pattern-matching,
come ad esempio UNIX grep, linguaggi di programmazione come il Perl, e gli
strumenti per l’analisi lessicale per i compilatori dei linguaggi di programmazione,
come lex.
Pi`u formalmente, nell’Informatica Teorica, una espressione regolare (in inglese le
sue forme abbreviate sono regexp, regex o RE) `e una sequenza di simboli (quindi
una stringa) che identifica un insieme di stringhe. In generale, le esperssioni re-
golari sono usate per specificare o definire linguaggi regolari, tuttavia permet-
tono di definire anche linguaggi non regolari. I linguaggi regolari sono i linguaggi
generati da grammatiche di tipo 3 (nella gerarchia di Chomsky) e riconosciuti
da automi (deterministici, semi-deterministici e non-deterministici) a stati finiti.
Tuttavia, le espressioni regolari esprimono un formalismo generico, attraverso dei
matching pattern. Tale formalismo, non `e specifico ad un particolare strumento
o linguaggio di programmazione. Una espressione regolare rappresenta un’insieme
regolare di parole in termini di tre semplici operazioni: adiacenza, ripetizione e
alternazione.
Una simile espressione regolare a(b|c)∗
a rappresenta un linguaggio infinito L =
aa, aba, aca, abba, abca, acba, acca, . . .. L’espressione regolare (b|c) sta a significare
”scegliere b o c”, mentre con il simbolo ” ∗ ” (star o chiusura di Kleene) significa
”zero o pi`u volte” e l’adiacenza di due simboli ha il suo significato usuale.
140
Gli operatori delle espressioni regolari
Come `e stato detto precedentemente, le espressioni regolari[12, 16, 27] denotano
linguaggi regolari. Data una sequenza su un qualsiasi alfabeto finito Σ = a1, a2,-
. . . , an , gli operatori delle espressioni regolari possono essere definiti nel seguente
modo.
1. Se ai ∈ A, per 1 ≤ i ≤ n, allora ai `e una espressione regolare.
2. Se L e M sono espressioni regolari, allora lo `e (LM), dove (LM) rappre-
senta l’insieme delle stringhe, che si possono formare prendendo una qualsiasi
stringa in L e concatenandola con qualsiasi stringa in M.
3. Se L, M, . . . , T sono espressioni regolari, allora lo `e (L|M| . . . |T), dove (L|M|−
. . . |T) rappresenta l’unione delle espressioni regolari L, M, . . . , T.
4. Se L `e una espressione regolare, allora lo `e anche L∗
, dove L∗
rappresenta
l’insieme delle stringhe che possono essere formate prendendo un numero
qualsiasi di stringhe da L, eventualmente con ripetizioni.
5. Solo le espressioni formate applicando le regole 1−4 sono espressioni regolari.
Nota: si assume per convenienza, che la stringa vuota `e definita
come una espressione regolare ed `e denotata da .
141
Bibliography
[1] Bilmes Jeff A. What HMMs Can Do. IEICE TRANS. INF. & SYST., E89–D,
2006.
[2] Alfred V. Aho and Margaret J. Corasick. Efficient string matching: An aid
to bibliographic search. Communications of the ACM, 18(6):333–340, June
1975.
[3] Shabib AlGahtani. Arabic Named Entity Recognition: A Corpus-Based
Study, 2012.
[4] Breck Baldwin Bob Carpenter. Text Analysis with LingPipe 4. LingPipe
Publishing - New York, 2011.
[5] Breck Baldwin Bob Carpenter. LingPipe Web Site. URL: alias-
i.com/lingpipe/index.html, 2004.
[6] Breck Baldwin Bob Carpenter, Mitzi Morris. Text Processing with Java 6.
LingPipe Publishing - New York, 2011.
[7] Alessandro Francois Camerada. Classificazione di contenuti generati dagli
utenti come soluzione al problema del sovraccarico informativo del Web, 2010
- 2011.
[8] Alessandro Mazzei e Vincenzo Lombardo Cristina Bosco. Evalita Parsing
Task: an analysis of the first parsing system contest for Italian.
[9] Alessandro Mazzei Vincenzo Lombardo Felice Dell’Orletta Alessandro Lenci
Cristina Bosco, Simonetta Montemagni. Evalita ’09 Parsing Task: comparing
dependency parsers and treebanks.
[10] Satoshi Sekine David Nadeau. A Survey of named entity recognition and
classification. National Research Council Canada/New York University.
142
[11] Daniel Jurafsky e James H. Martin. Speech and Language Processing - An
Introduction to Natural Language Processing, Computational Linguistics and
Speech Recognition. Prentice Hall.
[12] By Jeffrey E. F. Friedl. Mastering Regular Expressions. O’Reilly.
[13] Giuseppe Rizzo, Rapha¨el Troncy, Sebastian Hellmann. NERD Meets NIF:
Lifting NLP Extraction Results to the Linked Data Cloud. LDOW2012.
[14] John Haugeland. Artificial Intelligence: The Very Idea. Cambridge, Mass:
MIT Press.
[15] Will Radford Tara Murphy James R. Curran Joel Northman, Nicky Ringland.
Learning multilingual named entity recognition from Wikipedia. Artificial
Intelligence, 194(1):151–175, Mar. 2012.
[16] Jeffrey D. Ullman John E. Hopcroft, Rajeev Motwani. Automi, Linguaggi e
Calcolabilit`a - Terza Edizione. Pearson - Addison Wesley.
[17] Joseph Turian, Lev Ratinov, Yoshua Bengio. Word Representations: A Simple
and General Method for Semi-Supervised Learning. ACL ’10 Proceedings of
the 48th Annual Meeting of the Association for Computational Linguistics.
[18] Khaled Shaalan, Hafsa Raza. NERA: Named Entity Recognition for Arabic.
Journal of the American Society for Information Science and Technology,
60:1652–1663, 2009.
[19] Manu Konchady. Building Search Applications Lucene, LingPipe, and Gate.
Mustru Publishing.
[20] Be´ata Megyesi. Brill’s Rule-Based Part of Speech Tagger for Hungarian.
[21] Paola Velardi, Francesco Slano. TermExtractor: a Web Application to Learn
the Common Terminology of Groups and Research Communities. Conference
TIA-2007.
[22] Simone Teufel Peter Corbett, Colin Batchelor. Annotation of Chemical
Named Entities. BioNLP 2007: Biological, translational, and clinical lan-
guage processing, 57–64:27–31, June ACL 2007.
[23] L.R. Rabiner. A tutorial on HMM and selected applications in speech recog-
nition. In Proc. IEEE, 77(2):257–286, Feb. 1989.
[24] Emanuele Pianta e Claudio Giuliano Roberto Zanoli. Named Entity Recogni-
tion through Redundancy Driven Classifiers. Poster and Workshop Proceed-
ings of the 11th Conference of the Italian Association for Artificial Intelli-
gence.
143
[25] Beatrice Santorini. Part-of-Speech Tagging Guidelines for Penn Treebank
Project.
[26] Raffaele Simone. Fondamenti di linguistica. 2008.
[27] Michael Sipser. Introduction to the Theory of Computation - Second Edition,
International Edition. Thomson Course Techonology.
[28] Ronald L. Rivest Thomas H. Cormen, Charles E. Leiserson. Introduzione agli
algoritmi. Jackson Libri, 2003.
[29] Thorsten Brants. Tagset Reduction Without Information Loss. Proceedings
of the 33rd Annual Meeting of the Association for Computational Linguistics,
Cambridge, MA (1995).
[30] Manuela Speranza e Rachele Sprugnoli Valentina Bartalesi Lenzi. EVALITA
2011: Description and Results of the Named Entity Recognition on Tran-
scribed Broadcast News Task. Poster and Workshop Proceedings of the 12th
Conference of the Italian Association for Artificial Intelligence.
[31] Paolo Rosso Yassine Benajiba. ANERsys 2.0: Conquering the NER Task
for the Arabic Language by Combining the Maximun Entropy with POS-tag
Information. 3rd Indian Conference on Artificial Intelligence (IICAI-07).
[32] Paolo Rosso Yassine Benajiba. ANERsys: An Arabic Named Entity Recogni-
tion System Based on Maximum Entropy. CICLing ’07 Proceedings of the 8th
International Conference on Computational Linguistics and Intelligent Text
Processing.
[33] Paolo Rosso Yassine Benajiba. Arabic Named Entity Recognition using Con-
ditional Random Fields. HLT and NLP within the Arabic world 2008.
144

More Related Content

PDF
Il tutorial di Python
PDF
Joseki : un server per interrogare risorse RDF attraverso un interfaccia Web
PDF
Tesi Specialistica - Weka SMP
PDF
Guida C# By Megahao
PDF
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
PDF
A.Dionisi Thesis
PDF
Progetto e sviluppo di un'applicazionemobile multipiattaforma per il supporto...
PDF
Tesi Triennale - X509 e PGP
Il tutorial di Python
Joseki : un server per interrogare risorse RDF attraverso un interfaccia Web
Tesi Specialistica - Weka SMP
Guida C# By Megahao
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
A.Dionisi Thesis
Progetto e sviluppo di un'applicazionemobile multipiattaforma per il supporto...
Tesi Triennale - X509 e PGP

What's hot (20)

PDF
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
PDF
Tesi peiretti
PDF
I promessi sposi 3.0 Mobile User Experience & Usability nel settore dei beni...
PDF
Il Modello Pragmatico Elementare per lo sviluppo di Sistemi Adattivi - Tesi
PDF
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientale
PDF
domenicoCaputiTriennale
PDF
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
PDF
Tesi Laurea Sergio Taddia
PDF
Profilazione utente in ambienti virtualizzati
PDF
Tecniche per la rilevazione e correzione di errori nell'elaborazione automati...
PDF
Il Linux OpenSound System
PDF
Openfisca Managing Tool: a tool to manage fiscal sistems
PDF
Progetto e Realizzazione di un Software per la Rilevazione Automatica di Codi...
PDF
Monitoraggio di applicazioni software mediante modelli di Markov
PDF
GaPiL - Guida alla Programmazione in Linux
PDF
Monitoraggio di rete con nagios
PDF
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
PDF
Modellazione della dinamica di un liquido bifase mediante GPU CUDA
PDF
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
PDF
mastertesi
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tesi peiretti
I promessi sposi 3.0 Mobile User Experience & Usability nel settore dei beni...
Il Modello Pragmatico Elementare per lo sviluppo di Sistemi Adattivi - Tesi
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientale
domenicoCaputiTriennale
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Laurea Sergio Taddia
Profilazione utente in ambienti virtualizzati
Tecniche per la rilevazione e correzione di errori nell'elaborazione automati...
Il Linux OpenSound System
Openfisca Managing Tool: a tool to manage fiscal sistems
Progetto e Realizzazione di un Software per la Rilevazione Automatica di Codi...
Monitoraggio di applicazioni software mediante modelli di Markov
GaPiL - Guida alla Programmazione in Linux
Monitoraggio di rete con nagios
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Modellazione della dinamica di un liquido bifase mediante GPU CUDA
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
mastertesi
Ad

Viewers also liked (18)

PPTX
Forum 2016 - Quando o seu CPC e o seu CPA estão na Lua, e a sua verba de mídi...
PDF
Ciencias penales evolucion del derecho penal
DOCX
Caratula de organizadores
PPT
Alekseev hpc day 2011 Kiev
PPTX
Innovación e innvención
DOCX
Presentación del portafolio
PPTX
EC 87/15 – Convênio 93 – As novas regras para recolhimento do ICMS nas vendas...
PDF
Case – luiza barcelos no e commerce do planejamento a operação
DOCX
Resumes unidad I
PPTX
Fujifilm - where zettabytes lives @ hpc day 2012 kiev
PPTX
"Induction of Decision Trees" @ Papers We Love Bucharest
PPTX
Antes de ser e-Commerce, é Varejo. E antes de ser ROI, é Marketing. - Álvaro ...
PPTX
Conferência E-Commerce Brasil RIO 2016 - Como precificar para vender melhor, ...
PDF
Sílabo materia pedagogía patricio tobar
PDF
Benicia Industrial Gigabit Broadband Project Assessment and Plan
PPT
Antifungal Treatment
DOCX
Exposicion Judaismo Cristianismo
PPTX
Sistemas 1 - viviana
Forum 2016 - Quando o seu CPC e o seu CPA estão na Lua, e a sua verba de mídi...
Ciencias penales evolucion del derecho penal
Caratula de organizadores
Alekseev hpc day 2011 Kiev
Innovación e innvención
Presentación del portafolio
EC 87/15 – Convênio 93 – As novas regras para recolhimento do ICMS nas vendas...
Case – luiza barcelos no e commerce do planejamento a operação
Resumes unidad I
Fujifilm - where zettabytes lives @ hpc day 2012 kiev
"Induction of Decision Trees" @ Papers We Love Bucharest
Antes de ser e-Commerce, é Varejo. E antes de ser ROI, é Marketing. - Álvaro ...
Conferência E-Commerce Brasil RIO 2016 - Como precificar para vender melhor, ...
Sílabo materia pedagogía patricio tobar
Benicia Industrial Gigabit Broadband Project Assessment and Plan
Antifungal Treatment
Exposicion Judaismo Cristianismo
Sistemas 1 - viviana
Ad

Similar to Un componente NER Multi-language per il TermExtractor (20)

PPT
"Colorless green ideas sleep furiously."
PDF
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
PPTX
Intelligenza artificiale nel mondo front-end - CodeGen2021
PDF
Piano Nazionale Scuola Digitale (risorse integrative)
PDF
Dialogare con le macchine in linguaggio naturale... Finalmente! Ma ci voleva ...
PDF
Progetto e realizzazione di un'interfaccia web interattiva per un sistema di ...
PDF
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
PDF
Soothsayer multisource system for text prediction
PDF
Classificazione di frasi in linguaggio naturale per il riconoscimento di inte...
PDF
Banovaz Diego - Tesi
PDF
Microsoft Fabric and Open AI - Caso d'uso reale
PDF
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
PDF
Prompt Engineering … tutto ciò che avresti voluto dire ad una AI e che non h...
PPTX
Riconoscimento vocale v1.4
PDF
Compressione di insiemi di espressioni regolari tramite programmazione geneti...
PDF
ConvComp2016: Riconoscimento vocale e chatbot: finalmente possiamo parlare co...
PDF
Oltre il contenuto: tecnologie linguistico-computazionali per l’analisi della...
PDF
[Thesis] IBSS: Intelligent Brake Support System
PPTX
Elena Gagliardoni - Neural Chatbot
PDF
Architetture Distribuite per la Creazione e lo Sfruttamento della Conoscenza,...
"Colorless green ideas sleep furiously."
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Intelligenza artificiale nel mondo front-end - CodeGen2021
Piano Nazionale Scuola Digitale (risorse integrative)
Dialogare con le macchine in linguaggio naturale... Finalmente! Ma ci voleva ...
Progetto e realizzazione di un'interfaccia web interattiva per un sistema di ...
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
Soothsayer multisource system for text prediction
Classificazione di frasi in linguaggio naturale per il riconoscimento di inte...
Banovaz Diego - Tesi
Microsoft Fabric and Open AI - Caso d'uso reale
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Prompt Engineering … tutto ciò che avresti voluto dire ad una AI e che non h...
Riconoscimento vocale v1.4
Compressione di insiemi di espressioni regolari tramite programmazione geneti...
ConvComp2016: Riconoscimento vocale e chatbot: finalmente possiamo parlare co...
Oltre il contenuto: tecnologie linguistico-computazionali per l’analisi della...
[Thesis] IBSS: Intelligent Brake Support System
Elena Gagliardoni - Neural Chatbot
Architetture Distribuite per la Creazione e lo Sfruttamento della Conoscenza,...

More from skasof (15)

PDF
Java Fundamentals
PDF
Salesforce sales cloud_consultant
PDF
Attestato PROJECT MANAGER
PDF
Salesforce administrator
PDF
Salesforce platform developer 1
PDF
Attestato Spring
PDF
Scrum Fundamentals Certified Credential
PDF
Presentazione HMMs
PDF
Attestato Formazione generale dei Lavoratori
PDF
StudyJam certificate
PDF
X-NERVal e Component NER
PDF
Portale PanizziSapienza
PDF
Le 1
PDF
Gimmy Multi-lingua
PDF
Content based image-retrieval
Java Fundamentals
Salesforce sales cloud_consultant
Attestato PROJECT MANAGER
Salesforce administrator
Salesforce platform developer 1
Attestato Spring
Scrum Fundamentals Certified Credential
Presentazione HMMs
Attestato Formazione generale dei Lavoratori
StudyJam certificate
X-NERVal e Component NER
Portale PanizziSapienza
Le 1
Gimmy Multi-lingua
Content based image-retrieval

Un componente NER Multi-language per il TermExtractor

  • 1. ”Sapienza”, Universit`a di Roma Facolt`a di Ingegneria dell’Informazione, Informatica e Statistica Tesi di Laurea Magistrale in Informatica (ex. DM270) Un componente NER Multi-language per il TermExtractor Relatore Candidato Prof. Paola Velardi Sofien Vannutelli Anno Accademico 2013/2014
  • 2. ”Sapienza”, Universit`a di Roma Facolt`a di Ingegneria dell’Informazione, Informatica e Statistica Tesi di Laurea Magistrale in Informatica (ex. DM270) Un componente NER Multi-language per il TermExtractor Relatore Candidato Prof. Paola Velardi Sofien Vannutelli Anno Accademico 2013/2014
  • 3. Ringraziamenti ”Fatti non foste per viver come bruti, ma per seguir virtute e canoscenza” DANTE (Canto XXVI). In questa pagina, tutta mia, voglio prendere l’occasione per ringraziare tutte quelle persone che, con il loro aiuto e con il loro impegno, mi hanno aiutato a crescere, maturare e a diventare la persona che sono oggi. Ringrazio quindi: tutti il collegio dei professori e dei ricercatori del Dipartimento di Informatica, in particolare la mia relatrice, la Prof. Paola Velardi, per la sua professionalit`a, disponibilit`a ed attenta assistenza, il Prof. Panizzi per l’ottimo rapporto d’amicizia creato durante la collaborazione nella preparazione degli eventi ITMeeting e il Prof. Giancarlo Bongiovanni per la sua bont`a e disponibilit`a infinita; tutto il personale della Di- dattica, in particolare la responsabile, la Dott.ssa Alessandra Fremiotti, per la sua grande professionalit`a e disponibilit`a verso tutti gli studenti dei corsi di Informat- ica; e tutto il personale Tecnico ed Amministrativo; tutto il collegio dei professori d’arabo dell’Institut Bourguiba des Langues Vivantes di Tunisi, nessuno `e escluso. Ringrazio i miei genitori che mi hanno dato la possibilit`a di studiare, perch´e solo con lo studio si pu`o arrivare a capire davvero l’importanza delle cose. Grazie an- che agli amici, perch`e la vita non `e fatta solo di libri e di famiglia, ma anche di risate e momenti passati in compagnia, senza pensare ai doveri. E per finire voglio ringraziare VIVIANA ARRIGONI, con cui ho stupidamente e tristemente rotto un bellissimo rapporto di amicizia, alla quale va il merito di avermi letto e corretto i miei strafalcioni di questa sezione. Grazie a tutti.
  • 4. Contents 1 Introduzione 7 2 Background 10 2.1 Che cosa `e il Natural Language Processing? . . . . . . . . . . . . . 10 2.2 Il Natural Language Processing e la linguistica . . . . . . . . . . . . 12 2.2.1 Sintassi e semantica . . . . . . . . . . . . . . . . . . . . . . 12 2.2.2 Contesto e pragmatica . . . . . . . . . . . . . . . . . . . . . 12 2.2.3 Due punti di vista . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.4 Task e super-task . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.5 Strumenti a disposizione . . . . . . . . . . . . . . . . . . . . 15 2.3 TermExtractor: un estrattore terminologico . . . . . . . . . . . . . 20 2.4 Caratteristiche della lingua araba . . . . . . . . . . . . . . . . . . . 21 2.4.1 Storia e prospettive correnti . . . . . . . . . . . . . . . . . . 21 2.4.2 Ortografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4.3 Morfologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4.4 Generazione delle parole dalla forma base . . . . . . . . . . 24 2.4.5 Struttura della parola araba . . . . . . . . . . . . . . . . . . 25 2.4.6 L’ambiguit`a nella lingua araba . . . . . . . . . . . . . . . . 27 2.4.7 I nomi propri nella lingua araba . . . . . . . . . . . . . . . . 27 2.4.8 Struttura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.4.9 Sintassi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.4.10 Peculariet`a e sfide nella corretta rilevazione e classificazione dei nomi propri in arabo . . . . . . . . . . . . . . . . . . . . 30 3 Stato dell’arte 32 3.1 Metodi di apprendimento per i sistemi NER . . . . . . . . . . . . . 33 3.1.1 Apprendimento Supervisionato . . . . . . . . . . . . . . . . 33 3.1.2 Apprendimento Semi-supervisionato . . . . . . . . . . . . . 34 3.1.3 Apprendimento Non Supervisionato . . . . . . . . . . . . . . 34 3.2 Stato dell’arte e related work dei sistemi English NER . . . . . . . 36 2
  • 5. 3.3 Stato dell’arte e related work dei sistemi Italian NER . . . . . . . . 39 3.4 Stato dell’arte e related work dei sistemi Arabic NER . . . . . . . . 42 4 Descrizione del parser LingPipe 44 4.1 Una breve panoramica . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.2 Elenco delle risorse e delle lingue disponibili . . . . . . . . . . . . . 46 4.3 Il diagramma dei componenti . . . . . . . . . . . . . . . . . . . . . 48 4.4 Named Entity Recognition di LingPipe . . . . . . . . . . . . . . . . 50 4.4.1 Regular Expression-Based Chunker . . . . . . . . . . . . . . 50 4.4.2 Dictionary-Based Chunker . . . . . . . . . . . . . . . . . . . 51 4.4.3 Model-Based Chunker . . . . . . . . . . . . . . . . . . . . . 52 4.4.4 Addestramento del modello per un sistema NER . . . . . . 54 4.5 Part-Of-Speech Tagger di LingPipe . . . . . . . . . . . . . . . . . . 60 4.5.1 POS tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.5.2 Addestramento del modello per un sistema POS Tagger . . 61 4.5.3 Lettura del modello . . . . . . . . . . . . . . . . . . . . . . 63 4.5.4 Tokenizzazione . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.5.5 Analisi dei token . . . . . . . . . . . . . . . . . . . . . . . . 63 4.5.6 Risultato finale . . . . . . . . . . . . . . . . . . . . . . . . . 64 5 Analisi del modulo POS Tagger di LingPipe 65 5.1 POS Tagger: confronto con il TreeTagger . . . . . . . . . . . . . . . 65 5.1.1 TreeTagger . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.1.2 Che cosa sono i tag-set? . . . . . . . . . . . . . . . . . . . . 68 5.1.3 L’algoritmo Tag-Set Reduction . . . . . . . . . . . . . . . . 68 5.1.4 L’applicazione Tag-Set Reduction Computing . . . . . . . . 71 5.1.5 Applicazione della riduzione del tag-set per il TreeTagger . . 73 5.1.6 Applicazione della riduzione del tag-set per il POS Tagger di LingPipe . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.1.7 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6 Architettura del sistema 83 6.1 La progettazione in UML del sistema . . . . . . . . . . . . . . . . . 83 6.1.1 Glossario di Progetto . . . . . . . . . . . . . . . . . . . . . . 83 6.1.2 Gli attori . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 6.1.3 Requisiti del sistema . . . . . . . . . . . . . . . . . . . . . . 84 6.1.4 Requisiti Funzionali . . . . . . . . . . . . . . . . . . . . . . 85 6.1.5 Requisiti Non-Funzionali . . . . . . . . . . . . . . . . . . . . 86 6.1.6 Casi d’Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 6.1.7 Analisi dei punti funzione . . . . . . . . . . . . . . . . . . . 87 6.1.8 Diagramma delle Attivit`a . . . . . . . . . . . . . . . . . . . 90 3
  • 6. 6.1.9 Diagramma dei Componenti . . . . . . . . . . . . . . . . . . 94 6.1.10 Gestione requisiti non-funzionali . . . . . . . . . . . . . . . 97 6.2 Schema dell’architettura . . . . . . . . . . . . . . . . . . . . . . . . 99 6.2.1 Estrazione delle frasi . . . . . . . . . . . . . . . . . . . . . . 101 6.2.2 Grammar Configuration . . . . . . . . . . . . . . . . . . . . 101 6.2.3 Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.2.4 Merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6.3 Il modulo English NER . . . . . . . . . . . . . . . . . . . . . . . . . 109 6.3.1 Differenze del modulo E-NER . . . . . . . . . . . . . . . . . 110 6.4 Il modulo Italian NER . . . . . . . . . . . . . . . . . . . . . . . . . 111 6.4.1 Differenze del modulo I-NER . . . . . . . . . . . . . . . . . 113 6.5 Il modulo Arabic NER . . . . . . . . . . . . . . . . . . . . . . . . . 114 6.5.1 Differenze del modulo A-NER . . . . . . . . . . . . . . . . . 116 7 Valutazioni 118 7.1 Accuratezza, Precision, Recall e F1-Score . . . . . . . . . . . . . . . 118 7.2 Valutazione delle prestazioni . . . . . . . . . . . . . . . . . . . . . . 120 7.2.1 Valutazione delle annotazioni con ENAMEX Named Entities 124 7.2.2 Valutazione del component di estrazione terminological NER Multi-language . . . . . . . . . . . . . . . . . . . . . . . . . 126 7.3 Riepilogo e conclusioni finalli sulla valutazione . . . . . . . . . . . . 129 8 Applicazioni Future 131 8.1 Sistemi Question & Answer . . . . . . . . . . . . . . . . . . . . . . 131 8.2 Sistemi per la ricerca di letteratura accademica . . . . . . . . . . . 133 8.3 Applicazioni web e-commerce . . . . . . . . . . . . . . . . . . . . . 134 A Apprendimento Automatico 135 B Hidden Markov Models 137 C Espressioni regolari 140 Bibliography 142 4
  • 7. List of Tables 2.1 Esempi di generazione di forme basi. . . . . . . . . . . . . . . . . . 25 2.2 Proclitiche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.3 Enclitiche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1 I migliori quattro sistemi sul task Entity Estraction al MUC. . . . . 37 4.1 Lista di Token e di Entity Tag associati in una frase. . . . . . . . . 56 4.2 Lista di Token e di Entity Tag generati da un modello stocastico (HMM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.3 Lista di Token e di Entity Tag associati in una frase. . . . . . . . . 59 4.4 Le sequenze legali con il sistema BIO. . . . . . . . . . . . . . . . . . 59 4.5 Lista di Token e di Entity Tag associati in una frase. . . . . . . . . 61 5.1 Tabella di Mapping per la riduzione del tag-set di TreeTagger. . . 74 5.2 Tabella di Mapping per la riduzione del tag-set di TreeTagger (2). 75 5.3 Tabella di Mapping per la riduzione del tag-set di TreeTagger (3). 76 5.4 Tabella di Mapping per la riduzione del tag-set di LingPipe. . . . . 77 5.5 Tabella di Mapping per la riduzione del tag-set di LingPipe (2). . . 78 5.6 Tabella di Mapping per la riduzione del tag-set di LingPipe (3). . . 79 5.7 Tabella di Mapping per la riduzione del tag-set di LingPipe (4). . . 80 5.8 Tabella riassuntiva dei risultati finali. . . . . . . . . . . . . . . . . . 82 6.1 Tabella dei coefficienti. . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.2 Valori di aggiustamento dei VAF. . . . . . . . . . . . . . . . . . . . 89 6.3 Tabella riassuntiva per l’applicazione della Capitalizzazione Con- venzionale, come regola, nella valutazione dei linguaggi. S = si capitalizzata; N = non capitalizzata; Q = qualche volta. . . . . . . 103 6.4 Elenco delle regole (ambigue e non-ambigue) utilizzate per la con- figurazione della grammatica. . . . . . . . . . . . . . . . . . . . . . 110 6.5 Elenco delle regole, ambigue e non-ambigue, utilizzate per la con- figurazione della grammatica. . . . . . . . . . . . . . . . . . . . . . 113 5
  • 8. 6.6 Elenco delle regole (solo non-ambigue) utilizzate per la configu- razione della grammatica. . . . . . . . . . . . . . . . . . . . . . . . 117 7.1 Risultati della valutazione per la lingua araba. . . . . . . . . . . . . 126 7.2 Risultati della valutazione per la lingua italiana. . . . . . . . . . . . 126 7.3 Accuratezza raggiunta per la lingua inglese. . . . . . . . . . . . . . 127 7.4 Accuratezza raggiunta per la lingua italiana. . . . . . . . . . . . . . 127 7.5 Accuratezza raggiunta per la lingua araba. . . . . . . . . . . . . . . 127 7.6 Accuratezza totale del component di estrazione terminological NER Multi-language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 6
  • 9. Chapter 1 Introduzione I motori di ricerca ”tradizionali” abbinano i documenti basandosi unicamente sulle parole chiave della query dell’utente. Tuttavia esistono degli strumenti in grado di fornire risultati pi`u precisi eseguendo l’analisi semantica del testo. Il Named Entity Recognition (NER) `e uno di questi strumenti, che meglio com- prende le tecnologie per l’analisi del testo ed `e uno dei pilastri per il trattamento dei contenuti non strutturati; per fare questo, esistono diversi approcci, che possono essere anche combinati insieme. Uno di questi strumenti `e noto come Named Entity Recognition (NER) `e una sotto-area dell’elaborazione del linguaggio naturale. NER, inoltre, `e anche un sub-task dell’Information Extraction1 , in quanto ha come obiettivo quello di estrarre i nomi propri o entit`a2 proprie (in inglese Named En- tities o NEs) di: persone, organizzazioni, toponimi, espressioni temporali, valori numerici, nomi di prodotti, nomi di geni, URLs ed indirizzi email, provenienti da un set di testi non strutturati, provenienti da varie fonti (per esempio: pagine web, newsletters, twitter, etc.), si vuole estrarre ed identificare tutte le entit`a proprie al loro interno. NER `e uno dei pilastri per il trattamento dei contenuti non strut- turati, in quanto i nomi propri sono pervasivi nei testi e molto frequenti nelle query degli utenti. Il problema della NER viene risolto utilizzando diversi approcci, che 1 L’Information Extraction `e un task particolarmente complesso, che ha come obiettivo quello di estrarre automaticamente informazioni strutturate da un testo non strutturato. Le infor- mazioni estratte consentono di descrivere il contenuto dei documenti, in quanto l’utente accede prima all’informazione ed in seguito al documento in cui essa `e contenuta. 2 In un contesto di questo genere, un’entit`a `e definita come il nome di: una persona, un luogo, un’organizzazione, una dimensione, una data/ora, o di un qualsiasi altro termine, che spiega il tipo di sostantivo. 7
  • 10. possono essere anche combinati insieme. Figure 1.1: Schema di un tipico sistema di Information Extraction con i moduli in cascata. La differenza, tra il testo strutturato ed il testo non strutturato (o di dominio aperto), `e che il testo strutturato risiede in uno schema relazionale di una base di dati, dove a ciascuna colonna gli si associa un attributo e il testo stesso `e contenuto in una cella, grazie alla quale esso assume un significato esplicito, per esempio: una colonna numerica intitolata ”prezzo” rappresenta il costo di un certo articolo; mentre nel testo non strutturato, l’estrazione delle stesse informazioni `e pi`u difficile, poich`e non esiste alcuna struttura sottostante, tranne quella del linguaggio stesso (morfologia, grammatica). L’obiettivo di questa tesi `e di arricchire un sistema di estrazione terminological pre- esistente, TermExtractor[21] uno strumento di riconoscimento di Named Entities, per tre lingue: inglese, italiano e arabo. La tesi `e articolata come segue: • Nel Capitolo 2 viene fatta una breve panoramica dell’area dell’Elaborazione del Linguaggio Naturale, viene descritto il component di estrazione termi- nological TermExtractor, e si descrivono alcune caratteristiche della lingua araba. Infatti, la parte pi`u complessa di questo lavoro `e stata costruire il component NER per la lingua araba, che presenta particolari elementi che rendono pi`u difficile utilizzare algoritmi NER comunemente usati per le lingue europee. • Nel Capitolo 3 viene presentato lo stato dell’arte nell’area della NER, in generale e per le tre lingue considerate in questa tesi. • Nel Capitolo 4 si descrive LingPipe, un toolkit liberamente disponibile per la costruzione di sistemi per l’analisi del linguaggio naturale. LingPipe si `e rivelato particolarmente versatile per gli obiettivi di questa tesi. • Nel Capitolo 5 si descrive l’analisi prestazionale del modulo Part-of-Speech Tagger di LingPipe, confrontandolo con il TreeTagger. • Nel Capitolo 6 `e dedicato alla valutazione delle prestazioni. • Il Capitolo 7 `e dedicato ad esporre le conclusion e ad analizzare possibili futuri sviluppi. 8
  • 11. • Infine, il Capitolo 8 `e dedicato ad esporre e conclusioni e ad analizzare pos- sibili futuri sviluppi. 9
  • 12. Chapter 2 Background 2.1 Che cosa `e il Natural Language Processing? Un dialogo molto famoso, che si trova sul Web, `e tra il programma Eliza ed uno dei suoi autori. Eliza `e un’invenzione AI del 1960, la quale imp- iega un metodo primitivo di pattern-matching, per rispondere agli utenti, sostenendo, di sorta, una conversazione. L’obiettivo di Eliza era quello di ricoprire il ruolo di psicoterapista, cos`ı che essa poteva sostenere una con- versazione terapeutica con il paziente, anche se nel lungo andare le risposte di Eliza si potevano deteriore in schiocchezze. Attualmente, ci sono in giro altri programmi identici ad Eliza, ma questi non hanno migliorie rispetto all’originale, ovvero non implementano dei nuovi trucchi linguistici. Il termine Natural Language Processing[11, 19] (NLP) `e usato per descrivere nor- malmente la funzione di un software o di un componente hardware all’interno di un sistema informatico, che analizza o sintetizza il linguaggio parlato (o scritto). L’epiteto naturale `e quindi destinato a fare una distinzione tra il linguaggio umano e la scrittura dei linguaggi pi`u formali1 oppure i linguaggi di programmazione2 . Il Natural Language Understanding3 (NLU) (in italiano Comprensione del Linguag- gio Naturale) `e associato ad un’obiettivo pi`u ambizioso, ovvero, avere un sistema, all’interno di una macchina, che `e in grado comprendere il linguaggio naturale, come se fosse un essere umano. Questo significa che `e possibile programmare una macchina, ad esempio: una macchina che sia in grado di comprendere il codebyte di Java. 1 Come le notazioni matematiche o logiche. 2 Come il Java, il LISP, il C++, etc. 3 Il Natural Language Understanding `e un sub-topic del Natural Language Processing e si occupa di far comprendere, ad una macchina, la lettura di un testo scritto in linguaggio naturale. 10
  • 13. `E anche possibile programmare un computer per risolvere molti enigmi matematici e logici, e dimostrare teoremi ed anche venire con nuove congetture, ma l’analisi delle parole e del testo da parte di un calcolatore rimane pieno di problemi, sia pure interessanti. Si potrebbe pensare, che nessuno di questi problemi potrebbero avere un minimo di interesse commerciale, se non fosse per il fatto, che la necessit`a di informazioni, come oggi, sia cresciuta in modo esponenziale, rispetto agli altri mercati. Esse, ormai, sono disponibili in formato digitale, con libero accesso, una dimostrazione concreta n`e `e il Web. La questione, quindi, non `e pi`u la mancanza di informazioni, ma la mancanza di strumenti per la loro organizzazione ed offrirle al prezzo giusto ed al momento giusto. La maggior parte di queste informazioni `e ancora espressa in un formato testuale, piuttosto che: in immagini, in grafici, in suoni, etc. Molte di queste risiedono nei database relazionali e sono state estratte dai documenti in formato digitale, fogli di calcolo e tabelle. Ambiguit`a nel Natural Language Processing L’ambiguit`a linguistica `e qualche volta una sorgente di umorismo, ma molte parole e frasi hanno molteplici interpretazioni, che passano inosservate. Per esempio, il nome ”bank” assume molti significati nella lingua inglese. Esso pu`o riferirsi ad un’istituto bancario oppure ad un margine di un fiume. Le persone raramente confondono questi significati, a causa dei diversi con- testi in cui i token di questa parola occorrono ed il perch`e della conoscenza reale della parola. Ad esempio, chiunque legga i giornali conosce che, ”the West Bank of Jordan” non si riferisce ad un istituto bancario, bens`ı alla sponda occidentale della Giordania4, quindi il termine ”bank” `e un’istanza dell’ambiguit`a lessicale. Intere frasi possono essere ambigue rispetto alla loro struttura e quindi anche il loro significato. 4 Esso `e un territorio senza sbocco al mare sulla riva occidentale del fiume Giordano, nel Vicino Oriente. 11
  • 14. 2.2 Il Natural Language Processing e la linguistica `E necessario prima dare alcune brevi definizioni sui concetti della linguistica tradi- zionale[11, 19]. Le sezioni, che seguono, introdurranno alcuni concetti e termi- nologie, che sono il tema comune di discussione in questo campo. La copertura di queste tematiche `e destinata ad essere superficiale, ma non in modo semplicis- tico. 2.2.1 Sintassi e semantica Chomsky5 fa una netta distinzione tra le frasi, che sono sintatticamente ”anomale” (o ”non lineari”), come ad esempio ’Furiously sleep ideas green colorless.’ e le frasi, che sono grammaticalmente ben formate, ma semanticamente ”anomale”, come ad esempio ’Colorless green ideas sleep furiously.’ Il fatto che si `e in grado di ”rompere” le regole del linguaggio, nei due modi com- pletamente diversi visti sopra, `e spesso portato come prova per la ”scomponibilit`a” della sintassi e della semantica nel linguaggio. Un presupposto `e che si pu`o prima analizzare la struttura sintattica di una frase (senza riferimento al significato) e in seguito di analizzarne la struttura semantica. La separazione di forma e significato `e tipicamente una caratteristica del progetto di notazioni pi`u formali, come ad es- empio calcoli logici e linguaggi di programmazione. In tali linguaggi, il significato di una dichiarazione pu`o essere determinato esclusivamente dalla sua forma. In altre parole, la semantica di un linguaggio pu`o essere cos`ı definita sulle strutture valide del linguaggio, senza considerare fattori contestuali o extra-linguistici. In questo caso, non si e`ın quella ”felice” posizione per quanto riguarda i linguaggi naturali, dove sono l’ambiguit`a e la soggettivit`a a fare le poesie, le parole crociate, e le incomprensioni internazionali possibili. 2.2.2 Contesto e pragmatica La pragmatica, solitamente, `e definita come l’insieme delle regole, che governano l’uso del linguaggio. Dunque se si dice: ”Tu mi devi cinque euro” questo potrebbe 5 Avram Noam Chomsky `e nato a Philadelphia, il 7 dicembre 1928 ed `e un: linguista, filosofo e teorico della comunicazione statunitense. 12
  • 15. essere pi`u di una richiesta di pagamento, che un’affermazione di fatto, indipen- dentemente da come viene formulata. Da qui il primato spesso viene accordato ad intenzionare il significato nell’analisi moderna. Per esempio, se digito le parole ”elaborazione del linguaggio naturale” nella form di un motore di ricerca, che cosa si desidera cercare? Una definizione? Dei riferimenti a delle letterature sul NLP? Chi sono gli esperti di NLP? Corsi sul NLP? Un motore di ricerca ”intelligente” potrebbe essere in grado di capire questo, osservando le mie domande precedenti. Ciascuna delle precedenti query, potrebbero far restituire al motore di ricerca i seguenti risultati: ”che cosa `e il linguaggio naturale”, ”libri di testo su AI” e ”Linguistic Computing Laboratory Universit`a La Sapienza”. I termini uso e contesto sono inestricabilmente intrecciati. Alcuni contesti in- fluenzano radicalmente l’intenzione, dietro un enunciato. `E possibile, quindi, dis- tinguere due approcci generali per NLP, che affrontano questi problemi in modi diversi. Ci sono stati tentativi di costruire grandi teorie dell’uso del linguaggio, ma senza buoni risultati, arrivando cos`ı a sostenere, che per un dato dominio vi `e un pat- tern ben specifico, e che `e impossibile averne uno in generale. Infatti, riprendendo diversi documenti, come articoli di giornale, rapporti giudiziari, registri pubblici, pubblicit`a, etc.; essi sono tenuti ad avere pattern diversi in base all’uso del lin- guaggio. 2.2.3 Due punti di vista Il primo punto di vista `e radicato sul tipo di analisi linguistica, il quale `e stato accennato precedentemente. A volte viene caratterizzato come ”simbolico”, perch`e `e costituito in gran parte da regole per la manipolazione di simboli, ovvero da regole grammaticali, che controllano se una frase `e ben formata oppure no. Data la forte dipendenza di intelligenza artificiale tradizionale sul calcolo simbolico `e stato caratterizzato informalmente come Good Old-Fashioned Artificial Intelligence (GOFAI)6 [14]. Il secondo punto di vista, che ha guadagnato un’ampia importanza negli anni ’90, affonda le sue radici nell’analisi statistica del linguaggio. A volte vengono caratterizzate come empiriche, perch`e si tratta di dati linguistici, derivanti da relativi ampi corpora di testi, come i feed news e le pagine web. 6 Nel campo della ricerca in intelligenza artificiale, il Good Old-Fashioned Artificial Intelli- gence (GOFAI)[14] descrive il pi`u antico approccio originale al raggiungimento dell’intelligenza artificiale, il quale `e basato sulla logica e sul problem solving. 13
  • 16. Il modo di guardare a questa distinzione `e puramente metodologica. Il Symbolic NLP tende a lavorare in modo top-down, imponendo pattern grammaticali ben noti. Mentre, l’Empiric NLP tende a lavorare in modo bottom-up, partendo dai testi stessi, cercando dei pattern ed associazioni da modellare, alcuni dei quali potrebbero non corrispondere a rapporti puramente sintattici o semantici. Un’altro modo di pensare a questa distinzione `e quello di vedere come i due punti di vista gestiscono la complessit`a del NLP, in particolare il problema dell’incertezza, semplificato da fenomeni quali l’ambiguit`a. `E chiaro che un approccio puramente simbolico deve risolvere l’incertezza, propo- nendo regole aggiuntive, o fattori contestuali, che devono poi essere formalizzati in qualche modo. Si tratta di una metodologia basata sulla conoscenza, in quanto si basa sul fattore umano per identificare e descrivere le regolarit`a nel dominio. Mentre, l’approccio empirico `e pi`u quantitativo, in quanto tender`a ad associare probabilit`a attraverso le analisi alternate di dati e di decidere tra loro con dei metodi statistici. 2.2.4 Task e super-task Una prima applicazione per il Natural Language Processing (NLP) `e il recupero di documenti tramite i motori di ricerca; il loro ritrovamento viene fatto in base a quanto essi sono rilevanti in base alla query dell’utente. Ovviamente, il recupero dei documenti lo si pu`o eseguire senza un uso significativo del NLP, infatti alcuni motori di ricerca lo facevano, ma il trend negli anni ’90 `e stato verso la crescente sofisticazione nell’indicizzazione, nell’identificazione e nella presentazione dei testi pertinenti. Correlato, ma non identico, `e il task document routing, in cui gli elementi di un document feed sono automaticamente inoltrati ad un utente. Il document routing `e a sua volta legato al task document classification. In questo task, si pensa come assegnare i documenti in classi, di solito in base al loro contenuto. Nel caso pi`u generale, un documento potrebbe essere assegnato a pi`u di una classe e le classi possono essere parte di una struttura pi`u grande. `E possibile distinguere questa attivit`a dal task document indexing, dove un pro- gramma assegna automaticamente le parole chiave o le frasi selezionate a un doc- umento. A volte il focus non `e sul trovare il documento giusto, ma sul trovare gli obiettivi informativi specifici in un documento o in un insieme di documenti. Ad esempio, dato un insieme di articoli finanziari, si potrebbe desiderare di distillare, da ogni 14
  • 17. articolo, chi ha comprato un certo quantitativo di BTP7 . Normalmente questo `e l’estrazione di informazioni e fornisce un modo per generare dei valori, che al- trimenti rimarrebbero sepolti all’interno di una raccolta di documenti. Almeno alcune forme di documenti di riepilogo possono essere considerati come un tipo speciale di estrazione di informazioni, in cui un programma tenta di estrarre le informazioni salienti da uno o pi`u documenti e presentarle come surrogato in un documento. Questi compiti, combinati insieme in un certo modo, possono formare un ”super- task”; ad esempio, un programma potrebbe selezionare i documenti da un feed in base al loro contenuto, ordinarli in categorie e quindi estrarre alcuni pezzi prove- nienti da ciascun documento di interesse. 2.2.5 Strumenti a disposizione L’analisi linguistica del testo procede tipicamente in modo stratificato. I documenti sono suddivisi in paragrafi, i paragrafi in frasi e le frasi in singole parole. Le parole in una frase vengono analizzate (sottoposte ad analisi grammaticale) per poi essere contrassegnate con un’etichetta. Di solito, i parser si basano sui: delimitatori di frase, tokenizer, stemmer e Part-of-Speech Tagger (POS Tagger). Non tutte le applicazioni richiedono una suite completa di tali strumenti. Per esempio, tutti i motori di ricerca svolgono la suddivisione in token dei documenti, ma non tutti eseguono il part of speech (in italiano le parti del discorso). Alcuni di questi strumenti, che si andr`a a vedere nelle sezioni successive, sono: i delimitatori di frase, i tokenizer, gli stemmer, i Part-of-Speech Tagger, i sintagmi nominali, i riconoscitori di nomi, i parser e le grammatiche. Delimitatori di frase e tokenizer Rilevare i bordi di una frase con precisione non `e un task semplice, in quanto i segni di punteggiatura, che segnano la fine di una frase, sono spesso ambigui. Per esempio, il periodo pu`o denotare: un punto decimale, un’abbreviazione, la fine di una frase o un’abbreviazione alla fine di una frase. Allo stesso modo, le frasi iniziano con una lettera maiuscola, ma non tutte le parole in maiuscolo iniziano una frase, anche se seguono un periodo. 7 Il Buono del Tesoro Poliennale (BTP) rappresenta un certificato di debito emesso dallo Stato italiano, con scadenza superiore all’anno solare. 15
  • 18. A volte, i rivelatori di frase hanno bisogno di un’aiuto da parte dei tokenizer per disambiguare i caratteri di punteggiatura. I tokenizer (noti anche come gli anal- izzatori lessicali o ”segmentatori” di parole) segmentano un flusso di caratteri in unit`a significative, detti token. A prima vista, un tokenizzazione appare piuttosto semplice, in quanto un token pu`o essere preso come una sequenza di caratteri separati da spazi bianchi8 . Ad esempio, questa fase pu`o essere fatta tramite un Automatic Sentence Chunking, il quale analizza un corpus di frasi, costituite da: punti, punti esclamativi e punti interrogativi, e estraendo una frase per volta, facendo attenzione, in questo modo, a non ”nascondere” le entit`a proprie. Questo approccio cos`ı semplice pu`o essere adatto per alcune applicazioni, ma pu`o portare a delle imprecisioni. Gli strumenti per la tokenizzazione di solito si basano su: i. regole, ii. automi a stati finiti, iii. modelli stocastici iv. e modelli lessici per identificare le abbreviazioni o le parole multi-token. Stemming e Part-Of-Speech Tagger Nel suo complesso, l’analisi di un testo[4, 5] non pu`o procedere senza quella lessi- cale, e quindi `e necessario in primo luogo identificare le forme radicali delle occor- renze di una parola e di determinare la parte del discorso. Nel gergo linguistico, gli stemmer sono analizzatori morfologici, che associano varianti dello stesso termine con una forma radicale. La radice pu`o essere pensata come la forma, che dovrebbe normalmente essere trovata come una voce in un dizionario. Ci sono due tipi di analizzatori morfologici: Morfologia flessiva e Morfologia derivazionale. • Morfologia flessiva esprime relazioni sintattiche tra le parole di una stessa parte del discorso, mentre la morfologia derivazionale esprime relazioni lessi- cali tra le parole che possono essere diverse parti del discorso. • Morfologia derivazionale esprime la creazione di nuove parole da quelle vec- chie e tenta di mettere in relazione parole diverse attraverso la radice in comune. 8 Il formato CoNLL rimuove gli spazi vuoti, consentendo di utilizzare un semplice tokenizer basato sugli spazi. L’interruzione, fatta in questo modo, della frase sugli spazi e sulla pun- teggiatura potrebbe funzionare bene. 16
  • 19. Gli analizzatori morfologici fanno largo uso sia di regole e sia di dizionari. Il lessico tipicamente riguarda tutte le forme di una parola alla sua forma radice. Queste regole e lessici possono essere efficacemente codificati utilizzando macchine a stati finiti e supportano la segmentazione della parola, ma limitandosi soltanto ai termini composti. Il Part-Of-Speech Tagger si appoggia fondamentalmente su tokenizer e su delim- itatori di frase, effettuando l’operazione di associazione della parte del discorso a ciascuna parola in una frase, dove i token vengono etichettati con etichette sin- tattiche, ovvero esso decide se una data parola `e un: sostantivo, verbo, aggettivo, etc. Nell’esempio che segue ci sono due frasi, in inglese, con dei tag associati, in cui `e presente un’ambiguit`a. ’Visiting/ADJ aunts/N-Pl can/AUX be/V-inf-be a/DET-Indef nui- sance/ N-Sg.’ ’Visiting/V-Prog aunts/N-Pl can/AUX be/V-inf-be a/DET-Indef nui- sance/ N-Sg.’ Nella prima frase, il termine ’visiting’ `e un aggettivo che modifica il soggetto ’aunts’, mentre nella seconda frase, ’visiting’ `e un gerundio che prende ’aunts’ come un oggetto. Tuttavia, come illustra l’esempio sopra, a ciascun parola pu`o essere assegnato pi`u di un POS tag e per questo il ruolo del Part-Of-Speech Tagger `e di scegliere quello corretto. Ci sono due approcci principali per implementare un Part-Of-Speech Tagger: basato su regole e stocastico. Nel primo caso, si prova ad applicare delle conoscenze linguistiche per escludere tutte le sequenze di tag, che sono sintatticamente non corrette; infatti questo pu`o essere fatto attraverso delle regole contestuali, oppure su informazioni morfologiche per aiutare il processo di disambiguazione. Nel secondo caso, ci si basa sui data training e si comprendono gli approcci, che si basano su informazioni di frequenza o di probabilit`a nel disambiguare le asseg- nazioni dei tag. I tagger stocastici pi`u semplici disambiguano le parole, basandosi esclusivamente sulla probabilit`a, che una certa parola si verifica con un particolare tag. Questa probabilit`a viene calcolata da un training set, in cui le parole ed i tag sono stati gi`a abbinati manualmente da un linguista esperto. Nota: i tagger pi`u complessi possono usare modelli stocastici molto 17
  • 20. pi`u avanzati, come gli Hidden Markov Models (HMM) (vedere Appen- dice A), oppure il Maximum Entropy (ME). Sintagmi nominali e riconoscitori di entit`a proprie Spesso c’`e bisogno di andare oltre ad un semplice Part-Of-Speech Tagger, ad esem- pio, si supponga che si voglia costruire un sistema che estrae notizie di bussiness da un determinato documento, oppure la necessit`a di indentificare le persone, i nomi di aziende e loro relazioni. Sapere che una data parola `e un nome proprio, potrebbe essere utile (e.g. ”Beppe”), per`o utilizzando sotanto il Part-Of-Speech Tagger non aiuta a riconoscere i nomi propri e i cognomi (e.g. ”Beppe Grillo”). Per questo compito, i sintagmi nominali9 [26] possono essere di grande aiuto, in quanto essi in genere svolgono un processo di parser pi`u superficiale rispetto, in- vece, ad altri parser che svolgono un processo pi`u di profondit`a, che sono stati citati precedentemente. Questi parser (parziali) hanno come obiettivo quello di individuare i principali elementi costitutivi, come i sintagmi nominali o ”gruppi nominali”10 . Gli estrattori di sintagmi nominali possono essere di due tipi: simbolici11 o statis- tici. I Named Entity Recognizers o NER (vedere Sezione 3.1) (in italiano Riconoscitori di Entit`a Proprie, identificano i nomi propri in uno o pi`u documenti e possono anche classificare questi nomi propri sul fatto, che designano: le persone, i luoghi, le aziende, le organizzazioni e simili. Diversamente dagli estrattori di sintagmi nominali, essi scelgono di trascurare le parti del discorso e di lavorare direttamente con i token e le loro propriet`a, come ad esempio la Capitalizzazione Convenzionale. Come per i Part-of-Speech Tagger, essi possono contare sia su regole scritte a mano e sia sulla costruzione di modelli stocastici (HMM). Tuttavia, la maggior parte dei NER, attualmente disponibili (tipo quelli commerciali) sono rule-based. Parser e grammatiche Il parsing viene eseguito rispetto ad una grammatica, in pratica da un insieme di re- gole, che dicono quali combinazioni delle parti del discorso generano correttamente una frase ed una struttura sintattica. L’analisi semantica richiede l’identificazione 9 Il sintagma nominale[26] `e un tipo di sintagma il cui elemento principale `e un nome. 10 I gruppi nominali sono sintagmi nominali parziali. 11 Di solito, in questo caso, si definiscono le regole per ci`o che costituiscono una frase, utilizzando un’euristica relativamente semplice. 18
  • 21. di diversi tipi di parole o di frasi, ovvero il riconoscimento di una parola o di una frase come un nome proprio ed anche l’identificazione del ruolo che essi hanno nella frase, cio`e se soggetto o oggetto. Ciascuna semantica differisce l’una dall’altra in base alle feature, che esse hanno, cio`e, una parola oppure un sintagma nominale pu`o riferirsi a qualcosa di animato o inanimato, ad una societ`a, ad un’organizzazione, ad un luogo geografico, ad una data oppure ad una somma di denaro. Identificare sintagmi nominali `e un compito importante e non banale. Per questo, l’ingegneria linguistica `e molto impegnata nello scrivere regole grammaticali ef- ficaci. Nonostante siano state scritte vaste grammatiche di uso generale per la lingua inglese, nessuna di queste `e riuscita ad ottenere una copertura del 100% di tutti i costrutti, che si possono incontrare nei testi casuali, come ad esempio gli articoli di notizie. Ci sono per`o delle risorse basate su corpus, dove i ricercatori e gli sviluppatori possono attingere. Ad esempio, il progetto Penn Treebank, presso l’Universit`a della Pennsylvania, ha come obiettivo quello di annotare i documenti, da insiemi di testi esistenti, in base alla loro struttura linguistica. In pratica, questo progetto inserisce i POS tag nei documenti e produce un ”parser scheletrico”, che attesta la struttura sintattica grezza di una frase, per poi generare una ”banca” di alberi linguistici. La struttura sintattica, spesso, viene annotata utilizzando le parentesi per produrre degli elenchi incorporati. Un esempio possibile `e questo che segue: (SS: (SN: (D: Il) (S: cane)) (SV: (V: mangia) (SN: (D: l’) (S: osso))) Figure 2.1: Struttura della frase rappresentata come un albero. 19
  • 22. 2.3 TermExtractor: un estrattore terminologico L’estrattore terminologico TermExtractor[21] `e una web application, altamente performante, sviluppata da ricercatori del Dipartimento di Informatica, per es- trarre automaticamente dai documenti disponibili di un dato dominio, della ter- minologia condivisa da una web community. L’applicazione ha un’architettura a pipeline, composta da 6 fasi principali, come mostrato in Figure 2.2, che sono: 1. Impostare le opzioni del sistema: in questa fase l’utente pu`o impostare di- verse opzioni o accettare l’impostazione predefinita; 2. Caricamento dei documenti: gli utenti possono caricare i documenti in pi`u formati, uno per uno oppure un archivio compresso; 3. Conversione dei documenti: i documenti vengono convertiti in formato testo, le euristiche vengono usate nel correggere gli errori di conversione (special- mente dai documenti originati da file in formato PDF); 4. Estrazion dei termini: in questa fase la terminologia viene estratta e filtrata; 5. Validazione della terminologia: in questa fase un partner oppure un team di partner validano la terminologia; 6. Salvataggio/Scaricamento della terminologia: in questa fase la terminologia viene salvata oppure scaricata in formato testo, XML o Excel. Figure 2.2: Struttura della frase rappresentata come un albero. 20
  • 23. 2.4 Caratteristiche della lingua araba In questa sezione si discute brevemente sui preliminari essenziali, che coprono una panoramica generale della lingua araba[3] e si enfatizzano gli aspetti, che concernano la visibilit`a di questo lavoro legato alla parte sull’Arabic NER, ovvero il riconoscimento delle entit`a proprie per la lingua araba. Di seguito si introducono concetti sulla lingua araba, come la storia, l’ortografia, la morfologia, la struttura, etc. 2.4.1 Storia e prospettive correnti Il termine lingua Semitica, secondo (Lipi´nski 2001), `e stato introdotto nel 1781 dallo storico tedesco AL Schloezer, per mezzo dei figli di Sem (Shem), con una lunga storia di oltre di 4500 anni. Questa famiglia `e parte della famiglia afro- asiatica e la sua prima forma scritta `e stata introdotta nel terzo millennio a.C.. Le lingue semitiche sono state le prime ad ottenere una forma scritta, con la scrittura Akkadian iniziata nella met`a del terzo millennio a.C.. Attualmente, la lingua Semitica pi`u parlata `e l’arabo, seguita dall’aramaico e dall’ebraico. Versteegh (2001) ha proposto un certo numero di identificazioni di caratteris- tiche per le lingue di famiglia Semitica. Secondo lo studio, una lingua Semitica dovrebbe avere un sistema di root-pattern morfologico, la presenza di consonanti enfatiche/gutturali, un sistema di verbi con prefisso e suffisso di coniugazione, cos`ı come un gran numero di corrispondeze lessicali. Se una lingua `e classificata come Semitica, essa deve esibire la presenza di tutte queste caratteristiche. Oggi, l’arabo `e la lingua madre di oltre 317 milioni di persone nei paesi arabi. Secondo le stime delle Nazioni Unite (UN), nel 2015, ci saranno nei paesi arabi, quasi 395 milioni di abitanti (fonte UN Development Programme 2009). Inoltre, l’arabo `e la lingua liturgica religiosa di oltre 1.5 miliardi di musulmani in tutto il mondo, si tratta di una delle lingue ufficiali delle Nazioni Unite ed `e classificata sesta in termini di importanza. Il lavoro fatto da Weber (1997), sulle prime dieci lingue influenti, la lingua araba si `e classificata quinta. Questa classifica, si basa sulle seguenti misure di punteg- gio: 1. Il potere economico dei paesi che utilizzano la lingua. 2. Il numero delle principali aree di attivit`a umana in cui la lingua `e importante. 3. Il numero e la popolazione dei paesi che utilizzano la lingua. 21
  • 24. 4. Prestigio socio-letterario della lingua. Anche se lo studio `e vecchio, in quanto copre il periodo 1980-1990, Weber ritiene che la sua scoperta non ha bisogno di essere aggiornata, per come la popolazione mondiale `e cresciuta relativamente. Secondo la internet monitoring agency12 , il tasso di crescita degli utenti del W3 `e stato del 445% tra il 2000 e il 2010. Il Medio Oriente ha segnato la secona rete con il pi`u alto tasso di crescita degli utenti nello stesso periodo, circa il 1825%. Assumendo che la maggior parte di questi utenti sono di lingua araba, il contenuto web in lingua araba subir`a un forte incremento nel futuro, per questo si richiede un serio sforzo, per affrontare la necessit`a di avere strumenti NLP e risorse per l’arabo. 2.4.2 Ortografia Simile alla propria famiglia Semitica (aramaico e ebraico), l’arabo[3] si scrive da destra verso sinistra. Essa dispone di 28 lettere, nelle forme di base, tra cui tre vocali lunghe. Le forme non basiche sono lettere generate da una combinazione di due lettere. Inoltre, include, come segni diacritici, cinque principali vocali brevi (non inclusi in alfabeto) e un totale di 13 combinazioni di vocali brevi. Le vocali lunghe e le vocali brevi sono correlati in un senso, che una vocale lunga `e una doppia vocale corta. Questi segni diacritici sono utilizzati principalmente per la pronuncia esatta di consonanti, che a sua volta aiutano a chiarire l’esatta interpretazione. Essi sono posti sopra o sotto le lettere. Tale processo `e descritto come vocalizzazione e il testo potrebbe essere: pienamente, parzialmente o mai vocalizzato a secondo della forma scritta (Buckwalter 2004). Le lettere della lingua araba hanno una caratteristica corsiva, questo significa che una lettera pu`o assumere una forma diversa in base alla sua posizione in una parola, che sono la posizione: iniziale, mediana, finale, o isolata. Solo tre lettere non sono interessate da questa funzione. Inoltre, sei lettere dell’alfabeto hanno solo due forme possibili, perch`e solo lettere precedenti possono collegarsi a loro e queste sei lettere non possono essere collegate alle lettere che seguono (Abdelali 2004). Una delle caratteristiche principali del testo in arabo `e l’assenza di Capitalizazione, il che significa, che non presenta differenze ortografiche in termini di casi d’uso. Un’altra caratteristica `e che c’`e poca punteggiatura, anche se recentemente, questa `e stata introdotta. La Kashida [ ] `e un carattere speciale per allungare una lettera. Per esempio 12 www.internetworldstats.com. 22
  • 25. allungando la lettera [ , H, h] nella parola [ , mHmd, Mohammad] produce la nuova forma [ ]. `E utilizzato sia per rispettare i vincoli di calligrafia o per la giustificazione del testo (Elyaakoubi e Lazrek 2005). 2.4.3 Morfologia L’arabo[3] ha un sistema morfologico complesso, che lo rende altamente flessivo, con la presenza di prefissazioni, suffissazioni, processi flessionali e derivazionali. Sebbene ha un sistema complesso, esso `e fortemente strutturato (Kiraz 2002). In aggiunta all’apposizione13 [26], ha la caratteristica di attaccamento clitico alle radici. L’arabo ha anche un sistema morfologico ricco, in cui le parole sono es- plicitamente contrassegnate per causa, genere, numero, determinatezza, modo, persona, diatesi, tempo ed altre caratteristiche morfologiche (Maamouri et al. 2006). Esistono due classi di parole generiche: aperta (sostantivo14 e verbo) e chiusa. La classe dei sostantivi in arabo `e ulteriormente suddivisa in derivati basati sull’origine della parola, come segue: • Sostantivi derivati da verbi. • Sostantivi derivati da altri sostantivi. • Sostantivi derivati da particelle15 . • Primitive16 (cio`e sostantivi che non derivano da altre categorie). Le caratteristiche morfologiche di un sostantivo in arabo ed i loro possibili valori sono i seguenti: • Numero: singolare, duale, plurale, collettivo. • Sesso: maschile, femminile, neutro. 13 L’apposizione[26] (dal latino appositio, ”aggiunta”) `e una nozione della grammatica tradizionale che indica un’unit`a sintattica (composta di una sola parola o da un sintagma nomi- nale o preposizionale) riferita ad un nome con cui stia in relazione di coreferenza. 14 I sostantivi in arabo sono un nome o un’unit`a lessicale (la quale descrive una persona, una cosa o un’idea). 15 Per particelle si intendono: le preposizioni, gli avverbi, le congiunzioni, le particelle inter- rogative, l’eccezioni, le interiezioni, le negazioni e le subordinazioni; queste, poi, possono essere racchiuse in una classe, detta classe delle particelle, la quale comprende tutte quelle parole, che appartengono alla classe delle parole generiche chiuse. 16 Tale categoria, inoltre, comprende quello che sarebbe stato classificato come participi, pronomi, pronomi relativi, pronomi dimostrativi, pronomi interrogativi e numeri. 23
  • 26. • Determinatezza: definito, indefinito. • Causa: nominativo, accusativo, genitivo. L’inventario dei verbi, per la lingua araba, `e scarso rispetto ad esempio all’inventario dei verbi di lingua inglese. La carenza di verbi `e causata dalla mancanza di una precisa significazione o di flusso del tempo come nell’inglese. Le caratteristiche morfologiche per un verbo in arabo ed i possibili valori sono i seguenti: • Aspetto: perfettivo (passato), imperfettivo (presente), imperativo (futuro). • Diatesi: attivo, passivo. • Tempo: passato, presente, futuro. • Modo17 [26]: indicativo, congiuntivo, imperativo. 2.4.4 Generazione delle parole dalla forma base La derivazione morfologica dell’arabo[3] `e basata sul principio delle radici e dei pattern per generare la classe aperta. Una radice (detta radicale) `e una sequenza di consonanti, comunemente da tre letterali (Beesley 2001). Vi `e un insieme finito di radici e si dice, che i sostantivi ed i verbi sono derivati da un insieme chiuso di circa 10.000 radici (Al-Fedaghi e Al-Anzi 1989), ed il numero di parole possibili sono stimate essere circa 6 × 1010 (Attia 2000). Un pattern `e un insieme di trasformazioni, che vengono applicate ad una radice di consonanti inserendo vocali tra esse. Le vocali possono essere vocali lunghe, ma comunemente sono le vocali brevi (segni diacritici) (Beesley 2001). Ad esempio, dato una radice con tre letterali CCC (C rappresenta la consonante) un pattern frequente `e CvCvCv (v rappresenta la vocale), le consonanti sono fisse mentre le vocali possono cambiare. Per ogni combinazione di v, un nuovo pattern `e prodotto dal pattern principale e quindi un nuovo tema18 [26] `e derivato da questo modello. Dunque, da una singola radice si possono generare centinaia parole nella forma di sostantivi o di verbi (Ahmed, 2005). 17 Il modo[26] `e una delle tre principali categorie grammaticali che compongono il sistema di coniugazione verbale. 18 Il tema[26] `e la parte della parola, che resta togliendo la desinenza e che permette l’immediata inserzione degli elementi di flessione (talvolta coincide con la radice): tema nominale, verbale, quello che resta togliendo ad una parola, rispettivamente, la desinenza nominale o la desinenza verbale. 24
  • 27. Data la radice araba [ , ktb, nozione di scrittura] (una radice a tre letterali), si potrebbe generare, ad esempio, la forma passata sostituendo le v con le vocali melodiche (a-a), ”katab”. Questa caratteristica della morfologia araba `e descritta come morfologia non concatenativa o non lineare. Tre esempi di generazione di temi sono riportati in Table 2.1. Table 2.1: Esempi di generazione di forme basi. Radice/CCC Traslitterazione Melodia/a-a Traslazione Melodia/u-i Traslazione ktb katab ha scritto kutib scrivere drs daras appreso duris imparare jmE jamaE raccolto jumiE raccogliere Le radici arabe vengono classificate in base al numero delle loro consonanti in: due letterali, tre letterali, quattro letterali e cinque letterali. Da uno studio fatto da Elkateb et al. (2006), si afferma che 85% delle parole arabe sono derivate da radici a tre letterali. Ci sono 15 pattern a tre letterali, di cui almeno nove sono di uso comune e quattro pattern a quattro letterali sono molto pi`u rari. Tutti questi pattern subiscono alcuni cambiamenti di tema rispetto alle vocali (Violetta et al., 2000). Le vocali sono normalmente aggiunte alla radice del modello per tre letterali CvCvCv e per quattro letterali CvCCvC. I temi generati dalla stessa radice, sono semanticamente correlati e, d’altra parte, ne deriva che seguono lo stesso modello per presentare lo stesso stile. 2.4.5 Struttura della parola araba Di seguito vengono mostrate le varie forme di parole presenti nella lingua araba[3]: • Proclitiche[26], parole, di solito monosillabi, che, non avendo accento au- tonomo, si appoggiano prosodicamente alla parola seguente, detta ospite, formando con essa un’unit`a accentuale, a volte anche a livello di frase. I verbi possono avere solo una proclitica, mentre i sostantivi possono averne pi`u di due. Le possibili proclitiche vengono listate in Table 2.2 con la loro funzione. 25
  • 28. Table 2.2: Proclitiche. Morfema Traslitterazione Funzione + w+ e + f+ in ordine a + l+ in ordine a + b+ per + + w+l+ e +(in ordine a, per) + + w+b+ e +(in, a, per) + + f+l in ordine a +(per) + + f+b in ordine a +(in ordine a, per) • Prefissi, • Tema, • Suffissi, • Enclitiche, morfemi che occorrono alla fine di una parola e rappresentano i pronomi possessivi elencati in Table 2.3. La loro funzione `e differente, secondo la classe della parola a cui essi attribuiscono. Table 2.3: Enclitiche. Morfema Traslitterazione Funzione (verbo) Funzione (sostantivo) + +y - mio + +k tu (singolare) tuo + +kma tu (duale) tuo + +km tu (plurale maschile) tuo + +kn tu (plurale femminile) tuo + +h egli suo + +hA ella sua + +hma loro (duale) loro + +hm tu (plurale maschile) loro + +hn tu (plurale femminile) loro 26
  • 29. 2.4.6 L’ambiguit`a nella lingua araba La perdita dei segni diacritici interni, come ad esempio le vocali brevi o la shadda, porta a diversi tipi di ambiguit`a nei testi in lingua araba[3], sia dal punto di vista strutturale e sia dal punto di vista lessicale, perch`e diversi segni diacritici rappre- sentano differenti significati. Questi possono essere risolti solo dalle informazioni contestuali e di una adeguata conoscenza della lingua. A parte l’ambiguit`a a causa di segni diacritici mancanti, la lingua araba, come molte altre lingue, affronta il problema di ambiguit`a tra due o pi`u entit`a proprie. 2.4.7 I nomi propri nella lingua araba La caratteristica pi`u significativa dei nomi propri arabi[3] `e l’assenza di qualsiasi caratteristica ortografica speciale per distinguerle dalle altre categorie di parole. A differenza dell’inglese e di altre lingue con caratteri latini, l’arabo non ha infor- mazioni di questo tipo. L’implicazione di questa caratteristica `e altamente significativo a causa del fatto che i nomi pi`u adatti sono nelle forme di verbi, aggettivi o sostantivi comuni. Questo rende l’estrazione corretta del sostantivo in arabo strettamente vincolato, e fortemente influenzata da, passaggi pre-elaborati prima di eseguire il task di estrazione del sostantivo stessso. Questo task `e pi`u sensibile a errori di livelli di analisi precedenti alla corretta estrazione del sostantivo rispetto all’inglese. In questa sezione si spiega come si formano in arabo i sostantivi per le tre tipologie (PERS, LOC e ORG). 2.4.8 Struttura Nomi di persone In termini di struttura del nome di persona, la pi`u piccola componente di un nome di persona araba[3] potrebbe essere classificato come (1) un componente di base che potrebbe essere un nome semplice o composto e (2) da affissi. Gli affissi vengono utilizzati con lo scopo di generare un numero di istanze di nome. Dunque, ci`o significa che il nome base della persona `e preceduto opzionalmente da 27
  • 30. uno o due suffissi, come [ , Al, il] (ad esempio ”AlMohammad”) o [ , bw, padre di] (ad esempio padre di Mohammad) e seguiti da opzionalmente da un suffisso, come l’aggettivo indicativo ”y”, che si attacca alla fine del nome. I cognomi in arabo, possono derivare secondo: la professione, il nome della trib`u di nascita della persona, oppure il luogo di residenza o di nascita. Nomi di luoghi o di organizzazioni I nomi delle organizzazioni nella lingua araba[3] comunemente iniziano con un prefisso seguito da uno o pi`u sintagmi nominali connesi con la congiunzione [ , w, e] e seguito opzionalmente da un altro sintagma nominale connesso con una congiunzione di coordinamento [ , l, per]. I sintagmi nominali potrebbero essere un singolo o un nome composto opzionalmente seguito da uno o pi`u aggettivi. Il nome principale nel sintagma nominale potrebbe essere un nome comune o pro- prio (persona o luogo). Il prefisso dell’organizzazione potrebbe essere un articolo determinativo [ , Al, il] per produrre una forma definita. A differenza dei nomi delle organizzazioni, i nomi dei luoghi sono relativamente semplici, ma non quando essi sono detti dopo le persone. Iniziano con una po- sizione dei prefissi, ad esempio, la parola ”citt`a”, seguito da un nome proprio. La maggior parte dei prefissi sono in forma femminile. Tuttavia, diversamente delle organizzazioni, i luoghi non vanno, dal punto di vista morfologico, d’accordo con i sostantivi che seguono. Molti nomi propri in arabo vengono generati nello stesso modo di una qualsiasi altra parola presente nella lingua araba utlizzando il sistema del pattern-root morfologico. Infatti, secondo un esperimento fatto Alkharashi (2009), ha concluso che i nomi di persona sono per lo pi`u generati da radici arabe, allo stesso modo di qualsiasi altra categorie di parole. `E stato scop- erto, che solo 16 pattern Arabi contribuiscono alla produzione di oltre il 50% dei nomi di persona nella lingua araba. La radice Hind da sola ha prodotto 146 nomi. I nomi propri non possono avere le proclitiche, alla fine della parola, ad essi connessi e le enclitiche potevano essere attaccate solo al token capo del nome proprio. Inoltre, alcune categorie grammaticali 28
  • 31. non possono far parte del nome proprio, come: i verbi, i pronomi relativi o personali. Secondo la sezione precedente, i nomi di persona hanno pattern interni quali connettori (o prefissi Kunia) e connettori di nome; mentre, i nomi di luoghi e di organizzazione hanno la presenza di prefissi. 2.4.9 Sintassi Dato che gli aggettivi seguono i sostantivi in arabo[3], l’individuazione dei contorni in un nome di organizzazione frase `e problematico. La ragione `e che i nomi di organizzazione sono di solito sintagmi nominali e possono essere seguiti da aggettivi che non possono essere facilmente identificati come parte del nome o non, e quindi il limite che termina lo possono perdere. A volte gli aggettivi che seguono modificano il prefisso e, a volte il sostantivo principale. Anche se i ”designatori” di nomi vengono utilizzati all’inizio dei nomi di organiz- zazione e di luogo, che sono di grande aiuto nel riconoscerli, spesso accade che non sempre risolvono il problema, in quanto questi trigger sono nomi comuni che potrebbero essere utilizzati in qualsiasi altro contesto; dato che innesca titoli che sono normalmente sostantivi e che possono essere seguiti da una serie di aggettivi, i quali causerebbero la separazione ulteriore del trigger dal nome, con dipendenze molto pi`u lunghe. L’annessione viene usato in arabo per formare nomi composti per indicare la pos- sessivit`a e data l’ampia diffusione dei nomi in arabi nella forma di sostantivi, i nomi completi potrebbero essere una serie di nomi semplici. La mancanza di un indica- tore possessivo in arabo come ”of” e ”’s” nella lingua inglese rende una qualsiasi sequenza di sostantivi ambigui con un potenziale nome completo. Per esempio, il seguente nome senza un connettore e nessun titolo `e troppo ambiguo per rilevarlo, infatti [ , Emr Fhd] potrebbe essere interpretato come ”l’et`a di Fhd” oppure come un nome di una persona ”Emr Fhd”. 29
  • 32. 2.4.10 Peculariet`a e sfide nella corretta rilevazione e classificazione dei nomi propri in arabo Il rilevamento dei nomi propri in arabo[3], in generale, `e molto pi`u difficile che in inglese a causa delle caratteristiche citate sopra. Tuttavia, le sfide non nascono solo dalla natura delle entit`a proprie, ma in realt`a dai livelli di analisi fatti prima. La sfida pi`u interessante `e l’ambiguit`a presente nelle entit`a proprie. Per`o, i segni diacritici in parte risolvono il problema, come alcuni segni ambigui sono esatti segni diacritici, indipendentemente dal fatto che essi rappresentano un nome proprio o qualsiasi altra categoria. Siccome, la lingua araba `e una lingua altamente flessiva[31, 33, 3], cio`e una parola araba pu`o essere visto come la seguente composizione: Word = prefix(es) + lemma + suffix(es) Entrambi i prefissi e suffissi (vedere Sezione 2.4.5) sono autorizzati ad essere com- binazioni, e quindi una parola pu`o avere zero o pi`u affissi. Dal punto di vista statistico, questa caratteristica flessiva della lingua araba rende i testi in arabo, rispetto ai testi scritti in altre lingue che sono mesno complesse morfologicamente, pi`u sparsi, e, quindi, la maggior parte dei task, per l’Arabic Natural Language Processing, sono pi`u difficili e pi`u impegnativi. Figure 2.3: Un banale esempio di una parola araba composta[31, 33]. Nella letteratura si trovano due possibili soluzioni[31, 33] per superare questo osta- colo, con lo scopo di ridurre la sparsit`a dei dati nei testi arabi. La prima soluzione `e il Light stemming, che consiste nell’omettere tutti i prefissi e suffissi, che sono stati aggiunti al lemma per ottenere il significato necessario. Questa soluzione `e con- veniente per task quali l’Information Retrieval e il Question&Answering (vedere Sezione 7.1), perch´e le preposizioni, gli articoli e le congiunzioni sono considerati come parole di arresto e non vengono presi in considerazione per decidere se un 30
  • 33. documento `e rilevante per una query oppure no, ma `e meno conveniente per i task NLP come il NER. La seconda soluzione `e Word segmentation, che consiste nel separare i diversi componenti di una parola da uno spazio; questa tecnica `e in grado di diminuire la scarsit`a di dati senza provocare perdita di informazioni con- testuali. Pertanto, questa soluzione `e la pi`u adeguata ai task NLP, che richiedono di mantenere ai diversi morfemi di parole come il Word Sense Disambiguation, NER, etc. 31
  • 34. Chapter 3 Stato dell’arte Il Named Entity Recognition (NER) e il problema della disambiguazione sono stati indirizzati in differenti campi di ricerca come: NLP, Web mining e Semantic Web communities. Tutte queste si accordano sulla definizione di Named Entity, definizione coniata da Gaishman et al. come un’unit`a di informazione descritta dal nome proprio di: una persona, un’organizzazione, un luogo, un marchio, un prodotto, un’espressione numerica (includendo il tempo), la data, la moneta e la percentuale numerica; tutte queste entit`a possono essere presenti in uno o pi`u testi. L’identificazione di questi riferimenti legati a queste entit`a, nei testi non strut- turati, `e stato riconosciuto come un importante sub-task dell’Information Extrac- tion (IE). Tale sub-task `e essenziale ed `e stato assegnato al ramo dell’elaborazione del linguaggio naturale o Natural Language Processing (NLP). Molti lavori si basano su euristiche e definizioni di pattern (modelli) per riconoscere, ad esempio, nomi propri di societ`a nei testi. I dati di addestramento `e definito da un set di scelte euristiche. L’idea `e quella di riconoscere e classificare attraverso delle regole distinte le feature associate, con esempi positivi e negativi. Un differente approccio avviene con l’introduzione della tecnica Supervised Learn- ing (SL). Con gli approcci Semi-Supervised Learning (SSL) e Unsupervised Learn- ing (UL), si pensa di risolvere questo problema sfruttando un piccolo set iniziale di dati annotati da ”istruire” e da mostrare al sistema; oppure risolvendolo con il clustering. Lasciando i recenti metodi sull’uso di DBpedia, Freebase e YAGO, il Semantic Web community ha introdotto la mappa delle entit`a proprie, per relazionare i fatti mostrati da queste antologie di grana fine. 32
  • 35. La disambiguit`a `e una delle chiavi di sfida in questo scenario ed `e fondata sul fatto che i termini presi in zone del testo ”isolate” sono naturalmente ambigui. Quindi, un testo contenente il termine London pu`o riferirsi alla citt`a London dello stato del Minesota, USA; tutto dipende dal contesto che st`a attorno al termine London. Similmente: persone, organizzazioni e societ`a possono avere nomi e nick- name multipli. Questi metodi generalmente provano a trovare nell’intorno del termine, qualche ”punto”, per contestualizzare la sua ambiguit`a ed a raffinarla, se possibile. 3.1 Metodi di apprendimento per i sistemi NER I primi studi fatti sui sistemi NER, si sono basati sulla gestione delle regole, ora invece si preferisce utilizzare i seguenti metodi di apprendimento per i sistemi NER[10], (vedere Appendice A) come: • Apprendimento Supervisionato (Supervised Learning (SL)), • Apprendimento Semi-supervisionato (SemiSupervised Learning (SSL)) e • Apprendimento Non Supervisionato (Unsupervised Learning (UL)). 3.1.1 Apprendimento Supervisionato L’idea del Apprendimento Supervisionato[10, 13] `e quella di studiare le caratter- istiche delle entit`a proprie, con esempi positivi e negativi, su un insieme grande di documenti (annotati manualmente) e di progettare le regole per catturare le istanze di un certo tipo, utilizzando tecniche che includono: • Hidden Markov Models (HMM), • Decision Trees, • Maximun Entropy Models (ME), • Support Vector Machine (SVM) e • Conditional Random Fields (CRF). Il metodo basato sull’Apprendimento Supervisionato consiste nell’etichettare le parole presenti in un corpus, dove essi vengono annotati come entit`a nelle fasi di pre-addestramento del corpus stesso; le perfomance del sistema dipendono oltre al corpus, anche dalla ”robustezza” del vocabolario. 33
  • 36. Le sfide con l’approccio basato sull’Apprendimento Supervisionato non sono molto affidabili, per via delle risorse a disposizione e del costo proibitivo per gli ”esempi” creati. 3.1.2 Apprendimento Semi-supervisionato La tecnica principale, utilizzata nell’Apprendimento Semi-supervisionato[10], `e chiamata ”bootstrapping” e richiede un piccolo grado di supervisione, come un insieme di semi, per iniziare con il processo di apprendimento; dopodich`e si ap- plica il processo di estrazione e di riconoscimento per trovare dei nuovi oggetti (in questo caso di entit`a proprie). La prima tecnica basata sull’Apprendimento Semi-supervisionato `e stata fatta, implementando le lexical features1 , attraverso le espressioni regolari, per gener- are delle liste iniziali (seeds) ed attraverso delle regole fisse per il controllo lessi- cale. Un secondo approccio utilizzato `e una variante del ”mutual bootstrapping”; esso usa le relazioni sintattiche, come soggetto-oggetto, per scoprire con pi`u accuratezza le evidenze contestuali attorno alle entit`a, sfruttando l’output generato da un sistema POS Tagger. 3.1.3 Apprendimento Non Supervisionato Un tipico approccio basato sull’Apprendimento Non Supervisionato[10, 17] `e il clustering2 , questo crea dei gruppi in base alla similarit`a contestuale, ovviamente esistono altri metodi di Apprendimento Non Supervisionato. Ad esempio, l’utilizzo di WordNet, come supporto nella ricerca all’interno della lista delle parole, che co-occorrono pi`u frequentemente nel testo, oppure utilizzando dei pattern lessicali per il calcolo statistico su un grande corpus di elementi. In molti sistemi NER, che utilizzano il metodo non supervisionato, applicano il clustering. Questa tecnica, in passato, `e stata usata da molti ricercatori (Miller 1 Il significato in italiano sta per ”caratteristiche lessicali” di un linguaggio. Per conoscere a priori, quali sono le lexical features, utilizzate in un linguaggio, ci sono due sorgenti dove `e possibile acquisire queste informazioni e sono: gli spunti semantici e sintattici. 2 Il clustering o cluster analisys `e un insieme di tecniche per l’analisi multivariata dei dati con il compito di selezionare e di raggruppare gli elementi omogenei in un data set. Tali teniche si basano su misure relative alla somiglianza tra gli elementi, calcolandone la distanza reciproca (ad esempio la distanza euclidea) e quindi se, un dato elemento appartiene o meno ad un insieme, dipende da quanto lo stesso elemento, preso in esame, `e distante dall’insieme stesso. 34
  • 37. et al., 2004; Lhang, 2005; Koo et al., 2008; Ratiov & Roth, 2009; Huang e Yates, 2009). 35
  • 38. 3.2 Stato dell’arte e related work dei sistemi English NER Lo stato dell’arte dei sistemi English NER[10] ha inizio negli anni ’90, dove `e stato introdotto il concetto di NER, nel Message Understanding Conference (MUC). Tutte le conferenze sono state finanziate dal Defense Advanced Research Project Agency (DARPA), per incoraggiare lo sviluppo di metodi nuovi e migliori per l’Information Extraction, cercando di estrarre informazioni ben precise e ben strut- turate all’interno di testi non strutturati. Per poter partecipare al MUC, ciascun team doveva progettare e realizzare un sistema in grado di svolgere il compito scelto e di essere in grado di avere, la propria performance, valutata rispetto agli altri team concorrenti. Questa iniziativa `e stata estremamente fruttuosa per una serie di ragioni[10]. • L’enfasi di avere un sistema reale in esecuzione, evitando la normale tendenza dei ricercatori a concentrare i loro occhi su orrizzonti lontani. • La fornitura di materiali uniformi, per i dati di addestramento e di valu- tazione, incoraggiano una valutazione rigorosa mediante un insieme di met- riche concordate. • L’introduzione di un elemento competitivo, che coinvolge un feedback diretto, ha reso l’esercizio pi`u interessante, rispetto alla normale conferenza tecnica. Tra i partecipanti al MUC ci sono state sia universit`a, come, ad esempio, le uni- versit`a di Edinburgh, di Kyoto e del Massachusetts (MIT), e sia privati. Le prime due conferenze fatte nel 1987 e 1989, si sono occupate nell’analisi di messaggi durante delle operazioni navali. Il MUC-3 (1993) ed il MUC-4 (1994) si sono concentrati sull’estrazione di eventi, in particolare ricercando, negli articoli di giornale, dettagli sugli attacchi terroristici. Per il MUC-3, il punteggio ottenuto dal miglior sistema `e stato circa il 50% per la Recall ed il 60% per la Precision. Al MUC-5 (1993), sono state introdotte pi`u task orientati al business, come ad esempio trovare annunci di joint venture. Alla sesta conferenza (MUC-6), il task per il Named Entity Recognition fu suddiviso in tre sub-task: ENAMEX (nomi di persone, nomi di luoghi e nomi di organiz- zazioni), TIMEX (data e ora di espressione), e NUMEX (per importi monetari e percentuali). Il miglior sistema ha ottenuto un punteggio circa del 75% per la Re- call e circa del 75% per la Precision. Gran parte dei sistemi NER hanno utilizzato l’approccio rule-based fino alla met`a degli anni ’90, e tutt’ora viene utilizzata. Ma dalla sesta conferenza in poi, gli sviluppatori hanno incominciato a progettare e sviluppare sistemi basati sulle tecniche dell’apprendimento automatico. 36
  • 39. Ad oggi, i sistemi NER sviluppati (in varie lingue) si sono evoluti attorno a questi tre sub-task. Nel 1998, il MUC-7 ha dimostrato, che l’estrazione di entit`a da articoli di giornali, per la lingua inglese, era pi`u o meno un problema risolto. I migliori sistemi, progettati per il MUC-7, hanno segnato dei valori di F1-Score pari al 93.39%, a fronte di una performance umana stimata di F1-Score circa del 97.60% e del 96.95%. Attualmente lo stato dell’arte dei sistemi NER, per la lingua inglese, `e rimasto fermo al MUC-7. In Table 3.1 si mostrano i migliori quattro sistemi, per ciascuna conferenza di valu- tazione NER, in base ai diversi parametri di valutazione, per ciascun evento. Table 3.1: I migliori quattro sistemi sul task Entity Estraction al MUC. Partecipante Sistema Approccio MUC Rank F1-Score Riferimenti SRA NameTag Regole 6 1 96.42 Krupka 1995, 7 2 91.60 Krupka et Hausm. 1998 SRI FASTUS Regole 6 2 94.00 Appelt et al. 1995 BBN Identifier Stocastico 6 1 93.65 Bikel et al. 1997, 7 2 90.44 Bikel et al. 1999 U.Edinburg LTG Ibrido 7 1 93.39 Mikheev et al. 1998 Le restanti lingue Una buona parte del lavoro di ricerca NER `e dedicato allo studio della lingua in- glese, ma una percentuale, forse maggiore, riguarda l’indipendenza del linguaggio e i problemi del multi-language. Questo lavoro `e stato avviato dalle conferenze MUC, le quali hanno dato una spinta per la progettazione e realizzazione di NER in altre lingue. Infatti, nel 1996, `e stata avviata una conferenza correlata al MUC, denominata Multilingual Entity Task (MET-1) per valutare l’estrazione di infor- mazioni su testi in lingue diverse dall’inglese, soffermandosi solo sullo spagnolo, cinese e giapponese; mentre, l’anno successivo, il MET-2 si `e soffermato solamente sull’estrazioni di entit`a per il cinese ed il giapponese. Le conferenze sul NER sono iniziate con il MUC, per poi essere continuate con i shared task nel Conference on Natural Language Learning (CoNNL), sofferman- dosi oltre alla lingua inglese, anche nelle restanti lingue. Infatti, nel CONLL-2003 37
  • 40. viene studiato il tedesco. Allo stesso modo, lo spagnolo e l’olandese sono forte- mente rappresentati, entrambi potenziati da un importante convegno dedicato: il CONLL-2002. Il cinese viene studiato rilasciando un’abbondante letteratura (ad esempio, L. J. Wang et al. Del 1992, H.-H. Chen & Lee 1996, S. Yu et al. 1998); stesso discorso vale per il francese (G. Petasis et al. 2001 Poibeau 2003), per il greco (S. Boutsis et al. 2000) e per l’italiano (W. Black et al. del 1998, A. Cuc- chiarelli & Velardi 2001); infine, l’arabo (F. Huang 2005) ha iniziato a ricevere molta attenzione a progetti su larga scala come il Global Autonomous Language Exploitation (GALE)3 . 3 http://projects.ldc.upenn.edu/gale/. 38
  • 41. 3.3 Stato dell’arte e related work dei sistemi Italian NER I sistemi per il trattamento automatico della lingua italiana, vengono affrontati in EVALITA. EVALITA `e un’iniziativa dedicata alla valutazione del Natural Lan- guage Processing e degli strumenti vocali per la lingua italiana. L’obiettivo generale di EVALITA4 `e quello di promuovere lo sviluppo di tecnologie linguistiche per la lingua italiana, di definire ed estendere l’attuale stato dell’arte nel ”parsing” della lingua italiana, favorendo l’applicazione di modelli esistenti e fornendo un quadro di riferimento condiviso, in cui i sistemi e i diversi approcci possono essere valutati in modo coerente. Infatti, i dati di sviluppo sono in vari formati e il compito `e composto di attivit`a secondarie, con una valutazione quan- titativa di diversi tipi di uscite, annotando anche funzioni diverse. Nella prima edizione[8], del 2007, l’attenzione si `e concentrata principalmente sulle applicazioni per la lingua italiana, con vari approcci di analisi, ad esempio basato su regole e stocastico, e paradigmi, ad esempio constituency-based e dependency-based. L’obiettivo, infatti, era di contribuire, con riferimento all’italiano, per l’indagine sulle cause della irriproducibilit`a dei risultati di analisi noti in letteratura su lingue diverse dall’Inglese, come per il ceco, il tedesco, il cinese, l’italiano, e su altri Tree- Banks Penn. Gli stessi dati di sviluppo, estratti dal Turin University Treebank5 , ci sono stati per la distribuzione, sia con il TUT nativo (dependency-based) e sia sul TUT Penn (constituency-based), ed il compito `e stato articolato in due binari paralleli, rispettivamente sul constituency-based e sul dependency-based. La valutazione, in EVALITA 2007, si `e basata sull’Italian Content Annotation Bank (I-CAB). L’I-CAB `e un corpus composto da 525 notizie tratte dal quo- tidiano locale ”L’Adige”, per un totale di circa 180.000 parole. `E annotato con informazioni semantiche a diversi livelli: • espressioni temporali, • entit`a (persone, organizzazioni, luoghi, e entit`a geo-politiche) • e le relazioni tra le entit`a (ad esempio, la relazione di affiliazione collegamento di una persona di una organizzazione). L’annotazione di I-CAB `e realizzato in collaborazione con CELCT. Finora si sono 4 Ad esempio, esiste un task, denominato News People Search Task[24] (o NePS Task), che si propone di valutare attraverso i documenti la risoluzione di coreferenza di entit`a proprie di persone indicate nella cronaca italiana. In esso vengono coinvolti due aspetti problematici: l’ambiguit`a (persone diverse che hanno lo stesso nome) e le variazioni di nome (nomi diversi possono riferirsi alla stessa persona). 5 http://www.di.unito.it/∼tutreeb. 39
  • 42. completati i primi due livelli di annotazione, cio`e le espressioni e le entit`a tem- porali. L’I-CAB sta diventando un punto di riferimento per le varie informazioni automatiche per le attivit`a di estrazione, in quanto segue una politica di riuti- lizzo dei linguaggi di markup gi`a disponibili. In particolare, esso adotta gli schemi di annotazione sviluppati per l’ACE Entity Detection e per i task: Time Expres- sions Recognition e Normalization; seguendo le linee guida ACE-LDC per l’Inglese, dove gran parte dello sforzo `e stato nell’adattamento alle specifiche caratteristiche morfo-sintattiche della lingua italiana. Il miglior sistema per il NER dell’italiano `e stato il sistema EntityPro, il quale si basa sui Support Vector Machine ed `e stato addestrato considerando sia feature statiche e sia feature dinamiche. Il sistema ha ottenuto una misura F1-Score di 82.14% e la valutazione `e stata fatta sulla base di una corrispondenza esatta. La seconda edizione[9], del 2009, `e diventata la campagna di valutazione di riferi- mento sia del Natural Language Processing e sia delle tecnologie vocali per l’italiano. Quest’ultimo, per la prima volta, `e stato la principale novit`a di EVALITA 2009, in quanto `e stata organizzata una iniziativa per esso, grazie, sopratutto, al sostegno del’Italian Association of Speech Science (AISV). Come seconda novit`a rilevante, lo stesso evento ha iniziato una collaborazione con Passage6 . Per quanto riguarda il task sul Entity Recognition, esso `e stato suddiviso in due sub- task: Named Entity Recognition (NER) e Local Entity Detection and Recognition (LEDR). Come nella precedente edizione, per il primo sub-task, la valutazione `e stata fatta sull’I-CAB, in cui le entit`a sono state annotate nel formato OBI, o BIO (vedere Sezione 4.3.3) ed `e stato utilizzato lo stesso data. I punteggi vanno dal 82.00% al 61.03%, e quattro sistemi (su sette) hanno ottenuto un punteggio sopra al 79% (considerando la loro migliore conduzione). I quattro sistemi con il miglior punteggio, infatti, hanno ottenuto punteggi molto vicini in termini di F1-Score: il sistema con il miglior punteggio (FBK ZanoliPianta) ha ot- tenuto il 82% (Precision 84.07% e Recall 80.02%); il secondo (UniGen Gesmundo) 81.46% (Precision 86.06% e Recall 77.33%); il terzo (UniTN-FBK-RGB) 81.09% (Precisione 83.20% e Recall 79.08%); infine il quarto (UniTN Nguyen) 79.77% (Precision 83.05% e Recall 78.86%). Se i risultati vengono comparati in termini di Precision e di Recall, si nota, che tutti i sistemi hanno ottenuto dei valori alti per la Precision rispetto alla Recall, dopo l’esecuzione del task. L’ultima edizione[30], del 2011, di valutazione del Natural Language Processing e delle tecnologie vocali per l’italiano, supportato dal gruppo di lavoro NLP dell’AI*IA (Associazione Italiana per l’Intelligenza Artificiale/Italian Association for Artifi- 6 Passage `e una campagna di valutazione di analisi per il francese, la quale mira a condividere le metodologie con analoghe iniziative a livello europeo. 40
  • 43. cial Intelligence) e dall’AISV (Associazione Italiana di Scienze della Voce/Italian Association of Speech Science). La novit`a introdotta da questa edizione `e che il task `e stato basato sulle notizie dei telegiornali. Esse sono state gentilmente messe a disposizione dalla televisione RTTR, un’emitettente locale. L’annotazione dei dati `e basata sullo standard di ACE-LDC, per Entity Recognition Task e Normalization Task, ed `e stata adattata alla lingua italiana e limitata al riconoscimento delle entit`a proprie. La novit`a principale introdotta per l’edizione 2011 sta nel fatto, che il task `e basato sulla trasmissione di notizie ed `e consistito in due sub-task7 : • completo: esibizione dei partecipanti sia nel sub-task per la trascrizione au- tomatica e sia nel sub-task Named Entity Recognition; • o solo NER: esibizione dei partecipanti nel Named Entity Recognition sfrut- tando la trascrizione automatica fornita dagli organizzatori. Il task sul riconoscimento delle entit`a proprie ha avuto quattro partecipanti, tutti solo per il sub-task NER, i quali hanno presentato un totale di nove esecuzioni da valutare ufficialmente. Uno dei partecipanti ha presentato quattro esecuzioni (due in modalit`a ”chiusa” e due in modalit`a ”aperta”), un altro tre esecuzioni (due in modalit`a ”chiusa” e una in modalit`a ”aperta”) e due hanno presentato solo una esecuzione in modalit`a ”chiusa”, per un totale di nove esecuzioni da valutare ufficialmente. Nota: Per la modalit`a ”chiusa” si intende solamente quei dati distribuiti dagli organizzatori e senza risorse aggiuntive8. Mentre per la modalit`a ”aperta” si intende tutte quelle risorse aggiuntive a quelle distribuite dagli organizzatori. I risultati F1-Score, ottenuti dai sistemi partecipanti nella valutazione ufficiale, vanno dal 63.56% al 52.15% nella modalit`a ”aperta” e dal 60.98% al 42.42% nella modalit`a ”chiusa”, i quali mostrano, che vi `e spazio per miglioramenti in questo task. Soltanto il sistema con il miglior punteggio, cio`e FBK Alam, ha conseguito dei risultati discreti in termini di F1-Score (63.56% in modalit`a ”aperta” e 60.98%- 60.67% in modalit`a ”chiusa”). Altri due sistemi hanno ottenuti dei punteggi molto stretti: FBK Chowdhury ha ottenuto dei risultati leggermente superiori rispetto UniPi SimiDeiRossi in modalit`a ”chiusa” (57.02% e 56.61% rispettivamente), ma non ha partecipato alla modalit`a ”aperta” dove UniPi SimiDeiRossi ha ottenuto un punteggio di 58.19%. 7 Per entrambi i sub-task si sono utilizzati gli stessi dati di addestramento. 8 Per risorse aggiuntive si intende: gazetteer, dizionari di entit`a proprie, ontologie, Wikipedia e framework per NLP (come TextPro, GATE, OpenNLP, etc). 41
  • 44. 3.4 Stato dell’arte e related work dei sistemi Arabic NER Per quanto riguarda la lingua araba, ci sono stati pochi sforzi sui sistemi Ara- bic NER[18]. Questo `e dovuto alla mancanza di risorse di entit`a proprie per l’arabo, dalla limitata quantit`a di progressi compiuti in generale nel NLP arabo e, sopratutto, per l’assenza di iniziative dedicate alla valutazione del NLP e degli strumenti vocali per la lingua araba. Il primo sistema NER per la lingua araba `e stato sviluppatto da Maloney e Niv (1998) e si chiama TAGARAB, questo riconoscitore di entit`a proprie integra dentro di s`e un motore per il riconoscimento di pattern, con l’analisi morfologica. Il ruolo dell’analizzatore morfologico `e quello di decidere dove un nome finisce e dove inizia il contesto del ”non nome”; tale decisione dipende sulle parti del discorso della parola araba e/o dalla sua inflessione. Le prestazioni combinate ottenute per la Precision, la Recall e F1-Score sono 92.35%, 84.8% e 88.325%. Abuleil (2004) ha presentato una tecnica per estrarre nomi propri da un testo, costruendo una base di dati di nomi con la loro classificazione che pu`o essere sfruttata nei sistemi Question & Answer9 . L’accuratezza del sistema `e stata cal- colata in termini di Precision e sono: 90.4% per PERS, 93% per LOC e 92.3% per ORG. Sami, Moreno e Guiraro (2005) hanno usato un corpora parallelo (spagnolo-arabo) ed un tagger di entit`a proprie in spagnolo per etichettare i nomi in un corpus arabo. Ovvero per ogni coppia di frasi, spagnolo-arabo, allineate insieme. Essi usano un semplice schema di mappatura per traslitterare tutte le parole nelle frasi in arabo e far ritornare quei abbinamenti con l’entit`a proprie nelle frasi in spagnolo con le entit`a proprie nelle frasi in arabo. Il loro approcccio `e applicabile solo quando si dispone di un corpus parallelo. Essi hanno ottenuto, con il loro sistema, una Precision (90%) ed una Recall (97.5%), rispettivamante alti. Zitouni, Sorensen, Luo e Florian (2005) hanno adottato l’approccio basato su mod- ello per la rilevazione e il riconoscimento delle entit`a proprie. Inoltre nello stesso ambito, una citazione pu`o essere sia un nome, sia un nominale oppure un pronom- inale. In questo ambito, la definizione di entit`a viene estesa e ridefinita in questo modo: un entit`a `e un aggregato di tutte le citazioni, di qualsiasi livello, che fanno a loro volta riferimento ad una entit`a concettuale. Le operazioni di addestramento e di valutazione del sistema sono stati fatti sui dati del Automatic Content Ex- 9 I sistemi di Question & Answer (QA) (vedere Sezione ), si pongono come approccio alter- nativo ai tradizionali sistemi di Information Retrieval (IR) e di Information Extraction (IE), in quanto la differenza st`a nella query, perch`e essa viene analizzata per cercare di capire il suo significato e per supportare l’estrazione dell’informazione cercata. 42
  • 45. traction (ACE) del 2003 e una parte del 2004, in lingua araba. L’obiettivo della valutazione `e stata fatta per investigare sull’utilit`a di derivare le feature in n-gram nella rilevazione di citazioni da parte del sistema. Lo stemming n-gram features ha dato un interessante miglioramento in termini di Precision (64.4%), di Recall (55.7%) e di F1-Score (59.7%). Benajiba e Rosso hanno sviluppato un sistema, chiamato ANER 2.0 System (2007), il quale usa l’approccio statistico che sfrutta i modelli probablistici: Maximun En- tropy (ME) e Conditional Random Fields (CRF). Essi hanno usato un corpus di loro propriet`a, chiamato ANERCorp, per effettuare l’addestramento e la valu- tazione del modello CRF. L’ANERCorpus `e composto da un corpus di addestra- mento e da un corpus di valutazione in modo ad hoc per il NER task. I risultati combinati, ottenuti nell’esecuzione del task, su tutte le feature in termini di Preci- sion, Recall, e F1-Score sono stati rispettivamente: 86.9%, 72.77% e 79.21%. Di recente, Khaled Shaalan e Hafsa Raza, hanno sviluppato un loro sistema, NERA (Named Entity Recogniton for Arabic) (2009), il quale usa l’approccio basato su regole, utilizzando tecniche linguistiche basate sulle regole grammaticali della lin- gua araba. Questo approccio `e motivato dalle caratteristiche e dalle peculariet`a della lingua. Il sistema NERA prova ad estrarre e a riconoscere le entit`a pro- prie utilizzando degli Arabic script creati ad-hoc. I risultati combinati, ottenuti nell’esecuzione del task, su tutte le feature, in termini di Precision, Recall, e F1- Score sono stati rispettivamente: 91.68%, 90.82% e 92.255%. 43
  • 46. Chapter 4 Descrizione del parser LingPipe 4.1 Una breve panoramica Il parser LingPipe[5], come `e stato accennato, `e un insieme di strumenti per l’elaborazione di testo utilizzando la linguistica computazionale ed `e scritto inter- amente in Java. Le potenziali operazioni eseguibili da LingPipe sono: • Riconoscere i nomi di persone, organizzazioni o luoghi in un documento. • Classificare automaticamente i risultati della ricerca Twitter in categorie. • Suggerire correzioni alla query (Forse cercavi... ). L’architettura di LingPipe `e: • Efficiente. • Scalabile. • Riutilizzabile. • Robusta. Inoltre, LingPipe fornisce un insieme di strumenti per l’Information Extraction ed il Data Mining, tra cui: • il tracciamento delle entit`a proprie (esempio persone o proteine); • permette di collegare le entit`a proprie nelle entry di una base di dati; 44
  • 47. • classificare il testo per tipo di lingua, codifica dei caratteri, generi, argomenti o sentimenti; • fare la correzione dello spelling rispetto ad un insieme di testi; • clustering di documenti da argomenti impliciti e scoprire le tendenze signi- ficative nel tempo. Il parser LingPipe implementa la maggior parte dei Document Analisys. Infatti, in input pu`o avere file di tipo: XML, HTML e testo normale, mentre in output pu`o essere configurato per restituire file di tipo XML, oltre al file di tipo testo. Tutti gli input/ouput di tipo XML vengono gestiti attraverso i SAX filter1 , permettendo cos`ı di combinare catene di handler per una completa elaborazione XML (Entities, DTD validation, character set, etc). 1 I SAX filter hanno lo stesso pattern come gli stream filter di Java (java.io.InputStramFilter). 45
  • 48. 4.2 Elenco delle risorse e delle lingue disponibili In generale, le risorse[5, 6] che vengono messe a disposizione, sono: • API e unit test in codice sorgente Java. • Modelli multi-lingual, multi-domain e multi-genre. • N-best output con stime statistiche di confidenza. • Addestramento on-line (learn-a-little, tag-a-little). • Modelli thread-safe e decodificatori per il Concurrent-Read Exclusive-Write (CREW). • Character encoding-sensitive I/O. Inoltre, per LingPipe, esistono altri tipi di risorse e strumenti a disposizione, come dizionari2 , regole, Part-Of-Speech Tagger e Phrase Chunker. L’approccio di base di LingPipe `e la portabilit`a su pi`u lingue. Tutto ci`o che si deve cambiare `e il rilevamento della frase e della tokenizzazione. Sono stati costruiti con successo dei NER per l’inglese, lo spagnolo, l’olandese, il tedesco, il francese, l’hindi, il cinese e l’arabo. La rete, in aggiunta, mette a disposizione gazetteer per pi`u lingue, come: • inglese, • francese, • italiano, • spagnolo, • arabo, • cinese e • tedesco. 2 Per i dizionari LingPipe usa direttamente i gazetteer per la loro creazione, perch`e, grazie a codesti, `e possibile addestrare le categorie. 46
  • 49. I POS Tagger, in formato corpora e CoNNL, supportati dalla rete per LingPipe sono: • cinese mandarino (pi`u fonti), • tedesco (pi`u fonti), • inglese (pi`u fonti), • spagnolo, • arabo, • cecoslovacco allineato con l’inglese, • greco, • coreano e • portoghese. 47
  • 50. 4.3 Il diagramma dei componenti Nell’Ingegneria del Software, un diagramma dei componenti (o component dia- gram), `e un diagramma che ha come scopo, quello di rappresentare la struttura interna dell’intero software modellato, secondo i termini delle sue componenti prin- cipali e delle relazioni fra di esse. In questa sezione vengono mostrati due diagrammi[5, 19, 4] dei componenti del parser di LingPipe: il primo diagramma schematizza e non scende nei dettagli dei singoli package, mentre il secondo diagramma mostra le classi di maggiore importanza del parser di LingPipe. La Figure 4.1 mostra soltanto i package del parser, con le eventuali relazioni tra essi, che sono: corpus, tokenizer, suffixarray, symbol lm (language model), classify e tag (tagging). Figure 4.1: Diagramma dei componenti relativo ai package del parser di LingPipe. 48
  • 51. La Figure 4.2 mostra le classi, con le eventuali relazioni, dell’intero parser, con ciascuna classe appartenente al proprio package. Figure 4.2: Diagramma dei componenti relativo alle classi del parser di LingPipe. 49
  • 52. 4.4 Named Entity Recognition di LingPipe Il parser LinPipe, per estrarre[5] le entit`a proprie, utilizza i chunker, per ogni tipo di approccio. Come `e stato accennato nella Sezione LingPipe: il parser adottato, esso fornisce: per l’approccio basato su regole il Regular Expression-Based Chun- ker; per l’approccio basato su modello stocastico (HMM) il Model-Based Chun- ker; e per l’approccio basato su dizionario il Dictionary-Based Chunker, che a sua volta `e suddiviso in due tipologie: Exact Dictionary-Based Chunker e Approximate Dictionary-Based Chunker. Ovviamente, l’intero processo di estrazione delle entit`a proprie `e identico per tutti e tre gli approcci. Esso `e suddiviso nei seguenti passi: 1. Creazione di un chunker. 2. Applicazione del metodo chunk . . . tramite il chunker creato, per prendere un chunking. 3. Inizializzazione di un iterator dal chunkSet del chunking. 4. Scorrimento del set di chunk tramite l’oggetto iterator. a. Per ogni chunk, ritorna un’entit`a propria e il suo tipo associato. Riepilogando, viene prima creato un chunker ed il metodo chunk . . . del chunker `e utilizzato per prendere un chunking. La maggior parte del tempo di elaborazione viene speso nel passo 2 per creare il chunking. Il ciclo scansiona un elenco ordinato di chunk memorizzati in una lista collegata e per ogni chunk ritorna un’entit`a propria assieme al tipo (PERS, ORG, LOC e MISC). Il tipo di chunker `e l’unica differenza nei tre approcci, che si andranno a descrivere di seguito. 4.4.1 Regular Expression-Based Chunker Il Regular Expression-Based Chunker `e particolarmente semplice se `e possibile scrivere un’espressione regolare (vedere Appendice C), che cattura l’entit`a propria prevista dal pattern (modello). Infatti, il primo passo consiste nello scrivere un’espressione regolare, che cor- risponde a tutti e solo a quelle entit`a proprie, che si vogliono riconoscere. Un esem- pio potrebbe essere quello di trovare gli indirizzi email ben formato. Fondamental- mente, le espressioni regolari sono l’unica parte sostanziale dell’implementazione. 50
  • 53. 4.4.2 Dictionary-Based Chunker L’utilizzo di un dizionario nella ricerca delle entit`a proprie, talvolta, `e sufficiente per trovare tutti le entit`a proprie, presenti nel testo, con un dizionario. Ad esem- pio, un nome come ”50 Cent” o un nome del prodotto simile a ”Galaxy Samsung S4” pu`o rivelarsi molto difficile da trovare in un testo, utilizzando solo riconosc- itori stocastici o solo riconoscitori basati su regole. Talvolta un dizionario pu`o essere utilizzato in combinazione con un sistema di riconoscimento statistico per migliorare la Recall per i nomi ”difficili”. I nomi tendono ad essere difficili se sono facilmente confondibili con i numeri o con le parole comuni. Un’altra strategia che pu`o essere utilizzata, sia per eseguire un riconoscimento statistico di un’organizzazione inserita in un corpus e quindi utilizzare l’uscita per costruire un dizionario, che pu`o essere utilizzato per ri-annotare frammenti di corpus, che possono essere stati persi nel primo passaggio. Il Dictionary-Based Chunker usa un dizionario3 per identificare le entit`a proprie all’interno di una stringa. Un dizionario, in LingPipe, `e fatto da una lista di entry, ciascuna delle quali consiste di una terna formata da: stringa (entit`a propria), tipo (PERS, ORG, LOC e MISC) e punteggio. Spesso, per la costruzione dei dizionari si utilizzano i gazetteer di entit`a proprie (persone, organizzazione e luoghi). Exact Dictionary-Based Chunker Nell’Exact Dictionary-Based Chunker, di LingPipe, si `e utilizzato l’approccio pi`u semplice nel fare un’espressione regolare disgiuntiva o una ricerca su sottostringhe, tale che da far convergere rapidamente la ricerca all’interno dei dizionari, an- che di modeste dimensioni. Per questo, LingPipe fornisce un’implementazione dell’algoritmo di Aho-Corasick4 [2]. La bellezza di questo algoritmo sta nel trovare tutto tramite gli abbinamenti su un dizionazio in tempo lineare, indipendentemente dal numero di ”disabbinamenti” o dalla dimensione del dizionario. Nell’Exact Dictionary-Based Chunker, al costruttore gli vengono forniti: un diziona- 3 Il tipo di struttura utilizzato per i dizionari `e il MapDictionary. 4 L’algoritmo di Aho-Corasick[2] `e un algoritmo per la ricerca di stringhe (o di string matching) inventato da Alfred V. Aho e Margaret J. Corasick. Esso `e un tipo di algoritmo basato su dictionary-matching, il quale effettua la ricerca degli elementi in un’insieme finito di stringhe (ovvero il dizionario) con un testo in input; esso abbina tutti pattern simultaneamente. La complessit`e dell’algoritmo `e lineare nella lunghezza del pattern, pi`u la lunghezza del testo cercato e pi`u il numero di abbinamenti in output. 51
  • 54. rio, un tokenizer factory e due flag. Il dizionario, oltre ad essere popolato con una entry alla volta, pu`o essere caricato da una versione, precedentemente salvato, da un file5 . Il tokenizer factory usa il metodo IndoEuropeanTokenizer per creare i token dal testo, che poi vengono usati nella ricerca all’interno del dizionario, per fare l’abbinamento delle singole entry. Approximate Dictionary-Based Chunker Nell’Approximate Dictionary-Based Chunker, di LingPipe, si implementa sempre un chunker basato su dizionario, il quale per`o esegue una ricerca per approssi- mazione. La ricerca, per l’identificazione dei chunk, si basa su di un abbinamento fuzzy, la quale viene valutata utilizzando una funzione per il calcolo della dis- tanza. Il dizionario dell’Approximate Dictionary-Based Chunker viene popolato nello stesso modo del dizionario dell’Exact Dictionary-Based Chunker. Esso, in- fatti, non si limita a cercare corrispondenze esatte, bens`ı restituisce un’istanza di tipo WeightedEditDistance, che `e il grado di similitudine tra un chunk ed un entry del dizionario. 4.4.3 Model-Based Chunker Implementare un NER utilizzando l’approccio statistico `e relativamente semplice se esiste un modello addestrato precedentemente. LingPipe attualmente dispone di tre generici ed addestrabili chunker di tipo stocastico, in particolare di tipo Hidden Markov Models (HMM), che possono essere utilizzati per il riconoscimento di entit`a proprie. CharLmHmmChunker Il CharLmHmmChunker impiega un estimatore basato su modello stocastico (HMM) e un tokenizer factory per fare l’addestramento di un chunker. L’estimatore usato `e un’oggetto della classe AbstractHmmEstimator per la stima del modello sot- tostante. Esso usa un tokenizer factory per ”spezzare” i chunk in sequenze di token e tag. Per l’addestramento del modello, questa classe implementa l’interfeccia ObjectHa- ndler Chunking , che pu`o essere utilizzato per fornire le istanze di addestramento. Le istanze di addestramento vengono fornite attraverso un chunk handler nel modo 5 In questo modo non `e necessario crearlo ripetendo la procedura entry per entry. 52
  • 55. consueto. Per il tag handler, esse richiedono lo standard BIO tagging scheme (per maggiori dettagli, vedere Sezione 4.4.4) in cui il primo token in un chunk di tipo X `e etichettato con B X (BEGIN), tutti i token successivi nello stesso chunk sono etichettati con I X (INSIDE) ed i token che non stanno nel chunk vengono etichettati con O. Inoltre, questo chunker pu`o essere addestrato con le entries del dizionario tramite un’opportuno metodo, dove chiamandolo si addestrano le probabilit`a di emissione, per i relativi tag, determinati dalla suddivisione in token della sequenza di caratteri (dopo la conversione al sottostante tag schema definito nella classe HmmChunker). Questo chunker `e basato sulla codifica di chunking all’interno del problema di etichettatura (`e un contesto leggermente pi`u ricco e pi`u sensibile della codifica standard I/O). Allora, un model character language gestisce la codifica, per ogni tag (o stato) nel modello, e un modello di transizione bi-gram con probabilit`a massima. Questo chunker esegue: il First-Best output, il N-Best output e il Confidence output. Riassumendo, questo parser `e il pi`u semplice anche se ha un chunker meno ac- curato, ma in compenso ha una buona Recall per il emphConfidence output e possiede delle stime abbastanza affidabili e se `e abilitata la funzione di caching, esso `e molto veloce . CharLmRescoringChunker Il CharLmRescoringChunker estende la classe AbstractCharLmRescoringChunker e fornisce un chunker, di tipo long-distance character language model-based, che opera con il rescoring dell’uscita, avendo un chunker di tipo character language model. Il modello esegue il rescoring sui chunker sottostanti. Essi sono un’istanza della classe CharLmHmmChunker, i quali vengono configurati fornendo al costrut- ture le seguenti specifiche: il tokenizer factory, la lunghezza del n-gram, il numero di caratteri ed il rapporto di interpolazione. Il modello di rescoring utilizzato da questo chunker si basa su un character language model delimitato per ogni tipo di chunk, processando ulteriormente il testo non presente nei chunk con il char- acter language model. L’addestramento viene fatto nel modo usuale, attraverso una chiamate al metodo per il chunk handler, il quale, a sua volta, implementa l’interfaccia ObjectHandler Chunking , permettendo cos`ı il suo addestramento tramite dei chunking di esempi. Questo chunker possiede un’ottima Precision, ma `e il pi`u lento fra tutti i chunker6 . Esso usa un CharLmHmmChunker (si veda il punto precedente) per generare le 6 Questo accade sopratutto quando effettua due volte il calcolo dei punteggi sulle N-Best List. 53
  • 56. ipotesi, che poi ricalcola utilizzando la distanza maggiore dei modelli di tipo lan- guage character. Esso tende ad approssimare la confidenza stimata attraverso le N-Best List, la quale per`o viene attenuata dal modello. TokenShapeChunker Il TokenShapeChunker utilizza il TokenShapeDecode per il named-entity e il tok- enizer factory per implementare un entity detection, attraverso l’interfaccia Chunk. Un chunker named-entity viene costruito partendo da un tokenizer factory e da un decoder. Il tokenizer factory crea i token, i quali poi vengono inviati al decoder; i tipi di chunk identificati sono derivati dai tipi di named-entity trovati. I token e gli spazi bianchi restituiti dal tokenizzatore vengono concatenati per formare, nel testo sottostante, una ”slice” (fetta) di chunk, restituiti dallo stessi chunker. Cos`ı un tokenizer, simile al Stop List tokenizer o al Porter stemmer tokenizer, creer`a una ”slice” di carattere, il quale non si abbiner`a all’input. Inoltre, `e possibile uti- lizzare un filtro whitespace-normalizing tokenizer, come ad esempio per produrre un testo normalizzato per la base di chunk. Questo chunker funziona con un modello generativo, per prevedere congiuntamente il token successivo ed il tag succesivo, i quali sono basati dal token precedente e dal tag precedente. Le parole sconosciute o rare sono sostituite tramite una classificazione Morphologically-Based (basati su un’istanza di TokenCategorizer). Per utilizzare un chunker (ovvero per l’addestramento del modello) di questo tipo, bisogna utilizzare la classe TrainTokenShapeChunker. Riassumendo, questo chunker `e molto veloce, ma dispone solo del First-Best Output e le sue prestazioni, normalmente, sono a met`a strada tra CharLmRescoringChun- ker e CharLmHmmChunker. 4.4.4 Addestramento del modello per un sistema NER Come `e stato accennato, il NER ha come compito quello di etichettare una data sequenza di parole, in cui si assegna un fissato tag per ogni parola appartenente alla frase in ingresso. Per poter fare l’addestramento del modello, indiferentemente dalla lingua su cui si voglia costruire il proprio riconoscitore delle entit`a proprie, si utilizza, per lo schema di codifica, il sistema BIO (o sistema OBI ). Con il tag B X (Begin) si rappresenta la prima parola di un’entit`a propria di tipo X, per esempio, al posto della X, PERS (Person) o LOC (Location). Il tag I X (Inside) indica che una parola `e parte di un’entit`a propria, ma non `e la prima parola. Il 54
  • 57. tag O (Outside) `e utilizzato per tutte le parole, che non sono delle entit`a proprie (un esempio `e in Table 4.1 con una frase etichettata). Figure 4.3: Addestramento e valutazione di un modello stocastico (HMM) per NER. Il chunker basato su modello `e tra i pi`u complessi rispetto ai due chunker prece- denti; in questo approccio, il chunking con il miglior valore viene restituito dal chunker pre-compilato, che `e stato letto da un file7 , il quale contiene un EN- TITY MODEL. Per la fase di addestramento del modello, bisogna quindi avvalersi dei dati di addestramento, che devono contenere un ampio numero di token etichettati. Per esempio, si consideri la frase ”Mr. Smith goes to Washington.” mostrata in Table 4.1, la quale mostra la lista di token e degli entity tag associati alla frase. 7 Questo file contiene un modello, il quale `e stato creato da un’addestramento precedente, su dei dati di addestramento. 55
  • 58. Table 4.1: Lista di Token e di Entity Tag associati in una frase. Token tag Mr. B PERS Smith I PERS goes O to O Washington B LOC . O Ogni tag `e costituito da un prefisso e un suffiso che indica il tag del corrente, del precedente o del seguente token. `E possibile costruire un modello, da un insieme di dati di addestramento, per etichettare i token con gli entity tag. Il modello continua a tracciare il numero di transizioni da un tag all’altro ed il numero di occorrenze di una parola dato un tag. Ora, si prenda in considerazione la frase precedente, la quale `e composta da sette token (vedere la tabella precedente). Si `e in grado di impostare gli entity tag per la data frase da una tabella di 6 righe e 9 colonne. In Table 4.2 si mostra solo alcune delle nove colonne per brevit`a, dove ogni colonna rappresenta un entity tag; essa contiene i token e gli entity tag generati da un modello. Table 4.2: Lista di Token e di Entity Tag generati da un modello stocastico (HMM). Token B LOC · · · B PERS I PERS O Mr. X Smith X goes to Washington X . X I valori della prima riga sono calcolati dal prodotto della probabilit`a di iniziare in una colonna con tag x e la probabilit`a della parola ”Mr”, pre- sente nel modello, per l’entity tag x. Le rimanenti righe della tabella, fatta un’eccezione per l’ultima riga, sono calcolate dal prodotto della probabilit`a di transizione, dall’entity tag x all’entity tag y, con la probabilit`a del token, presente nel modello, per il dato entity tag. Infine, l’ultima riga nella tabella `e il prodotto della probabilit`a di finire con un entity tag x e la probabilit`a 56
  • 59. del carattere ”.”, presente nel modello, per il tag x. Nel caso dell’esempio, l’insieme dei tag per i sette token della frase sono estratte dalla tabella, iniziando dall’ultimo token e lavorando all’indietro fino ad arrivare al primo token. Per ciascun token si calcola l’entity tag con la pi`u alta probabilit`a utilizzando la tabella (o matrice) delle probabilit`a presente in Table 4.2. L’output di questo algoritmo non pu`o essere utilizzato direttamente, in quanto se ne occupa la classe HmmChunk, che ne gestisce la loro decodifica per i vari entity tag (PERS, LOC, ORG e MISC), che vengono restituiti nel chunk. In LingPipe `e possibile effettuare l’addestramento di un corpus e la cross-validation; inoltre, `e possibile, sia con un chunker di tipo stocastico o sia con un chunker di tipo stocastico con rescoring, utilizzare dei dizionari8 durante la fase di training delle categorie. Esso, quindi, permette di costruire dei proprio modelli da utilizzare all’interno dei sistemi NER, che applicano l’approccio statistico. Funzioni di LingPipe per l’addestramento del modello Per fare ci`o `e necessario, che le posizioni vengano ”alimentate” attraverso il metodo trainDictionary . . . . Questo metodo non `e astratto ed `e disponibile sia per un tradizionale chunker di tipo stocastico, attraverso la funzione CharLmHmmChun- ker . . . , e sia per un chunker di tipo stocastico con rescoring, attraverso la funzione CharLmRescoringChunker . . . . Invece, per l’addestramento del modello, che sfrutta i dizionari, `e necessario uti- lizzare il metodo trainDictionary . . . , cosicch`e nella fase di addestramento, la Precision del modello aumenti. Questo metodo non `e astratto ed `e disponibile sia per il tradizionale chunker di tipo stocastico (chunk.CharLmHmmChunker) e sia per la versione rescoring (chunk.CharLmRescoringChunker). Core Business Intelligence Il Core Business Intelligence, ovvero colui che si occupa della gran parte del lavoro di parsing del corpus annotato manualmente, `e la classe BioTagChunkCodec9 , la quale si occupa sia del parsing, sia del chunking e sia della convalida del parsing. La classe BioTagChunkCodec implementa un chunk per taggare sulla base dello schema di codifica, ad esempio il sistema BIO (o sistema OBI ), assieme ad uno specifico factory tokenizer. 8 In questo caso, i dizionari vengono utilizzati come gazetteer. 9 Questa classe `e thread-safe. 57
  • 60. Lo schema di codifica/decodifica del sistema BIO La base del sistema BIO `e quella di ”spezzare” il chunk, di tipo stocastico, in una successione di token. Il primo token di tipo X in a chunk `e etichettato con B X, e le sottosequenze di token in un chunk di tipo X sono etichettati con I X. Tutti gli altri chunk sono etichettati con il tag O. Si consideri, per esempio, la seguente stringa in input: John Jones Mary and Mr. J . J . Jones ran to Washington . 012345678901234567890123456789012345678901236567890123 0 1 2 3 4 5 e la suddivisione in blocchi con questa data stringa: (0 ,10):PERS, (11 ,15):PERS, (24 ,35):PERS, (43 ,13):LOC L’indicizzazione viene fatta sia sul primo e sia sull’ultimo carattere, inoltre, si nota che le due entit`a proprie (che sono due nomi di persona) ”John Jonus” e ”Mary”, sono due chunk seperati di tipo PERS; mentre il blocco per ”Washington” appare prima della fine del periodo ed `e un entit`a propria di tipo LOC. Nel caso in cui si ha un tokenizzatore, che ”spezza” gli spazi e la punteggiatura, il token inizia a partire dal + e continua attraverso i segni −. John Jones Mary and Mr. J . J . Jones run to Washington . +−−− +−−−− +−−− +−− +−+ ++ ++ +−−−− +−− +− +−−−−−−−−−+ In Table 4.3 i token si trovano nella colonna di destra, mentre nella colonna di sinistra si trovano i tag utilizzati dalla schema di codifica/decodifica del sistema BIO, utilizzati da LingPipe. Nota: in ciascun blocco si possono avere un qualsiasi numero di token. Vi `e un singolo tag O con solo il prefisso di default; per il tag B X ed il tag I X hanno entrambi il prefisso predefinito, mentre il suffisso `e diverso per tutti i tipi di X chunk10 . 10 Con il simbolo X si intende, ad esempio: PERS, ORG, MISC, DATE, etc. 58
  • 61. Table 4.3: Lista di Token e di Entity Tag associati in una frase. Token Tag John B PERS Jones I PERS Maby B PERS and O Mr. B PERS J. I PERS J. I PERS Jones I PERS ran O to O Washington B LOC . O Le sequenze di tag legali Le sequenze dei tag legali sono descritte in Table 4.4, in cui la prima colonna riporta schematicamente i tag e la seconda colonna mostra i tag che li seguono, con le variabili che vanno su tutti i tipi di chunk: Table 4.4: Le sequenze legali con il sistema BIO. Tag Successivi tag legali O O, B X B X O, I X, B Y I X O, I X, B Y Nota: il tentativo di codificare etichette, con sequenze di tag illegali, comporter`a al sollevamento di una eccezione. 59
  • 62. 4.5 Part-Of-Speech Tagger di LingPipe Il Part-of-Speech Tagging11 (POS Tagging) `e un task complesso del NLP e consiste nell’assegnazione automatica di un Part-of-Speech tag (POS tag) a ciascuna parola in un testo. Sfortunatamente, la stessa parola pu`o essere taggata con differenti POS tag, per questo il POS Tagging `e un task per la disambiguazione. Infatti, egli assegna l’etichetta ad una parola in un testo (corpo) in corrispondenza ad una particolare parte del discorso, basandosi sia sulla sua definizione, cos`ı come il suo contesto, cio`e in rapporto con le parole adiacenti e collegate in una frase o in un paragrafo. Quindi, per fare questo tipo di ricoscimento `e necessario avere un modello stocas- tico, in particolare un Hidden Markov Models (HMM), il quale `e stato preceden- temente addestrato su una sequenza di frasi precedentemente etichettate, e poi salvato su file. Con il modello, si pu`o effettuare l’operazione di associazione dei POS tag[4, 5, 19] ai token, durante il processo di POS Tagging. 4.5.1 POS tag Un POS Tagger assegna il tag pi`u probabile a ciascun token del testo utilizzando il modello. Il numero standard dei POS tag sono otto. Essi sono: aggettivi, avverbi, congiunzioni, articoli determinativi, nomi, preposizioni e verbi, i quali vengono usati per trovare riferimenti ai nomi propri, alle frasi e identificare eventi nel testo. Questo numero `e sufficiente per quei task, che hanno bisogno solo di identificare i nomi o gli aggettivi senza ogni ulteriore qualificazione. I tag set usati per identificare le parti del discorso a un livello pi`u dettagliato possono avere 100 o pi`u tag, che descrivono con maggior dettaglio una parte del discorso. 11 Nel corpus linguistico, il Part-of-Speech Tagging viene chiamato anche grammatical tagging o word-category disambiguation. 60
  • 63. 4.5.2 Addestramento del modello per un sistema POS Tagger Per la fase di addestramento del modello, bisogna avvalersi di un grande insieme di frasi etichettate similmente alla frase mostrata in Table 4.4. Queste frasi cos- tituiscono il modello che viene utilizzato per predire i tag delle parole presenti nell’insieme di validazione. Table 4.5: Lista di Token e di Entity Tag associati in una frase. Token tag The at wartime nn protocol nn of in September np 12 cd . . In un linguaggio dinamico, il lessico e la sintassi cambiano nel tempo e perci`o il modello addestrato su tale linguaggio, non sar`a pi`u ben performante. Il modello memorizza le stime di probabilit`a di transizioni di stato e lo stato data una certa parola. Figure 4.4: Addestramento del modello stocastico (HMM) per POS Tagger. 61
  • 64. Il problema del POS Tagging pu`o essere essere indicato come l’identificazione del pi`u probabile tag t1,n data la parola w1,n da una frase di lunghezza n. Si nota, che il modello statistico (HMM) trova la sequenza dei tag pi`u simili per le parola presenti nell’intera frase. In questo modo `e possibile applicare la regola di Bayes per definire il problema come arg max t1,n p(t1,n|w1,n) = arg max t1,n p(w1,n|t1,n) × p(t1,n) (4.1) = arg max t1,n n i=1 p(w1,n|t1,n) × p(t1,n) La prima parte dell’espressione (4.1) a destra dell’uguale rappresenta l’informazione lessicale, che data la probabilit`a di una parola w1,n di essere vista con il tag t1,n, mentre la seconda parte dell’espressione (4.1), sempre a destra dell’uguale, esprime la probabilit`a del tag t1,n. La parte destra dell’espressione (4.1) pu`o essere estesa usando la regola di chain per calcolare la probabilit`a, che una data parola w1,n sia dipendente solo su un tag e non su una sequenza di tag. Il massimo del prodotto di queste due probabilit`a d`a il tag pi`u probabile, che avrebbe generato la parola osservata. Il numero delle possibili combinazioni di sequenze di tag di lunghezza n `e grande e ci vorrebbe tempo per trovare la migliore di tutte queste possibilit`a. Per questo, si fa qualche ipotesi per semplificare il calcolo. Si assume, che le parole siano condizionalmente indipendenti l’uno dall’altro in un tag e un tag dipende solo dal tag precedente. Sulla base di questi presupposti, si pu`o stimare la probabilit`a di una data parola w dato un tag t come il rapporto del numero di volte che la parola w `e stato visto con il tag t e il numero di occorrenze del tag t. p(w|t) = Count(w, t) Count(t) (4.2) La probabilit`a di sequenze di tag viene calcolata dal rapporto tra il numero di volte che un tag tj seguito dal tag ti per il numero di volte che il tag ti `e stato visto. p(tj|ti) = Count(ti, tj) Count(ti) (4.2) 62
  • 65. Normalmente, viene aggiunto uno a tutti i conteggi per gestire i casi di parole invisibili in entrambe le stime di probabilit`a. Questa operazione (aggiungendo uno a tutti i conteggi) `e chiamato Laplace smoothing e distribuisce uniformemente qualche probabilit`a a tutte le parole non viste. 4.5.3 Lettura del modello Per la lettura del modello e la costruzione del decoder, si richiede soltanto: la manipolazione del flusso dei dati, assieme al casting e al wrapping degli stessi. Esso viene caricato leggendo il file che lo contiene, il quale `e posizionato in una cartella prestabilita, per poi passarlo all’oggetto com.aliasi.hmm.HiddenMarko- vModel istanziato; una volta terminata la fase di caricamento del modello si chiude l’oggetto ObjectInputStream; e per finire, si istanzia l’oggetto decoder, al quale gli viene passato come parametro l’oggetto com.aliasi.hmm.Hidden-MarkovModel del modello appena caricato. 4.5.4 Tokenizzazione Il codice per eseguire la decodifica `e molto semplice; in primo luogo, l’input ar- riva sotto forma di righe di testo e si ha quindi bisogno di scomporlo in singoli chunk. Questo lo si fa con la creazione di un oggetto tokenizzatore, che permette di definire un token come la pi`u lunga sequenza contigua non vuota di simboli alfabetici (pL), cifre (d), trattini () ed apostrofi ( ); ma anche di singoli caratteri diversi dagli spazi (S). 4.5.5 Analisi dei token Per effettuare l’analisi dei token[4, 5], `e necessario avere una funzione che legge da una cartella uno/pi`u file, con all’interno uno/pi`u documento/i ed un modello statistico (HMM) addestrato, in questo caso, per poi eseguirci, sopra al/i docu- mento/i, l’operazione di Part-of-Speech Tagger. 63
  • 66. 4.5.6 Risultato finale Il risultato finale, che viene prodotto dal processo di POS Tagging sul testo in input, `e una lista di token assieme ai loro associati POS tag. Questo processo in LingPipe viene fatto prendendo i singoli token, elaborati prece- dentemente, per poi taggarli ciascuno singolarmente. Il modello utilizzato per l’etichettatura dei POS tag, non fa altro che creare le ipotesi di probabilit`a in base alle posizioni dei token all’inizio o alla fine della singola frase. Si consideri, per esempio, la seguente stringa in input: Time f l i e s l i k e s an arrow . This i s a second sentence . Il risultato che si ottiene dal processo di POS Tagging `e il seguente: Time/nn f l i e s /vbz l i k e s / cs an/ at arrow/nn . / . This/dt i s /bez a/at second/od sentence /nn . / . 64
  • 67. Chapter 5 Analisi del modulo POS Tagger di LingPipe Si `e effettuato l’analisi prestazionale del modulo POS Tagger di LingPipe ed even- tualmente si `e pensato anche di sostituirlo con quello gi`a, il TreeTagger, presente nell’estrattore terminologico TermExtractor, nel caso si fossero ottenuti risultati soddisfacenti. 5.1 POS Tagger: confronto con il TreeTagger 5.1.1 TreeTagger Il TreeTagger[25] `e un software Open Source, sviluppato da Helmut Schmid presso l’Universit`a di Stoccarda, che consente di analizzare un testo ed ottenere il Part- of-Speech[11] e la lemmatizzazione delle singole parole. Due sono i vantaggi derivanti dalla lemmatizzazione e dall’etichetattura del testo. Il primo vantaggio (derivante dalla lemmatizzazione) `e quello dell’ottimizzazione delle basi di dati. Infatti in esse, saranno presenti solamente i lemmi ai quali verranno ricondotte le forme presenti nel testo. I verbi saranno presenti nella base di dati coniugati all’infinito e non in tutte le possibili forme in cui possono essere coniugati; i sostantivi saranno presenti al singolare; aggettivi ed avverbi in inglese non avrebbero teoricamente bisogno di essere lemmatizzati poich´e indeclinabili. Ci`o comporta un notevole snellimento della base di dati e quindi un minore spazio 65
  • 68. di memoria occupato da esso, ed un aumento non indifferente della velocit`a di processo del software e di conseguenza dell’analisi. Il secondo vantaggio (derivante dall’etichetattura) consiste nel fatto che i software realizzati potranno effettuare ricerche nella base di dati soltanto su parole apparte- nenti a determinate categorie grammaticali riducendo sensibilmente il numero di query da effettuare ed aumentando di conseguenza le prestazioni del software. Si potrebbe per esempio voler analizzare solo i nomi o solo gli avverbi. L’etichettatura permette inoltre di dividere i lemmi presenti nella base di dati in tabelle diverse secondo la categoria grammaticale. Il TreeTagger[6] utilizza dei parametri di lingua, i quali vengono forniti diretta- mente dal suo sito, per il suo utilizzo con testi in inglese, francese, tedesco, italiano, spagnolo, russo, bulgaro e olandese. I parametri per altre lingue sono disponibili da siti collegati alla pagina web TreeTagger. Per una lingua per la quale non es- istono parametri, `e necessario annotare a mano alcuni data-tag, e quindi eseguire un programma di training (fornito con il TreeTagger) per creare i parametri. Per fare dei test comparativi tra TreeTagger e POS Tagger di LingPipe[19, 4] si `e utilizzato il wrapper Java per il TreeTagger, sviluppato da Richard Eckart de Castilho. Il TreeTagger4Java1 `e stato scritto con particolare attenzione alla indipendenza della piattaforma ed `e facile da integrare nelle applicazioni, `e scritto in Java ed `e per questo portabile su tutti i sistemi operativi, come: OS X, Ubuntu Linux e Windows. TT4J Nel TT4J, la classe principale `e TreeTaggerWrapper. Esso genera e mantiene un processo TreeTagger per ogni istanza di questa classe. Il processo associato termina se il TT4J termina, oppure il processo viene riavviato automaticamente, se il modello subisce delle modifiche; altrimenti il processo resta in esecuzione (background), permettendo cos`ı di risparmiare del tempo. 1 Per semplicit`a, d’ora in avanti, lo si abbrevia a TT4J. 66
  • 69. Il processo rimane inattivo quando non viene utilizzato, consumando solo un p`o di memoria, fatta eccezione della CPU, che non viene impegnata. Durante l’analisi, due thread sono utilizzati per comunicare con il TreeTagger. Un thread scrive il token al processo TreeTagger, mentre l’altro thread riceve i token analizzati. Gli utenti all’interno del TT4J, includono un tokenizer, in quanto lo stesso non dispone la funzione di tokenizzazione, questo perch`e ci sono delle librerie, che lo svolgono in maniera ottima. Per esempio, un buon tokenizzatore in lingua inglese `e presente nel parser della Stanford. Per poter utilizzare il TT4J[4, 6] si `e implementato una piccola applicazione, che legge da una cartella uno o pi`u file, con uno o pi`u testi, ed un modello adde- strato per la lingua inglese, il quale viene utlizzato sul/sui testo/i per fare il POS Tagging. Per effettuare facilmente l’operazione di tokenizzazione, perch`e il TreeTagger non offre metodi per fare questa operazione, `e stato integrato nell’applicazione la classe PennTreebankTokenizerFactory2 di LingPipe e si implementa il metodo, che effet- tua la tokenizzazione del testo. Essa permette di effettuare l’operazione di tokenizzazione secondo lo standard Penn Treebank; il metodo per tokenizer prende un array di stringhe, l’indice di inizione e di fine. Per ricevere il token analizzato, si `e dovuto impostare un To- kenHandler personalizzato con il metodo SetHandler . . . . 2 Nella classe PennTreebankTokenizerFactory si definisce l’espressione regolare. 67
  • 70. 5.1.2 Che cosa sono i tag-set? Il tag-set `e un insieme di etichette, dove ciascuna di esse descrive il significato (semantico o grammaticale) di un lessema a cui viene associato il tag. Esistono varie tipologie di tag-set che vengono utilizzati; in questo particolare caso di stu- dio, sono stati usati il Brown Corpus Tag-Set ed il TreeTagger Tag-Set, anche se quest’ultimo si ispira al Penn TreeBank Project, ma il suo tag-set `e leggermente diverso e pi`u grande3 del Penn TreeBank Project[25]. 5.1.3 L’algoritmo Tag-Set Reduction Come si `e accennato, per fare il confronto tra i due sistemi `e stato necessario ”ridurre” i singoli token etichettati secondo le regole del Brown Corpus Tag-Set e del TreeTagger Tag-Set con i tag del Penn TreeBank Project[25]. Una tecnica trovata in rete, per la riduzione di un qualsiasi tag-set, `e quella pro- posta da Thosten Brants[29]4 , dell’Universit`a di Saarlandes, il quale propone un modo per creare un tag-set ridotto da un tag-set originario tale che le categorie, con una distribuzione di frequenza molto simile in un corpus, siano combinate senza perdere informazioni fornite dall’insieme dei tag originari. Questo viene fatto uti- lizzando un algoritmo di clustering, per distribuire, con una certa probabilit`a, i tag originari nelle classi, dove ciascuna di queste classi rappresenta il tag ridotto. Il testo in input sar`a privo di ambiguit`a con il nuovo tagset ridotto, facendo in modo che il tag originario sia ancora identificabile univocamente da quello nuovo. 3 Il TreeTagger Tag-Set contiene 58 tag. 4 La proposta messa a disposizione da Thosten Brants `e stata introdotta e valutata durante un esperimento. 68
  • 71. L’algoritmo proposto, denominato Tag-Set Reduction, prende spunto proprio da questa tecnica, ma al posto di utilizzare la tecnica di clustering, si `e optato invece per il metodo basato su regole, sotto forma di espressioni regolari, le quali associano al tag originario in input, il nuovo tag ridotto; questa operazione pu`o essere vista come funzione di riduzione sul tag-set originario (vedere Figure 4.4). Figure 5.1: Funzione di riduzione del tag-set dell’algoritmo Tag-Set Reduction. La funzione dell’algoritmo fRed non fa altro, che prendere in input un tag-set orig- inario di partenza ed un’insieme formato da coppie di (tag-set di riduzione, regola di riduzione), e trasforma tale tag-set originario nel nuovo tag-set ridotto. Formalmente la funzione viene definita in questo modo fRed : TagSetOrig × RegExpr → TagSetRed, assicurando l’unicit`a dell’operazione di riduzione, in quanto le espressioni regolari non vanno in conflitto tra di loro, evitando cos`ı di andare a trasformare (o sosti- tuire) tag precedentemente trasformati (o sostituiti). Infatti una volta applicata la regola corretta al tag originario si ottiene l’equivalente tag ridotto. 69
  • 72. Di seguito, viene mostrato sia lo pseudo-codice dell’algoritmo. prec.c.: tagRed, rule ∈ RuleSet, tag ∈ TagSetOrig; post.c.: TagSetRed; function Tag-SetReduction(RuleSet, TagSetOrig) TagSetRed := {0}; for tag ∈ TagSetOrig do for rule, tagRed ∈ RuleSet do if matches(tag, rule) then TagSetRed := TagSetRed ∪ tagRed ; break; end if end for end for return TagSetRed; end function La complessit`a computazionale `e O(|m| × |n| × |k|), dove: m `e il numero dei tag da ridurre; n `e il numero dei tag di riduzione; k `e il tempo che impiega la regola a controllare, sotto forma di espressione regolare, se il tag in analisi `e riducibile o non riducibile. Ovviamente esiste un’altra soluzione, che permette di abbassare tale costo com- putazionale andando ad utilizzare la hash table5 [28], come struttura dati per la memorizzazione delle regole, in quanto in base alla grandezza dell’array in cui avviene la ricerca e la memorizzazione delle informazioni, si ha una tabella della complessit`a computazionale del tempo necessario alla ricerca stessa. Perci`o con un maggiore spazio disponibile, corrisponder`a un minor tempo necessario nel caso peggiore. 5 La hash table[28] `e una struttura dati usata per mettere in corrispondenza una data chiave con un dato valore. Viene usata per l’implementazione di strutture dati astratte associative come Map o Set. 70
  • 73. 5.1.4 L’applicazione Tag-Set Reduction Computing Per l’esecuzione dell’esperimento si dovuto fare, oltre alla progettazione, l’implemen- tazione dell’algoritmo Tag-Set Reduction insieme all’applicazione Tag-Set Reduc- tion Computing, che lo incorpora (mostrata in Figure 4.5). Entrambi sono stati scritti nel linguaggio di programmazione Java. L’applicazione Tag-Set Reduction Computing, prende in input tre file: il primo file contiene le coppie formate da (tag-set di riduzione, regola di riduzione), il secondo file contiene i tag-set originali da ridurre, ed il terzo file contiene i token. In output, esso restituisce un file contenente la ricostruzione della stringa con i token associati ai tag ridotti dall’algoritmo. La GUI dell’applicazione `e composta in questo modo: i. una text area per la visualizzazione dei messaggi riguardanti: a. il caricamento del file formato dalle coppie (tag-set di riduzione, regola di riduzione), b. il caricamento del file con i tag-set originari da ridurre, c. il caricamento del file dei token, d. il calcolo della riduzione dei tag-set, e. il caricamento dei token, f. la ricostruzione della stringa con i token associati ai nuovi tag ridotti, g. gli errori sollevati dall’applicazione. ii. un men`u per: a. settare il path del file formato dalle coppie (tag-set di riduzione, regola di riduzione), b. settare il path del file coni tag-set originali, c. settare il path del file con i token. 71
  • 74. Il Tag-Set Reduction Computing `e un’applicazione multithreading, questo perch`e le applicazioni che utilizzano il multithread sono pi`u reattive nei confronti degli input degli utenti in quanto l’interfaccia utente (la GUI o la linea di comando) rimane attiva, mentre le attivit`a che richiedono un uso intensivo del processore vengono eseguite su thread diversi. Inoltre, il multithread si rivela utile anche per la creazione di applicazioni scalabili, poich´e consente di aggiungere thread man mano che aumenta il carico di lavoro. Le funzioni dell’applicazione hanno associato un thread per la propria esecuzione; la parte logica e la parte dell’interfaccia grafica dell’utente (GUI) hanno entrambe due thread associati per il loro funzionamento. Nella fase di avvio un thread si occupa di inizializzare e visualizzare la GUI, mentre un’altro thread si occupa di eseguire il kernel dell’applicazione (la logica), in quanto si vuole evitare inutili attese, come il blocco della GUI e le operazioni che vengono eseguite in modo concorrente. Figure 5.2: GUI dell’applicazione Tag-Set Reduction Computing. 72
  • 75. 5.1.5 Applicazione della riduzione del tag-set per il TreeTagger Il test `e stato effettuato su un set di documenti, scritto in lingua inglese, presi dal sito web CoNLL-2009 Shared Task, in particolare a questo link: http://ufal.mff.cuni.cz/conll2009-st/trial-data.html. Figure 5.3: GUI dell’applicazione Tag-Set Reduction Computing in esecuzione per il TreeTagger. 73
  • 76. Tabella di Mapping per il TreeTagger In Table 4.6 vengono mostrate le regole di associazione al tag in lettura e le regole di riduzione al tag ridotto. Table 5.1: Tabella di Mapping per la riduzione del tag-set di TreeTagger. Tabella di Mapping Tag in lettura Regola di riduzione Tag ridotto SENT (SENT|?|!) . ? ! − (−| : |@| + |ˆ||/| =) HY PH : ” ” @ + ˆ / = ( (() ( ) ()) ) , (, ) , −− (−−) : DT (DT) DT CC (CC) CC CD (CD) CD EX (EX) EX FW (FW) FW IN (IN) IN JJ (JJ) JJ JJR (JJR) JJR JJS (JJS) JJS LS (LS) LS MD (MD) MD NN (NN) NN NNP (NNP) NNP NNS (NNS) NNS NPS (NNPS) NNPS 74
  • 77. Table 5.2: Tabella di Mapping per la riduzione del tag-set di TreeTagger (2). Tabella di Mapping (cont.) Tag in lettura Regola di riduzione Tag ridotto PDT (PDT) PDT POS (POS) POS PP (PRP) PRP PP$ (PRP$) PRP$ RB (RB) RB RBR (RBR) RBR RBS (RBS) RBS RP (RP) RP UH (UH) UH V B (V B|V D|V H|V V ) V B V D V H V V V BD (V BD|V V D|V HD|V V D) V BD V V D V HD V V D V BG (V BG|V DG|V HG|V V G) V BG V V D V HD V V D V BN (V BN|V DN|V HN|V V N) V BN V DN V HN V V N V BP (V BP|V DP|V HP|V V P) V BP V DP V HP V V P 75
  • 78. Table 5.3: Tabella di Mapping per la riduzione del tag-set di TreeTagger (3). Tabella di Mapping (cont.) Tag in lettura Regola di riduzione Tag ridotto V BZ (V BZ|V DZ|V HZ|V V Z) V BZ V DZ V HZ V V Z WDT (WDT) WDT WP (WP) WP WP$ (WP$) WP$ WRB (WRB) WRB 5.1.6 Applicazione della riduzione del tag-set per il POS Tagger di LingPipe Lo stessa procedura `e stata eseguita per il POS Tagger di LingPipe. In questo caso abbiamo ottenuto pi`u tipologie di risultati. Figure 5.4: L’applicazione Tag-Set Reduction Computing in esecuzione per il LingPipe. 76
  • 79. Tabella di Mapping per LingPipe In Table 4.7 vengono mostrate le regole di associazione al tag in lettura e le regole di riduzione al tag ridotto. Table 5.4: Tabella di Mapping per la riduzione del tag-set di LingPipe. Tabella di Mapping Tag in lettura Regola di riduzione Tag ridotto ? ((?|.|!|; | :) . . ! ; : − (−| : |@| + |ˆ||/| =) HY PH @ + ˆ | = / ( (() ( ) ()) ) , (, ) , −− (−−) −− abl (abl|abn|abx|ap$|at| DT ap|dt|dt$|dti|dts|dtx) abn ” ” abx ” ” ap ” ” ap$ ” ” at ” ” ap ” ” dt ” ” dt$ ” ” dti ” ” dts ” ” 77
  • 80. Table 5.5: Tabella di Mapping per la riduzione del tag-set di LingPipe (2). Tabella di Mapping (cont.) Tag in lettura Regola di riduzione Tag ridotto cc (cc|cs) CC cs cd (cd|od) CD od ex (ex) EX fw (fw|nc) FW nc in (in) IN jj (jj) JJ jjr (jjr) JJR jjs (jjs|jjt) JJS jjt md (md) MD nn (nn) NN np (np|np$) NNP np$ ” ” np (nns) NNP (nps|nps$) POS nps$ nns (nns) NNS prp (prp|pn|pp|ppl|ppls|ppo PRP |pps|ppss) pn pp ppl ppls ppo pps ppss 78
  • 81. Table 5.6: Tabella di Mapping per la riduzione del tag-set di LingPipe (3). Tabella di Mapping (cont.) Tag in lettura Regole di riduzione Tag ridotto pp$ (pp$|pn$|pp$$|prp$) PRP$ pn$ pp$$ prp$ rb (rb|rn| ∗ |abl|abn|abx|nr) RB rn ∗ abl abn abx nr rbr (rbr) RBR rbs (rbs|ql|qlp) RBT ql qlp rp (rp) RP uh (uh) UH vb (vb|be|do|hv) V B be do hv vbd (vbd|bed|bedz|hvd) V BD bed bedz hvd vbg (vbg|hvg|beg) V BG hvg beg vbn (vbn|ben|dod|hvn) V BN ben dod hvn 79
  • 82. Table 5.7: Tabella di Mapping per la riduzione del tag-set di LingPipe (4). Tabella di Mapping (cont.) Tag in lettura Regole di riduzione Tag ridotto vbp (vbp|bem|ber) V BP bem ber vbz (vbz|bez|doz) V BZ bez doz wdt (wdt) WDT wpo (wpo|wps) WP wps ” ” wp$ (wp$) WP$ wrb (wrb|wql) WRB wql ” ” 5.1.7 Conclusioni Per confrontare i due sistemi (TreeTagger e POS Tagger di LingPipe), si `e fatto uso di un modello di verit`a, messo a disposizione dalla Thirteenth Conference on Computational Natural Language Learning (CoNLL 2009). I risultati restituiti dal TreeTagger e dal POS Tagger di LingPipe non sono equivalenti, anche se si `e utilizzato l’algoritmo di riduzione, dalle regole del Brown Corpus Tag-Set alle regole del Penn TreeBank Project. La stessa operazione di riduzione `e stata fatta anche per le regole del sistema TreeTagge, dopodich`e `e stato possibile applicare l’algoritmo di validazione con il modello di verit`a. Per fare la validazione, l’algoritmo prende in input il file con i valori restituiti dal singolo sistema (TreeTagger o dal POS Tagger di LingPipe) e il file con il modello di verit`a del CoNLL2009. Si confronta ciascun valore presente nella lista dei valori prodotti dal dal singolo sistema, con ciascun valore del modello di verit`a; se sono uguali, allora, si incrementa il numero di tag ”presi” e si selezionano i successivi due valori, uno dalla lista dei valori prodotti dal dal singolo sistema e l’altro dal modello di verit`a, facendo nuovamente il confronto; iterando fino ad avere letti tutti i valori della lista dei valori prodotti dal singolo sistema e confrontati tutti con i valori del modello di verit`a. Terminata la fase di conteggio dei tag ”presi”, si calcola la Precision, la Recall e la F1-Score. 80
  • 83. Il calcolo della Precision, della Recall e del F1-Score Come `e stato affermato prima, per valutare[20] entrambi i sistemi (TreeTagger e POS Tagger di LingPipe), l’operazione di valutazione viene fatta confrontando i valori prodotti dal singolo sistema, con i valori del modello di verit`a valido, creato appositamente da un linguista esperto. Per fare questo tipo di operazione si utilizzano la Precision, la Recall e la F1-Score (vedere Sezione 6.1 e Sezione 6.2), che sono tre comuni classificazioni statistiche, utilizzate in diversi ambiti, come per esempio l’Information Retrieval. La Precision pu`o essere vista come una misura di esattezza o di fedelt`a o di cor- rettezza, mentre la Recall `e una misura di completezza. Durante l’attivit`a di classificazione, i termini true-positives, true-negatives, false-positives e false-negatives fanno il confronto dei risultati del classificatore con un test tramite un giudizio esterno (o modello di verit`a). I termini positivi e negativi si riferiscono alla previsione del classificatore (a volte conosciuto come l’aspettativa), e le condizioni di vero e falso si riferiscono al fatto che la previsione corrisponde al giudizio esterno (noto anche come l’osservazione). La Precision (P) e la Recall (R), in questo contesto, sono definiti come P = tag–presi num–word–tag e R = tag–presi num–tot–tag . Si ha, che num-word-tag `e numero di parole per cui si `e scelto un tag, mentre num-tot-tag `e il numero totale delle parole da etichettare. Siccome entrambi i sistemi, POS Tagger di LingPipe e il TreeTagger, scelgono sempre un tag per ogni parola, si ha la Precision e la Recall uguali. Infine, si ha la F1-Score (chiamata anche F-Score o F-Measure), che `e la misura dell’accura-tezza di un test, la quale considera sia la Precision e sia la Recall di un test per calcolare il punteggio. Nella Table 4.10 si mostrano i risultati finali ottenuti, dove il numero di token presi dal POS Tagger di LingPipe `e di parecchio inferiore al numero dei token presi dal TreeTagger, differendone di 31; stesso discorso vale per quanto riguarda: la Precision, la Recall e F1-Score, dove il TreeTagger `e notevolmente avanti rispetto al POS Tagger di LingPipe. 81
  • 84. Table 5.8: Tabella riassuntiva dei risultati finali. Risultati Finali - TreeTagger POS Tagger di LingPipe Tag presi 215 su 219 185 su 219 Precision ≈ 99% ≈ 84% Recall ≈ 99% ≈ 84% F1-Score ≈ 99% ≈ 84% In conclusione, si pu`o dire che ci sono delle differenze tra i due sistemi. La prima differenza sta sicuramente nel processo di tokenizzazione, in quanto `e stato utiliz- zato lo standard Penn Treebank Tokenization; la seconda riguarda con molta prob- abilit`a al corpus utilizzato per costruire il modello del POS Tagger di LingPipe, in quanto i testi utilizzati per l’addestramento sono stati etichettati con il Brown Cor- pus Tag-Set. Tuttavia, anche se `e stato implementato un’algoritmo di riduzione dal tag-set originario al tag-set ridotto per aggirare questo problema, i risultati non sono stati buoni e la differenza che separa i due sistemi `e di ben 14 punti percentuale. 82
  • 85. Chapter 6 Architettura del sistema 6.1 La progettazione in UML del sistema L’obiettivo del sistema `e quello di riconoscere (in arabo, in inglese e in italiano) le seguenti categorie di entit`a proprie: • PERS, • LOC, • ORG e • MISC. 6.1.1 Glossario di Progetto • API : insieme di procedure disponibili al programmatore. • NER: sistema che estrae e riconose l’entit`a proprie da un testo non strut- turato. • Utente: persona abilitata ad accedere al sistema a qualsiasi titolo o scopo. • Sistema: insieme di elementi interconnessi tra di loro o con l’ambiente esterno tramite reciproche relazioni. • Regole: insieme di norme prestabilite, espresse sotto la forma di espressioni regolari. 83
  • 86. • Modello: rappresentazione di un oggetto, che corrisponde alla cosa modellata per il fatto di riprodurne alcune caratteristiche o comportamenti fondamen- tali, espresso sotto la forma di un modello statistico, per esempio un Hidden Markov Models (HMM). • Entit`a proprie o (NEs): identificano chiaramente un elemento da un insieme di altri elementi, che hanno caratteristiche simili. 6.1.2 Gli attori I ruoli considerati per gli attori sono: • Ruolo Utente: `e un utente abilitato ad accedere ed ad utilizzare il sistema. • Ruolo LingPipe: `e un sistema che fornisce le API per la linguistica com- putazionale. • Ruolo Lucene: `e un sistema che fornisce le API per il reperimento ed il trattamento delle informazioni. • Ruolo JXL: `e una libreria per leggere, scrivere e modificare dinamicamente fogli di calcolo Excel. Figure 6.1: Diagramma degli attori. 6.1.3 Requisiti del sistema L’analisi dei requisiti rappresenta una delle prime fasi nel ciclo di vita di un prodotto software, lo scopo generale dell’analisi `e stabilire che cosa il sistema in 84
  • 87. questione deve fare. In questo caso il progetto si svilupper`a tramite UML. `E im- portante e indispensabile a questo punto definire i requisiti funzionali e quello non funzionali. 6.1.4 Requisiti Funzionali ID Descrizione Priorit`a RF01 Selezione lingua da parte dell’utente Indispensabile RF02 Acquisizione di uno o pi`u testi inseriti dall’utente Indispensabile RF03 Estrazione delle singole frasi nel/i testo/i Indispensabile RF04 Estrazione e riconoscimento delle entit`a proprie (ambigue Indispensabile e non ambigue) attraverso delle regole RF05 Riconoscimento delle entit`a proprie ambigue applicando Indispensabile un modello stocastico (HMM) RF06 Applicazione di un filtro per eliminare il rumore presente Indispensabile (tramite operazioni di stemming e di normalizzazione) nelle entit`a proprie RF07 Eliminazione delle entit`a proprie doppione e fusione delle Indispensabile entit`a proprie riconosciuti RF08 Salvataggio delle entit`a proprie in un file Excel Indispensabile Divisione in sotto-requisiti fuzionali In base ai requisiti di sistema, precedentemente elencati, `e possibile suddividere il quarto requisito funzionale (RF04), in tre sotto-requisiti: ID Descrizione Priorit`a RF04:01 Si provvede alla preparazione del data set training un Indispensabile set di notizie prese dall’ANSA con gli opportuni tag OBI o all’acquisizione di un corpus gi`a annotato RF04:02 Si provvede all’addestramento (o all’acquisizione) del Indispensabile modello del NER, con gli opportuni test di valutazione RF04:03 Costruzione delle regole, espresse tramite espressioni Indispensabile regolari 85
  • 88. Requisiti di prestazione ID Descrizione RNF-PRE01 Sistema con quad-core processor da 2 Ghz in su e 8 Gbytes di RAM RNF-PRE02 Sistema operativo basato su kernel Linux/Unix e Windows Server RNF-PRE03 Java VM versione 6 o superiore 6.1.5 Requisiti Non-Funzionali 6.1.6 Casi d’Uso Il diagramma dei Casi d’Uso `e il risultato dell’attivit`a di ingegneria dei requisiti ed `e composto da tre componenti: • attori: i ruoli assunti da soggetti tramite il sistema. • casi d’uso: quello che gli attori possono fare con il sistema. • relazioni: rapporti tra attori e casi d’uso. Figure 6.2: Diagramma dei Casi d’Uso. 86
  • 89. 6.1.7 Analisi dei punti funzione La metrica dei punti funzione permette una valutazione funzionale del sistema a partire dalle prime fasi dello sviluppo software, indipendentemente dalle tecnologie hardware/software utilizzate. Le linee guida del calcolo Function Points (FP) sono oggi standardizzate dall’orga- nismo Internazionale Function Point User Group (IFPUG) e tale misura coinvolge due aree di valutazione: • Unadjusted Function Point (UFP): riflette le funzionalit`a fornite all’utente dell’applicazione. • Value Adjustement Factor (VAF): valorizza la complessit`a delle funzionalit`a generali fornite all’utente. Come passo preliminare `e necessario distinguere e classificare le funzionalit`a fornite dall’utente (e da lui visibili) all’interno di 5 categorie (function types), a loro volta raggrupabili in due macro aree: funzioni dati e funzioni transazionali. #In #Out #Query #Ext In #File RF01 Selezione lingua 1 1 0 1 0 RF02 Acquisizione testo/testi 2 1 0 0 1 RF03 Estrazione frasi dal testo 2 3 0 0 1 RF04 Estrazione e riconoscimento 2 3 0 0 3 delle entit`a proprie (ambigue e non ambigue) tramite rego- le RF05 Riconoscimento delle entit`a 2 3 0 0 2 proprie ambigui tramite modello stocastico (HMM) RF06 Applicazione Filtro alle 3 3 0 0 1 entit`a proprie disambiguate RF07 Eliminazione e fusione 3 3 0 0 1 delle entit`a proprie doppione RF08 Salvataggio delle entit`a 1 1 0 0 1 proprie in un file Excel La difficolt`a di realizzazione dei casi d’uso `e stata pesata con un coefficiente derivante dalla Table 5.1. A questo punto, supponendo di avere n componenti, il conteggio `e totalmente 87
  • 90. Table 6.1: Tabella dei coefficienti. Tipologia Valore Min Max Facile (Valore 1) 1 0 4 Medio (Valore 2) 2 5 7 Difficile (Valore 2) 3 8 20 definito dalla formala seguente: UFP = n i=1 peso(function(Typei, compli)). In questo caso particolare si `e ottenuto i seguenti risultati: #In #Out #Query #Ext In #File #Somma #Diffic. #Parz. RF01 1 1 0 1 0 3 1 3 RF02 2 1 0 0 1 4 1 4 RF03 2 3 0 0 1 6 3 18 RF04 2 3 0 0 3 8 3 24 RF05 2 3 0 0 2 7 3 21 RF06 3 3 0 0 1 7 3 21 RF07 2 3 0 0 1 6 3 18 RF08 1 1 0 0 1 3 2 6 Totale 115 Value Adjustment Factor (VAF) Una volta determinato il valore dell’UFP, si deve ”raffinare” il conteggio con un fat- tore correttivo, che valorizzi la complessit`a della funzionalit`a fornite dall’utente. Il calcolo del VAF ottenuto, consente di correggere il valore dell’UFP di un 35% e di giungere al calcolo finale dei punti funzione attraverso la seguente formula: FP = UFP × V AF Il VAF `e determinato in base a 14 caratteristiche del sistema, dette General System Characteristic (GSC), utilizzando al fine di valutare la complessit`a generale del sistema basandosi su una scala a 6 valori: 0 = non prensene o di nessuna influenza 88
  • 91. 1 = influenza secondaria o poco significante 2 = influenza moderata 3 = influenza media 4 = influenza significante 5 = influenza forte generalizzata Sommando i singoli valori assegnati alle varie GSC e applicando la seguente formula si calcola il VAF: Table 6.2: Valori di aggiustamento dei VAF. Fi Domanda Peso 1 Il sistema richiede salvataggi e recuperi affidabili? 1 2 Si richiedono comunicazioni di dati? 5 3 Ci sono funzioni di elaborazione distribuita? 0 4 Le prestazioni sono un fattore critico? 5 5 Il sistema funzioner`a in un ambiente operativo esistente, utilizzato 5 a fondo? 6 Il sistema richiede inserimenti di dati in linea? 4 7 L’inserimento di dati in linea richiede che la transizione si articoli 5 in pi`u schemi o pi`u operazioni? 8 I file principali sono aggiornati in linea? 4 9 I dati d’ingresso o di uscita, i file e le interrogazioni sono complessi? 5 10 L’elaborazone interna `e complessa? 5 11 Il codice `e stato progettato per essere riusabile? 5 12 La progettazione comprende anche conversioni ed installazioni? 1 13 Il sistema `e stato progettato per essere installato in pi`u organizzazioni? 2 14 L’applicazione `e stata progettata per facilitare le modifiche e per essere 5 di semplice uso da parte dell’utente finale? Calcolo dei Function Point (FP): FP = 115 × [0.65 + (0.01 × 52)] = 115 × 1.17 = 134.55 89
  • 92. 6.1.8 Diagramma delle Attivit`a Il diagramma delle attivit`a (o Activity Diagram) descrive le attivit`a da svolgere per realizzare una data funzionalit`a e pu`o essere utilizzato durante la progettazione del software per dettagliare un determinato algoritmo. Di seguito vengono mostrati i seguenti diagrammi delle attivit`a. i. Diagramma delle attivit`a del componente principale (vedi Figure 5.3). Figure 6.3: Diagramma delle attivit`a del componente principale. 90
  • 93. ii. Diagramma delle attivit`a del modulo English NER (vedi Figure 5.4). Figure 6.4: Diagramma delle attivit`a del modulo English NER. 91
  • 94. iii. Diagramma delle attivit`a del modulo Italian NER (vedi Figure 5.5). Figure 6.5: Diagramma delle attivit`a del modulo Italian NER. 92
  • 95. iv. Diagramma delle attivit`a del modulo Arabic NER (vedi Figure 5.6). Figure 6.6: Diagramma delle attivit`a del modulo Arabic NER. 93
  • 96. 6.1.9 Diagramma dei Componenti La Figure 5.7 illustra il diagramma dei componenti principale dell’applicazione, senza scendere nei dettagli dei singoli package dell’applicazione. Esso contiene le JRE System Library, il Package NER Multi-language, il Package Arabic NER, il Package English NER, il Package Italian NER e le Referenced Libraries. Figure 6.7: Diagramma dei componenti relativo alle classi del progetto. 94
  • 97. La Figure 5.8 illustra il diagramma dei componenti del Package NER Multi- language, ovvero il Core Bussiness dell’applicazione. Esso contiene le, in det- taglio, le classi, i metodi e le variabili presenti in esso, assieme alle relazioni fra di esse. Figure 6.8: Diagramma dei componenti relativo alle classi del Package NER Multi- language. 95
  • 98. La Figure 5.9 illustra il diagramma dei componenti del Package English-NER. Esso contiene le, in dettaglio, le classi, i metodi e le variabili presenti in esso, assieme alle relazioni fra di esse. Figure 6.9: Diagramma dei Componenti relativo alle classi del Package English- NER. La Figure 5.10 illustra il diagramma dei componenti del Package Italian-NER. Esso contiene le, in dettaglio, le classi, i metodi e le variabili presenti in esso, assieme alle relazioni fra di esse. Figure 6.10: Diagramma dei Componenti relativo alle classi del Package Italian- NER. 96
  • 99. La Figure 5.11 illustra il diagramma dei componenti del Package Arabic-NER. Esso contiene in dettaglio: le classi, i metodi e le variabili presenti in esso, assieme alle relazioni fra di esse. Figure 6.11: Diagramma dei Componenti relativo alle classi del Package Arabic- NER. 6.1.10 Gestione requisiti non-funzionali Il sistema non possiede nessuna architettura di tipo client/server, server appli- cation o desktop application, in quanto esso `e un componente, che deve essere inserito all’interno dell’estrattore terminologico TermExtractor (una web applica- tion), perci`o la sua architettura deve essere uguale all’estrattore terminologico TermExtractor e deve essere eseguibile sul Server. Requisiti non-funzionali lato Server Il componente deve permettere di avere pi`u connessioni simultanee, le quali non hanno bisogno di fare operazioni di lettura/scriittura sul server, ad eccezione del file con i risultati prodotti dal componente stesso. Infine, il componente non ha bisogno di memorizzare nessun file o archivio. 97
  • 100. La configurazione hardware consigliata `e la seguente: • Processore Intel CPU i7 4.00Ghz con 8MB di cache di secondo livello. • Ram 16GB DDR3. • Hard Disk da 500MB ciascuno ad alta velocit`a e connessi in Raid 2. • Interfaccia Ethernet a 1Gbit. • Sistema Operativo Linux. • Java versione 6 o superiore. 98
  • 101. 6.2 Schema dell’architettura Il sistema, progettato ed implementato, `e un component, che deve essere inserito all’interno dell’estrattore terminologico TermExtractor, mantenendo e rispettando, a sua volta, il work-flow dello sistema principale; esso aggiunge la funzione di estrazione e riconoscimento delle entit`a proprie provenienti da uno o pi`u testi dati in input, scritti nelle seguenti lingue: • inglese, • italiana, • araba; ed infine salvandoli sul file in formato Excel. Come descritto in precendenza, per poter mantenere il work-flow del sistema prin- cipale, il component possiede l’architettura a pipeline. A sua volta, esso contiene all’interno tre moduli, che eseguono lo stesso compito, ma con delle leggere dif- ferenze di funzionalit`a, le quali verrano poi spiegate, con maggiori dettagli. Il sistema funziona in questo modo: in input prende il tipo della lingua scelta, da parte dell’utente, e il testo, il quale contiene le news nella lingua selezionata. In base alla lingua scelta si attiva il modulo NER per quella lingua, con l’istanziazione di un thread per la gestione dello stesso. L’output, che restituisce il sistema, `e costituito da una lista, salvata su file Excel, di entit`a proprie etichettate con il tag specifico (PERS, LOC, ORG e MISC). La sua architettura, in generale, pu`o essere sintetizzato con lo schema in Figure 5.12, detta Macro del sistema NER, con la quale si mostra l’architettura dell’intero component di estrazione terminological NER Multi-Language (English NER, Ital- ian NER e Arabic NER). 99
  • 102. Figure 6.12: Schema dell’architettura Macro del sistema NER Multi-Language. Il discorso vale per i singoli moduli NER, i quali possegono l’architettura a pipeline (anche se tutti e tre i moduli NER differiscono in alcune funzioni). Essi seguono essezialmente quattro step, che sono: • Sentence Extraction, • Grammar Configuration, • Filter, • Merge. Tutti e quattro gli step saranno ampiamenti descritti nelle sezioni successive. 100
  • 103. 6.2.1 Estrazione delle frasi La prima fase, quella di Sentence Extraction[5], non `e uguale per tutti e tre i moduli NER. Il component, prima di iniziare ad estrarre e a riconoscere le entit`a proprie, applica la funzione per estrarre le frasi da un testo, dove nel caso del modulo Arabic NER, si utilizzano le regole per il loro riconoscimento, mentre nel caso del modulo English NER e Italian NER, si utilizza un modello euristico1 , ovvero , ovvero un statistical language model, sempre per il loro riconoscimento. In entrambi i casi, tale compito viene eseguito leggendo un testo in input ed estraendo la frase, quando incontra un ”confine” della frase. Un esempio potrebbe essere, nel caso della lingua inglese: il punto (”.”), il punto esclamativo (”!”), ed il punto esclamativo (”?”), che sono tipicamente i caratteri di delimitazione (o di ”confine”) di una frase, analogamente al carattere di spazio che separa i token. Figure 6.13: Schema per l’estrazione della frase da un testo tramite un modello euristico. Il risultato che si ottiente da questa operazione `e una lista di frasi, le quali sono pi`u che sufficienti per comprendere il contenuto oppure per estrarre le entit`a proprie presenti in ciascuna frase del testo stesso. 6.2.2 Grammar Configuration Nella fase per la Grammar Configuration sono state costruite due tipologie di classi per le regole e differiscono nei tre moduli NER. Tali classi sono: - Classi delle regole non-ambigue. - Classi delle regole ambigue. La prima classe contiene tutte le regole non-ambigue, per l’estrazione e l’identificazione delle entit`a proprie, le quali vengono associate univocamente allo specifico tag 1 Tale modello euristico `e lo stesso, che viene utilizzato per trovare i token in un testo. 101
  • 104. (PERS, LOC, ORG e MISC). Il principio della non-ambiguit`a si basa esclusiva- mente sulle trigger word all’iterno della regola. Il compito della trigger word `e quello di far attivare la regola, ovvero il processo di estrazione e riconoscimento delle entit`a proprie legate alla stessa, nel caso in cui, all’interno del testo in input, si riscontri la presenza di una o pi`u trigger word. Un esempio di regola non- ambigua, che si pu`o citare `e quella per le entit`a proprie di tipo PERS, dove si ha come prefisso la sigla (Mr.|Mrs.|Miss.) prima del nome e/o cognome della persona. Mentre, la seconda classe contiene tutte le regole ambigue, per l’estrazione e l’identificazione delle entit`a proprie, i quali non hanno nessuna associazione uni- voca, per questo bisogna applicare un algoritmo di disambiguazione che analizza il contesto delle probabili entit`a proprie estratte e le associa univocamente, con il tag specifico (PERS, LOC, ORG e MISC). In questo caso, le regole ambigue, che sono state prese in considerazione sono quelle, che si basano sulla Capitalizzazione Convenzionale[15] delle parole. Capitalizzazione Convenzionale Nei sistemi ortografici europei, questo caso di distinzione dell’alfabeto `e fatto in base ai contesti, e come viene mostrato secondo la Table 5.3. Come eccezione al criterio di confidenza adottato, si prova a ”filtrare” le parole capitalizzate estratte e riconosciute come entit`a proprie, ma che in verit`a non lo sono. Nell’inizio frase, se una parola inizia una frase o segue la punteggiatura, essa `e capitalizzata e pu`o essere considerata dal sistema come un’entit`a propria, oppure essa viene trovata sulla lista delle parole comunemente frequenti. Ciascuna lingua, in questo caso l’italiano e l’inglese, contiene tutte le parole non capitalizzate pi`u comunemente frequenti, chiamate anche Stop Word. Sia nella lingua inglese e sia nella lingua italiana, i nomi comuni non sono capitaliz- zati, presentando per il criterio adottato una sfida, infatti nomi come euro, dollaro non vengono identificati come nomi di persona, ma bens`ı vengono identificati come nomi comuni. I titoli personali (come Dr., Prof., etc) nella lingua inglese sono convenzionalmente capitalizzati, mentre nella lingua italiana non sempre sia usa questa convenzione, in quanto non `e obbligatorio. I titoli spesso o sempre appaiono immediatemente prima del nome della persona. Gli acronimi, sia nella lingua inglese e sia nella lingua italiana, sono convenzional- mente capitalizzate, anche se possono degradere le perfomance nella fase di es- 102
  • 105. trazione ed identificazione. Nella lingua inglese le entit`a di forma aggettivale, come la nazionalit`a o come la religione (per esempio le parole American e Islamic) sono capitalizzate e entrambe, secondo il CoNLL e BBN vengono identificate come di tipo MISC. Mentre nella lingua italiana, a differenza della lingua inglese, le forme aggettivali non sono capitalizzate, come la nazionalit`a o come la religione (per esempio le parole italiana e cattolica), invece, la forma nominale della nazionalit`a `e capitalizzata. Table 6.3: Tabella riassuntiva per l’applicazione della Capitalizzazione Conven- zionale, come regola, nella valutazione dei linguaggi. S = si capitalizzata; N = non capitalizzata; Q = qualche volta. Capitalizzata? Inglese Italiano Pi`u entit`a Y Y Inizio frase Y Y Nomi comuni N N Titoli personali Y Q Acronimi Y Y Entit`a aggettivali Y N Disambiguazione delle entit`a proprie Per effettuare la disambiguazione delle entit`a proprie, estratte con le regole am- bigue, si `e deciso di applicare l’approccio basato su modello stocastico (HMM), in questo modo si `e potuto disambiguarli ed associargli un unico tag e ben specifico. L’utilizzo di questo approccio necessit`a di un modello, per questo motivo `e stato necessario implementare un’applicazione, che addestri il modello e testi a livello di perfomance il modello. X-NERVal Per l’addestramento del modello si `e progettato ed implementato un’applicazione, detta X-NERVal (mostrata in Figure 5.14), la quale `e stata scritta nel linguag- gio di programmazione Java, per poi utilizzarlo, come parser, LingPipe. Tale applicazione restituisce in output: • Un determinato numero di modelli (sotto forma di file binario), dove il nu- mero dei modelli viene specificato in input, in base al numero di folds, con cui i dati di addestramento vengono divisi. 103
  • 106. • Le perfomance2 della validazione dell’addestramento fatti su ciascun modello. • Le perfomance totali ottenuti da tutti i modelli. L’applicazione stessa possiede una GUI, suddivisa in: • una text area per la visualizzazione dei messaggi riguardanti: – i file letti da input, – i valori dei parametri inseriti, – i token ed i tag letti, – i tipi di tag trovati, – il numero di token e di frasi letti, – i valori di Precision, Recalll e F1-Score per ciascun modello e di tutti i modelli combinati, – gli errori sollevati dall’applicazione. • una text field per l’inserimento del numero di fold da parte dell’utente, • una text field per l’inserimento della lunghezza n-gram da parte dell’utente, • una text field per l’inserimento del numero chars, • una text field per l’inserimento del rapporto di interpolazione in formato decimale, • una text field per l’inserimento del valore (true/false) per l’utilizzo di dizionari, • una text field per l’inserimento del valore (true/false) per l’inclusione di entit`a di tipo MISC, • un menu per: – settare il path del corpus, – settare il path dei gazetteer (LOC, ORG e PERS). 2 Per perfomance si intende i valori di Recall, di Precision e di F1-Score. 104
  • 107. Figure 6.14: GUI per l’addestramento e la cross-validation del modello. X-NERVal `e implementato in multithreading, ciascuna funzione ha associato un thread per la propria esecuzione. La parte logica e la parte GUI hanno entrambe due thread associati per il funzionamento. Nella fase di avvio dell’applicazione un thread si occupa di inizializzare e visualizzare la GUI, mentre un’altro thread si occupa di eseguire il kernel dell’applicazione (la logica); in questo modo si evitano attese inutili (o il blocco della GUI) e le operazioni stesse possono essere eseguite in modo concorrente. Come mostra l’immagine l’applicazione, attraverso la sua GUI, prende in input i seguenti parametri3 : • N-Gram: si intende la lunghezza degli n-gram (sequenza contigua di n ele- menti di una data sequenza di testo o discorso). • Num-Chars: `e il numero totale di caratteri unici. 3 Tali parametri sono inizialmente configurati con dei valori di default. 105
  • 108. • Interpolation-Ratio: `e il rapporto di interpolazione lingua-modello. • Number-of-Analyses-Rescored: `e il numero di chunking sottostanti rivalutati. • Including-MISC-Entity-Type: si includono le entit`a di tipo MISC. • Use-Dictionary: si utilizza uno o pi`u dizionari nella fase di training del modello (vero o falso). • Directory-Corpus: il percorso fisico del corpus per il training del modello. • Directory-Gazetteer: il percorso fisico dei gazetter per il training del modello. • Number-Folds: il numero di fold, dove ciascun fold `e associato ad un modello. L’applicazione `e molto semplice, in quanto i passi, che effettua sono: 1. Lettura dei parametri descritti sopra e del corpus assieme ai gazetteer, se abilitato. 2. Caricamento del corpus ed identificazione dei tipi delle entit`a proprie. 3. Verifica se la sequenza dei tag associati ai token `e legale. 4. Assemblamento delle frasi dai token letti. 5. Addestramento di uno o pi`u modelli applicando il metodo CharLmRescor- ingChunker (vedere Sezione 4.3.3). 6. Salvataggio dei modelli appena addestrati in file binari. 7. Calcolo delle perfomance per ciascun modello e delle perfomance totali per tutti i modelli. 6.2.3 Filter Nella fase Filter, si applicano dei filtri a quelle entit`a proprie estratte dalle regole ambigue oppure senza ricorrere ad esse analizzando l’intera frase, e poi disam- biguarle tramite modello. Tale funzione `e composta da 2 step principali, come mostrato in Figure 5.10, che sono: 1. Eliminazione del rumore attorno alle entit`a proprie. 2. Eliminazione delle eventuali Stop Word presenti nelle entit`a proprie. 106
  • 109. Figure 6.15: Schema generale degli step della funzione Filter. Nota: inizialmente nella fase Filter, essa prevedeva 3 step principali; lo step eliminato `e quello di Normalizzazione e stemming delle entit`a proprie in quanto non migliorava le perfomance finali del A-NER e in alcuni casi le stesse peggioravano. Figure 6.16: Schema generale (vecchio) degli step della funzione Filter. Il primo step `e uguale per tutti e tre i moduli, in quanto si va ad eliminare il rumore attorno alle entit`a proprie (all’inizio ed alla fine), come la punteggiatura ed i caratteri speciali presenti in esse, attraverso delle regole costruite ad hoc per ciascun modulo NER. Infine, il secondo step `e uguale per tutti e tre i moduli, in quanto si vanno ad elim- inare (o ”filtrare”) le eventuali Stop Word, presenti all’interno delle entit`a proprie. Esse sono quelle parole che, per la loro alta frequenza in una lingua, sono di solito ritenute poco significative nei sistemi di Information Retrieval e nei sistemi di Information Extraction. Alcuni esempi di Stop Word sono la punteggiatura, i caratteri speciali, le preposizioni, le congiunzioni, gli avverbi, etc. Esse risiedono in un file su formato di testo semplice e sono differenti per ciascun modulo NER. Queste vengono caricate ogni qual volta, che si esegue il task di estrazione e ri- conoscimento delle entit`a proprie, da un insieme di documenti. 6.2.4 Merge Una volta terminata la fase Filter, si procede nell’eliminazione delle entit`a proprie doppione, in quanto le stesse entit`a proprie possono essere estratte e riconosciute sia dalle regole ambigue e sia dalle regole non-ambigue. Per quest’ultima oper- azione, si applica un proprio algoritmo di sub-string searching, che controlla se esistono entit`a proprie trovate con le regole ambigue, che sono doppioni; se si ver- fica la condizione, allora le entit`a proprie vengono cancellate, altrimenti no. Una cosa fondamentale dell’algoritmo, `e che assegna una maggiore importanza alle en- tit`a proprie trovate con le regole non-ambigue, rispetto alle entit`a proprie trovate 107
  • 110. con le regole ambigue, in quanto i primi sono pi`u affidabili e veritiere rispetto ai secondi. Dopodich`e, si passa allo step successivo, ovvero la fusione delle entit`a proprie estratte e riconosciute, con le regole non-ambigue e con le regole ambigue, le quali poi vengono tutte salvati su un file Excel assieme al loro tag specifico (PERS, LOC, ORG e MISC). 108
  • 111. 6.3 Il modulo English NER Per la progettazione ed implementazione del modulo English NER[5] (E-NER), non si `e fatto uso di un corpus in Inglese, in quanto si `e trovato sul sito web di LingPipe un modello addestrato, usando le news, riguardanti la cronaca inglese e mondiale. In detttaglio, con lo schema in Figure 5.15, si mostra l’architettura sintetizzata del modulo E-NER, la quale viene chiamata Micro del sistema NER. Figure 6.17: Schema dell’architettura Micro del sistema NER Multi-Language (E- NER). 109
  • 112. 6.3.1 Differenze del modulo E-NER Per il riconoscimento del ”confine” della frase all’interno di un testo viene utilizzato un modello euristico, ovvero un statistical language model. Tale modello euristico non `e stato necessario addestrarlo, in quanto il sito web di LingPipe, ne mette uno a disposizione gratuitamente on-line. Per il riconoscimento delle entit`a proprie con i tag PERS, LOC, ORG e MISC sono state costruite entrambe le due tipologie di classi di regole (vedere Table 5.3) e per la disambiguazione delle entit`a ambigue si `e utilizzato un modello, il quale `e scaricato gratuitamente dal sito web di LingPipe[5]. Table 6.4: Elenco delle regole (ambigue e non-ambigue) utilizzate per la configu- razione della grammatica. Regole non-ambigue Regole ambigue email parole con le iniziali maiuscole numeri interi numeri percentuali numeri telefonici data ora in formato CET e AM/PM persone organizzazioni Le operazioni che vengono svolte, durante la fase Filter, nel caso del modulo E- NER, sono l’eleminazione del rumore attorno alle entit`a proprie ed eventuali Stop Word. 110
  • 113. 6.4 Il modulo Italian NER Per la progettazione ed implementazione del modulo Italian NER (I-NER), si `e fatto uso di un corpus in italiano (annotato dal sottoscritto), perch`e non c’era nessun sito, che mettesse a disposizione tale risorsa gratuitamente. La costruzione di questo corpus `e stata fatta raccogliendo, dai principali siti italiani di notizie, le notizie riguardanti la politica, la finanza, l’attualit`a e lo sport. Esso contiene circa 70K token contrassegnati in formato CoNLL per: • la persona, • la localit`a, • l’organizzazione ed • i vari tipi di entit`a. I dati sono stati raccolti da una variet`a di fonti: Fonte Rapporto in % http://www.ansa.it/ 44.8% http://www.primopiano.it 25.5% http://it.msn.com/ 6.6% http://www.portalsport.it/ 5.4% http://www.adn.it/ 5.4% http://affariitaliani.libero.it/ 1.9% Altri newspapers e magazines 12.3% Le prime entry del file sono le seguenti: Bernanke B − PERS ha O fatto O saltare O il O tappo O sui O titoli B − MISC di I − MISC Stato I − MISC : O i O Btp B − MISC ai O 111
  • 114. livelli O post-elettorale O . O Da O quando O la O Federal B − ORG Reserve I − ORG ... Con lo schema in Figure 5.16, si mostra l’architettura sintetizzata del modulo I-NER, la quale viene chiamata Micro del sistema NER. Figure 6.18: Schema dell’architettura Micro del sistema NER Multi-Language (I- NER). 112
  • 115. 6.4.1 Differenze del modulo I-NER Per il riconoscimento del ”confine” della frase all’interno di un testo viene utilizzato un modello euristico, ovvero un statistical language model. Tale modello euristico non `e stato necessario costruirlo, in quanto il sito web di LingPipe, ne mette uno a disposizione gratuitamente on-line. Lo stesso discorso vale per questo modulo, dove per il riconoscimento delle entit`a proprie con i tag PERS, LOC, ORG e MISC sono state costruite entrambe le due tipologie di classi di regole (vedere Table 5.5) e per la disambiguazione delle entit`a ambigue si `e utilizzato un modello stocastico (HMM), il quale `e stato opportuna- mente addestrato sul proprio corpus, attraverso l’applicazione X-NERVal, la quale `e stata dettagliatamente descritta precedentemente. Table 6.5: Elenco delle regole, ambigue e non-ambigue, utilizzate per la configu- razione della grammatica. Regole non-ambigue Regole ambigue email parole con le iniziali maiuscole numeri interi numeri percentuali numeri telefonici data ora in formato CET e AM/PM persone organizzazioni Le operazioni che vengono svolte durante la fase Filter, nel caso del modulo I-NER, sono: • l’eliminazione del rumore attorno alle entit`a proprie • e l’eliminazione di eventuali Stop Word riconosciute come entit`a proprie. 113
  • 116. 6.5 Il modulo Arabic NER Per la progettazione ed implementazione del modulo Arabic NER (A-NER), si `e fatto uso di un corpus in arabo (ANERCorpus[32]) disponibilie on-line4 gratuita- mente, contenente circa 150K token contrassegnati in formato CoNLL per: • la persona, • la localit`a, • l’organizzazione ed • i vari tipi di entit`a. Sempre on-line, oltre al corpus, sono disponibili altre risorse; tra cui un insieme di gazetteer in arabo (ANERGazet[32]). In esso vi `e una raccolta di tre tipi di gazetteer: • sedi (continenti, paesi, citt`a, etc), • persone (nomi di persone) ed • organizzazioni (societ`a, squadre di calcio, etc). I dati sono stati raccolti da una variet`a di fonti: Fonte Rapporto in % http://www.aljazeera.net/ 34.8% http://www.raya.com/ 15.5% http://ar.wikipedia.org/ 6.6% http://www.alalam.ma/ 5.4% http://www.ahram.eg.org/ 5.4% http://www.alittihad.ae/ 3.5% http://www.bbc.co.uk/arabic/ 3.5% http://arabic.cnn.com/ 2.8% http://www.addustour.com/ 2.8% http://kassioun.org/ 1.9% Altri newspapers e magazines 17.8% Le prime entry del file sono le seguente5 : B − LOC O 4 Dal sito http://www1.ccls.columbia.edu/∼ybenajiba/downloads.htm. 5 Le parole arabe sono tipicamente scritte da destra verso sinistra. 114
  • 117. O O O B − ORG I − ORG I − ORG O B − LOC I dizionari (noti anche come gazetteer) sono solo liste di nomi propri. Nell’esempio che segue, le prime entry del dizionario sono: (ASIA) Con lo schema in Figure 5.17, si mostra l’architettura sintetizzata del modulo A-NER, la quale viene chiamata Micro del sistema NER. 115
  • 118. Figure 6.19: Schema dell’architettura Micro del sistema NER Multi-Language (A- NER[6]). 6.5.1 Differenze del modulo A-NER Le regole costruite per l’estrazione delle frasi effettuano un processo basato sul riconoscimento del ”confine” di una frase, le quale possono essere identificate at- traverso la presenza di punteggiatura, come: il punto di fine frase (”.”), il punto esclamativo (”!”) ed il punto interrogativo (”?”), e il carattere di new line (” n”). Le regole costruite per la configurazione della grammatica non sono per il riconosci- mento delle entit`a proprie con i tag PERS, LOC e ORG, ma soltanto per il ri- conoscimento di entit`a proprie con il tag MISC (vedere in Table 5.6). 116
  • 119. Table 6.6: Elenco delle regole (solo non-ambigue) utilizzate per la configurazione della grammatica. Regole non-ambigue email numeri interi numeri percentuali numeri telefonici data ora in formato CET e AM/PM Per il riconoscimento delle entit`a proprie con i tag PERS, LOC, ORG (e anche MISC) `e stato utilizzato il modello sull’intera frase in input. Per l’addestramento e la validazione del modello si `e utilizzata l’applicazione X-NERVal, la quale `e stata dettagliatamente descritta precedentemente, ma non si `e fatto uso dei gazetteer (dizionari), durante la sua fase di addestramento, perch`e la Precision non aumen- tava. Le operazioni che vengono svolte durante la fase Filter, nel caso del modulo A- NER, sono l’eliminazione del rumore attorno alle entit`a proprie e l’eliminazione di eventuali Stop Word riconosciute come entit`a proprie. 117
  • 120. Chapter 7 Valutazioni 7.1 Accuratezza, Precision, Recall e F1-Score La valutazione di un sistema NER viene direttamente fatta in base al confronto con un modello di verit`a ed i risultati forniti dallo stesso sistema. I risultati possono essere formulati con le seguenti quantit`a: - Classe predetta - Positivo Negativo Classe Positivo TP (true positives) FN (false negatives) reale Negativo FP (false positives) TN (true negatives) TP (true-positives): elementi etichettati correttamente come appartenenti alla classe positiva. FP (false-positives): elementi etichettati erroneamente come appartenenti alla classe positiva. FN (false-negatives): elementi etichettati erroneamente come appartenenti alla classe negativa. TN (true-negatives): elementi etichettati correttamente come appartenenti alla classe negativa. Di norma, i parametri utilizzati in questo ambito sono tre: Precision, Recall e F1-Score. Definizione. La Recall `e la percentuale di istanze realmente positive classificate come positive, P = TP (TP+FN) , ed `e una misura di completezza. 118
  • 121. Definizione. La Precision `e la percentuale di predizioni positive cor- rette, P = TP (TP+FP), ed `e una misura di correttezza. Definizione. Nella statistica F1-Score (F-Measure o F-score) `e usato come misura per l’accuratezza di un test. F1-Score prende in considerazione sia la Precision e sia la Recall. L’indice pu`o essere visto come la media pesata tra Precision e Recall, e ha connotazione positiva quando tende a 1 e connotazione negativa quando tende a 0, oppue essa pu`o essere interpretata come la media pesata della Precision e della Recall, dove un F1-Score raggiunge il suo punteggio migliore a 1 ed il suo punteggio peggiore a 0. F1-Score `e definito come F11 = 2 · (PR · RC) (PR + RC) . Un’ulteriore misura `e l’Accurattezza. Definizione. L’Accuratezza `e la percentuale di istanze sia positive sia negative classificate correttamente, P = (TP+TN) (TP+TN+FP+FN) . 1 Definizione abbreviata di F1-Score. 119
  • 122. 7.2 Valutazione delle prestazioni I criteri di valutazione delle prestazioni utilizzati per questo progetto, per una lettura analitica dei risultati ottenuti, sono stati fatti prendendo come spunto quelli di Shaalan & Raza[18]. Questi sono: • Eccellente = 90-100%. • Buona = 80-89%. • Discreto = 75-79%. • Sufficiente = 65-74%. • Scarso ≤ 64%. Per i risultati ottenuti dal component di estrazione terminological NER Multi- language bisogna fare una distinguinzione in base alla lingua, ovvero inglese, ital- iano ed arabo. Nei paragrafi che seguono, vengono mostrati alcuni esempi di esecuzione per cias- cuno dei tre moduli (E-NER, I-NER e A-NER), all’interno del component di es- trazione terminological NER Multi-language. 120
  • 123. Esempio di esecuzione del modulo A-NER The Prime Minister stunned Nick Clegg and Ed Miliband by telling them in a phone call this morning that it was time to bring months of talks to a head. Mr Cameron will table proposals on Monday for a Royal Charter to set up a new body to monitor a beefed up regulator. Newspapers would face fines of up to 1 million and be forced to print prominent apologies by the regulator. However, with Labour and the Liberal Democrats arguing for a tougher system to be embedded in law, Mr Cameron does not appear to have the votes in the Commons to win his way. Cristina Fernandez de Kirchner made the comments last night as Argentinians celebrated the surprise election of Cardinal Jorge Mario Bergoglio, the 76-year- old Archbishop of Buenos Aires, to succeed the retired Benedict XVI. The Times revealed last night that Lord Ahmed of Rotherham. The UK bank bond issues fall sharply. Why Intel Corporation (INTC) deserves to be bought, now. The Apple Inc. (AAPL), Advanced Micro Devices, Inc. (AMD). Figure 7.1: Output prodotto dal modulo E-NER sul testo in input sopra. 121
  • 124. Esempio di esecuzione del modulo I-NER Fri Mar 29 11:44:00 CET 2013 Inflazione: a marzo frena a 1,7% Istat, sesto rallentamento, effetto decelerazione carburanti (ANSA) - ROMA, 29 MAR - A marzo l’inflazione rallenta ancora, con la crescita dei prezzi al consumo ferma all’1,7%, dall’1,9% di febbraio. Si tratta della sesta frenata consecutiva, dovuta soprattutto alla decelerazione annua dei carburanti. Lo rileva l’Istat, si tratta del tasso piu’ basso da novembre 2010. Su base mensile il rialzo e’ dello 0,3%. A marzo i prezzi dei prodotti acquistati con pi`u frequenza rincarano del 2% su base annua, un tasso superiore all’inflazione (1,7%), in frenata rispetto a febbraio. Fri Mar 29 11:39:00 CET 2013 Fisco: Befera,11 mld rimborsi Iva imprese Lettera a direttori regionali per accelerare liquidazioni (ANSA) - ROMA, 29 MAR - Nel 2013 l’Agenzia delle Entrate punta a erogare alle imprese rimborsi Iva in conto fiscale ”per un ammontare complessivo di 11 miliardi”. Cos`ı il direttore Attilio Befera in una lettera, in cui invita i direttori regionali ”a dedicare ogni risorsa utile alla liquidazione dei rimborsi nei prossimi 4 mesi”. ”Il volume dei crediti nei confronti della p.a. e i lunghi tempi di pagamento, rischiano di compromettere - dice - livelli occupazionali e sono un ostacolo alla crescita”. Figure 7.2: Output prodotto dal modulo I-NER sul testo in input sopra. 122
  • 125. Esempio di esecuzione del modulo A-NER Figure 7.3: Output prodotto dal modulo A-NER sul testo in input sopra. 123
  • 126. 7.2.1 Valutazione delle annotazioni con ENAMEX Named Entities Attraverso la gestione dei parametri di input elencati nella Sezione 5.2.2 `e possibile quantificare la qualit`a del modello, prodotto durante la fase di addestramento. Dal momento, che la complessit`a del modello `e un parametro importante data l’intensit`a computazionale (sia in fase di creazione, che in fase operativa) pu`o essere buona pratica eseguire un ciclo di valutazione pi`u volte variando, per esempio, il numero di fold prima di iniziare la fase di addestramento (e di valutazione), in modo da poter facilmente individuare il modello, che ha ottenuto il punteggio pi`u alto. Infatti, per questo scopo l’applicazione X-NERVal `e sia dotata di una interfaccia grafica, per il monitoraggio dei risultati (mostrata in Figure 6.2) e contestualmente il/i modello/i viene/vengono salvato/i su file, e sia dotata, nella parte in basso dell’interfaccia, di un piccolo pannello per l’aggiustamento dei parametri, i quali sono stati accennati nella Sezione 6.2.2. Per ogni ciclo di addestramento-valutazione vengono mostrati, per ciascuna delle 4 tipologie (PERS, ORG, LOC e MISC), gli indici di Precision, di Recall e di F1-Score; ed infine la combinazione dei valori degli indici per tutte le 4 tipologie, permettendo cos`ı una visione migliore dei risultati ottenuti. 124
  • 127. Figure 7.4: Istantanea dell’applicazione X-NERVal durante le fasi di addestra- mento e di cross-validation (valutazione). Sia in Table 7.1 e sia in Table 7.2 sono riportati gli indici di Precision, di Recall e di F1-Score relativi all’iterazione con il punteggio miglior, che hanno prodotto i modelli, poi utilizzati nei moduli I-NER e A-NER, per il component di estrazione terminological NER Multi-language. Le perfomance migliori ottenute, sono state eseguite su una configurazione da 4- fold di cross-validation ed utilizzando, come sistema di annotazione, quella basata sul sistema BIO, il quale `e stato ampliamente descritto nella Sezione 4.3.3. In ciascuna fold si sono utilizzate una parte dei dati di addestramento, provenienti da varie fonti di notizie (vedere Sezione 6.4, per la lingua italiana, e vedere Sezione 6.5, per la lingua inglese); mentre la parte restante dei dati di addestramento, vengono utilizzati per la valutazione. Inoltre, dalle due tabelle, si pu`o vedere che i modelli basati sul character-gram language offrono dei buoni risultati sfruttando come tipo di annottazione quello basato sul sistema BIO. L’utilit`a dei character-based-grams sono stati dimostrati anche altrove (Wilbur et al., 1999; Vasserman, 2004; Townsend et al., 2005). Come 125
  • 128. `e stato descritto precedentemnte nella Sezione 4.3.3, essi usano un modello stocas- tico (HMM), il quale `e particolarmente adatto, in quanto permette il token-internal features, per essere poi combinato con il contesto del token.[22] Table 7.1: Risultati della valutazione per la lingua araba. LOC 0, 799 0, 826 0, 812 PERS 0, 741 0, 756 0, 748 ORG 0, 672 0, 528 0, 600 MISC 0, 691 0, 648 0, 669 Combinate 0, 747 0, 722 0, 734 Table 7.2: Risultati della valutazione per la lingua italiana. LOC 0, 900 0, 829 0, 863 PERS 0, 671 0, 815 0, 736 ORG 0, 784 0, 753 0, 768 MISC 0, 815 0, 843 0, 829 Combinate 0, 786 0, 799 0, 792 7.2.2 Valutazione del component di estrazione terminological NER Multi- language Il modo in cui Precision e Recall vengono tipicamente calcolati (vedere anche Sezione 7.1) `e quello di misurare le entit`a l’una contro l’altra. In questo ambito, la Precision e la Recall, vengono calcolati in base alla prima definizione sui cri- teri di corrispondenza. Ad esempio: devono essere in una corrispondenza esatta (exact match)? C’`e una sovrapposizione della corrispondenza con tutti (Any Over- lap)? Le intenzioni sono quelle di soddisfare alcuni dei criteri appena citati. In questo ambito, per tutte e tre le lingue, si `e preso in considerazione il criterio della corrispondenza esatta (exact match), dove: il true-positive rappresenta le corrispondenze esatte, il false-positive rappresenta le corrispondenza non esatte ed il false-negative rappresenta le entit`a non estratte (e non riconosciute). Nella Table 7.3 si mostra l’accuratezza raggiunta per la lingua inglese, ottenendo delle prestazioni complessive Buone, cos`ı descritte nella Sezione 7.3. Nella Table 7.4 si mostra l’accuratezza raggiunta per la lingua italiana, ottenendo delle prestazioni complessive Buone, sempre descritte nella Sezione 7.3. 126
  • 129. Infine, nella Table 7.4 si mostra l’accuratezza raggiunta per la lingua araba, ot- tenendo delle prestazioni complessive Sufficienti, sempre descritte nella Sezione 7.3. Table 7.3: Accuratezza raggiunta per la lingua inglese. LOC 0, 875 0, 834 0, 854 PERS 0, 857 0, 875 0, 866 ORG 0, 834 0, 875 0, 854 MISC 0, 834 0, 834 0, 834 Combinate 0, 827 0, 857 0, 842 Table 7.4: Accuratezza raggiunta per la lingua italiana. LOC 0, 855 0, 845 0, 850 PERS 0, 680 0, 815 0, 740 MISC 0, 780 0, 830 0, 800 ORG 0, 820 0, 830 0, 825 Combinate 0, 784 0, 830 0, 800 Table 7.5: Accuratezza raggiunta per la lingua araba. LOC 0, 790 0, 820 0, 800 PERS 0, 740 0, 750 0, 750 ORG 0, 670 0, 525 0, 590 MISC 0, 690 0, 645 0, 660 Combinate 0, 723 0, 685 0, 700 127
  • 130. Mettendo insieme le prestazioni dei tre moduli NER (E-NER, I-NER e A-NER), si ottiene la Table 7.6, la quale riassume l’accuratezza totale in termini di Preci- sion e di Recall del component di estrazione terminological NER Multi-language, raggiungendo cos`ı delle prestazioni complessive pi`u che soddisfacenti. Table 7.6: Accuratezza totale del component di estrazione terminological NER Multi-language. - Precision Recall F1 E-NER 0, 827 0, 857 0, 842 I-NER 0, 784 0, 830 0, 800 A-NER 0, 723 0, 685 0, 700 Totale 0, 778 0, 791 0, 781 128
  • 131. 7.3 Riepilogo e conclusioni finalli sulla valutazione La valutazione `e stata fatta per: • il processo di addestramento dei modelli stocastici (HMM) per la lingua ita- liana e per la lingua araba, • le prestazioni dei tre moduli (E-NER, I-NER e A-NER) e • le prestazioni del componente NER Multi-language. Nella valutazione del processo di addestramento dei modelli per la lingua ital- iana e per la lingua italiana `e consistita nel trovare la configurazione ottimale dei parametri di input a disposizione, tali per cui l’accuratezza del modello soddisfi i requisiti del componente NER Multi-language. Le valutazioni per entrambi i modelli, hanno dimostrato come l’impostazione dei parametri di input sia in grado di migliorare la qualit`a del risultato, ma sopratutto quello, che assume il ruolo cardine, `e la qualit`a del corpus (i dati di addestramento) impiegato nel processo stesso. Nel corso delle varie iterazioni si `e cercato di introdurre delle migliorie per aumentare l’accuratezza dei modelli e la qualit`a del testo ottenuto. In base ai criteri minimi di accettazione introdotti all’inizio di questo capitolo, entrambi i risultati di valutazione ottenuti, sono pi`u che soddisfacenti, in quanto quello del modello per la lingua araba sono pi`u che sufficienti e che quello del modello per la lingua italiana sono buoni. La seconda valutazione, interessa le prestazioni del componente NER Multi-langua- ge in base ai dati di ingresso, forniti dall’utente, ovvero non `e pi`u l’algoritmo di valutazione a determinare la misura di prestazione del processo. In questo caso, per valutare i tre moduli NER, presenti nel componente NER Multi-language, vengono utilizzati dei modelli di verit`a, con i quali si mettono a confronto gli NEs presenti in essi, con le entit`a proprie estratti ed identificati dai tre moduli NER. In questa misura, per`o, vengono a manifestarsi due problemi, che si possono manifestare nei vari test, ovvero: • dal momento che non vi `e una scelta a priori sui dati in ingresso, questi possono avere caratteristiche molto distanti da quelle dei dati che sono stati utilizzati durante l’addestramento; • il modo con cui `e stato costruito l’insieme di addestramento e di valutazione, incide sulle prestazioni generali: i dati sono il frutto di una raccolta manuale e di etichettatura manuale di un operatore umano, di articoli di news prove- nienti da diverse fonti, pertanto questo insieme non `e detto che possa avere caratteristiche ottimali, in quanto la raccolta e l’etichettatura `e a discrezione dello stesso operatore umano. 129
  • 132. Errori frequenti nell’estrazione delle entit`a proprie L’estrazione delle entit`a proprie `e tuttora un problema pi`u difficile del POS Tag- ging. La ragione di questa affermazione sta nel fatto che le entit`a proprie possono estendersi su pi`u token. Per esempio, l’uso della congiunzione nella singola entit`a propria ”Cable e Wireless” non deve essere trattato come un separatore per le due entit`a proprie, ”Cable” e ”Wireless”, mentre il ”pezzo” di testo ”IBM e Google” dovrebbe generare due entit`a proprie separate. Altre strutture di entit`a proprie complesse includono preposizioni come ”di”, ”delle”, ”del”, etc.. La frase ”Agenzia delle Entrate” `e una singola entit`a propria, mentre ”Francesco da Roma” dovrebbe restituire due entit`a proprie separate. Un entit`a propria di tipo PERS come, ad esempio, ”Professor Calculus” pu`o essere inizialmente espresso con il titolo onori- fico di professore all’inizio di una frase. Una citazione senza titolo per la stessa entit`a propria, pu`o rendere la questione pi`u difficile con un sistema di estrazione per disambiguare l’uso della parola ”Calculus”. Le parole capitalizzate[15, 19] sono pi`u propense a rappresentare le entit`a proprie, ma spesso non possono rappresentare una persona, un luogo, o un’organizzazione. Essi possono essere trovati nel titolo di un articolo o rappresentano un termine finanziario, medico, o giuridico che non `e incluso nel lessico del NER. Un NER pu`o anche essere indotto a soggetti, che interpretano ”Policlinico Umberto I” come un’entit`a propria di persona in base all’uso del titolo onorifico. Altri errori simili includono la creazione delle entit`a proprie di luoghi come ”New York Times” o ”Chicago Board of Trade”, infatti molti di questi errori possono essere risolti utilizzando un gazetteer o un gazetteer geografico per gestire tutte le entit`a proprie conosciute. Nota: spesso pu`o accadere che non si riesca a risolvere pi`u citazioni della stessa persona (co-riferimento), come ”John Smith”, ”J. Smith” o ”John S.” in un’unica entit`a propria. 130
  • 133. Chapter 8 Applicazioni Future Le applicazioni future (alcune di queste sono state sviluppate), che fanno uso di entit`a proprie estratte da un testo, possono usare la semantica, senza una completa analisi del testo o una conoscenza significante. Alcune di queste applicazioni, che ne fanno uso, includono: i sistemi Question & Answer, l’organizzazione dei record sanitari, la ricerca di letteratura accademica e l’applicazioni web e-commerce. 8.1 Sistemi Question & Answer Un tradizionale motore di ricerca non pu`o essere utilizzato in questo ambito, in quanto non si pu`o utilizzare un sistema che si basa semplicemente sull’abbinamento delle parole chiave della ”domanda”, posta dall’utente, e dal testo presente nei soli documenti. Ci`o significa che la ”risposta” del sistema pu`o avvenire solo tramite la ricerca delle entit`a e non per parole chiave. Per esempio, un analista dell’intelligence, ad esempio della CIA, potrebbe essere interessato nel trovare i posti di tutti gli incidenti mortali (o violenti) avvenuti in un periodo di sei mesi attorno a Kabul, citt`a dell’Afghanistan. Con un sis- tema tradizionale sarebbe molto difficile per l’utente generare una precisa query di ricerca per trovare la ”risposta” a questa ”domanda”. Le query per le basi di dati sono molto pi`u precise di un motore di ricerca tradizionale, poich´e le parole chiave utilizzate nella ricerca devono corrispondere con il testo, per un particolare attrib- uto. Perci`o si `e in grado di generare una precisa query per la base di dati sulla ”domanda” precedente, con un intervallo di data, longitudine e latitudine, assieme ad un elenco di parole chiave per episodi di violenza, come attentati o disordini. Il NER ha come obiettivo quello della compilazione dello schema relazionale, della 131
  • 134. base di dati, con specifici segmenti di testo provenienti da un testo non strutturato di notizie (vedere Figure 6.1). Figure 8.1: Schema generale di un sistema Question & Answer. Si estrae l’elenco dei luoghi ed il timestamp dagli articoli insieme a un elenco di parole chiave e di sinonimi. L’elenco dei luoghi `e ulteriormente differenziato in valori di longitudine e di latitudine. L’elenco delle parole chiave e dei sinonimi sono indicizzati utilizzando un motore di ricerca come Lucene. La questione viene tradotta in una o pi`u query per la base di dati e in una sola query per il motore di ricerca. I risultati di una ricerca delle tabelle della base di dati restituir`a una serie di articoli di A, che menzionano gli indirizzi vicino a Kabul nell’intervallo di date specificate. La query per il motore di ricerca restituir`a una serie di articoli B, che includono le parole chiave come ”bombardamenti” nel testo. L’intersezione dei due insiemdi di risultati, A e B, dovrebbe restituire gli articoli che hanno pi`u probabilit`a di essere rilevanti per la ”domanda”. 132
  • 135. 8.2 Sistemi per la ricerca di letteratura accademica Gli articoli accademici sono in genere pubblicati in un formato standard, con i meta dati nell’intestazione dell’articolo, per descrivere: il titolo, gli autori, gli indirizzi e-mail, le organizzazioni, le date e gli abstract. Per questo si potrebbe popolare uno schema relazionale di una base di dati, ren- dendo molto pi`u facile la ricerca di un insieme di articoli. Purtroppo, il testo estratto dagli articoli non contiene demarcazioni, per separare i diversi tipi di meta-dati e perci`o bisognerebbe avere dei modelli per estrarre il titolo, gli autori, e gli altri campi di intestazione. 133
  • 136. 8.3 Applicazioni web e-commerce Il testo proveniente dalle pagine web di un sito e-commerce contengono una lista di prodotti, caratteristiche dei prodotti e costi dei prodotti. Ancora, vi sono indi- cazioni di quando la descrizione di un prodotto termina ed inizia un altro prodotto. Una prima soluzione potrebbe essere quella di costruire un’espressione regolare sulla base di un testo o un pattern HTML nella pagina web. Questa soluzione non `e affidabile, poich`e sia il formato e sia il pattern, contenuto in una pagina Web, possono modificare l’espressione regolare rendendola inutilizzabile. Infatti, non si pu`o generare manualmente un’espressione regolare per gestire tutti i casi possibili, perch`e risulterebbe essere difficile e non `e facilmente verificabile. 134
  • 137. Appendix A Apprendimento Automatico L’Apprendimento Automatico[7] (o Machine Learning) `e quella disciplina che si occupa di produrre algoritmi, che attraverso l’esperienza incrementano le loro prestazioni in maniera automatica. La disciplina deriva dalla preesistente mod- ellizzazione statistica dei dati, che costituisce il punto cardine del processo di automatizzazione con cui il modello stesso viene creato. Un aspetto fondamentale dell’Apprendimento Automatico `e la scelta del mod- ello e il suo corretto dimensionamento, con lo scopo di approssimare al meglio la funzione obiettivo senza incappare nell’overfitting1 (sovra-dimensionamento) o nell’underfitting2 (sotto-dimensionamento). Sia il sovra-dimensionamento e sia il sotto-dimensionamento implicano che il modello non `e in grado di generalizzare correttamente, ossia di fornire risposte corrette a fronte di input diversi da quelli forniti in fase di addestramento. Nota: per misuare la capacit`a di generalizzazione `e possibile dividere i dati a disposizione in due set: il primo set (quello pi`u grande) detto insieme di addestramento, serve per la fase di apprendimento, mentre il secondo set (quello pi`u piccolo, dove la sua dimensione deve essere almeno del 10%, rispetto all’insieme di partenza) serve per la validazione, ed `e detto appunto insieme di validazione. Per evitare che il modello inizi ad apprendere anche il rumore dei dati, si applica la tecnica dell’early stopping, che ha come obiettivo di fermare l’addestramento prima che si verifichi questo problema. Tenendo traccia delle due funzioni d’errore si ha 1 Si ha un overfitting, durante la fase di apprendimento, quando un modello statistico si adatta ai dati osservati. 2 Si ha un underfitting, durante la fase di addestramento, quando il modello non `e abbastanza ricco di parametri per poter approssimare correttamente la funzione obiettivo. 135
  • 138. che l’errore sull’insieme di addestramento `e una funzione monotona decrescente, mentre l’errore sull’insieme di validazione ha una funzione con andamento decres- cente fino a raggiungere un punto di minimo, per poi crescere nuovamente (vedi figura A.1). Per questo, l’addestramento deve essere fermato in concomitanza con il punto di minimo. Figure A.1: Early stopping: funzione di errore. La scelta dei dati `e un’altro aspetto che pu`o limitare la qualit`a del modelloi: se tra i dati di addestramento e i dati di validazione esiste una forte correlazione si incappa in una sovrastima della capacit`a predittiva. Per questo, l’insieme dei dati deve essere il pi`u eterogeneo possibile. Comunque deve essere sottolineato che gli algoritmi di apprendimento hanno ottime capacit`a nell’estrarre le caratteristiche essenziali e nell’isolare le caratteristiche occasionali, suscettibili di errore. Tipi di learning L’apprendimento[7] si basa sul principio di sfruttare l’esperienza per migliorare la qualit`a dei risultati futuri. • Apprendimento Supervisionato: si forniscono gli ingressi e le corrispondenti uscite desiderate. • Apprendimento per Rinforzo: si fornisce una valutazione della qualit`a del risultato, senza tuttavia indicare la soluzione corretta. • Apprendimento Non Supervisionato: vengono forniti solo esempi non anno- tati e deve essere il sistema a definire le categorie in cui i dati sono ripartiti. • Apprendimento Parzialmente Supervisionato o Apprendimento Semi-supervisionato: una parte dei dati non presenta etichettatura. 136
  • 139. Appendix B Hidden Markov Models Un Hidden Markov Model1 [1, 23] (HMM) `e una catena di Markov i cui stati non sono osservabili direttamente. Per chiarire meglio i concetti, si pu`o ricorrere ad un esempio, che riguarda un insieme di contenitori di vetro pieni di palline colorate. Si suppone di avere in una stanza N grandi contenitori riempiti di palline di vari colori, dove ogni contenitore ha, al suo interno, un certo numero di palline di ciascun colore, ed i colori possibili sono Σ e nella stanza `e presente anche un folletto, il quale sceglie un recipiente iniziale secondo un qualche criterio arbitrario, estrae una pallina da esso annotan- done il colore, dopodich`e la rimette al suo posto. Infine la sequenza ricomincia con la scelta di un altro contenitore. Nella stanza accanto si trovano degli osservatori e ad essi il folletto comunica soltanto la sequenza dei colori estratti. Tali osservatori possono modellare il complessivo processo come un HMM, dove gli stati verranno rappresentati dal numero di contenitori ed ogni contenitore `e caratterizzato da determinate probabilit`a per l’uscita di ciascun colore. Supponendo che il sistema, che si sta delineando, goda della propriet`a di Markov, secondo cui la probabilit`a che esso si trovi, in un certo stato, al tempo t dipende soltanto dallo stato all’istante t–1, ma non da quelli degli istanti precedenti. Esprimendolo matematicamente: P(xt = sj|xt–1 = si, xt = sk, . . . , x0 = sm) = P(xt = sj|xt–1 = si). Supponendo anche che le transizioni siano regolate da un insieme di probabilit`a, 1 Un HMM `e particolarmente noto per la loro applicazione come: il riconoscimento di pattern temporale, il riconoscimento dei gesti, la ricostruzione di segnali, il POS Tagging il riconoscimento della parola, la lettura ottica dei caratteri, il riconoscimento vocale, etc. 137
  • 140. indipendenti dal tempo, dette appunto probabilit`a di transizione: P(xt = sj|xt–1 = si) = ai,j per ogni t, 1 ≤ i, j ≤ N. Poich`e le ai,j sono probabilit`a, devono soddisfare i seguenti vincoli: 1. ai,j ≤ 0, per ogni i, j; 2. N j=1 ai,j = 1, per ogni i. Figure B.1: Un Hidden Markov Model. Il modello considerato produce, infine, un’uscita osservabile ad ogni istante di tempo. Un modello si dice osservabile se, attraverso le uscita, si conosce con esattezza la sequenza di stati che il sistema ha percorso. Mentre, si dice che un modello non `e osservabile nel caso in cui il valore di uscita non sia lo stato. Per indicare una generica uscita si utilizza vk e per indicare la probabilit`a che il modello abbia quell’uscita si utlizza bi(k), trovandosi nello stato i, ossia l’uscita vk `e condizionato dallo stato i. In un modello siffatto, gli unici segnali osservabili sono le uscite vk e la sequenza degli stati che il sistema attraversa rimane nascosta, anche se, in generale, non `e dato sapere da quali e quanti stati sia composto il modello. Per questo motivo si parla di HMM, perch`e, appunto, si fa riferimento alla non osservabilit`a della sequenza degli stati. 138
  • 141. Tornando ai modelli markoviani, `e opportuno caratterizzare, in maniera formal- mente pi`u rigorosa, le loro componenti, ovvero un HMM `e un modello stocastico composto da: i. la catena ha un insieme di stati S = s1, s2, s3, . . . , sN ; ii. Σ diversi simboli, dove Σ = σ1, σ2, σ3, . . . , σK , uno per ogni differente uscita osservabile; iii. l’insieme A = ai,j delle probabilit`a di transizione fra stati; iv. l’insieme B = bj(k) delle probabilit`a di emissione delle uscite osservabili nei vari stati; v. la distribuzione di probabilit`a dello stato iniziale ˜π0, dove ˜π0 = P(x1 = si), 1 ≤ i ≤ n. Una volta che sono stati scelti i due parametri S e Σ, il modello HMM2 M `e completamete specificato dalla terna A, B e ˜π0. Un HMM pu`o essere usato come un generatore per produrre una sequenza di osservazioni: O = O1, O2, . . . , OT dove ogni osservazione Ot `e un simbolo di Σ e T `e il numero di osservazioni della sequenza. La sequenza O (detta anche evoluzione temporale del modello) viene generata con il seguente procedimento: (1) Si sceglie uno stato iniziale si in accordo con l’insieme delle propriet`a iniziali ˜π0. (2) Si pone t = 1, dove t `e l’indice temporale;. (3) Si sceglie Ot = vk secondo la distribuzione di probabilit`a bi(k). (4) Si transita in un nuovo stato trovando l’elemento ai,j nella matrice di tran- sizione A. (5) Settare t = t + 1. Se t ≤ T si ritorna al passo (3), altrimenti si esce dalla procedura. Tale procedura pu`o essere usata come un generatore di osservazioni, ma anche come un modello per capire come una data sequenza di osservazioni `e stata generata da un HMM appropriato. 2 Un generico HMM si trova indicato, in letteratura, con il simbolo γ A, B, ˜π0 , o, pi`u sem- plicemente γ. 139
  • 142. Appendix C Espressioni regolari Le espressioni regolari[12, 16, 27] vengono utilizzate per trovare delle corrispon- denze nelle stringhe (o frasi). Quindi se si vuole cercare una sottostringa ”abc” all’interno delle stringhe, esse devono contenere esattamente queste lettere nella stessa sequenza, affinch`e venga trovato il riscontro. Molti sviluppatori hanno familiarit`a con queste espressioni per il pattern-matching, come ad esempio UNIX grep, linguaggi di programmazione come il Perl, e gli strumenti per l’analisi lessicale per i compilatori dei linguaggi di programmazione, come lex. Pi`u formalmente, nell’Informatica Teorica, una espressione regolare (in inglese le sue forme abbreviate sono regexp, regex o RE) `e una sequenza di simboli (quindi una stringa) che identifica un insieme di stringhe. In generale, le esperssioni re- golari sono usate per specificare o definire linguaggi regolari, tuttavia permet- tono di definire anche linguaggi non regolari. I linguaggi regolari sono i linguaggi generati da grammatiche di tipo 3 (nella gerarchia di Chomsky) e riconosciuti da automi (deterministici, semi-deterministici e non-deterministici) a stati finiti. Tuttavia, le espressioni regolari esprimono un formalismo generico, attraverso dei matching pattern. Tale formalismo, non `e specifico ad un particolare strumento o linguaggio di programmazione. Una espressione regolare rappresenta un’insieme regolare di parole in termini di tre semplici operazioni: adiacenza, ripetizione e alternazione. Una simile espressione regolare a(b|c)∗ a rappresenta un linguaggio infinito L = aa, aba, aca, abba, abca, acba, acca, . . .. L’espressione regolare (b|c) sta a significare ”scegliere b o c”, mentre con il simbolo ” ∗ ” (star o chiusura di Kleene) significa ”zero o pi`u volte” e l’adiacenza di due simboli ha il suo significato usuale. 140
  • 143. Gli operatori delle espressioni regolari Come `e stato detto precedentemente, le espressioni regolari[12, 16, 27] denotano linguaggi regolari. Data una sequenza su un qualsiasi alfabeto finito Σ = a1, a2,- . . . , an , gli operatori delle espressioni regolari possono essere definiti nel seguente modo. 1. Se ai ∈ A, per 1 ≤ i ≤ n, allora ai `e una espressione regolare. 2. Se L e M sono espressioni regolari, allora lo `e (LM), dove (LM) rappre- senta l’insieme delle stringhe, che si possono formare prendendo una qualsiasi stringa in L e concatenandola con qualsiasi stringa in M. 3. Se L, M, . . . , T sono espressioni regolari, allora lo `e (L|M| . . . |T), dove (L|M|− . . . |T) rappresenta l’unione delle espressioni regolari L, M, . . . , T. 4. Se L `e una espressione regolare, allora lo `e anche L∗ , dove L∗ rappresenta l’insieme delle stringhe che possono essere formate prendendo un numero qualsiasi di stringhe da L, eventualmente con ripetizioni. 5. Solo le espressioni formate applicando le regole 1−4 sono espressioni regolari. Nota: si assume per convenienza, che la stringa vuota `e definita come una espressione regolare ed `e denotata da . 141
  • 144. Bibliography [1] Bilmes Jeff A. What HMMs Can Do. IEICE TRANS. INF. & SYST., E89–D, 2006. [2] Alfred V. Aho and Margaret J. Corasick. Efficient string matching: An aid to bibliographic search. Communications of the ACM, 18(6):333–340, June 1975. [3] Shabib AlGahtani. Arabic Named Entity Recognition: A Corpus-Based Study, 2012. [4] Breck Baldwin Bob Carpenter. Text Analysis with LingPipe 4. LingPipe Publishing - New York, 2011. [5] Breck Baldwin Bob Carpenter. LingPipe Web Site. URL: alias- i.com/lingpipe/index.html, 2004. [6] Breck Baldwin Bob Carpenter, Mitzi Morris. Text Processing with Java 6. LingPipe Publishing - New York, 2011. [7] Alessandro Francois Camerada. Classificazione di contenuti generati dagli utenti come soluzione al problema del sovraccarico informativo del Web, 2010 - 2011. [8] Alessandro Mazzei e Vincenzo Lombardo Cristina Bosco. Evalita Parsing Task: an analysis of the first parsing system contest for Italian. [9] Alessandro Mazzei Vincenzo Lombardo Felice Dell’Orletta Alessandro Lenci Cristina Bosco, Simonetta Montemagni. Evalita ’09 Parsing Task: comparing dependency parsers and treebanks. [10] Satoshi Sekine David Nadeau. A Survey of named entity recognition and classification. National Research Council Canada/New York University. 142
  • 145. [11] Daniel Jurafsky e James H. Martin. Speech and Language Processing - An Introduction to Natural Language Processing, Computational Linguistics and Speech Recognition. Prentice Hall. [12] By Jeffrey E. F. Friedl. Mastering Regular Expressions. O’Reilly. [13] Giuseppe Rizzo, Rapha¨el Troncy, Sebastian Hellmann. NERD Meets NIF: Lifting NLP Extraction Results to the Linked Data Cloud. LDOW2012. [14] John Haugeland. Artificial Intelligence: The Very Idea. Cambridge, Mass: MIT Press. [15] Will Radford Tara Murphy James R. Curran Joel Northman, Nicky Ringland. Learning multilingual named entity recognition from Wikipedia. Artificial Intelligence, 194(1):151–175, Mar. 2012. [16] Jeffrey D. Ullman John E. Hopcroft, Rajeev Motwani. Automi, Linguaggi e Calcolabilit`a - Terza Edizione. Pearson - Addison Wesley. [17] Joseph Turian, Lev Ratinov, Yoshua Bengio. Word Representations: A Simple and General Method for Semi-Supervised Learning. ACL ’10 Proceedings of the 48th Annual Meeting of the Association for Computational Linguistics. [18] Khaled Shaalan, Hafsa Raza. NERA: Named Entity Recognition for Arabic. Journal of the American Society for Information Science and Technology, 60:1652–1663, 2009. [19] Manu Konchady. Building Search Applications Lucene, LingPipe, and Gate. Mustru Publishing. [20] Be´ata Megyesi. Brill’s Rule-Based Part of Speech Tagger for Hungarian. [21] Paola Velardi, Francesco Slano. TermExtractor: a Web Application to Learn the Common Terminology of Groups and Research Communities. Conference TIA-2007. [22] Simone Teufel Peter Corbett, Colin Batchelor. Annotation of Chemical Named Entities. BioNLP 2007: Biological, translational, and clinical lan- guage processing, 57–64:27–31, June ACL 2007. [23] L.R. Rabiner. A tutorial on HMM and selected applications in speech recog- nition. In Proc. IEEE, 77(2):257–286, Feb. 1989. [24] Emanuele Pianta e Claudio Giuliano Roberto Zanoli. Named Entity Recogni- tion through Redundancy Driven Classifiers. Poster and Workshop Proceed- ings of the 11th Conference of the Italian Association for Artificial Intelli- gence. 143
  • 146. [25] Beatrice Santorini. Part-of-Speech Tagging Guidelines for Penn Treebank Project. [26] Raffaele Simone. Fondamenti di linguistica. 2008. [27] Michael Sipser. Introduction to the Theory of Computation - Second Edition, International Edition. Thomson Course Techonology. [28] Ronald L. Rivest Thomas H. Cormen, Charles E. Leiserson. Introduzione agli algoritmi. Jackson Libri, 2003. [29] Thorsten Brants. Tagset Reduction Without Information Loss. Proceedings of the 33rd Annual Meeting of the Association for Computational Linguistics, Cambridge, MA (1995). [30] Manuela Speranza e Rachele Sprugnoli Valentina Bartalesi Lenzi. EVALITA 2011: Description and Results of the Named Entity Recognition on Tran- scribed Broadcast News Task. Poster and Workshop Proceedings of the 12th Conference of the Italian Association for Artificial Intelligence. [31] Paolo Rosso Yassine Benajiba. ANERsys 2.0: Conquering the NER Task for the Arabic Language by Combining the Maximun Entropy with POS-tag Information. 3rd Indian Conference on Artificial Intelligence (IICAI-07). [32] Paolo Rosso Yassine Benajiba. ANERsys: An Arabic Named Entity Recogni- tion System Based on Maximum Entropy. CICLing ’07 Proceedings of the 8th International Conference on Computational Linguistics and Intelligent Text Processing. [33] Paolo Rosso Yassine Benajiba. Arabic Named Entity Recognition using Con- ditional Random Fields. HLT and NLP within the Arabic world 2008. 144