Statistica versus Regole - WordPress.comho it” in ase agli elementi di maggior “peso” per...
Transcript of Statistica versus Regole - WordPress.comho it” in ase agli elementi di maggior “peso” per...
1
Statistica versus Regole Alessandro Maisto
La linguistica computazionale vive da sempre una dicotomia tra Linguisti e Informatici. I primi, forti di una
conoscenza dei meccanismi della lingua, sono però poveri di competenze ingegneristiche. I secondi, invece,
competenti nelle materie informatico-matematiche, non attribuiscono il corretto valore ai meccanismi e
alle strutture fondamentali del linguaggio. Questa dicotomia, tra l’altro, si è accentuata soprattutto negli
ultimi decenni, con l’aumento delle risorse computazionali e con la progressiva informatizzazione del
mondo. Le tecnologie di Machine Learning, ad esempio, divenute imperanti nell’ambito dell’Intelligenza
Artificiale, che permettono alle macchine di “imparare” a partire dagli esempi che manualmente gli
vengono forniti, viene sempre più spesso applicato alla Linguistica proprio per superare lo scoglio
rappresentato del linguaggio e dalla sua rappresentazione formale.
Questa dicotomia ha comportato la nascita di due principali filoni interni alla Linguistica Computazionale
che prediligono rispettivamente:
I metodi basati sulle regole, che cercano di imitare il modo in cui l’uomo utilizza e comprende il
linguaggio, riproducendo le strutture sintattiche che sono alla base di questo processo di
comprensione, costruendo risorse lessicali come i dizionari elettronici, le tassonomie, le ontologie;
I metodi basati sulla statistica che, al contrario, trattano la lingua come un insieme di parole,
quantificando queste in modo matematico e cercando di estrarre informazioni senza la necessità di
individuare le strutture sintattiche o, addirittura, cercando di rendere capace la macchina stessa di
imparare la sintassi.
Il problema principale è l’incomunicabilità tra i due mondi dovuta alle differenze sostanziali che li
caratterizzano. Da un lato il funzionamento del linguaggio e le sue caratteristiche sono guardate con
rispetto e con interesse, con l’abitudine ad un lavoro di analisi, a volte manuale, lento ma approfondito.
Dall’altro lato, una mentalità ingegneristica che vede nel linguaggio un ostacolo al raggiungimento di uno
scopo, che cerca nell’algoritmo la maniera più efficace e più veloce per evitare di affrontare questo
problema o per affidarlo completamente al calcolo ed al ragionamento della macchina.
Tuttavia, questa incomunicabilità non è una inconciliabilità, e, dunque, come accadeva agli inizi della
linguistica computazionale, in particolare con Harris, il panorama più auspicabile e quello che ad oggi offre i
risultati migliori è quello di una unione delle differenti metodologie.
2
Nozioni di base Prima di andare a vedere quali sono le caratteristiche principali delle due filosofie viste sopra, è necessario
andare a conoscere quelli che sono alcuni dei concetti di base comuni ad entrambe le metodologie.
1. Token e Type
I concetti di Token e Type sono strettamente correlati e stanno alla base delle analisi linguistiche di ogni
tipo e livello. Pierce (1931-58, vol. 4, p. 423) ha introdotto la distinzione tra token e type specificando che in
una frase come “The dog eat the cat that ate the rat”, c’è un solo Type per la parola “the”, ma ci sono tre
Token relativi allo stesso type nella frase. La relazione tra un Type ed i suoi Token, secondo Pierce, è
dunque una instanziazione e può essere quantificata in termini di frequenza di token.
Dunque, se prendiamo la frase
“il cane che uccise il gatto che uccise il topo”
Possiamo contare 6 diversi types (“il”, “cane”, “che”, “uccise”, “gatto”, “topo”) e ben 10 tokens, cioè tutte
le parole che compongono la frase.
2. Part-of-speech e Lemma
Per Part-of-Speech (POS), o parte del discorso, normalmente, si intende la Classe Grammaticale o Categoria
Lessicale alla quale appartiene una specifica parola. Se consideriamo ancora la frase precedente, il token
“il” appartiene alla POS “determinante” (abbreviato DET); “cane” appartiene alla categoria dei nomi (N) e
“uccidere” alla categoria dei verbi (V). Le POS che vengono normalmente considerate in linguistica
computazionale sono le seguenti:
POS Abbreviazione
Nomi N Verbi V Aggettivi A Avverbi AVV Determinanti DET Pronomi PRON Preposizioni PREP Congiunzioni CONG Interiezioni INTER
Ovviamente è possibile espandere questa lista in base alle esigenze dell’analisi linguistica che si va ad
effettuare, ed esempio è possibile introdurre una differenziazione tra pronomi relativi (PREL) e pronomi
personali (PPERS).
Strettamente legata alla Part-of-Speech è una delle operazioni basilari delle analisi linguistiche di ogni tipo,
il POS Tagging, che consiste, appunto, nell’attribuire ad ogni token la propria Parte del Discorso.
Il lemma, invece, rappresenta la forma canonica delle parole, cioè la forma in cui troviamo una determinata
parola nel dizionario. Per l’italiano, di norma, la forma canonica per Nomi e Aggettivi è il maschile singolare
(o il femminile singolare in caso di nomi femminili), e l’infinito per i verbi. Il task della linguistica
computazionale legato ai lemmi è la Lemmatizzazione, che consiste nel ridurre alla forma canonica tutti i
token che compongono un testo, in modo da poter ridurre il numero di type non considerando tutte le
3
differenti forme flesse di una determinata parola (“essere”, “è”, “fu” e “siamo” vengono considerati come
un unico type “essere”).
3. Pre-Processing
Insieme alle due operazioni che abbiamo visto nel paragrafo precedente, il POS Tagging e la
Lemmatizzazione, ci sono alcune operazioni di pre-processamento dei testi che, in base alle esigenze
dell’analisi linguistica da effettuare, possono o non possono essere applicate. Tra queste operazioni
possiamo trovare:
Normalizzazione del testo, che consiste nel sostituire le maiuscole in modo da rendere uniforme il
testo, l’eliminazione della punteggiatura, la correzioni di errori di battitura o degli errori
grammaticali più comuni come ad esempio i casi in cui la “è” viene scritta “e’” etc.
Rimozione delle Stop Word, che consiste nella rimozione di tutti quei token semanticamente
“vuoti”, ad altissima frequenza.
La statistica Testuale La statistica testuale comprende una serie di operazioni che, quantificando in termini numerici o
matematici le parole che compongono un determinato testo, cercano di estrarre da questo le informazioni
necessarie a descriverlo, a delimitare i suoi elementi principali e a classificarlo. In questo paragrafo
andremo a vedere in cosa consistono alcune delle operazioni basiche di statistica testuale e che tipo di
informazioni riusciamo a ricavare da esse. Prendiamo ad esempio il seguente testo, estratto dal capitolo 1
della versione originale de “Lo Hobbit”, di Tolkien:
“In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole,
filled with the ends of worms and an oozy smell, nor yet a dry, bare,
sandy hole with nothing in it to sit down on or to eat: it was a hobbit-
hole, and that means comfort.
It had a perfectly round door like a porthole, painted green, with a shiny
yellow brass knob in the exact middle. The door opened on to a tube-
shaped hall like a tunnel: a very comfortable tunnel without smoke, with
panelled walls, and floors tiled and carpeted, provided with polished
chairs, and lots and lots of pegs for hats and coats – the hobbit was fond
of visitors. The tunnel wound on and on, going fairly but not quite
straight into the side of the hill – The Hill, as all the people for many
miles round called it – and many little round doors opened out of it, first
on one side and then on another. No going upstairs for the hobbit:
bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he
had whole rooms devoted to clothes), kitchens, dining-rooms, all were on
the same floor, and indeed on the same passage. The best rooms were
all on the left-hand side (going in), for these were the only ones to have
windows, deep-set round windows looking over his garden and meadows
beyond, sloping down to the river.”
4
Una delle prime operazioni che è possibile effettuare su un testo di questo tipo, indifferentemente dalla
lingua in cui è scritto, dalle strutture grammaticali che lo compongono e dalla sua dimensione, è il calcolo
delle occorrenze. Dopo aver creato una lista dei type che compongono il testo, si contano i token presenti
relativi a ciascun type. Il risultato è il seguente:
Type Occorrenze
the 17
and 12
a 11
on 9
of 6
to 6
in 5
it 5
with 5
for 4
round 4
all 3
going 3
hobbit 3
hole 3
I primi elementi di una lista di questo tipo, calcolata su un testo contenente ancora le Stop Words, sono
nella quasi totalità dei casi, articoli e preposizioni.
Se volessimo calcolare le occorrenze sull’intero libro, la lista, per quanto riguarda le prime posizioni del
ranking, sarebbe poco dissimile, ma con valori estremamente più alti. Avremo, ad esempio, il type “the”
con una occorrenza di 6040, “and” 4406 e così via. Così come nella tabella sopra, la prima parola
semanticamente piena è “hobbit”, che appare al 14º posto, per la classifica delle occorrenze dei type
dell’intero libro, la prima parola semanticamente piena appare in 25ª posizione ed è “said”, con 583
occorrenze.
Già eliminando anticipatamente le Stop Words, riusciamo ad ottenere classifiche più significative ed
informative, cioè, che ci offrono maggiori informazioni riguardo il testo che stiamo analizzando. Provando
ad effettuare lo stesso calcolo sul capitolo 9 de “la compagnia dell’anello” libro primo della trilogia de “il
signore degli anelli” ed il capitolo 7 de “le due torri”, libro secondo della stessa trilogia, privati delle stop
words, estraiamo come parole che occorrono un numero maggiore di volte:
Type Cap. 9 libro 1 Cap 7 libro 2
Said 51 34 Frodo 42 30 night 28 11
5
Confrontando i due capitoli in base al numero di occorrenze dei types, è possibile effettuare alcune
inferenze che, però, potrebbero risultare sbagliate. Senza considerare la dimensione del testo analizzato, si
potrebbe desumere che il primo testo sia un testo più incentrato sui dialoghi (assumendo che il type “said”
introduce un discorso diretto) e sul personaggio di Frodo.
Va però considerato il fatto che, mentre il primo capitolo ha una dimensione in token di 8243, il secondo
misura poco più della metà, con 4946 tokens. Per tenere conto di questa differenza è necessario introdurre
il concetto di Frequenza, o meglio di Frequenza Relativa dei type nel testo. La formula per il calcolo della
frequenza è la seguente:
𝑇𝐹 =𝑛𝑖,𝑗
𝑑𝑗
dove la Term Frequency è uguale al rapporto tra il numero di occorrenze della parola i nel testo j e la
dimensione del testo j. Calcolando le frequenze, il valore ottenuto per la parola “said” nel primo caso è di
0,006187, inferiore al valore dello stesso type per il secondo testo (0.006874). Lo stesso accade per la
parola “frodo” che ottiene, rispettivamente 0,005095 e 0,006066, con una netta prevalenza relativa del
type nel capitolo 7 del libro 2 che, come potremo scoprire dalla lettura del libro, è molto più focalizzato
sulla figura del protagonista.
La Term Frequency, tuttavia, non basta a descrivere efficacemente un testo nel caso volessimo confrontarlo
con una collezione di numerosi altri testi. Se ad esempio volessimo descrivere ogni capitolo del libro “Lo
hobbit” in base agli elementi di maggior “peso” per ciascun capitolo, andando dunque ad eliminare quei
types che possiamo dare per scontati (come ad esempio il nome del protagonista, che descrive il libro nella
sua interezza ma ci dice ben poco sul singolo capitolo) dovremo introdurre un nuovo misuratore, il Term
Frequency – Inverse Document Frequency (TF-IDF), la cui formula è la seguente:
𝑤𝑑 = 𝑓𝑤,𝑑 ∗ log (|𝐷|
𝑓𝑤, 𝐷)
dove il peso di un type w per un documento d è uguale alla frequenza di w in d per il logaritmo del
rapporto tra il numero di documenti in analisi e il numero f di documenti in cui w è presente. Il risultato del
calcolo del TF-IDF per il capitolo 1 de “Lo Hobbit” non riporta più i type “said”, “bilbo”, “dwarves” e
“baggins” come per la classifica della Term Frequency, ma riporta valori che ci danno informazioni più
dettagliate su ciò che viene descritto nel capitolo: abbiamo in prima posizione la parola “plates” molto
utilizzata nel capitolo per descrivere la cena che il protagonista tiene con il mago Gandalf ed i 13 nani (e che
difficilmente apparirà in altri capitoli), la parola “gandalf” e la parola “map”, che descrivono efficacemente
il tema principale del testo, in cui il mago studia con tutta la comitiva la mappa della montagna solitaria. La
lista dei 10 type con il valore TF-IDF più alto è presentata nella seguente tabella:
6
type Tf-Idf Score
plates 0,059822
gandalf 0,059115
map 0,053391
belladonna 0,047857
dungeons 0,04451
beautiful 0,043684
grandfather 0,040877
coffee 0,035893
glasses 0,035893
pantry 0,035893
Inoltre, è possibile rappresentare in che modo il peso di un type vari di capitolo in capitolo con una
semplice rappresentazione grafica come la seguente, dove, oltre all’andamento è possibile osservare lo
spessore della linea che sta ad indicare il valore di TF della parola per ogni capitolo.
In conclusione, l’analisi statistica dei testi è un tipo di analisi particolarmente adatta a chi abbia bisogno di
estrarre rapidamente informazioni poco precise dai testi. Informazioni che non ci dicono di cosa si parla nel
testo, né possono rispondere a domande specifiche, ma semplicemente, nei limiti di margini di errori
“statisticamente tollerabili” offrono una visione generale e generica di un determinato testo.
Questo tipo di analisi, nonostante rimanga superficiale, presenta il vantaggio di essere completamente
indipendente dal linguaggio, di essere rapida, di non presupporre competenze linguistiche avanzate e di
essere computazionalmente molto vantaggiosa.
7
L’analisi dei testi basata sulle Regole Prendiamo in esame il seguente type ranking basato sul TF-IDF:
type Tf-Idf Score
borsellino 6.7214961766849655
suo 3.4154876523731406
diressero 3.3607480883424827
scolando 3.3607480883424827
manina 3.3607480883424827
borsa 3.3607480883424827
estraeva 3.3607480883424827
coraggio 3.3607480883424827
somma 3.3607480883424827
lavoro 3.3607480883424827
appassionandosi 3.3607480883424827
boccale 2.882922698399655
raccolse 2.882922698399655
cautela 2.882922698399655
inizio 2.882922698399655
barile 2.882922698399655
nuovo 2.6034127633906374
Se proviamo ad estrarre informazioni riguardanti il testo da cui è stata calcolata la classifica, potremo
pensare ad una situazione da bar, che coinvolge delle imprecisate persone che prendono da bere e pagano
il conto. In realtà si tratta della seguente frase, il cui TF-IDF è stato calcolato sui paragrafi del capitolo 2 de
“Lo hobbit”:
“Berto e Maso si diressero verso il barile. Guglielmo stava
scolando un altro boccale. Allora Bilbo raccolse tutto il suo
coraggio e mise la manina nell’enorme tasca di Guglielmo. C’era
dentro un borsellino, grande quanto una borsa, per Bilbo. «
Eccoci qua! » pensò, appassionandosi al suo nuovo lavoro
mentre estraeva con somma cautela il borsellino. « Questo sì che
è un buon inizio! »”
Attraverso l’uso della statistica, dunque, non è possibile acquisire informazioni dettagliate su testi,
soprattutto se la loro dimensione non è adeguata. Per analizzare frasi o piccole porzioni di testo, in corpus
non abbastanza grandi, è necessario fare ricorso alle regole, cioè ad una formalizzazione delle strutture
sintattiche di una determinata lingua. Attraverso l’uso delle regole, ad esempio, è possibile rispondere a
domande precise riguardanti il testo sopra.
1. Dove si diressero Berto e Maso?
2. Che stava facendo Guglielmo?
3. Che azioni compie Bilbo?
Prendendo ad esempio la frase “Berto e Maso si diressero verso il barile” possiamo costruire un semplice
Parser sintattico in grado di rispondere alla domanda 1 della lista precedente. Un parser non è altro che un
8
insieme di Regole sintattiche e di strumenti elettronici per il riconoscimento di determinate strutture
grammaticali.
Per la costruzione del Parser abbiamo bisogno, innanzitutto, di un Dizionario Elettronico. I dizionari
elettronici sono dei database lessicali che contengono informazioni sintattiche e semantiche circa le parole
in uso in una determinata lingua. È possibile costruire dizionari di diversi tipi ed includere in essi quante più
informazioni possibili. Ad esempio possiamo inserire informazioni sul corrispettivo Inglese di un termine in
modo da poter utilizzare il dizionario per un eventuale task di traduzione automatica. Per quanto riguarda
la frase che stiamo cercando di analizzare abbiamo bisogno di un dizionario elettronico di dimensioni
ridotte, che contenga informazioni specifiche:
Berto,Berto,N+Npr+m+Anim+Um;
Maso,Maso,N+Npr+m+Anim+Um;
e,e,CONG;
si diressero,dirigersi,V+rif+Mov+PR+3+p+Sogg:Anim+Comp:DEST;
verso,verso,PREP;
il,il,DET+m+s;
barile,barile,N+s+m+Ogg+Contenitore;
Un dizionario elettronico presenta alcune differenze rispetto ad un dizionario tradizionale in quanto le
informazioni in esso presenti non sono destinate ad un utente umano, ma ad una macchina. Pertanto, non
è necessario che le informazioni siano rese esplicitamente, ma basta che rispettino un codice standard
comprensibile da un interprete virtuale. Inoltre, le informazioni normalmente presenti in un dizionario
cartaceo come le glosse descrittive, saranno sostituite, eventualmente, da informazioni di tipo semantico
finalizzate al raggiungimento di un determinato obiettivo.
Nell’esempio sopra, abbiamo un dizionario elettronico composto da appena 7 entrate.
Il primo elemento di ogni entrata rappresenta il token, cioè la parola nella sua forma flessa, così
come è presente nel testo.
Il secondo elemento è il Lemma, cioè la forma canonica del token.
Successivamente abbiamo la descrizione della Part-of-Speech, espressa in forma abbreviata. In
alcuni casi, come per le congiunzioni e le preposizioni, non abbiamo bisogno di altri elementi dato
che la parola non ha un contenuto semantico pieno né forme flesse.
Successivamente è possibile trovare alcune informazioni che vanno a specificare semanticamente o
sintatticamente il tipo di POS: per i Nomi, ad esempio, abbiamo la dicitura “Npr” che indica la
presenza di un Nome Proprio, per il verbo, invece, troviamo “rif” che indica la forma riflessiva del
verbo.
Altre informazioni sintattiche come il genere o il numero sono espressi dalle lettere minuscole “m”,
“f”, “p” o “s”.
Le informazioni semantiche aggiuntive, vengono aggiunte in base all’analisi che si sta effettuando.
In questo caso abbiamo informazioni come “MOV” che indica che il Verbo è un verbo di
movimento, “Sogg:ANIM” che specifica il tag semantico che il soggetto del verbo debba avere,
“ANIM” che indica, ad esempio, che il nome è di qualcosa di Animato.
Successivamente vanno definite una serie di istruzioni o Regole per il riconoscimento dei pattern linguistici
presenti nel testo. Vediamo, di seguito, un esempio di regole in grado di rispondere alla domanda 1:
9
R1: Se F contiene ‘Dirigersi’, cerca $Soggetto$ Animato’ e
$Destinazione’$ introdotta da preposizione;
R2: Se V 3ª pers. Plurale cerca $Soggetto$ al plurale o più
soggetti coordinati;
R3: Scrivi: Agente = $Soggetto$;
R4: Scrivi: Azione = Movimento;
R5: Scrivi: Destinazione = $Destinazione$
Nell’esempio sono riportate 5 semplici regole, due delle quali sono regole di lettura, che scorrono il testo in
cerca del pattern che specificano, e tre sono regole di Scrittura, che invece producono l’output specificato
nelle prime due regole.
La regola R1 scorre il testo fino a trovare il verbo “dirigersi” e, se lo trova, cerca un Nome etichettato come
Animato da inserire all’interno di una variabile $Soggetto$. I due simboli Dollaro che racchiudono la parola
“Soggetto” stanno ad indicare che si tratta di una variabile, cioè di un costrutto virtuale di tipo “Stringa”
(cioè alfanumerico) che assume, di volta in volta, un valore diverso.
La regola R2 specifica che se il verbo è alla terza persona, allora il soggetto dovrà essere plurale o dovrà
contenere più soggetti in relazione di coordinazione.
Le regole di scrittura, invece, permettono di andare ad inserire in una struttura dati già pronta, il contenuto
di determinate variabili. Nel caso in questione, l’output generato sarebbe il seguente:
Output:
Agente = Berto e Maso;
Azione = Movimento;
Destinazione = Barile.
Un esempio pratico di applicazione delle regole è quello della Sentiment Analysis. Prediamo ad esempio le
seguenti frasi:
1. Le camere erano pulite quando ce le hanno consegnate, in alcune c’è il bagno privato.
2. Lo sconsiglio nella maniera più assoluta
3. Il film non è stato bruttissimo, ma Johnny Depp è fantastico.
4. Hotel accettabile, ma cortesia zero!
Le quattro frasi sopra rappresentano delle opinioni espresse da utenti di diverse piattaforme web circa
diversi prodotti. Un’opinione è definita come segue:
𝑂𝑗, 𝑓𝑗𝑘 , 𝑜𝑜𝑖𝑗𝑘𝑙 , ℎ𝑖, 𝑡𝑙
Dove viene definito un Oggetto O e una serie di sue Features (o caratteristiche) f, un orientamento (che
può essere positivo o negativo) oo, un Opinion Holder h ed un tempo t.
Per quanto riguarda la Sentimen Analysis, in fase di costruzione del dizionario elettronico è necessario
inserire informazioni semantiche riguardo la polarità di ogni singola parola. In una prima fase iniziamo ad
aggiungere un valore di polarità compreso tra -3 e +3 agli aggettivi presenti nel dizionario:
10
pulito: A, Positivo (+2)
bruttissimo: A, Negativo, Forte (-3)
fantastico: A, Positivo, Forte (+3)
accettabile: A, Positivo, Debole (+1)
aggiungendo a questo dizionario una semplice regola lessicale (non sintattica) che determina che in
presenza di un aggettivo polarizzato, il valore di polarità va aggiunto al valore totale della frase. Il risultato
sarebbe il seguente
1. Le camere erano [pulite,+2] quando ce le hanno consegnate, in alcune c’è il bagno privato.(+2)
2. Lo sconsiglio nella maniera più assoluta (0)
3. Il film non è stato [bruttissimo,-3], ma Johnny Depp è [fantastico,+3].(0)
4. Hotel [accettabile,+1], ma cortesia zero! (+1)
Ovviamente questo tipo di rappresentazione che non fa nessun affidamento alle strutture sintattiche
presenti all’interno delle frasi. Inoltre, considerare solo gli aggettivi è riduttivo, dato che, molto spesso la
polarità può essere data anche da altri elementi lessicali come i nomi o i verbi (ad esempio sconsigliare).
Aggiungiamo al dizionario gli elementi mancanti:
sconsigliare: Verbo, Negativo, Forte (-2)
In alcuni casi, come accade per la frase numero 3, è necessario andare a specificare delle regole sintattiche
per il riconoscimento della negazione. Importanti elementi portatori di polarità potrebbero, inoltre, essere
rappresentati dalle frasi idiomatiche.
Aggiungendo una regola che specifica che, un aggettivo di tipo negativo/positivo forte (+-3), preceduto da
un “non” o da un altro avverbio di negazione, vede modificare il valore di polarità apportato alla frase in un
Positivo/negativo debole. Nel caso in questione, se “bruttissimo” implicava un punteggio di -3, “non
bruttissimo” avrà un valore di +1. Andando ad aggiungere queste nuove regole il risultato si modificherà nel
seguente modo:
1. Le camere erano [pulite,+2] quando ce le hanno consegnate, in alcune c’è il bagno privato.(+2)
2. Lo [sconsiglio,-2] [nella maniera più assoluta,*3] (-6)
3. Il film [non è stato [bruttissimo,-3],+1], ma Johnny Depp è [fantastico,+3].(+4)
4. Hotel [accettabile,+1], ma [cortesia zero,-3]! (-2)
Com’è facile osservare, il secondo risultato è più verosimile.
In alcuni tipi di Sentiment Analysis è possibile andare ad estrarre le Features, in modo da poter attribuire
determinati valori di polarità solo ad una specifica caratteristica dell’oggetto dell’opinione. È il caso della
frase 3, dove l’aggettivo “fantastico” è riferito esclusivamente ad un attore del film, della frase 1, dove
viene specificato che “le camere” sono pulite o della frase 4 che indica che la “cortesia” del personale era
nulla.
Introducendo i relativi Tag semantici al dizionario, è possibile andare a recuperare questi elementi
all’interno delle frasi e attribuire la polarità dell’aggettivo a loro riferito, solo alla specifica feature. Un
esempio di Tagset per le frasi in questione è il seguente:
11
Nomi di cibi, bevande Tag FOODSERVICE
‘cibo’, ‘pranzo’, ‘cena’, ‘cucina’, ‘ristorazione’, ‘ristorante’ Tag
FOODSERVICE
‘cortesia’, ecc… Tag ACCOGLIENZA
‘camere’, ‘stanze’, ‘suite’ Tag STRUTTURA
‘Johnny Depp’ Tag CAST
Ovviamente, le regole presentate in questo documento sono un esempio estremamente semplificato di ciò
che può rappresentare un parser sintattico. Normalmente, per la definizione di questo tipo di regola viene
utilizzato un formalismo matematico come le Catene di Markov, chiamate, in questo caso, Automi a Stati
Finiti o Grammatiche a Stati Finiti.
Una grammatica a stati finiti per il semplice tag delle espressioni che indicano una data, se vuole
comprendere tutte le possibili strutture sintattiche possibili, assume forme complesse come quelle
nell’esempio seguente:
In questa grammatica la regola di scrittura è rappresentata dai caratteri in neretto posti al di sotto dei nodi,
in particolare, l’intera sequenza riconosciuta verrà taggata come <DATA>. Successivamente l’automa scorre
il testo cercando in esso le informazioni riportate all’interno dei nodi che lo compongono. Questi nodi
possono essere nodi vuoti (indicati dalle sole frecce o dalla presenza del codice <E>, empty), metanodi,
indicati dal colore giallo, che consentono il collegamento con altri automi, e normali nodi che contengono
stringhe di testo.
Riepilogando, l’analisi linguistica basata sulle regole rende possibile ricerche molto più approfondite che
una semplice analisi statistica. Rende possibile, di volta in volta, l’estrazione dei diversi elementi che
caratterizzano un testo. Inoltre, le regole sintattiche sono costruite a partire dalle strutture sintattiche
definite da una determinata lingua.
12
Ciononostante, oltre ad un costo in termini di tempo e di lavoro esponenziale al task da affrontare ed
all’inefficienza computazionale, un set di regole funziona esclusivamente per un determinato task, su una
serie di testi di una certa lingua, appartenenti ad un determinato dominio e per un determinato topic.