GATE General Architecture for Text Engineering GATE GATE

  • Slides: 66
Download presentation
GATE General Architecture for Text Engineering

GATE General Architecture for Text Engineering

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

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) • 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 – Core functions • GATE è dunque un sistema completo di Language Engineering

GATE – Core functions • GATE è dunque un sistema completo di Language Engineering (LE), che include componenti per LP come parsers, strumenti di machine learning, stemmers, 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 • Modellazione e persistenza di strutture dati specializzate • Misurazione, valutazione e benchmarking • Modifica e visualizzazione di annotazioni, ontologie, parse trees, etc. • Linguaggio a stati finiti di traduzione per la prototipazione rapida e una efficiente implementazione di metodi di analisi superficiale (JAPE) • Estrazione di istanze di training per il machine learning • Oltre alle core functions GATE include componenti per effettuare diversi task di language processing (parser, morfologia, tagging, Information Retrieval/Extraction tools)

GATE component model • L’intero core è suddiviso in chunks riusabili

GATE component model • L’intero core è suddiviso in chunks riusabili

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

GATE Developer • Fornisce un ambiente grafico per lo sviluppo di software dedicato al trattamento testuale (language processing) • Lo scopo principale di GATE è l’annotazione dei documenti, quindi tutte le sue funzionalità sono relative a questo scopo • GATE include un sistema completo di information extraction chiamato ANNIE (a Nearly-New Information Extraction System). • Spesso utilizzato per creare una rappresentazione RDF o OWL per i contenuti non strutturati

I concetti principali: • Applications Resources (AR): consentono di definire sequenze di processing resources

I concetti principali: • Applications Resources (AR): consentono di definire sequenze di processing resources che possono elaborare singoli documenti oppure l'intero corpus • Language Resources (LR): consentono di visualizzare il documento o il corpus sul quale si sta lavorando • Processing Resources (PR): visualizzano i moduli attivati dall'utente che possono essere selezionati e inseriti nelle sequenze di cui al punto uno • Datastores (DS): rende persistente il corpus e le annotazioni create dall'utente sui documenti mediante memorizzazione in un datastore. • Documento: elemento testuale oggetto di elaborazione • Corpus o corpora: set di documenti che saranno elaborati in modo uniforme dai vari moduli selezionati dall'utente. • Annotation: annotazione che sarà creata analizzando il documento. • Annotation set: gruppo di annotazioni tra loro correlate

GATE Developer Main Window • In alto a sinistra: albero delle risorse • In

GATE Developer Main Window • In alto a sinistra: albero delle risorse • In basso a sinistra: anteprima delle risorse • Al centro: viewer principale delle risorse • In basso: la barra dei messaggi

Language Resources (LR) • Le LR in GATE possono essere documenti, corpora (set di

Language Resources (LR) • Le LR in GATE possono essere documenti, corpora (set di documenti), o annotazioni. • Un’annotazione è una forma di metadato associato ad una specifica porzione di un documento, definita da due “puntatori” che indicano l’inizio e la fine della stringa di riferimento all’interno del contenuto; • ogni annotazione è inoltre caratterizzata da un id numerico, da un tipo e da un insieme di feature che ne descrivono informazioni aggiuntive. • Le annotazioni associate a parti di un documento vengono rappresentate come parti del documento stesso all’interno di annotation set. Un documento ha sempre un annotation set di default, al quale possono esserne aggiunti altri indefinitamente.

GATE - Documenti • I formati di documenti supportati da GATE automaticamente sono: file

GATE - Documenti • I formati di documenti supportati da GATE automaticamente sono: file di testo, HTML, SGML, XML, RTF, alcuni file PDF, email, alcuni formati di Microsoft Office e di Open. Office; • possibilità di utilizzo di altri formati particolari tramite l’uso di plugin (ad esempio per file JSON contenti tweet o per markup Media. Wiki, utilizzati da Wikipedia e altri siti). • GATE è in grado di gestire file testuali strutturati o semi-strutturati associando al documento le informazioni in esso contenute sotto forma di annotazioni. • al momento dell’importazione di un documento, GATE ricerca all’interno del contenuto l’eventuale presenza di tag, che, qualora individuati, saranno rappresentati da annotazioni create ad hoc il cui tipo corrisponderà al nome del tag e le cui feature saranno estratte dagli attributi dello stesso. • I documenti possono essere esportati o salvati in un Data Store, per usi futuri in GATE Developer e altri componenti della suite GATE

Caricamento e visualizzazione dei documenti • Per la creazione di un documento è necessario

Caricamento e visualizzazione dei documenti • Per la creazione di un documento è necessario creare una nuova Language Resource • Tasto destro -> new -> GATE Document • Specificare il nome, il percorso su disco locale o l’URL nella proprietà source. URL (NO SPAZI NEL NOME FILE) • Verrà creata la nuova risorsa • Doppio click sulla risorsa per aprirla nel tab centrale

Document editor • Consiste in un tab provvisto di pulsanti ed icone che consentono

Document editor • Consiste in un tab provvisto di pulsanti ed icone che consentono di selezionare le differenti viste del documento • Inizialmente viene visualizzato il solo testo del documento • Cliccando su ‘Annotation Sets’ e ‘Annotation List’ verranno visualizzate le annotazioni

Creazione di un corpus • Per la creazione di un documento è necessario creare

Creazione di un corpus • Per la creazione di un documento è necessario creare una nuova Language Resource • Tasto destro -> new -> GATE Corpus • Per l’aggiunta dei documenti al corpus vi sono 3 alternative: 1. Specificare la lista nella document. List (verranno mostrati i documenti già caricati in GATE) 2. Creare prima il corpus, aprirlo e aggiungere i documenti tramite i pulsanti + e – 3. Tramite il tasto destro sul corpus -> ‘Populate’ che consente di caricare documenti non presenti in GATE

Processing Resources • Le PR costituiscono le componenti di elaborazione dei task di NLP

Processing Resources • Le PR costituiscono le componenti di elaborazione dei task di NLP eseguibili in GATE. • Possono essere utilizzate singolarmente, in quanto moduli indipendenti, o essere combinate insieme ad altre PR per formare delle applicazioni. L’esecuzione di più PR all’interno di un’applicazione può essere di due tipi: • pipeline semplice, in cui PR all’interno di un insieme ordinato sono eseguite una alla volta; • pipeline su corpus, specifico per gruppi di PR eseguiti su documenti e corpora, che esegue sequenzialmente tutte le PR che compongono l’applicazione su un documento prima di aprire il successivo all’interno del corpus, sul quale verranno ripetute le stesse operazioni. • Operano sul testo non strutturato all’interno dei documenti • È necessario creare istanze di queste risorse al fine di utilizzarle in un task di elaborazione specifico • GATE consente di creare più istanze di una specifica Processing resource

CREOLE Plugins • Servono a caricare le processing resources utilizzate per creare e manipolare

CREOLE Plugins • Servono a caricare le processing resources utilizzate per creare e manipolare le annotazioni sui documenti • Sono gestiti tramite la voce ‘Manage CREOLE Plugins’ dal menu ‘File’ • Per ciascun plugin vi sono due check box per caricare il plugin ‘Load Now’ o per aggiungerlo alla lista di plugin che vengono caricati sempre ‘Load Always’ • Selezionando un plugin, verrà visualizzata la lista di risorse associata • Le risorse dei plugin caricati saranno disponibili nelle processing resources (facendo tasto destro -> New)

Caricare e utilizzare le Processing Resources • Assicurarsi di aver caricato il plugin necessario

Caricare e utilizzare le Processing Resources • Assicurarsi di aver caricato il plugin necessario • Se la risorsa non appare nelle processing resources, probabilmente non è stato caricato il relativo plugin • Tasto destro su Processing Resources -> New • Esempio: • Caricare il plugin Tools • Nelle processing resources vi sarà la voce ‘GATE Morphological Analyser’ • Facendo doppio click è possibile vedere i parametri di configurazione della risorsa • Per applicare la risorsa ai documenti è necessario aggiungerla ad una applicazione…

Processing Resources – parametri • Ciascuna Processing Resource ha due insieme di parametri •

Processing Resources – parametri • Ciascuna Processing Resource ha due insieme di parametri • Parametri impostati a run-time • Parametri impostati in fase di inizializzazione, possono essere modificati solo in fase di creazione dell’istanza della risorsa • Talvolta, in alcune risorse particolari (es ANNIE Gazzetteer), questi ultimi possono essere modificati dopo la creazione

Applications • Ciascun progetto di text processing dovrebbe utilizzare un set di processing resources

Applications • Ciascun progetto di text processing dovrebbe utilizzare un set di processing resources (e relativi parametri) unico • Molte processing resources sono applicate ai documenti in un ordine specifico • In GATE Devoloper è possibile raggruppare le risorse in pipeline tramite le Applicazioni • Successivamente è possibile applicare tali pipeline ai documenti o ai corpus • Le pipeline possono essere complesse, ad es. eseguite in modo condizionale • Alcune risorse vengono applicate in base al risultato delle precedenti risorse • Le applicazioni possono essere salvate e riutilizzate in differenti sessioni

Creare e eseguire una Applicazione • Dopo aver caricato tutte le risorse necessarie, è

Creare e eseguire una Applicazione • Dopo aver caricato tutte le risorse necessarie, è possibile creare un’applicazione • Tasto destro su Applications -> New • Courpus Pipeline, da applicare ad un corpus • Pipeline, da applicare ad un singolo documento • Facendo doppio click è possibile • Costruire la pipeline selezionando le risorse caricate spostandole nel riquadro destro • Controllare l’ordine delle risorse (IMPORTANTE) • Controllare i parametri di ciascuna risorsa • Eseguire l’applicazione tramite il tasto RUN

Applications – Resource parameters • Per ciascuna risorsa è necessario impostare i parametri di

Applications – Resource parameters • Per ciascuna risorsa è necessario impostare i parametri di inizializzazione • Es. ANNIE English Tokenizer: • Document: viene settato individualmente per ciascuna risorsa • Corpus: una volta selezionato si applica anche alle altre Processing Resources • Nome dell’Annotation Set generato dalla risorsa • In alcune risorse chiamato Output. As. Name • Es. ANNIE Sentence Splitter: • Utilizza come input il risultato della risorsa precedente • input. ASName deve avere lo stesso nome dell’Annotation. Set. Name del Tokenizer

Applications – Resource parameters (2) • Ciascuna risorsa ha i propri parametri • Fare

Applications – Resource parameters (2) • Ciascuna risorsa ha i propri parametri • Fare riferimento alla documentazione • Forniscono grande flessibilità nella costruzione delle pipeline • Bisogna fare attenzione a settare i parametri correttamente, altrimenti i risultati potrebbero essere sbagliati • Nell’es. precedente se i parametri di output e input vengono sbagliati, l’applicazione effettuerà correttamente la tokenizzazione, ma riconoscerà il documento come una singola frase • Sentence splitter utilizza i token per determinare i confini di una frase

Esempio - Annotazioni

Esempio - Annotazioni

Annotazioni – Annotation Set • Gli ‘Annotation Set’ sono visualizzabili tramite il relativo pulsante

Annotazioni – Annotation Set • Gli ‘Annotation Set’ sono visualizzabili tramite il relativo pulsante all’interno di un documento e vengono visualizzati nel pannello a destra • Vi è un set di default (presente in alto tramite una freccia senza nome) • Per visualizzare le annotazioni di ciascun tipo, selezionare la relativa casella • Facendo tasto destro sulla relativa sezione di testo esce un popup contenente la lista delle annotazioni associate

Annotazioni – Annotation List • L’‘Annotation List’ consente di visualizzare l’inizio e la fine

Annotazioni – Annotation List • L’‘Annotation List’ consente di visualizzare l’inizio e la fine di ciascuna annotazione specifica • Es. selezionando una riga dalla lista in basso, viene evidenziata la relativa frase annotata

Esportare i documenti annotati da GATE • È possibile esportare in due formati: •

Esportare i documenti annotati da GATE • È possibile esportare in due formati: • GATE XML format • Tasto destro sul documento -> Save as XML Le annotazioni vengono aggiunte in coda al documento e ciascun tag viene annotato tramite un ID • Preservando la formattazione originale • Utile per file HTML o XML…

Salvare le Applicazioni • Tasto destro sull’applicazione -> Save application state • Vengono salvate

Salvare le Applicazioni • Tasto destro sull’applicazione -> Save application state • Vengono salvate tutte le Processing Resources e i relativi parametri • Per esportare le applicazioni come standalone • Tasto destro sull’applicazione -> Export for Teamware Vengono esportate le processing resources, i parametri e tutti i file necessari per l’esecuzione della pipeline

Information Extraction – Information Retrieval • Information Retrieval: recupera documenti da grandi collezioni testuali

Information Extraction – Information Retrieval • Information Retrieval: recupera documenti da grandi collezioni testuali (tipicamente dal Web) in risposta a specifiche keywords o query. Si analizzano i documenti Vengono restituiti documenti contenenti le informazioni rilevanti • Information Extraction (IE): recupera fatti e informazioni strutturate dal contenuto di grandi collezioni testuali Si analizzano i fatti Vengono restituite le informazioni rilevanti in un formato strutturato

IE come alternativa all’IR • IE restituisce informazioni ad un livello di dettaglio molto

IE come alternativa all’IR • IE restituisce informazioni ad un livello di dettaglio molto più profondo rispetto all’IR tradizionale • Consente di formulare query in maniera più strutturata • Costruendo un database tramite IE e collegandolo ai documenti, può fornire una valida alternativa agli strumenti di ricerca • Anche se i risultati non sono sempre accurati, possono essere comunque valutati se vengono collegati al testo originario

Per cosa viene utilizzata l’IE • IE è una tecnologia abilitante per molte applicazioni:

Per cosa viene utilizzata l’IE • IE è una tecnologia abilitante per molte applicazioni: • • • Text mining Semantic annotation Question answering Opinion mining Decision support Rich information retrieval and exploration

Due principali tipologie di IE • Knowledge Engineering • Rule based • Sviluppata da

Due principali tipologie di IE • Knowledge Engineering • Rule based • Sviluppata da ingegneri e linguisti esperti • Utilizza l’intuito umano • Richiede piccole quantità di training data • Lo sviluppo può essere lungo • Le modifiche possono essere difficili da implementare • Learning Systems • Utilizzano la statistica o il machine learning • Gli sviluppatori non necessitano di conoscenze linguistiche • Richiedono grandi quantità di dati annotati per il training • Alcune modifiche potrebbero richiedere la riannotazione dell’intero corpus di training

Named Entity Recognition • È il riconoscimento di nomi propri all’interno del testo e

Named Entity Recognition • È il riconoscimento di nomi propri all’interno del testo e la loro classificazione in un insieme predefinito di categorie di interesse: • • Persone Organizzazioni Luoghi Data e Ora • Costituisce un caposaldo per la costruzione di sistemi di IE • Le relazioni tra le Named Entity possono fornire un meccanismo per il tracciamento, l’annotazione ontologica e la costruzione di scenari

Tipica pipeline NE • Pre-processing (tokenization, sentence splitting, morphological analysis, POS tagging) • Entity

Tipica pipeline NE • Pre-processing (tokenization, sentence splitting, morphological analysis, POS tagging) • Entity finding (gazetteer lookup, NE grammars) • Coreference (alias finding, orthographic coreference, etc) • Export sul database / XML / ontologia

Esempio di IE Relations NECoreference Recognition

Esempio di IE Relations NECoreference Recognition

ANNIE: A Nearly New Information Extraction system • ANNIE (A Nearly New Information Extraction

ANNIE: A Nearly New Information Extraction system • ANNIE (A Nearly New Information Extraction system), un sistema composto da una serie di moduli, basati su algoritmi a stati finiti e istruzioni JAPE, che permettono di elaborare annotazioni utilizzabili per vari task di IE. • L’applicazione ANNIE contiene un set di PR core: • • • Tokeniser Sentence Splitter POS tagger Gazetteers Named Entity tagger (JAPE transducer) Orthomatcher (orthographic coreference) • Vi sono anche altre PR disponibili che possono essere aggiunte in base alle necessità

ANNIE • GATE Developer consente di aggiungere un set predefinito di risorse solitamente utilizzate

ANNIE • GATE Developer consente di aggiungere un set predefinito di risorse solitamente utilizzate • ANNIE

ANNIE Application pane • Le processing resources caricate nella sessione sono elencate sulla sinistra

ANNIE Application pane • Le processing resources caricate nella sessione sono elencate sulla sinistra • Quelle selezionate per essere applicate ai documenti/corpus sono elencate sulla destra • L’ordine nella lista corrisponde all’ordine in cui verranno eseguite le risorse • L’ordinamento è CRITICO (es. Gazetteer dipende da Tokenizer) • Le dipendenze sono elencate nella documentazione

ANNIE

ANNIE

ANNIE – Processing Resources • Ciascuna PR della pipeline crea alcune nuove annotazioni o

ANNIE – Processing Resources • Ciascuna PR della pipeline crea alcune nuove annotazioni o modifica quelle esistenti Document Reset → rimuove le annotazioni Tokeniser → Token annotations Sentence Splitter → suddivide in frasi Gazetteer → Lookup annotations POS tagger → aggiunge le categorie alle annotazioni dei token JAPE transducer → Date, Person, Location, Organisation, Money, Percent annotations • Orthomatcher → verifica il matching tra le annotazioni NE • • •

Document Reset • Dovrebbe essere la prima fase di ciascuna pipeline • Rimuove le

Document Reset • Dovrebbe essere la prima fase di ciascuna pipeline • Rimuove le annotazioni create in precedenza, per evitarne la duplicazione nel caso si esegue l’applicazione più di una volta • Di default, non rimuove il set Original Markup • Può essere configurata per preservare altri annotation set, o per rimuovere annotation type specifici

Tokenizer • Questa PR può essere utilizzata per suddividere il contenuto di un documento

Tokenizer • Questa PR può essere utilizzata per suddividere il contenuto di un documento in token (parole, numeri e simboli di punteggiatura). • Le annotazioni risultanti dall’esecuzione di un tokeniser su un documento possono essere di due tipi, Token e Space. Token, e hanno associate le feature: • string, il valore 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.

Tokenizer • La tokenizzazione è basata sulle classi del tokenizer Unicode • I token

Tokenizer • La tokenizzazione è basata sulle classi del tokenizer Unicode • I token vengono specificati attraverso un linguaggio di specifica dichiarativo • Regola per una parola con lettere minuoscole e iniziale maiuscola • Il tokeniser offerto di default da ANNIE è ANNIE English Tokeniser, che si compone di un normale tokenizer e di un JAPE transducer, utilizzato per ottimizzare i risultati in base alle caratteristiche della lingua inglese • adatta l’output generico del tokenizer al POS Tagger. Es. converte i costrutti riguardanti gli apostrofi in combinazioni più leggibili • Don’t -> do + n’t • You’ve -> you + ‘ve

Gazetteers • I Gazetteers sono file testuali contenenti liste di nomi (es. fiumi, città,

Gazetteers • I Gazetteers sono file testuali contenenti liste di nomi (es. fiumi, città, persone, etc. ) • Le liste sono trasformate in macchine a stati finiti (FSM) • Ogni gazetteer ha un file indice che elenca tutte le liste, più le features di ciascuna lista (major. Type, minor. Type e language) • Le liste possono essere modificate tramite il Gazetter Editor, o tramite un editor esterno • Generano le annotazioni Lookup con le feature corrispondenti alla lista interessata • Le annotazioni Lookup vengono utilizzate soprattutto dal NE transducer

Limitazioni dei gazetteer • Le liste gazetteers sono progettate per annotare feature semplici e

Limitazioni dei gazetteer • Le liste gazetteers sono progettate per annotare feature semplici e regolari • Tale meccanismo fornisce un minimo di flessibilità, ma non è abbastanza in molti task • Riconoscere indirizzi email utilizzando solo un gazetteer è impossibile • In combinazione con i risultati di altri tool di pre-processing, fornisce molte feature e annotazioni • POS tags, capitalisation, punctuation, lookup features, etc. possono essere combinati per formare pattern che evidenzino informazioni più complesse • Utilizzo di JAPE

Sentence Splitter • Il sentence splitter è una risorsa che si occupa di dividere

Sentence Splitter • Il sentence splitter è una risorsa che si occupa di dividere il contenuto del documento in segmenti corrispondenti alle diverse frasi del testo. • L’esecuzione di tale PR comporta la creazione di due tipi di annotazioni: • Sentence, associata ad ogni periodo individuato; • Split, associata ad ogni parte di testo corrispondente alla terminazione di una frase (ad esempio un punto). Le annotazioni di tipo Split hanno una feature di nome kind che assume valore internal per tutte le combinazioni di punti interrogativi ed esclamativi e per ogni sequenza costituita da un numero di punti compreso tra 1 e 4, external per caratteri di nuova riga. • Identifica le frasi basandosi sui Token (di default) • Usa un gazetteer di abbreviazioni e un insieme di grammatiche JAPE che identificano i delimitatori delle frasi e poi annotano le frasi e i separatori • Può essere caricato un insieme di regole per specificare i limiti di una frase • È anche disponibile uno splitter basato sulle regular expression, chiamato Reg. Ex Sentence Splitter, a volte più rapido

POS tagger - Morphological analyser • POS tagger • Aggiunge la feature ‘category’ alle

POS tagger - Morphological analyser • POS tagger • Aggiunge la feature ‘category’ alle annotazioni Token; il valore assunto da tale feature corrisponde a una parte del discorso della lingua del testo ed è rappresentato da un codice costituito da lettere e simboli (https: //gate. ac. uk/sale/tao/splitap 7. html). • Richiede che vengano eseguiti prima Tokeniser e Sentence Splitter • Morphological analyser • • Non è parte integrante di ANNIE ma può essere caricato su richiesta Basato su regole flessibili: possono essere modificate dall’utente Aggiunge la feature ‘root’ alle annotazioni Token Richiede che venga eseguito prima Tokenizer

NE transducer • I Gazetteer possono essere utilizzati per trovare termini che suggeriscono entità

NE transducer • I Gazetteer possono essere utilizzati per trovare termini che suggeriscono entità • Tuttavia, tali valori possono essere ambigui • “Mr Parkinson” vs “Morbo di Parkinson” • “General Motors” vs. “General Smith” • Le grammatiche sono utilizzate per definire pattern che si sovrappongono alle annotazioni • I pattern aiutano a rendere meno ambigui I termini, combinando differenti annotazioni • NE transducer consiste in un insieme di grammatiche scritte in linguaggio JAPE

NE transducer • L’ANNIE Named Entity Transducer è un annotatore semantico basato sul linguaggio

NE transducer • L’ANNIE Named Entity Transducer è un annotatore semantico basato sul linguaggio JAPE, che si occupa di analizzare le annotazioni elaborate nelle fasi precedenti per cercare di identificare entità all’interno di un documento e restituirle sotto forma di nuove annotazioni. • I possibili tipi di entità, e le relative feature, prodotte da ANNIE nell’esecuzione di questa risorsa corrispondono ai tipi di entità definiti originariamente dalle MUC, e sono le seguenti: • Person • gender: male, female • Location • loc. Type: region, airport, city, country, county, province, other • Organization • org. Type: company, department, government, newspaper, team, other • Money • Percent • Date • kind: date, time, date. Time • Address • kind: email, url, phone, postcode, complete, ip, other • Identifier • Unknown

Ortho. Matcher • Ortho. Matcher è la PR di ANNIE che fornisce la possibilità

Ortho. Matcher • Ortho. Matcher è la PR di ANNIE che fornisce la possibilità di individuare relazioni di coreferenza tra le entità annotate dal NE Transducer. • Una coreferenza è presente quando due divere stringhe all’interno del testo rappresentano la stessa entità. • Ad esempio nella frase “i vicini chiameranno la polizia, se a loro non sta bene il volume della musica” • vi è una coreferenza tra il pronome “loro” e il soggetto della prima proposizione, “i vicini”, a cui si riferisce. • Ortho. Matcher non è in grado di trovare nuove entità all’interno del testo, ma può assegnare un tipo ad un’entità precedentemente annotata come Unknown (di tipo sconosciuto), utilizzando l’annotazione dell’entità riconosciuta come coreferenza. • Le regole utilizzate per determinare la presenza di coreferenza tra due entità, sono applicate solo se le due relative annotazioni sono dello stesso tipo, o se una delle due è di tipo Unknown, al fine di evitare la riclassificazione di una named entity correttamente identificata.

Co-reference • Espressioni differenti possono riferirsi alla stessa entità • Il modulo Orthographic co-reference

Co-reference • Espressioni differenti possono riferirsi alla stessa entità • Il modulo Orthographic co-reference (orthomatcher) collega i nomi propri e le loro varianti all’interno di un documento • [Mr Smith] e [John Smith] sono la stessa persona • [International Business Machines Ltd. ] corrisponde a [IBM] • Produce una lista di annotazioni che ha la forma di una catena di coreferenze • Il risultato del riconoscimento di una coreferenza consiste nell’aggiunta alle annotazioni delle due entità di una feature il cui valore è un puntatore all’altra entità.

Esempio ANNIE • Caricare un corpus documentale • Language Resources – tasto destro ->

Esempio ANNIE • Caricare un corpus documentale • Language Resources – tasto destro -> New -> Gate Corpus -> OK • Tasto destro sul nuovo corpus -> Populate -> selezionare la cartella con i documenti del corpus • Caricare ANNIE dal menu • With defaults • Aprire l’applicazione -> Selezionare il corpus -> Run

Esempio ANNIE • Risultato • Aprendo i documenti è possibile verificare le annotazioni create

Esempio ANNIE • Risultato • Aprendo i documenti è possibile verificare le annotazioni create

Esempio ANNIE • Esporto il documento annotato… • Tasto destro documento > Save as.

Esempio ANNIE • Esporto il documento annotato… • Tasto destro documento > Save as. . -> Gate XML • Il testo viene suddiviso in una lista di nodi • Ogni nodo ha un id di inizio e fine • Le annotazioni vengono aggiunte alla fine e relazionate ai nodi tramite gli ID

Applicazioni language-specific • Le seguenti PR sono sostanzialmente language-independent • • Unicode tokeniser Sentence

Applicazioni language-specific • Le seguenti PR sono sostanzialmente language-independent • • Unicode tokeniser Sentence splitter Gazetteer PR (bisogna localizzare le liste!) Orthomatcher (a seconda della natura del linguaggio) • Altre PR necessitano di essere adattate (es. JAPE Transducer) o sostituite con una versione language-specific (es. POS tagger)

JAPE - Jolly And Pleasant Experience • Un linguaggio di pattern matching sviluppato specificamente

JAPE - Jolly And Pleasant Experience • Un linguaggio di pattern matching sviluppato specificamente per GATE che permette di riconoscere regular expression su annotazioni in un documento • Nonostante la struttura secondo la quale sono organizzate le annotazioni in GATE sia un grafo, quindi più complessa rispetto a quelle normalmente gestibili da linguaggi regolari, spesso i dati descritti dai 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.

Jape grammar • Una JAPE grammar consiste in una serie di fasi, specificate secondo

Jape grammar • Una JAPE grammar consiste in una serie di fasi, specificate 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 è costituita da set di regole composte da pattern, il cui riconoscimento innesca l’esecuzione di azioni specificate. • Una regola è formata da due parti: • una Left-Hand-Side (LHS), che contiene la descrizione dei pattern da riconoscere sulle annotazioni, e • una 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.

Esempio regola JAPE • Una tipica regola: trovare tutti i nomi delle Università, es.

Esempio regola JAPE • Una tipica regola: trovare tutti i nomi delle Università, es. «university of Sheffield» • Il gazetteer potrebbe contenere la parola ‘Sheffield’ nella lista delle città • La regola cerca espressioni specifiche tipo ‘University of ’ seguita dal nome di una città

Esempio di regola Rule: University 1 ( {Token. string == "University"} {Token. string ==

Esempio di regola Rule: University 1 ( {Token. string == "University"} {Token. string == «of"} {Lookup. minor. Type == city} ): org. Name --> : org. Name. Organisation = {kind = "university", rule = "University 1"} Nome della regola LHS (left-hand-side) Descrive il pattern da matchare, in termini di annotazioni e (opzionalmente) delle loro feature RHS (right-hand-side) Consiste nelle istruzioni di manipolazione delle annotazioni

Matchare una stringa di testo • Tutte le espressioni da matchare devono essere specificate

Matchare una stringa di testo • Tutte le espressioni da matchare devono essere specificate in termini di annotazioni • Ogni annotazione è racchiusa tra parentesi graffe • Per esprimere una stringa di testo, utilizzare l’annotazione ‘Token’ e la feature ‘string’ • {Token. string == "University"} • Le maiuscole sono importanti nel valore della stringa • Si possono creare sequenze di annotazioni per formare un pattern • {Token. string == "University"} {Token. string == «of"} {Lookup. minor. Type == city}

LHS - Label • Per ciascuna combinazione di pattern per cui si vuole creare

LHS - Label • Per ciascuna combinazione di pattern per cui si vuole creare un’annotazione, è necessario creare una label • La combinazione del pattern è racchiusa tra parentesi tonde, seguita da ‘: ’ e il nome della label • La label può essere qualsiasi nome legale: viene utilizzata solo all’interno della regola • ( {Token. string == "University"} {Token. string == «of"} {Lookup. minor. Type == city} ) : org. Name

LHS - Operatori • Possono essere utilizzati i seguenti operatori per combinare le espressioni

LHS - Operatori • Possono essere utilizzati i seguenti operatori per combinare le espressioni • ({Lookup. minor. Type == city} | {Lookup. minor. Type == country})

Operatori - Utilizzo delle parentesi • Utilizzare le parentesi tonde per delimitare il range

Operatori - Utilizzo delle parentesi • Utilizzare le parentesi tonde per delimitare il range degli operatori • ({Lookup. minor. Type == city}| {Lookup. minor. Type == country} )+ • Una o più città o paesi in qualsiasi ordine e combinazione • ({Lookup. minor. Type == city}| ({Lookup. minor. Type == country})+ ) • Una città O uno o più paesi

RHS • (…) : org. Name --> : org. Name. Organisation = {kind =

RHS • (…) : org. Name --> : org. Name. Organisation = {kind = "university"} label Annotation type Feature + value • Le label del RHS devono corrispondere con quelle del LHS • In modo da sapere a quale parte del pattern è necessario attribuire l’annotazione • Non vi è limite al numero di pattern del LHS o di azioni specificate nel RHS • I pattern possono essere consecutivi, innestati o entrambi • I pattern non possono sovrapporsi

Pattern e label multiple ( ({Token. string == "University"}) {Token. string == «of"} ({Lookup.

Pattern e label multiple ( ({Token. string == "University"}) {Token. string == «of"} ({Lookup. minor. Type == city}) : city. Name ) : org. Name --> : city. Name. Location = {kind = city}, : org. Name. Organization = {kind = university} • Possiamo avere più azioni nel RHS corrispondenti a label differenti • Separare le azioni con una virgola

Pattern e azioni ( {Token. string == "University"} {Token. string == «of"} ) ({Lookup.

Pattern e azioni ( {Token. string == "University"} {Token. string == «of"} ) ({Lookup. minor. Type == city}): city. Name --> : city. Name. Location = {kind = university_town} • Un pattern che non ha azioni associate non ha necessità di avere una label • È comunque necessario racchiuderlo tra parentesi

Annotazioni e features • Si possono scegliere a piacimento il nome di annotation type

Annotazioni e features • Si possono scegliere a piacimento il nome di annotation type e feature • Non è necessario che siano già esistenti • Le feature e i valori sono opzionali (e possono essere di un numero a piacere) • Esempi: • : org. Name. Organization = {} : org. Name. Organization = {kind=university, rule=University 1} : fish. Label. Interesting. Fish. Annotation = {scales=yes}

Esempio JAPE • Caricare ANNIE con parametri di default • Rimuovere NE transducer e

Esempio JAPE • Caricare ANNIE con parametri di default • Rimuovere NE transducer e Orthomatcher • Caricare JAPE transducer • Processing Resources – tasto destro -> new -> jape transducer • Impostare il file. jape nel parametro grammar. Url • Aggiungere JAPE transducer alla pipeline ANNIE

Esempio JAPE • Analizziamo i risultati… • Nella Annotation List è presente una annotazione

Esempio JAPE • Analizziamo i risultati… • Nella Annotation List è presente una annotazione di tipo Organization • L’annotazione presenta 2 feature inserite dalla regola jape: • Kind e rule sono le features specificate nella regola jape