Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Analisi del Testo e Linguistica Computazionale: Metodi e Tecniche, Schemi e mappe concettuali di Linguistica

I metodi di analisi del testo in linguistica computazionale, confrontando i metodi basati sulle regole con quelli basati sulla statistica. Viene illustrato il processo di pos tagging e lemmatisation, nonché il calcolo della term frequency (tf) e del term frequency-inverse document frequency (tf-idf) per l'analisi della frequenza delle parole nei testi. Esempi pratici di applicazione di queste tecniche, analizzando capitoli di "lo hobbit" e "il signore degli anelli" di tolkien.

Tipologia: Schemi e mappe concettuali

2019/2020

Caricato il 22/11/2024

alfonso-oliva-4
alfonso-oliva-4 🇮🇹

7 documenti

1 / 11

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
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.
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
1
pf3
pf4
pf5
pf8
pf9
pfa

Anteprima parziale del testo

Scarica Analisi del Testo e Linguistica Computazionale: Metodi e Tecniche e più Schemi e mappe concettuali in PDF di Linguistica solo su Docsity!

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. 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.

  1. 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 differenti forme flesse di una determinata parola (“essere”, “è”, “fu” e “siamo” vengono considerati come un unico type “essere”).
  2. 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:

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 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:

TF =

ni , j

d j

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:

wd = f w, d ∗log

| D |

f w , D )

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: type Tf-Idf Score plates 0, gandalf 0, map 0, belladonna 0, dungeons 0, beautiful 0, grandfather 0, coffee 0, glasses 0, pantry 0, 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

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:

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: Le camere erano pulite quando ce le hanno consegnate, in alcune c’è il bagno privato. Lo sconsiglio nella maniera più assoluta Il film non è stato bruttissimo, ma Johnny Depp è fantastico. 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:

Oj , f jk , o oijkl , hi , tl

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: Nomi di cibi, bevandeTag 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 . 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 , 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. 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.