53
Elaborato finale in Basi di Dati Natural Language Processing: la piattaforma GATE/ANNIE e le Ontologie Anno Accademico 2017/2018 Candidato: Aniello Allegretta matr. N46003054 Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica

Natural Language Processing: la piattaforma GATE/ANNIE e ... · Il linguaggio (scritto e parlato) è al centro di tutti gli aspetti della comunicazione. Con ... understanding e language

Embed Size (px)

Citation preview

Elaborato finale in Basi di Dati

Natural Language Processing: la piattaforma

GATE/ANNIE e le Ontologie

Anno Accademico 2017/2018

Candidato:

Aniello Allegretta

matr. N46003054

Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica

Indice

1. Introduzione ....................................................................................................................................... 4

2. Trattamento Automatico del Testo e Information Extraction .......................................................... 7

2.1 Natural Language Processing .......................................................................................................... 7

2.1.1 Cenni storici ............................................................................................................................... 8

2.1.3 Processo di Trattamento Semantico Dell’Informazione ......................................................... 11

2.1.4 Principali Tool ......................................................................................................................... 13

2.2 Information Extraction .................................................................................................................. 14

2.2.1 Task di Information Extraction .............................................................................................. 14

3. Le Ontologie ed il Web semantico ................................................................................................... 15

3.1 Web Semantico ............................................................................................................................... 15

3.1.1 L’architettura del Web Semantico .......................................................................................... 16

3.2 Ontologie ........................................................................................................................................ 19

3.2.1 RDFS ........................................................................................................................................ 20

3.2.2 OWL ........................................................................................................................................ 21

4. GATE ............................................................................................................................................... 22

4.1 GATE IDE ...................................................................................................................................... 23

4.1.1 Caricamento di documenti ...................................................................................................... 24

4.1.2 Annotazioni .............................................................................................................................. 25

4.1.3 Coreferenza.............................................................................................................................. 26

4.1.4 Caricamento di Processing Resources..................................................................................... 26

4.1.5 Persistenza delle risorse ........................................................................................................... 27

4.2 GATE Embedded ........................................................................................................................... 29

4.2.1 CREOLE.................................................................................................................................. 30

4.2.2 Language Resources ................................................................................................................ 31

4.2.3 Processing Resources ............................................................................................................... 32

4.3 JAPE ............................................................................................................................................... 34

4.4 ANNIE ............................................................................................................................................ 36

4.4.1 Document Reset ....................................................................................................................... 37

4.4.2 Tokeniser ................................................................................................................................. 37

4.4.3 Gazetteer .................................................................................................................................. 38

4.4.4 Sentence Splitter ...................................................................................................................... 39

4.4.6 Semantic Tagger (ANNIE Named Entity Transducer) .......................................................... 40

4.4.7 Orthographic Coreference (OrthoMatcher) ........................................................................... 41

4.5 GATE e le Ontologie ...................................................................................................................... 42

4.5.1 Modello dei dati per Ontologie ................................................................................................ 42

4.5.2 Ontology Plugin ....................................................................................................................... 43

4.5.3 Ontology-Tools Plugin ............................................................................................................. 43

4.6 Esempio di annotazione semantica in GATE Developer ............................................................... 46

4.6.1 Annotazione Semantica manuale con Ontology Annotation Tool ........................................... 46

4.6.2 Annotazione semantica automatica con OntoGazetteer .......................................................... 48

5. Conclusioni ....................................................................................................................................... 52

Bibliografia .............................................................................................................................................. 53

1. Introduzione

Il linguaggio (scritto e parlato) è al centro di tutti gli aspetti della comunicazione. Con

l’avvento dei contenuti digitali redatti in linguaggio naturale e successivamente

scambiati all’interno del Web è nata, contemporaneamente alla diffusione delle

informazioni digitali, l’esigenza di sviluppare strumenti in grado di comprendere,

analizzare e processare in modo del tutto automatico questi contenuti, con lo scopo di

fornire servizi in grado di: semplificare la traduzione dei testi, l’estrapolazione di

informazioni utili, la gestione dei documenti sulla rete e la loro ricerca per contenuto.

Alla luce di queste esigenze è nato un sottocampo dell’intelligenza artificiale definito

Natural Language Processing (NLP), ovvero lo studio della modellazione matematica

e computazionale di vari aspetti del linguaggio e dello sviluppo di una vasta gamma di

sistemi. L’obiettivo principale è quello di far si che le macchine possano comprendere

e produrre informazioni scritte in linguaggio umano, agevolando così la comunicazione

tra la macchina e l’utente inesperto senza addentrarsi nel linguaggio specifico della

macchina. Per processare il linguaggio naturale ed uniformarlo, a causa della vastità di

linguaggi naturali nel mondo, quest’ultimo viene visto come un sistema costituito da

una serie di regole e simboli dove:

I simboli sono combinati ed utilizzati per trasportare o emettere l’informazione.

Le regole limitano la gestione dei simboli.

È possibile, inoltre, suddividere NLP in due attività principali:

Natural Language Understanding: analisi e comprensione del linguaggio

naturale.

Natural Language Generation: produzione di informazioni in linguaggio

naturale a partire da una data rappresentazione.

L’attività di natural language understanding è possibile dividerla a sua volta in speech

understanding e language understanding: con la prima si intende la comprensione del

linguaggio parlato mentre la seconda si occupa della comprensione di testi scritti. Uno

dei campi più interessanti del NLP è Information Extraction (IE), cioè l’estrazione dal

testo di informazioni utili riguardo l’argomento o il dominio di interesse in una forma

strutturata adatta per il popolamento dei database. Con informazioni strutturate si

intendono dati il cui contenuto è organizzato secondo un modello preciso e quindi

facilmente processabili da un calcolatore.

In questo lavoro si fornisce una panoramica di NLP e IE, per poi approfondire un

particolare campo di IE legato all’ontologia di un testo e come è possibile trattarla

attraverso una tra le più importanti piattaforme per il language processing, GATE.

2. Trattamento Automatico del Testo e Information

Extraction

2.1 Natural Language Processing

Il Trattamento Automatico del Testo, in inglese conosciuto come Natural Language

Processing (NLP), è quel campo dell’intelligenza artificiale che si occupa di interazioni

tra le macchine e il linguaggio naturale, cioè i sistemi di comunicazione comunemente

usati dagli esseri umani in forma scritta, orale o gestuale.

I calcolatori lavorano con informazioni strutturate, ovvero informazioni esatte, i

documenti in linguaggio naturale invece presentano ambiguità nelle parole e nei

significati, le quali possono essere cancellate solo conoscendo il contesto del testo.

L’obiettivo del NLP è proprio quello di fornire al calcolatore tutti quegli strumenti

necessari per:

assistere gli esseri umani riguardo la comprensione e l’elaborazione di

documenti, anche multimediali, in linguaggio naturale (traduzioni da lingua a

lingua, gestione di documenti ecc.);

comunicare con gli esseri umani (assistenti vocali);

estrarre, analizzare o classificare informazioni di documenti scritti in linguaggio

naturale (information extraction, summarization ecc.);

estendere le proprie conoscenze linguistiche, tramite tecniche di apprendimento

automatico.

2.1.1 Cenni storici

La ricerca sull’elaborazione del linguaggio naturale è in corso da diversi decenni, e

pone le sue origini nel 1940. La prima applicazione computer-based legata al

linguaggio naturale fu la cosiddetta machine translation (MT). I primi lavori in MT

adottarono la visione semplicistica che le uniche differenze tra le lingue risiedevano

nei loro vocabolari e nell’ordine consentito delle parole. I sistemi sviluppati da questa

prospettiva utilizzavano semplici ricerche all’interno dei dizionari per una traduzione

appropriata delle parole, successivamente queste venivano ordinate seguendo le regole

imposte dal linguaggio preso in esame, senza però tener conto in alcun modo

dell’ambiguità lessicale inerente al linguaggio naturale. I risultati furono davvero

scarsi. Il fallimento fece si che i ricercatori si rendessero conto del fatto che il lavoro

era molto più arduo delle aspettative, per cui c’era bisogno di un approccio più

adeguato.

Negli anni ’60, l’inadeguatezza dei sistemi allora esistenti e l’eccessivo entusiasmo,

portarono l’organizzazione ALPAC (Automatic Language Processing Advisory

Committee) a stilare un documento nel quale si sconsigliava di finanziare ulteriori

ricerche su MT, questo fece rallentare di gran lunga il progresso nel settore del NLP.

A partire dalla fine degli anni ’60 fino agli inizi degli anni ’70 l’attenzione fu rivolta a

lavori prettamente teorici legati alle problematiche di rappresentazione del significato

e dello sviluppo computazionale di soluzioni trattabili, che le teorie della grammatica

allora esistenti ancora non erano in grado di produrre. Alla fine degli anni ’70, invece,

vi si concentrò sui problemi legati alla semantica e quelli legati alla comunicazione.

Solo all’inizi degli anni ’80, grazie alla maggiore disponibilità di risorse

computazionali, ripresero progressivamente le ricerche di machine learning.

Negli ultimi dieci anni il campo del NLP è stato oggetto di numerosi studi grazie alla

disponibilità di numerosi testi scritti in formato elettronico, a calcolatori più potenti e

all’avvento di Internet e del Web. (Elizabeth D. Liddy, 2001, Syracuse University).

2.1.2 Metodologie per il Trattamento Semantico Dell’Informazione

Le metodologie per il trattamento semantico dell’informazione aiutano a migliorare la

qualità delle informazioni contenute nei testi, attraverso le quali viene effettuata

un’analisi concettuale del testo, ovvero non vengono analizzate le singole parole ma il

loro significato.

Il processo di analisi semantica è costituito dall’estrazione e dalla formalizzazione delle

informazioni di interesse, a partire dai documenti acquisiti, al fine di consentire

l’accesso per contenuto alle informazioni rilevanti presenti nel documento.

L’estrazione consiste nell’estrapolare dal testo tutti gli elementi più importanti come

nomi e verbi, la formalizzazione, invece, si occupa di etichettare le parole estratte

attraverso dei tag, tali etichette forniscono informazioni su cosa rappresentano le parole

estratte.

Un’applicazione di questo trattamento del testo attraverso analisi semantica è la ricerca

per contenuto, come ad esempio quella effettuata da Google, infatti ogni qualvolta

viene effettuata una ricerca non vengono restituite solo le pagine contenenti le parole

cercate ma anche tutte le pagine che trattano lo stesso argomento, questo è possibile

proprio grazie all’analisi semantica di ogni parola.

Le principali problematiche legate alla ricerca delle informazioni nella rete sono:

Comparsa di documenti erroneamente segnalati come rilevanti (ovvero

documenti che presentano le parole chiave ricercate, ma utilizzate con un

significato diverso)

Omissione di documenti rilevanti: presenza di documenti utili all’utente che non

vengono restituiti dalla ricerca.

Gli aspetti innovativi legati al trattamento semantico del testo possono essere

utilizzati per la progettazione di motori per la gestione della conoscenza, che offrano

procedure di ricerca di informazioni per contenuto, in modo tale da:

Superare i limiti imposti dalla ricerca per parole chiave;

Risultare tollerante agli errori (come ad esempio la digitazione e l’ortografia);

Possibilità di formulare interrogazioni in linguaggio naturale;

Suggerire eventuali risultati collegati agli argomenti di interesse ricercati

dall’utente.

2.1.3 Processo di Trattamento Semantico Dell’Informazione

Il processo di trattamento semantico dell’informazione, ad alto livello, è suddiviso in

diverse fasi di analisi, corrispondenti, in parte, a quelle dell’analisi del linguaggio.

Analisi lessicale: è la prima operazione che viene effettuata sul testo in analisi, al

fine di distinguere le parole (token), dai separatori.

Analisi sintattica: utilizzata per determinare la struttura sintattica e grammaticale di

ogni frase analizzata classificando i token e organizzarli in strutture sintattiche.

Analisi semantica: assegnazione di un significato alla struttura sintattica, ed

eventuale disambiguazione.

Pragmatica: è un processo che specializza l’assegnazione del significato alla

struttura sintattica basandosi sul contesto e sulle informazioni pregresse.

Ad un livello più basso, le principali operazioni ed elaborazioni del testo sono:

Parsing: distingue l’insieme dei caratteri dell’alfabeto dall’insieme dei

separatori (spazio, punto, virgola). In tal modo vengono definiti i token, cioè la

singola unità di analisi.

Normalization: uniforma le differenti variazioni ortografiche di un token in

modo che siano ricondotte ad un’unica forma grafica.

Part of Speech (POS) Tagging: associa a ciascun token la corretta categoria

grammaticale o parte del discorso. Ad ogni token si associa un’etichetta (tag),

rappresentate la propria categoria grammaticale. Questa operazione è finalizzata

alla disambiguazione degli elementi lessicali nel testo, utilizzando una tipo di

classificazione delle parole basato su: parole lessicali o piene cioè nomi, verbi,

aggettivi e avverbi, parole grammaticali o vuote cioè articoli, preposizioni,

congiunzioni. Le parole lessicali contribuiscono significativamente

all’interpretazione del testo in quanto contengono informazioni rilevanti per la

comprensione, mentre, le parole grammaticali non esprimono un contenuto utile

ai fini dell’analisi.

Lemmatization: estrae il lemma relativo agli elementi lessicali classificati come

non ambigui. Per i nomi il lemma coincide con il singolare maschile mentre per

i verbi con l’infinito.

Word sense disambiguation: consiste nel precisare il significato di una parola,

che presenta significati diversi a seconda del contesto in cui è usata.

Identification of relationships: individua le relazioni che legano i concetti

estratti dal testo, così da ottenere una conoscenza maggiore del documento. Le

relazioni semantiche considerate son di tipo: associativo, sinonimia e

gerarchico.

2.1.4 Principali Tool

I principali strumenti applicativi per il trattamento automatico del testo sono:

GATE/ANNIE: software open-source nato all'interno dell’University of

Sheffield, è una suite di strumenti per LP. ANNIE è il set di algoritmi

specializzati in IE su testi non strutturati.

Stanford CoreNLP: è un framework open-source per l'analisi e l’elaborazione di

testi, sviluppato alla Stanford University e scritto in linguaggio Java.

UIMA: sviluppato da Apache Software Foundation, è un software per l'analisi

di testi, video e audio non strutturati, scritto in Java e C++.

OpenNLP: sviluppato da Apache Software Foundation, è un software per LP

scritto in Java. Utilizza algoritmi machine learning

2.2 Information Extraction

Nello scenario del NLP assume una particolare importanza l’Information Extraction

(IE), che ha lo scopo di ricavare specifiche informazioni da documenti scritti in

linguaggio naturale e non la comprensione totale del testo. Specificate inizialmente

delle classi di entità, relazioni ed eventi in linguaggio naturale (template), l’Information

Extraction si definisce come il processo di identificazione di istanze appartenenti a

queste classi e l’estrazione delle proprietà rilevanti delle entità, relazioni o eventi

identificati. I sistemi di information extraction lavorano in termini di database per cui

al termine di un processo di IE viene creata una rappresentazione strutturata delle

informazioni selezionate dal testo analizzato (Piskorski, Yangarber, 2012).

2.2.1 Task di Information Extraction

L’applicazione di IE su di un testo ha l’obiettivo di creare una visione strutturata delle

informazioni che si comprensibile ad una macchina. Un processo di IE include i

seguenti tasks:

Named Entity Recognition (NER): riconoscimento e classificazione di entità

presenti nel testo all’interno di specifiche categorie, come nomi propri (di

persone, organizzazioni, luoghi ecc.), espressioni temporali, espressioni

numeriche e di valuta.

Coreference Resolution (COR): ricerca di espressioni di coreferenza, cioè di

richiami ad una medesima entità all’interno di un testo. Un richiamo ad una

stessa entità può essere di tipo: nominale, pronominale ed implicito.

Relation Extraction (RE): riconoscimento e classificazione delle relazioni tra le

entità identificate all’interno del testo.

Event Extraction (EE): identificazione di eventi ed estrazione di informazioni

dettagliate e strutturate da essi.

3. Le Ontologie ed il Web semantico

Attualmente il Web può essere considerato come un enorme “archivio” dove trovare

una grande quantità di documenti, ciò che manca è una connessione tra i contenuti

stabilita dal loro significato (semantica), che permetta la risposta ad interrogazioni

anche complesse, formulate in linguaggio naturale. Se effettuiamo un’interrogazione

in linguaggio naturale ad un motore di ricerca, esso cercherà le parole chiave

all’interno del database, probabilmente estrarrà dei documenti che contengono la

domanda e, con un po’ di fortuna, anche la definizione che si sta cercando. Il Web

Semantico è considerato la naturale evoluzione di Internet. Per costruire relazioni

semantiche e processarle in modo automatico si ha bisogno di una qualche

formalizzazione che le descriva nel modo più completo possibile. Questo tipo di

formalizzazione si chiama nel linguaggio della logica: Ontologia.

3.1 Web Semantico

Lo scenario del World Wide Web (WWW) è quello di un insieme di testi collegati in

qualche modo tra di loro. Una peculiarità essenziale del WWW è la sua universalità,

infatti attraverso i link ipertestuali ogni elemento all’interno del Web può essere

collegato ad un altro indistintamente. Possiamo distinguere i collegamenti tra le pagine

web in due classi:

collegamenti sintattici: sono esclusivamente legati al funzionamento di un

qualche codice di programmazione. Sono piuttosto solidi in quanto attraverso un

URL viene identificata univocamente una risorsa;

collegamenti semantici: descrivono il significato di un collegamento. Questi

sono piuttosto deboli in quanto, oltre a portare in un determinato luogo un

collegamento dovrebbe descrivere il luogo verso cui porta.

Il termine Web Semantico è stato proposto per la prima volta nel 2001 da Tim Berners-

Lee. Da allora il termine è stato associato all’idea di un Web nel quale agiscano agenti

intelligenti (creati senza ricorrere all’intelligenza artificiale ad alti livelli), cioè

applicazioni in grado di comprendere il significato dei testi presenti sulla rete e di

conseguenza guidare l’utente direttamente verso l’informazione ricercata, oppure

sostituirsi ad esso nello svolgimento di alcune operazioni. Un agente dovrebbe essere

in grado di:

comprendere il significato dei testi presenti sulla rete;

creare percorsi in base alle informazioni richieste dall’utente, guidandolo poi

verso di essere (in alcuni casi si può anche sostituire ad esso);

spostarsi di sito in sito collegando logicamente elementi diversi

dell’informazione richiesta;

Utilizzando questa tecnologia si può automatizzare la ricerca delle pagine, poiché

all’atto della creazione del contenuto delle pagine le informazioni sono definite ed

inserite secondo precise regole semantiche (per questo è stato coniato il termine Web

Semantico).

“Il Web Semantico è un’estensione del web corrente in cui le informazioni hanno un

ben preciso significato e in cui computer e utenti lavora in cooperazione”. (Semantic

Web – Scientific American, Maggio 2001).

3.1.1 L’architettura del Web Semantico

La scrittura di codice in grado di compiere operazioni semantiche dipende fortemente

dallo schema utilizzato per archiviare le informazioni. Lo schema è un insieme di

regole sull’organizzazione dei dati, può definire relazioni fra i dati ed esprimere vincoli

tra classi di dati. L’idea del Web Semantico nasce estendendo l’idea di utilizzare schemi

per descrivere domini di informazione. Dei metadati (informazioni comprensibili da

una macchina e relativi ad una risorsa web) devono mappare i dati rispetto a classi, o

concetti, di questo schema di dominio; in questo modo si hanno strutture in grado di

descrivere e automatizzare i collegamenti esistenti fra i dati. Il Web Semantico è un

ambiente dichiarativo in cui si specifica il significato dei dati, e non il modo in cui si

intende utilizzarli. La semantica dei dati consiste nel dare alla macchina delle

informazioni utili in modo che essa possa utilizzare i dati nel modo corretto,

convertendoli eventualmente. Di conseguenza, è possibile strutturare il Web Semantico

in tre livelli fondamentali:

1. i dati;

2. i metadati, che riportano questi dati ai concetti di uno schema;

3. lo schema, all’interno del quale si esprimono le relazioni fra concetti, che

diventano classi di dati.

Figura 1: architettura a livelli Web Semantico

Questa architettura a livelli non è ancora stata però sviluppata completamente, il che

avverrà nei prossimi anni. In Figura 1 è mostrata l’architettura a livelli del Web

Semantico, che viene descritta nel dettaglio qui di seguito:

1. il Web Semantico si basa sullo standard URI (Uniform Resource Identifiers), per

la definizione univoca di indirizzi Internet;

2. al livello superiore si trova XML (eXtensible Markup Language), con il quale è

possibile modellare, senza troppi vincoli, la realtà che si considera per questo è

un linguaggio che porta con sé alcune informazioni sulla semantica degli oggetti.

Questa eccessiva libertà lo rende poco adatto, però, a definire completamente la

struttura e l’interscambio di informazioni tra diverse realtà, ragion per cui è stata

favorita la creazione di un nuovo linguaggio;

3. RDF (Resource Description Framework) e RDF Schema, che costituiscono il

linguaggio per descrivere le risorse e i loro tipi;

4. al livello superiore si pone il livello ontologico. Una Ontologia permette di

descrivere le relazioni tra i tipi di elementi senza però fornire informazioni su

come utilizzare queste relazioni dal punto di vista computazionale;

5. la firma digitale è fondamentale per stabilire la provenienza delle ontologie e

delle deduzioni, oltre che dei dati;

6. il livello logico è il livello immediatamente superiore, dove le asserzioni esistenti

sul Web possono essere utilizzate per derivare nuova conoscenza.

3.2 Ontologie

La definizione di ontologia data da Thomas R. Gruber nel 1993 è:

“Un’ontologia è una specificazione di una concettualizzazione” (Gruber, T. 1993)

Più semplicemente un’ontologia permette di specificare, in modo aperto e significativo,

i concetti e le relazioni che caratterizzano un certo dominio di conoscenza. Un esempio

potrebbero essere i concetti di “vino bianco” e “vino rosso”, di “enoteca”, di “varietà

di uva” e così via, che caratterizzano il dominio di conoscenza “vino”; all’interno di

questo dominio vi sono anche relazioni tra questi concetti come ad esempio “i vini

hanno un anno di produzione” e “le enoteche vendono il vino”.

Questo esempio di “Ontologia del Vino” potrebbe essere realizzata inizialmente per

una particolare applicazione, come ad esempio un sistema di gestione magazzino di un

grande rivenditore. Potrebbe, quindi, essere considerata come l’analogo di un

“database schema” ben definito. Il vantaggio che però possiede una ontologia è di

essere una descrizione esplicita qualitativamente avanzata. Quindi pur essendo

prodotta per uno scopo particolare può essere pubblicata e riutilizzata per fini

differenti. Ad esempio, una certa vineria potrebbe utilizzare questa ontologia per

collegare il suo programma di produzione al sistema di gestione citato prima. Oppure

un eventuale programma di suggerimento potrebbe usarla unitamente ad una

descrizione di differenti alimenti per proporre i vini migliori abbinabili ad un dato

menù.

Ci sono differenti modi di scrivere una ontologia e molte opinioni su quali tipi di

definizione vadano inserite all’interno di essa. Tuttavia, forma e contenuto di

un’ontologia sono fortemente guidati dal tipo di applicazione per la quale sarà

utilizzata. Poiché questo lavoro è orientato alle ontologie costruite per lo sviluppo del

Web Semantico, vengono esaminati i formalismi costruiti sul linguaggio RDF/XML.

Questo linguaggio è incentrato sulla descrizione delle risorse digitali e si presta di

conseguenza ad essere ulteriormente raffinato e formalizzato per poter descrivere i vari

domini di conoscenza nel contesto del Web. Vi sono tre linguaggi basati su RDF/XML

utilizzati per la definizione di ontologie: RDFS, OWL (il più utilizzato ed orientato al

Web Semantico) e DAML+OIL (la somma di due linguaggi da cui è scaturito OWL).

Essendo il terzo linguaggio ormai sempre più in disuso, vengono approfonditi qui di

seguito i primi due.

3.2.1 RDFS

Il linguaggio Resource Description Framework Schema (RDFS) è quel linguaggio

basato su schemi RDF, ovvero insiemi di proprietà ed elementi che definiscono un

contesto per la descrizione di determinate categorie di risorse. Un RDFS proprio per le

sue caratteristiche può essere utilizzato anche per dare una semplice struttura

semantica, permettendo di costruire una gerarchia di concetti e di relazioni. Di seguito

è illustrata una porzione di tassonomia (una tassonomia è un caso particolare di

Ontologia):

Figura 2: esempio di semplice gerarchia di concetti

Usando RDFS possiamo dire che questa ontologia ha 5 classi e che Pianta è sottoclasse

di Organismo e così via. Queste classi possono essere viste come descrizione di un

insieme di individui: Organismo descrive un insieme di essere viventi dei quali alcuni

sono animali e alcuni sono Piante e così via. Per descrivere gli attributi di una classe è

poi possibile associare proprietà ad essa. Ad esempio, un dato organismo potrebbe

avere degli organi sensoriali. Possiamo associare proprietà ad una classe stabilendo che

la proprietà ha una certa classe come dominio ed un’altra classe come codominio.

Definire una gerarchia come questa è piuttosto semplice con RDFS, si incontrano più

difficoltà di fronte a concettualizzazioni più complesse.

3.2.2 OWL

Il Web Ontology Language (OWL) estende RDFS permettendo una notevole ricchezza

semantica. Una caratteristica fondamentale di OWL è infatti la possibilità di descrivere

le classi in modo più ricco, infatti in riferimento all’esempio precedente, è possibile

definire Animali e Piante come classi disgiunte: quindi nessun individuo (o istanza)

può appartenere ad entrambe le classi. Oppure si può definire una classe come

intersezione di altre due (o più). Anche per le proprietà è possibile dare descrizioni

molto ricche. Ad esempio, è possibile restringere (e raffinare) determinate proprietà

sulle classi: se la classe Animali ha le proprietà “ricoperto di”, si può far si che la

sottoclasse “Mammiferi” abbia valori per questa proprietà che risiedono nella classe

“Peli”, così come per i “Rettili” ha valori nella classe “Scaglie”. Inoltre, tramite OWL,

si può distinguere tra proprietà transitive, simmetriche e funzionali. Infine,

un’evoluzione importante è la possibilità di distinguere tra proprietà che hanno come

valori (codominio) dati semplici o vere e proprie classi. Un’ultima importante

osservazione è che se da una parte OWL è definito a partire dal linguaggio RDF/XML

e può essere visto come una sua estensione, tuttavia può essere anche considerato come

un linguaggio XML a sé stante. Entrambi i punti di vista possono essere considerati

validi e sono stati utilizzati per vari tipi di applicazioni ed interfacce.

4. GATE

GATE (General Architecture for Text Engineering) è un sistema open-source gratuito

sviluppato dall’Università di Sheffield che offre agli utenti una piattaforma completa

di Language Processing (LP). Più nello specifico, GATE è contemporaneamente

un’architettura, un Integrated Development Environment (IDE), un Framework e una

Web App (Cunningham, 2014).

Come architettura, GATE definisce un’organizzazione ad alto livello dei sistemi

per LP e assicura una corretta interazione tra i componenti.

Come IDE (GATE Developer), aiuta gli utenti a sviluppare in modo semplice ed

efficiente applicazioni per NLP, fornendo una GUI e funzionalità per il

debugging.

Come Framework (GATE Embedded), offre una libreria di componenti che può

essere inclusa dagli sviluppatori in vari applicativi ed eventualmente estesa.

Come Web App (GATE Teamware), permette di annotare collettivamente un set

di documenti.

GATE è dunque un sistema completo di Language Engineering (LE), che include

componenti per LP come parsers, strumenti di machine learning, strumenti per la

manipolazione di testi e l’inserimento di annotazioni, tool per IE e per effettuare

valutazioni e benchmark e un linguaggio per la scrittura di regole. Il suo sviluppo è

iniziato nel 1995 e attualmente il suo team di sviluppo è il più grande nell’ambito del

software open-source indirizzato a NLP (Cunningham, 2014).

4.1 GATE IDE

GATE Developer fornisce un ambiente grafico per lo sviluppo di software dedicato al

trattamento testuale (LP), in particolare, lo scopo principale è l’annotazione dei

documenti, la creazione di corpora e l’utilizzo delle risorse fornite dal framework di

GATE.

Facendo riferimento alla Figura 1 possiamo suddividere l’interfaccia di GATE in

diversi parti:

In alto a sinistra: albero delle risorse (Files, Option, Tools, Help e i bottoni

relativi alle azioni più comuni);

In basso a sinistra: anteprima delle risorse

Al centro: viewer principale delle risorse

In basso: la barra dei messaggi

Figura 1: interfaccia grafica di GATE IDE

4.1.1 Caricamento di documenti

GATE supporta il caricamento di molti formati di documenti, sia locali che online; è

possibile infatti caricare un documento locale al proprio hard disk sia immettendo un

URL di pagina web. I formati di documenti supportati da GATE automaticamente

sono: file di testo, HTML, SGML, XML, RTF, PDF ed alcuni formati Microsoft Office

e Open Office. GATE è in grado di gestire file testuali strutturati o semi-strutturati

associando al documento le informazioni in esso contenute sotto forma di annotazioni.

Il documento importato sarà rappresentato all’interno di GATE come Language

Resource (LR). È inoltre presente un editor che permette di modificare un documento

o visualizzarne le proprietà e le annotazioni. I documenti caricati possono essere

aggiunti ad un corpus che costituirà il set di documenti sul quale verranno applicati i

moduli selezionati dall’utente.

4.1.2 Annotazioni

Come anticipato precedentemente uno dei compiti principali di GATE è l’annotazione

di documenti, questa operazione di annotazione può essere effettuata manualmente,

semi-manualmente, aggiungendo annotazioni a documenti già precedentemente

processati e annotati, o automaticamente attraverso i componenti forniti da GATE. È

possibile definire nuovi tipi di annotazioni o modificare quelle già esistenti.

Tramite l’interfaccia grafica è possibile gestire e analizzare le annotazioni presenti nel

documento: ad esempio GATE permette di selezionare le tipologie di annotazioni

visibili sul testo e per ogni annotazione permette di visualizzare le proprietà e i dettagli.

Inoltre, grazie alla modalità di visualizzazione “Annotation Stack” (Figura 2) è

possibile analizzare in modo chiaro le annotazioni sovrapposte, cioè quelle annotazioni

di tipologie diverse relative alla medesima porzione di testo.

Figura 2: visualizzazione Annotation Stack di GATE

4.1.3 Coreferenza

GATE Developer mette a disposizione una specifica sezione chiamata Co-reference

Editor (Figura 3) adibita all’estrazione o modifica di catene di coreferenza, cioè set di

token riferiti alla medesima entità. Ogni catena di coreferenza prenderà in automatico

il nome dell’elemento con il maggior numero di caratteri presenti all’interno della

stessa. Gli elementi inseriti all’interno di una catena di coreferenza possono essere

rimossi da questa. GATE offre inoltre la possibilità di creare catene di coreferenza

manualmente, a partire dalle annotazioni presenti nel documento.

Figura 3: Co-reference Editor di GATE

4.1.4 Caricamento di Processing Resources

Processing Resources (PR) costituiscono un set di componenti messi a disposizione da

GATE, ognuno con funzionalità specifiche nell’ambito del NLP. Sono trattate con

maggior dettaglio nel paragrafo 3.2.

Le PR possono essere utilizzate singolarmente, in quanto moduli indipendenti, o essere

combinate tra di loro all’interno di application (applicazioni), cioè controller che

regolano il flusso di esecuzione. Creata una nuova applicazione, si scelgono i

componenti che dovranno essere eseguiti, l’ordine di esecuzione, i documenti o il

corpus che devono essere processati ed eventuali condizioni: a questo punto è possibile

lanciare l’applicazione.

GATE offre di default applicazioni che comprendono già uno specifico set di PR e che

possono essere utilizzate rapidamente senza particolari configurazioni: una di queste è

ANNIE, i cui componenti sono trattati in modo approfondito nel paragrafo 3.3.

4.1.5 Persistenza delle risorse

Esistono tre modalità principali di salvataggio dei documenti annotati in GATE:

preservando il documento originale, aggiungendo esclusivamente le annotazioni

ritenute utili, escludendo tutte le altre;

utilizzando il formato di serializzazione XML di GATE;

scrivendo un proprio algoritmo per persistere il documento.

Laddove i corpora sono piuttosto estesi, la memoria disponibile potrebbe non essere

sufficiente per avere tutti i documenti aperti contemporaneamente, ragione per cui

GATE offre la possibilità di salvataggio su datastore: in questo modo i documenti

verranno salvati su disco e aperti solo quando necessario.

Infine, in GATE è possibile persistere le applicazioni create e il loro stato: in questo

modo un’applicazione potrà essere caricata da file anche in un secondo momento.

Questo tipo di salvataggio comprende la persistenza dello stato dell’applicazione ma

non delle risorse utilizzate, ciò vuol dire che caricando l’applicazione su una macchina

diversa possono emergere errori legati all’assenza di tutte le risorse necessarie e alla

posizione di queste nel file system, che potrebbe non coincidere con quella indicata sul

file. Nel caso in cui si desideri salvare un’applicazione per usarla su più macchine, per

garantire il corretto funzionamento delle risorse, è possibile esportarla utilizzando la

modalità “Export for GATE-Cloud.net”. In questo modo viene creato un file ZIP

contenente non solo lo stato dell’applicazione ma anche tutte le risorse utilizzate,

rendendo così l’applicazione utilizzabile su macchine differenti da quella della

creazione.

4.2 GATE Embedded

GATE Embedded è un framework object-oriented implementato in Java e costituisce

il vero e proprio cuore dell’architettura GATE. È stata progettato per consentire agli

sviluppatori di incorporare all’interno di diverse applicazioni funzionalità di NLP.

GATE Embedded è un software open-source, con licenza GNU Lesser Genereal Public

License 3.0. Possiamo immaginare GATE Embedded come un’interfaccia alla quale

possono essere connessi vari componenti; questi componenti forniscono le funzionalità

base per attività di LP. GATE Embedded è suddiviso in diverse API, come mostrato in

Figura 4, che vengono analizzate nei successivi sotto paragrafi.

Figura 4: architettura GATE Embedded.

4.2.1 CREOLE

L’architettura di GATE si basa su componenti, ovvero blocchi riutilizzabili di software,

indipendenti tra di loro, con interfacce ben definite che possono essere implementate

in una varietà di contesti di LP: l’insieme di tali componenti è definito CREOLE (a

Collection of REusable Objects for Language Engineering). I componenti di GATE,

definiti anche come resources, sono di tre tipi.

Language Resources (LR): rappresentano entità come il lessico, i corpora, le

annotazioni, le ontologie.

Processing Resources (PR): rappresentano entità principalmente algoritmiche,

come parsers, POS-taggers ecc.

Visual Resources (VR): rappresentano componenti di visualizzazione e modifica

che partecipano alla GUI.

Tale distinzione evidenzia l’importanza, nell’architettura di GATE, della separazione

dei compiti tra i vari componenti, per ragioni di manutenibilità, estendibilità e di facilità

di utilizzo.

I componenti più importanti forniti da GATE sono:

LR per la gestione di documenti, corpora e annotazioni;

PR per la definizione degli algoritmi di LP;

Gazzetters;

Ontologie;

Tool per machine learning;

Parser e tagger.

Gli elementi che costituiscono CREOLE possono essere facilmente caricati in modo

indipendente proprio grazie al framework fornito da GATE, che costituisce

un’interfaccia (o backplane) su cui effettuare il “plug” dei componenti. L’utente

fornisce al sistema un elenco di URL e il sistema si occuperà di caricare i componenti

localizzati negli indirizzi specificati. L’unione del framework (backplane) e dei

componenti rappresenta la porzione di software che può essere esportata negli

applicativi sviluppati dagli sviluppatori.

Tutte le risorse di CREOLE sono associate ad un file XML “creole.xml”, che definisce

le proprietà, i parametri necessari e i valori di default dei componenti: quando una

risorsa deve essere caricata, viene ricercato il file creole.xml relativo all’URL della

risorsa fornito dall’utente e il suo contenuto è utilizzato per inizializzarne i parametri e

per caricare le classi necessarie, solitamente contenute all’interno di file jar. Inoltre,

tutte le risorse di GATE sono basate su classi Java Bean, il modello di Java per

componenti software. Il modello Java Bean è utilizzato per incapsulare più oggetti

all’interno di un unico oggetto detto bean, che garantisce una maggiore gestibilità. Java

Bean impone il rispetto di determinate convenzioni alle classi che vogliono aderire a

tale modello, con lo scopo di aumentare la riusabilità e la facilità di sostituzione dei

bean.

4.2.2 Language Resources

Le LR sono quelle componenti che si occupano di gestire i documenti, i corpora e le

annotazioni. Le proprietà di ogni LR sono gestite tramite collezioni di coppie

chiave/valore, definite come FeatureMap.

Documenti: i documenti in GATE sono modellati come l’unione di contenuto ed

annotazioni. Il contenuto di un documento può essere qualsiasi sottoclasse di

“DocumentContent” di cui deve implementarne l’interfaccia, le annotazioni

sono invece inserite all’interno di Set Java (una collezione di elementi che non

contiene duplicati) definiti come AnnotationSet.

Corpora: un corpus in GATE è un Set Java i cui membri sono documenti.

Annotazioni: un’annotazione è una forma di metadato associato ad una specifica

porzione di documento. Le annotazioni in GATE sono organizzate in grafici, i

cui archi sono proprio le annotazioni mentre i nodi rappresentano specifiche parti

del contenuto di un documento. Un’annotazione possiede un ID, un tipo, un

nodo iniziale, un nodo finale, e diversi attributi inseriti all’interno di

FeatureMap.

Figura 5: organizzazione delle annotazioni in GATE.

Infine, GATE è in grado di assicurare la persistenza delle sue risorse. I tipi di

archiviazione persistente utilizzati per le LR sono:

salvataggio su database;

salvataggio su file tramite Java serialization;

salvataggio su file con formato XML.

In ogni caso, i documenti potranno essere esportati nuovamente nel loro formato

originale, scegliendo eventualmente di includere o meno le annotazioni.

4.2.3 Processing Resources

Le PR rappresentano i veri e propri algoritmi di elaborazione del linguaggio naturale,

eseguibili in GATE. Possono essere utilizzate singolarmente, in quanto moduli

indipendenti, o essere combinate insieme ad altre per formare delle applicazioni o

controller, cioè controlli che ne regolano la sequenza e il flusso di esecuzioni. GATE

supporta esclusivamente delle esecuzioni sequenziali, cioè in pipeline, delle PR.

Esistono due tipi di pipeline:

Simple pipelines, in cui le PR sono eseguite una alla volta sequenzialmente.

Corpus pipelines, in cui le PR sono eseguite su documenti e corpora. Tutte le PR

che compongono l’applicazione vengono eseguite sequenzialmente su un

documento prima di aprire il successivo all’interno del corpus, sul quale

verranno ripetute le stesse operazioni.

Sono inoltre presenti le versioni condizionali delle pipeline, che permettono di eseguire

o meno una PR, sulla base di determinate condizioni decise dall’utente.

4.3 JAPE

JAPE (Java Annotation Patterns Engine) è un linguaggio di programmazione di

pattern-matching sviluppato specificamente per GATE, che permette di scrivere ed

applicare regole ad annotazioni presenti nel testo: queste regole vengono tradotte in

codice Java ed applicate alle annotazioni già presenti, generando in output nuove

annotazioni oppure la modifica di quelle già esistenti. Nonostante l’organizzazione in

grafi delle annotazioni in GATE, quindi una struttura più complessa rispetto a quelle

normalmente gestibili da linguaggi regolari, spesso i dati descritti da grafi di

annotazioni possono essere considerati come semplici sequenze e permettono un

riconoscimento di tipo deterministico. In altri casi, tuttavia, la maggiore complessità

del dato in input può rendere non sufficiente la potenza computazionale di un automa

a stati finiti e implicare la necessità di un’elaborazione alternativa da parte di JAPE.

Un JAPE grammar, in particolare, consiste in un set di fasi di elaborazione, disposte

secondo un preciso ordine logico, in modo tale che annotazioni temporanee generate

da una prima fase, possano essere fornite come input per una successiva. Ogni fase è

un set di regole composte da pattern, il cui riconoscimento innesca l’esecuzione di

azioni specificate. Una regola è formata da due parti:

Left Hand Side (LHS), che contiene la descrizione dei pattern da riconoscere

sulle annotazioni.

Right Hand Side (RHS), che definisce invece le istruzioni da eseguire su

annotazioni sulle quali i pattern siano stati riconosciuti.

Una JAPE grammar presenta, inoltre, per ogni fase un header che ne specifica il nome,

l’input e alcune opzioni aggiuntive relative alle modalità di applicazione delle regole.

Qui di seguito è riportato un semplice esempio di regola JAPE, la quale permette di

trovare tutti i nomi delle Università (in questo caso per esempio “University of

Sheffield”).

Phase: University Input: Lookup Options: control = appelt Rule: University1 ( {Token.string == "University"} {Token.string == "of"} {Lookup.minorType == city} ):orgName --> :orgName.Organisation = {kind = "university", rule = "University"}

In questo caso la fase si aspetta come input almeno un Lookup, mentre la sezione

Options indica che il metodo per il matching è appelt. La fase è inoltre costituita da

una singola regola, Chiamata University1, che riesce a riconoscere le Università tramite

il pattern definito dalla LHS (codice che precede l’operatore “”) e, in caso di match,

aggiunge un’annotazione University tramite la RHS (codice che segue l’operatore

“”).

JAPE rappresenta il principale strumento per lo sviluppo di applicazioni NLP con

approccio rule-based. Non rientrando tra gli obiettivi del presente testo quello di

approfondire tale approccio, non viene fornita una descrizione dettagliata del

linguaggio JAPE e di relative funzionalità più avanzate; per un eventuale

approfondimento si rimanda alla documentazione presente sul sito di GATE

(https://gate.ac.uk/sale/tao/splitch8.html).

4.4 ANNIE

GATE fu inizialmente sviluppato nel contesto della ricerca su IE (Cunningham, 2014),

ragion per cui una parte fondamentale della propria piattaforma è dedicata proprio a

tale task di NLP. Si tratta di ANNIE (A Nearly New Information Extraction system),

un potente tool per IE basato su algoritmi a stati finiti e su istruzioni JAPE, che

permettono di elaborare annotazioni utilizzabili per vari task di IE. La Figura 6 mostra

le componenti di cui è composto ANNIE, disposti a formare una pipeline e qui di

seguito elencati.

Document Reset.

Tokeniser.

Gazzetter.

Sentence splitter.

Part Of Speech (POS) tagger.

Semantic tagger

Orthographic reference.

Figura 6: rappresentazione dei componenti di ANNIE.

4.4.1 Document Reset

La risorsa Document Reset consente di riportare il documento allo stato originario,

rimuovendo tutte le annotazioni presenti dovute ad elaborazioni precedenti. È possibile

comunque decidere di resettare solo determinate annotazioni, lasciando inalterate le

altre. È generalmente eseguita all’inizio di ogni applicazione per ottenere un risultato

non alterato da altre annotazioni.

4.4.2 Tokeniser

Il Tokeniser ha il compito di dividere il testo in componenti semplici, come numeri,

punteggiatura, spazi, simboli, parole, che vengono definiti token. Questa PR utilizza

un approccio rule-based: viene riportata qui di seguito la regola per identificare una

parola che inizia con una sola lettera maiuscola:

'UPPERCASE_LETTER' 'LOWERCASE_LETTER'* > Token; orth = upperInitial; kind = word;

Se una porzione di testo rispetta questa regola viene annotata come token, di tipo

“word” (“parola”). Le annotazioni risultanti dall’esecuzione di un tokeniser su un

documento hanno ad esse associate le seguenti feature:

string, il valore della stringa del token a cui è associata l’annotazione;

length, il numero di caratteri di cui è composta la stringa;

kind, attributo che distingue diversi tipi di token.

In GATE esistono cinque tipi di token predefiniti:

1. Word: definito come un qualunque insieme di lettere maiuscole o minuscole

contigue, incluso un trattino (ma non altre forme di punteggiatura). Un token di

tipo word possiede un attributo definito orth, per il quale sono definiti quattro

valori:

o upperInitial, se con la prima lettera maiuscola e tutte le altre minuscole;

o allCaps, se con tutte lettere maiuscole;

o lowerCase, se con tutte lettere minuscole;

o mixedCaps, se con insieme di lettere maiuscole e minuscole non incluse

nelle categorie precedenti.

2. Number: è definito come una qualunque combinazione di cifre contigue.

3. Symbol: può essere di due tipi, di valuta (ad esempio “$”, “€”) o standard (ad

esempio “&”).

4. Punctuation: sono definiti tre tipi di punteggiatura.

o start_punctuation: ad esempio “(“;

o end_punctuation: ad esempio “)”;

o other_punctuation: ad esempio”:”;

5. Space Token: rappresenta uno spazio bianco tra le parole e può essere di due tipi,

space e control, a seconda che si tratti di puri caratteri spaziali o di caratteri di

controllo.

In ANNIE è compreso di default l’English Tokeniser, che si compone di un normale

tokeniser e di un JAPE transducer, quest’ultimo viene utilizzato per ottimizzare i

risultati in base alle caratteristiche della lingua inglese. Un compito di questo

transducer è, ad esempio, quello di processare il risultato di tokenization del costrutto

“don’t” per portarlo da tre token (“don”, “’”, “t”) a due (“do”,” n’t”).

4.4.3 Gazetteer

Il compito del gazetteer è quello di identificare i nomi delle entità nel testo basato su

liste, definite lookup list; ogni lista consiste in un semplice file di testo contenente i

nomi propri comuni relativi a diverse categorie di entità, come nomi di persone, città,

organizzazioni, giorni della settimana ecc. Una lista di valute, ad esempio, potrebbe

contenere una porzione simile a questa:

Ecu European Currency Units FFr Fr German mark German marks New Taiwan dollar New Taiwan dollars NT dollar NT dollars

Per accedere alle liste il gazetteer utilizza un file indice lists.def, all’interno del quale

per ogni lista viene specificato un tipo principale ed eventualmente un tipo minore:

list_filename.lst:major_type:minor_type. La prima colonna si riferisce al nome del file

della lista, la seconda al tipo principale e la terza al tipo secondario. Per ogni token del

testo compatibile con una delle entry delle liste viene creata un’annotazione con i valori

presenti nella colonna del tipo primario e del tipo secondario. Infine, la forma

precedentemente esposta può essere integrata con una quarta colonna per l’indicazione

della lingua dei termini contenuti nella lista e con una quinta che specifichi un tipo

personalizzato di annotazione.

4.4.4 Sentence Splitter

Il sentence splitter ha il compito di suddividere il testo in periodi, cioè in porzioni di

testo dotate di significato e organizzate secondo precise regole grammaticali e

sintattiche. Ogni periodo viene annotato come “Sentence”, e ogni segno di

terminazione del periodo viene annotato come “Split”. Le annotazioni di tipo split

hanno un attributo “kind” che può assumere due valori, internal se il segno di

terminazione corrisponde ad un numero di punti da uno a quattro, a un punto

esclamativo o interrogativo o alla combinazione di quest’ultimi, external se

corrisponde ad un ritorno a capo. In alternativa alla PR fornita da ANNIE, è possibile

utilizzare RegEx Sentence Splitter, basato su regular expression, scritte in Java, più

robusto e con performance migliori su input irregolari.

4.4.5 Part-Of-Speech Tagger

POS tagger ha il compito di individuare ed annotare le parti del discorso, cioè parole

o simboli di un testo con proprietà o funzionalità simili che possono quindi essere

organizzate in classi. Ad esempio, le parti del discorso nella lingua italiana si

distinguono tradizionalmente in diverse classi: nome, aggettivo, articolo, pronome,

verbo, avverbio, preposizione, congiunzione e interiezione. Il numero delle classi e la

loro definizione dipendono dalla lingua a cui si sta facendo riferimento. Il risultato di

questa PR consiste nell’aggiunta di un attributo category ad ogni annotazione di tipo

token; il valore assunto da questo attributo corrisponde ad una parte del discorso della

lingua del testo ed è rappresentato da un codice costituito da lettere e simboli.

4.4.6 Semantic Tagger (ANNIE Named Entity Transducer)

Semantic Tagger (chiamato in GATE “ANNIE NE Transducer”) ha il compito di

analizzare le annotazioni apposte durante le fasi precedenti, per generare entità

annotate, disambiguando tra i vari significati possibili tramite il confronto con pattern.

Ad esempio, la parola “May” ha diversi significati nella lingua inglese: può

rappresentare il mese di maggio (“May 2015”), un cognome (“Steve May”) o un verbo

(“It may rain today”). Semantic Tagger, inoltre, è in grado di combinare più

annotazioni in singole entità: ad esempio nel caso di date espresse secondo il pattern

giorno, mese, anno, viene creata un’unica annotazione di tipo “Date” che comprenderà

tutte e tre le espressioni.

I tipi di annotazione che possono essere assegnate sono basate sulla definizione delle

entità di MUC (Message Understanding Conference):

Person

o gender: male, female

Location

o locType: region, airport, city, country, county, province, other

Organization

o orgType: company, department, government, newspaper, team, other

Money

Percent

Date

o kind: date, time, dateTime

Address

o kind: e-mail, url, phone, postcode, complete, ip, other

Identifier

Unknown

Questa PR, infine, è basata su regole scritte in linguaggio JAPE, che descrivono i

pattern che devono essere rispettati. Qui di seguito è riportato un esempio di regola

JAPE per l’individuazione di indirizzi ip.

Rule: IPaddress1 ( {Token.kind == number} {Token.string == "."} {Token.kind == number} {Token.string == "."} {Token.kind == number} {Token.string == "."} {Token.kind == number}

4.4.7 Orthographic Coreference (OrthoMatcher)

Orthographic Coreference ha il compito di individuare relazioni di coreferenza tra le

entità annotate dal Semantic Tagger, effettuando cioè una analisi delle coreferenze

basandosi su informazioni di tipo ortografico. Una coreferenza è presente quando due

diverse stringhe all’interno del testo rappresentano la stessa entità. Le regole per

definire una relazione di coreferenza vengono invocate tra due parole solo se queste

sono già state categorizzate come entità dello stesso tipo o se una di loro è stata

categorizzata come “unknown”, in modo da non sovrascrivere le precedenti

annotazioni. Per riconoscere relazioni tra token che identificano la medesima entità ma

che sono rappresentati ortograficamente in modo differente viene utilizzata una tabella

di aliases.

4.5 GATE e le Ontologie

GATE fornisce un’API per modellare e manipolare le ontologie attraverso un plug-in

che deve essere caricato manualmente. Le ontologie in GATE sono classificate come

LR. Per creare una LR legata all’ontologia, è necessario caricare inizialmente il plug-

in contenente un’implementazione dell’ontologia stessa.

I plug-in messi a disposizione da GATE per le ontologie sono:

Ontology: fornisce l’implementazione standard dell’API di ontologia GATE.

Ontology-Tools: fornisce un semplice editor grafico ontologico e OCAT, uno

strumento per l’annotazione di documenti basati su ontologie.

Gazetteer-Ontology-Based: fornisce “OntoRootGazetter” per la creazione

automatica di un gazetteer da un’ontologia.

Il linguaggio supportato da GATE per le ontologie è OWL, in particolare la sua variante

Lite.

Il supporto alle ontologie di GATE mira a semplificare l’uso di queste sia all’interno

dell’insieme di strumenti di GATE sia per colore che utilizzano esclusivamente le API

di Ontologia fornite. Quest’ultime nascondono i dettagli dell’implementazione e

consentono una manipolazione semplificate delle ontologie modellando le risorse

ontologiche come oggetti Java facili da usare. Infine, le ontologie possono essere

caricate e salvate in vari formati di serializzazione.

4.5.1 Modello dei dati per Ontologie

Un’ontologia non è altro che un insieme di concetti (istanze e classi) e le relazioni tra

di essi, dove ogni classe può avere più di una sottoclasse ed ogni istanza può avere più

di una classe; questo è il motivo per il quale le ontologie sono grafi e non alberi. La

gerarchia in classi (o tassonomia) gioca un ruolo centrale nel modello ontologico dei

dati. Questa consiste, all’interno dell’API fornita da GATE, in un insieme di oggetti

della classe OClass collegati da relazioni di: subClassOf (sottoclasse di), superClassOf

(superclasse di) ed equivalentClassAs (uguale a). Le istanze sono oggetti che

appartengono alle classi, nell’API fanno parte della classe OInstance e tra di loro

possono avere relazioni di: sameInstanceAs (indica che i valori delle proprietà

assegnati a due divere istanze sono gli stessi) e DifferentInstanceAs (india che le due

istanze sono disgiunte tra di loro).

4.5.2 Ontology Plugin

L’Ontology Plugin messo a disposizione da GATE contiene l’attuale implementazione

dell’API per la gestione delle ontologie. Questo non fa parte delle librerie di default

per questo deve essere scaricato e caricato in GATE separatamente. Una volta caricato

tra le LR verranno incluse:

OWLIMOntology: è la LR standard da utilizzare nella maggior parte delle

situazioni. Questa consente all’utente di creare una nuova ontologia oppure di

caricarla da file.

ConnectSesameOntology: questa LR consente l’uso di ontologie già

memorizzate nel datastore (Sesame2 repository), ed è molto utile per riutilizzare

rapidamente un’ontologia molto grande che è stata precedentemente creata

tramite la risorsa esplicata al punto precedente.

CreateSesameOntology: quest’ultima LR consente di creare una nuova

ontologia vuota specificando i parametri della configurazione per far si di creare

la Sesame repository.

Questo plugin è alla base della creazione delle ontologie in GATE, ma ciò che ci

permette di gestirle e di utilizzarle come task del NLP è l’Ontology-Tools Plugin.

4.5.3 Ontology-Tools Plugin

L’Ontology-Tools Plugin è presente all’interno delle librerie di default di GATE,

ragion per cui non vi è la necessità di caricarlo esternamente ma è possibile trovarlo

all’interno della lista dei CREOLE plugin.

Figura 8: Ontology Tools

Questo plugin è il più importante in quanto fornisce un GATE Ontology Editor per la

modellazione vera e propria delle ontologie (figura 9), ma soprattutto fornisce

l’Ontology Annotation Tool attraverso il quale è possibile effettuare manualmente

un’annotazione semantica del testo, per effettuarla in maniera del tutto automatica,

invece, il plugin mette a disposizione l’OntoGazetteer.

Figura 9: GATE Ontology Editor

4.6 Esempio di annotazione semantica in GATE Developer

Per rendere più chiare le modalità di utilizzo dei plugin messi a disposizione da GATE

per annotare semanticamente un testo, si fornisce un esempio svolto in GATE

Developer in combinazione con ANNIE.

4.6.1 Annotazione Semantica manuale con Ontology Annotation Tool

Per effettuare un’annotazione semantica, manuale, di un testo in GATE viene utilizzato

l’Ontology Annotation Tool che deve essere caricato preliminarmente. Inoltre, vi è

bisogno di un’ontologia già precedentemente creata tramite OWLIMOntology e

caricata in GATE.

1. Caricamento dell’ontologia da utilizzare per l’annotazione.

Figura 10: caricamento dell’ontologia

2. Caricamento del documento (.xml).

Figura 11: caricamento documento .xml

3. Selezionare il bottone dell’Ontology Annotation Tool (OAT).

Figura 12: selezione Ontology Annotation Tool

4. Nelle opzioni dell’OAT viene selezionato il campo “Select text as property

value” e viene scelto “Key” come annotaion set.

Figura 13: selezione delle opzioni dell’OAT

5. Vengono annotati manualmente quei token che fanno parte di classi

dell’ontologia che si sta utilizzando (es. UK è un’istanza di Location).

Figura 14: risultato dell’annotazione semantica manuale

6. Salvare l’ontologia ed il documento.

4.6.2 Annotazione semantica automatica con OntoGazetteer

Per l’annotazione semantica di un documento in maniera del tutto automatica viene

utilizzato il plugin OntoGazetteer messo a disposizione da GATE combinato con

ANNIE. Anche in questo caso, però, vi è bisogno di un’ontologia già creata

precedentemente.

1. – 2. Le prime due fasi sono analoghe all’esempio precedente, illustrate in

figura 10 e 11.

3. Creazione di un nuovo corpus pipeline.

Figura 15: creazione dell’applicazione per una pipeline su un corpus

4. Caricamento, in ordine, delle seguenti PR: Document Reset PR, ANNIE

English Tokeniser, ANNIE POS Tagger, GATE Morphological Analyser,

ANNIE Sentence Splitter (tutte con i parametri di default).

Figura 16: caricamento delle PR

5. Creazione e configurazione di OntoRootGazetteer con i parametri di default,

con l’ontologia da utilizzare e con la pipeline creata precedentemente.

Figura 17: creazione e configurazione di OntoRootGazetter

6. Creazione della PR Flexible Gazetteer con parametri: “OntoRootGazetter” in

gazetteerInst e “Token.root” in inputFeatureNames.

Figura 18: creazione e configurazione di Flexible Gazetteer

7. Caricamento all’interno del corpus pipeline di tutte le PR create

precedentemente.

Figura 19: caricamento all’interno della pipeline di tutte le PR

8. Avviare l’applicazione e constatare il risultato all’interno dell’Annotation Set.

Figura 20: risultato dell’annotazione semantica automatica

9. Salvataggio del documento annotato.

5. Conclusioni

Nel corso di questo testo sono stati analizzati diversi aspetti del Natural Language

Processing e delle attività correlate. In primo luogo, si è cercato di individuare ed

analizzare le problematiche relative all’elaborazione da parte delle macchine del

linguaggio naturale. In seguito, tra le attività di NLP, è stato approfondito il processo

di IE e della sua suddivisione in sub-task prestando particolare attenzione a quella di

Named Entity Recognition. Successivamente l’attenzione è stata focalizzata sulla

semantica del linguaggio naturale e come questa influisca all’interno del Web con la

ricerca dei documenti, introducendo il concetto di Web Semantico. Inoltre, sono state

trattate nello specifico le Ontologie come metodo per correlare semanticamente tra di

loro i dati. Si è dato spazio ad una panoramica sul sistema GATE, una delle principali

piattaforme per l’elaborazione del linguaggio naturale, descrivendone la struttura e le

caratteristiche. Infine, è presente una parte sperimentale nella quale è stata adoperata

la piattaforma GATE per l’analisi semantica di un testo una volta costruita

l’ontologia.

L’analisi effettuata sull’argomento nel corso del testo ha evidenziato come le sfide e

le possibili applicazioni legate all’NLP possano rappresentare un argomento al centro

dell’attenzione nei prossimi decenni. Questo è motivato dal continuo aumento di

contenuti testuali in linguaggio umano, dovuto soprattutto all’esplosione dei social

network e alla pervasività sempre maggiore della tecnologia nella società. Per questo

motivo, per rendere ancora più efficiente l’interazione dell’uomo con la macchina,

bisognerebbe porre l’attenzione proprio sull’analisi semantica che restringerebbe la

distanza che c’è tra il modo di interpretare la realtà da parte dei sistemi informatici e

dell’uomo; una distanza che rende ancora difficile, ad esempio, creare un Web

Semantico che possa permettere realmente di accedere a conoscenze mirate, nei

contesti più disparati, in modo semplice e naturale.

Bibliografia

Liddy, E. D. (2001). Natural Language Processing

Jakub Piskorski, R. Y. (2012). Information Extraction: Past, Present and Future. In S. H. Poibeau T, Multi-

source, Multilingual Information Extraction and Summarization (p. 24). Springer.

Tim Berners-Lee, J. H. (2001). The Semantic Web. In Scientific American, May 2001.

Gruber, T. R. (1993). A translation approach to portable ontologies. In Knowledge Acquisition (p.199-220).

Cunningham (2014). Developing Language Processing Components with GATE Version 8.

University of Sheffield Department of Computer Science.

Saggion, H. (2007). Ontology-based Information Extraction for Business Intelligence.

University of Sheffield Department of Computer Science.

Treccani. (2015). Dizionario Treccani. Treccani.