




























































































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Appunti completi del corso di informatica umanista a.a. 23/24 con la prof.ssa Di Buono
Tipologia: Appunti
1 / 105
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





























































































What is digital humanities? Innanzitutto, è la definizione inglese di informatica umanistica. In italiano, pone più l’accento sull’informatica, mentre in inglese rimarchiamo che è nell’ambito più umanistico. È l’evoluzione coerente e necessaria nella ricerca e nella divulgazione delle discipline umanistiche. Il termine inglese Digital Humanities è più adeguato perché porta il focus sugli aspetti delle scienze umane. È importante non il fatto che sia l’informatica ad essere caratterizzata dall’umanesimo, ma che le scienze umane si stiano appropriando di strumenti informatici, ciò significa che tutte le scienze umane (studi letterari, studi linguistici, studi archeologici ecc., tutte quelle scienze considerate molli - soft science1 ) si avvalgono delle tecnologie informatiche per produrre applicazioni che servono a migliorare lo studio degli oggetti di analisi delle scienze umane e l’accesso alle informazioni e alla conoscenza in tale ambito (non solo oggetti fisici, ma anche oggetti immateriali) Un oggetto di studio delle scienze umane potrebbe essere un libro, un reperto archeologico. C'è chi pensa che scannerizzare un foglio voglia dire fare digital humanities, ma non è così. Esistono una serie di aspetti che devono essere presi in considerazione. Non si tratta di trasformare un oggetto in digitale, si tratta di utilizzare l'informatica per presentare gli oggetti informativi. Un oggetto di studio delle scienze umane potrebbe essere anche un pezzo di coccio, lì per lì non ci dice nulla ma potrebbe avere un significato, una serie di informazioni che vanno oltre la sua fisicità. Vi sono due discipline connesse e legate all'informatica umanistica: L'informatica che si occupa del trattamento automatico dell'informazione. Le scienze dell’informazione discipline che si occupano dei processi ed i sistemi di reperimento, conservazione, trasformazione e trasmissione dei dati informativi. È bene ricordare che niente esiste senza la mano umana. Gli oggetti delle scienze umane non vivono da soli, sono intrecciati ad altri oggetti o aspetti della società o delle scienze umane come, ad esempio, il pezzo di coccio che esiste in relazione magari all’Impero Romano. C'è inoltre la necessità di trasformare i dati, abbiamo bisogno di trasformare ambiguità in indeterminatezza in schemi, regole, strutture e modelli; per esempio, prendo note a penna su un testo e queste eseguono codici che sono MIEI codici di linguaggio, uno schema tutto mio di linguaggio e l'altra persona non riuscirebbe ad interpretare ciò che ho scritto. Per renderla accessibile dobbiamo usare delle convenzioni, ossia dobbiamo creare dei sistemi che permettono di creare degli oggetti computabili , che devono essere rappresentati sotto forma di modello formale. La modellizzazione è una procedura di estrazione di certe proprietà ritenute rilevanti dell'oggetto di studio ai fini della sua rappresentazione. A partire da un certo oggetto identifico delle informazioni utili, per esempio, in un libro posso definire l'autore, la casa editrice e altre informazioni sull’oggetto. Tale procedura (di modellizzazione) deve essere espressa in modo formale, basata su simboli e su un certo numero di operazioni che, su tali simboli, è possibile eseguire. Solo in questi termini il modello può dirsi computabile. Le metodologie informatiche servono per le operazioni legate alla rappresentazione e alla conservazione delle fonti, alle modalità della manipolazione, ai criteri del trattamento e alle forme della distribuzione. Supponiamo ad esempio che io debba accedere ad un libro antico, ad esempio tanti anni fa, il testo non era accessibile in digitale; quindi, faccio le foto ad un libro antico. Questa è una forma di digitalizzazione in sé, ma non è completa. È stato successivamente trasformato in diapositive (le foto del libro) di cui bisognava fare scansioni per rendere digitale. Cos’è un hashtag? È una forma di aggiunta di informazioni su quello che sto pubblicando. È quindi ricercabile. Esistono quindi dei metodi per garantire che le informazioni vengano ricercate e visualizzate. Ci sono quindi dei METODI. I metodi sono le modalità dell'approccio computazionale ad una fonte di informazione, come analisi, trattamento ed elaborazione, disseminazione e fruizione lato utente.
MODELLI : i modelli sono un sistema formale più adatto a descrivere una sorgente dati, individuandone le proprietà pertinenti, sulla base degli obiettivi della ricerca; SISTEMI DI FORMALIZZAZIONE: come linguaggi formali e tassonomie, vocabolari controllati e istanze di normalizzazione. Vi sono inoltre degli strumenti teorici metodologici e tecnici ossia una realizzazione di un sistema informatico accessibile e finalizzato alla creazione di oggetti digitali complessi. Il rapporto tra scienze e umane e informatica è complesso. La comunità IU è vasta e diversificata quindi è difficile trovare un modello epistemico comune. Facciamo un cenno alla storia della linguistica computazionale. Ufficialmente viene indicato l'anno 1950 ma se vogliamo essere precisi l'anno in realtà è il 1949. Perché il 1949? Perché Padre Roberto Busa era uno studioso dei testi di San Tommaso d’Aquino e lavorava manualmente a questi testi. C'è da considerare che i testi di San Tommaso d’Aquino erano enormi, il testo più lungo aveva nove milioni di parole. Padre Roberto busa ebbe la fortuna di incontrare Thomas Watson presidente dell’IBM di New York (Sigla della società informatica statunitense International Business Machines). Grazie alla tecnologia, gli permise di effettuare un'analisi semiautomatica di quei testi di San Tommaso, mettendo a disposizione i calcolatori (che erano delle macchine a schede perforate) con cui realizzare il progetto di padre Roberto Busa. Infatti, il primo laboratorio ci fu a Gallarate, nel Varese. Dall'idea di padre Roberto Busa verranno finanziati altri progetti da enti privati. Questo è importante da sottolineare perché vuol dire che il progetto era interessante in questo ventennio; perciò, si mettevano a disposizione gli enti privati. Un altro momento importante è l’avvento del web che si ha più o meno a fine anni 90. L’avvento del Web è quello che modifica drasticamente le Digital Humanities perché se esse lavorano su prodotti della conoscenza testuale scritta, il Web aumenta la disponibilità di tali materiali perché mette a disposizione una serie di documenti accessibili a tutti. Nell’evoluzione, il fatto che si passi da Web 1.0 al Web 3.0 è importante in termini di aumento di contenuti disponibili, ma anche in termini di varietà di tali contenuti. Web 1.0 - Content Delivery : dal 1991 fino ai primi anni 2000. In questa fase, i contenuti presenti sul web sono statici, cioè prodotti da una fonte top-down (dall’alto verso il basso), che produce contenuti. La persona che accede sul web non produce, ma semplicemente fruisce i contenuti. Gli studi delle DH si focalizzano soprattutto su obiettivi di: raccolta, preservazione, presentazione, comunicazione dei contenuti. Web 2.0 - Sharing/User-generated Content : fase in cui l’utente da ricettore passivo di informazioni sul web inizia a produrle. È la fase in cui nascono i blog e quindi è una rivoluzione perché la tecnologia avanza così tanto che consente anche a chi non ha idea di come si faccia una pagina Web di condividere contenuti. I social media sono un esempio di possibilità di condivisione. Gli studi delle DH si focalizzano soprattutto su obiettivi di: manipolazione, cura, miscelazione, moderazione, revisione e modifica dei contenuti. Web 3.0 - Semantic Web : fase che inizia verso la fine del primo decennio degli anni 2000 e tuttora continua. Viene chiamato anche Web Semantico ed ed è ciò che si crea adesso. Il Web 3.0 esiste perché la tecnologia consente di processare certi contenuti: c’è un rapporto biunivoco tra avanzamenti tecnologici e ricerca teorica. Si basa su informazioni concettuali, semantiche (non solo più semplici dati come nel Web 2.0, dove c’erano informazioni non sviluppate dal punto di vista di rete semantica, ma legate ad aspetti del testo e delle immagini). Sono sviluppate anche a livello tecnologico le ontologie, una forma di rappresentazione dei contenuti che va oltre il semplice dato visibile (detto anche realizzazione linguistica). Gli studi delle DH si focalizzano soprattutto su obiettivi di: estrazione, interpretazione, analisi e strutturazione dei contenuti 2 LEZ (11/10) NLP e DH condividono una radice comune che viene storicamente riconosciuta nel lavoro di Padre Busa: il suo progetto Index Thomisticus, iniziato negli anni Quaranta del secolo scorso, usava la potenza di calcolo
perché cominciano ad essere creati contenuti dal basso, che significa sviluppare un blog, cioè persone non esperte che hanno la possibilità, in maniera molto semplice di creare e condividere contenuti di qualsiasi tipo. Il passaggio tra le due versioni del web iniziò nei primi anni 2000 rappresenta un momento molto importante non soltanto per l’applicazione di tecnologie informatiche ai testi, ma è fondamentale anche per le analisi più precise, che vedremo quando analizzeremo i diversi task dell’analisi testuale automatica (sentimental analysis). È un task di analisi testuale molto importante, perché è un task che si concentra sull’analisi del sentimento espresso attraverso un testo ed è importante per il marketing. Quindi questo web 2.0 diventa importante quando noi iniziamo a produrre i dati. Anche le nostre chiacchiere o i nostri post sono scienze umane, perché le scienze umane sono dati testuali non di scienze forti, non parliamo di matematica, ma anche il post sul social è un possibile oggetto dell’analisi delle scienze umane. Dai post è possibile effettuare uno studio sull’evoluzione della lingua, un’analisi diacronica o sincronica dell’evoluzione linguistica di quando eravamo più giovani, o dei giovani e fare quindi un’analisi sociolinguistica. Questa del web 2.0 è una fase importantissima perché ha dato una spinta alla ricerca nell’ambito. Poi c’è il web 3.0, il cosiddetto web semantico, ma è una semantica riferita ai dati che sono presenti sul web, cioè come possiamo formalizzare delle informazioni ulteriori rispetto ai dati che sono presenti sul web. Proprio perché nel momento del web 2.0 i contenuti si sono moltiplicati, quindi nascono diversi tipi di problemi. Come accediamo a questi contenuti? Come li troviamo? Come fanno i motori di ricerca a recuperare queste informazioni? I motori di ricerca nel web 1.0 agivano ancor più diversamente: si utilizzavano gli operatori booleani. Le ricerche iniziali sul web venivano fatte tramite parole chiave che venivano messe su un documento e i primi motori di ricerca lavoravano sull’associazione logica che veniva fatta tra queste parole chiave. Se volevano cercare una canzone di Madonna, si usavano questi operatori e si mettevano in relazione le due parole chiave, canzone e Madonna , con gli operatori booleani and/or/not. Con lo sviluppo di contenuti con il web 2.0 non si trovava nulla con and/or/not perché si era andati oltre con la creazione di contenuti. C’è stata una visione inizialmente di Tim Berners Lee, padre del web semantico, la cui idea era quella di utilizzare informazioni semantiche aggiuntive, andando oltre le parole chiave, ed è questo che ci permette di fare le ricerche come le facciamo adesso su un motore di ricerca. All’epoca erano gli anni 2011-2012, quando Tim Berners Lee prefigura l’avvento del web semantico, c’è voluto un po’, infatti lo stiamo ancora realizzando, però, come possiamo vedere dalla semplicità con cui recuperiamo le informazioni su internet, che è stato fatto e si sta facendo un buon lavoro. una ragazza chiede esempi pratici di informazioni semantiche aggiuntive. La TEI ha questa classe che permette di specificare l’enfasi di un testo. Se noi leggiamo un testo e vediamo una parola messa tra virgolette, noi capiamo che questa è una forma di enfasi che viene applicata al testo. Per una macchina non è così; una sequenza in corsivo non è riconosciuta come sequenza in corsivo ma come semplice sequenza di caratteri e quando raramente il corsivo viene riconosciuto dal lettore, la sua enfasi all’interno del testo non viene letta dalla macchina. Stessa cosa per il linguaggio non standard: chi lo dice alla macchina? Siamo noi che aggiungiamo una nota. Quando noi aggiungiamo queste informazioni semantiche, come ad esempio la TEI che formalizza attraverso le annotazioni sul testo, che è una parola in corsivo, se stiamo utilizzando lo standard della TEI mettiamo un’annotazione per far capire alla macchina che questa parola in corsivo significa che il protagonista o l’autore voleva sottolineare che c’è dell’enfasi. Altri tipi di annotazioni che possiamo ritrovare nel testo riguardano qualsiasi tipo di informazione che noi possiamo aggiungere. Questo si fa anche per i dati linguistici, ad esempio voler annotare qual è la radice all’interno di una parola, la differenza tra il morfema che indica la radice e il morfema flessivo. Questa è una cosa importante perché noi quando processiamo informazioni e conoscenza in realtà andiamo anche un po’ per associazioni. Se non conosciamo bene l’uso di una parola o il significato magari lo deriviamo perché riusciamo a prendere la radice, la riconosciamo e associamo il significato. La macchina questo non lo può fare, lo fa nel momento in cui noi forniamo un’annotazione, che le fa capire che per esempio l’ultima lettera di una parola con la lettera I sta indicando maschile plurale. Queste informazioni possono essere date tramite annotazioni. Si parla di testi perché tendenzialmente gli oggetti di analisi delle scienze umane sono per lo più testi di letteratura, in quanto la nostra conoscenza è codificata in testo, non in parole. Quindi si viene a creare una sovrapposizione tra quelle che sono le digital humanities e la linguistica computazionale. Ma le digital
humanities si occupano anche di archeologia, di reperti archeologici come dei quadri, quindi non necessariamente testi. Anche in quel caso, il manufatto archeologico può essere scansionato in 3D e può avere un riferimento testuale, perché l’archeologo che lo trova in genere tiene un diario in cui descrive che cosa ha trovato e come ha trovato quel pezzo, quindi la conoscenza umana passa principalmente per i testi, o meglio dire per il linguaggio. Per cui un’analisi basata su aspetti di linguistica computazionale è quella che va per la maggiore, che va a creare questa sovrapposizione con le digital humanities. La linguistica computazionale è la disciplina scientifica e ingegneristica che si occupa di comprendere il linguaggio scritto e parlato da una prospettiva computazionale e di costruire artefatti che elaborino e producano utilmente il linguaggio, sia in blocco che in un contesto di dialogo. ( traduzione della definizione di Stanford Encyclopedia University). Si occupa della comprensione da una prospettiva computazionale e di costruire artefatti che processano in maniera utile e producano linguaggio, cioè parliamo di chat, che possono essere anche in forma di dialogo come chat GPT. Questa definizione è di qualche anno fa ma valida. La linguistica computazionale è una branchia dell’intelligenza artificiale, anche perché si occupa di tutte le tecnologie del linguaggio. La linguistica computazionale si occupa di creare delle regole descrittive del trattamento automatico del linguaggio: se dobbiamo utilizzare la tecnologia qualcuno deve dire come funziona il linguaggio e questo viene fatto dopo un’analisi del linguaggio naturale. Quindi non è solo linguistica strutturale. Ci sono le NLP ( Natural Language Processing Technologies ) e poi ci sono una serie di skills base che riguardano la competenza in certi aspetti di funzionamento delle macchine, la struttura logica delle macchine e aspetti d’informatica. Il trattamento automatico del linguaggio (LLP) si compone di due aspetti: understanding e generation , cioè la parte di comprensione e la parte di generazione, così come noi comprendiamo, cessiamo e generiamo linguaggi. Però adesso si sta andando verso un architettura unica. Il termine architettura in informatica fa riferimento ad architettura di sistema, in riferimento a come è strutturato un sistema informatico, cioè che passaggi svolge all’interno di questo sistema, Un’altra definizione di linguistica computazionale è: si tratta di una disciplina che si occupa di elaborazione computazionale del linguaggio naturale, dal punto di vista teorico si basa sulla linguistica formale ( la matematica, la logica, le scienze cognitive e l’informatica). Perché la matematica e la logica? Perché i linguaggi e le lingue naturali possono essere interpretate su base matematica e anche gli aspetti di logica rientrano e ci permettono di entrare in comunicazione con le macchine. Le macchine utilizzano sistemi matematici e logici, se vogliamo che le macchine processino un testo come fanno gli umani dobbiamo avvicinarci al loro linguaggio, quindi matematica e logica sono aspetti molto importanti. Da un punto di vista applicativo si basa su metodologie sviluppate nel campo della linguistica applicata, quindi anche in questo caso non è soltanto l’ambito tecnologico. Ad esempio, questo che c’è scritto sulla slide è una sequenza di caratteri per una macchina, quest’ultima codifica in 0 e 1 (linguaggio binario). Quindi come si rappresenta per la macchina? Si rappresenta utilizzando dei linguaggi di marcatura che permettono di mettere queste informazioni semantiche-aggiuntive alla sequenza di caratteri. L’elaborazione di grandi quantità di dati testuali, arricchendole di informazioni linguistiche ne migliorano il trattamento, l’interpretabilità e l’interconnessione. Sono delle forme di rappresentazione della conoscenza che noi aggiungiamo per aiutare le macchine a comprendere cosa quella sequenza di 0 e 1 significa. Ad esempio quando google ti salva da uno spam lo fa attraverso l’analisi testuale dei contenuti. Queste sequenza di caratteri 0:1 sono state codificate con delle informazioni che permettono di fare queste associazioni semantiche. Quali sono i dati che utilizza la linguistica computazionale? Ci sono i dati ecologici e i dati controllati, sono dati testuali sia orali che scritti. Definiamo dati ecologici quelli che sono stati prodotti nell’ambiente in cui il soggetto che li ha prodotti si trova e non sono stati realizzati per degli esperimenti ed hanno vantaggi e svantaggi. Dall’altra parte i dati controllati sono i dati sviluppati a tavolino, sono stati creati con un obiettivo specifico e per testare una certa ipotesi. I dati ecologici sono dati naturali, sono così come sono stati prodotti, mentre i dati controllati hanno una visione di un certo tipo che viene applicata e non è detto che si verifichino
N = numero di token V = vocabolario = insieme di tipi, |V| è la dimensione del vocabolario La differenza è nei token perché abbiamo il primo che ha 2,4 milioni di token, ma soltanto 20mila type, ciò significa che la varietà lessicale è bassa perché il corpus è molto ampio, ma il vocabolario è ristretto. L’ampiezza del vocabolario di un corpus ha certe informazioni. Diciamo type e token in riferimento a dei corpus e a dei corpora nei quali si trovano questi type e token. I corpora sono collezioni di testi che sono caratterizzati da certe informazioni perché un testo può essere scritto da uno o più autori specifici, può essere scritto in un momento specifico, in una varietà specifica, in una lingua specifica e con una funzione specifica. Queste sono tutte caratteristiche che ci permettono di considerare le informazioni di type e token all’interno di un testo, cioè l’ambiente in cui queste parole esistono. Corpus è una raccolta in formato elettronico e di materiale linguistico il cui campionamento segue criteri di rappresentatività per la lingua o per la varietà linguistica rappresentata e il cui scopo è servire da base per la ricerca linguistica. Se dobbiamo fare riferimento ai testi, li analizziamo in termini di corpora, cioè collezione di testi. Un fenomeno deve essere analizzato in base a dei dati coerenti e consistenti, siano essi ecologici o controllati. Quindi anche se li sto producendo in laboratorio, i corpora utilizzano nella maggior parte dei casi dati ecologici. Quali caratteristiche si considerano all’interno di un corpora? La lingua con cui questi corpora sono stati scritti, o meglio i testi che fanno parte del corpus che sono stati scritti, la varietà linguistica (esempio African American), il code switching ( esempio passaggio da spagnolo a inglese), il gene e le informazioni demografiche dell’autore. Ad esempio posso analizzare l’utilizzo di anglicismi nel linguaggio giovanile su Twitter, per farlo andrò a raccogliere i tweet scritti dai giovani in un certo ambito, in un certo periodo di tempo ecc. Altre differenze in base alle quali possiamo distinguere i corpora sono:
dividono in base a caratteristiche come mezzo di veicolazione della lingua, tipologia di testo, asse temporale o numero di lingue, stiamo dicendo che abbiamo in mente di utilizzare questi corpora per diverse tipologie di analisi e scopi. Un corpus parallelo italiano-inglese, per esempio, potrebbe servire per un’analisi filologica, critica, ma anche per una traduzione automatica (i primi sistemi di traduzione automatica utilizzano questi corpora paralleli per vedere proprio come si deve tradurre; solo una parte di questi sistemi ha delle regole sintattiche sulla parte di generazione del linguaggio, ma spesso utilizzano dei dati). Noi dobbiamo ragionare in termini di analisi automatica: ad esempio, se collezionassimo testi scritti dallo stesso autore o magari autori diversi appartenenti alla stessa corrente, potremmo fare delle analisi stilometriche, sia manuali che automatiche. I corpora si possono utilizzare per diversi obiettivi, diversi task. Facciamo una differenza: quando parliamo di trattamento automatico del linguaggio, stiamo distinguendo tra due tipi di task: intermedi e finali. Quelli intermedi son detti anche downstream task perché il loro fine non si esaurisce nel momento in cui li terminiamo, ma si usano come passaggi intermedi per task più complessi. Ad esempio, diciamo che i corpora possono essere utilizzati per le liste di frequenza. In questa tabella sono riportati i 15 lemmi più frequenti del corpus ItWac , un corpus in italiano: qui abbiamo la lista dei lemmi e la frequenza all’interno del corpus. Questo tipo di info come curiosità può essere utile vedere che alcune parole hanno una frequenza molto alta, ma in realtà è un’ informazione usata insieme ad altre come input per creare un task più complesso (a partire da questo si potrebbe fare un’analisi stilometrica se andassimo ad estrarre una serie di parole che formano il lessico di questo corpus per vedere che tipo di lessico usa l’autore in termini di uso di nomi concreti, astratti ecc). Secondo voi questa lista è informativa? In questa lista abbiamo preposizioni e articoli che sono dei connettivi che hanno funzione nel discorso ma non hanno carica semantica. Perché questa lista così presentata non è completamente utile? Il discorso è che non ci danno informazioni perché sapere che la preposizione di o l’articolo il hanno frequenza molto alta in un corpus significa non dire niente. Osserviamo questo per dire che le parole cosiddette funzionali ( stop words ) non sono semanticamente piene e devono essere eliminate; quando vogliamo fare qualsiasi tipo di analisi (che sia automatica o propria delle scienze umane come un’analisi filologica) e vogliamo farlo automaticamente, questo tipo di parole non devono essere considerate. Ieri vi dicevo che abbiamo questa forma di rumore (o noise) e proprio questo è rumore, questo mi fa sballare (termine tecnico) i risultati perché non ci danno informazioni, anche perché gli unici due verbi che compaiono nella lista sono essere e avere , dove essere può essere una copula o occorrere con i light verb dove la carica semantica è tutta nella parola che accompagna i verbi essere e avere (essere a capo: la carica semantica viene dalla seconda parte). Nel recupero delle singole parole essere e avere schizzano in alto chiaramente perché molto utilizzati. C’è anche l’ : come lo stiamo trattando? tendenzialmente quando siamo di fronte ad elisione o caduta si ricostruisce nella lemmatizzazione, si va a sostituire l’apostrofo col
macchina sono 2 parole, però questo non aiuta la macchina a trovare “presentarsi" nel vocabolario. In certi casi c’è un problema di ambiguità: se la macchina processa “si presenta” come 2 parole, quel “presenta” è 1 parola, quindi, dato che il lemma di “presenta” è “presentare”, la macchina va a cercare “presentare” nel vocabolario, non presentarsi. Un altro problema sono i composti: Rock’n’roll è un composto che ha apostrofi, così come New York presenta solo uno spazio, però già non vale più la regola che un token è una sequenza di caratteri tra due spazi bianchi. Come potremmo risolvere il problema delle parole composte? Dando delle eccezioni , cioè dicendo alla macchina che i token sono sequenze di caratteri tra spazi bianchi tranne che in certi casi. Ovviamente questo noi non possiamo farlo in maniera assoluta perché la lingua evolve, possiamo fare una lista quasi esaustiva però c’è sempre il caso in cui può essere che manca qualche tipo di informazione. Quindi che cosa succede tra le lingue che non hanno spazi bianchi? Per esempio il cinese, il giapponese. Come effettuiamo la tokenizzazione? E’ un problema, perché se noi tokenizziamo in maniera diversa otteniamo risultati. Considerando che noi ci basiamo su delle convenzioni perché queste informazioni ci servono per dare informazioni alle macchine, anche in questo caso usiamo una convenzione: in cinese e altre lingue che non usano spazi bianchi diciamo che ogni carattere è un token. Questo è valido per il cinese, mentre per altre lingue come thai e giapponese questo sistema non funziona e si utilizzano delle regole di tokenizzazione più complesse (queste lingue soffrono di queste problematiche, ma le lingue sottorappresentate hanno altri tipi di problemi perché non sono stati sviluppati strumenti che ci permettono di fare la tokenizzazione velocemente). Tutti questi problemi si verificano, però tendenzialmente esistono degli strumenti (semi)automatici che vi permettono di fare la tokenizzazione in italiano velocemente. Queste altre lingue, invece, hanno il problema che anche operazioni semplici e passaggi intermedi come la tokenizzazione devono essere gestiti con soluzioni più complesse. Dopo la tokenizzazione facciamo la normalizzazione: trasformare parole (token) in un formato standard. Il testo, che è una sequenza di 1 e 0, viene diviso in token e in un secondo momento questi token vengono normalizzati. Ma perché normalizziamo? Affinché ci sia uno standard , perché se io vado a fare delle frequenze, per esempio io voglio sapere che U.S.A e USA (con e senza punto) stanno indicando la stessa cosa. Però anche qui abbiamo un problema: mettiamo caso che decido che gli acronimi sono tutti senza punto. Dico che tutte le parole che presentano dei punti in questa sequenza devono essere normalizzati in termini di carattere-carattere. Qui con USA e U.S.A. quale sarebbe il problema? Il problema è che se io sono un parlante italiano e tolgo il punto USA mi è diventato il verbo usare. Si deve tener presente che questo tipo di normalizzazione si può fare, ma facendola otterrò del rumore perché c’è una forma di ambiguità. La normalizzazione si fa per uno standard, perché quando faccio un tipo di analisi, io voglio essere in grado di recuperare tutte le informazioni. Ad esempio, un passaggio di normalizzazione che si fa spesso nel recupero informazioni è rendere tutto il testo minuscolo. Ci sono anche in questo caso problemi: se portiamo tutto il testo in minuscolo, che cosa succede? Fed vs fed Vediamo l’esempio di Fed-fed. Fed è il passato del verbo feed, ma Fed con la maiuscola è in riferimento ai federal americani (è lo stesso principio di U.S.A e USA, in questo caso rimanendo sempre in inglese): quindi ci serve avere questo tipo di standard o di convenzione, però chiaramente siamo consapevoli che stiamo perdendo da qualche altra parte. Dopo la normalizzazione facciamo la lemmatizzazione. Una volta che abbiamo portato USA maiuscolo in minuscolo e quindi abbiamo detto che quello è il verbo usare e non acronimo, ovviamente dobbiamo fare in maniera tale che tutte le realizzazioni linguistiche che fanno riferimento allo stesso lemma vengano portate al lemma (tutti i verbi in italiano vengono portati all’infinito, tutti i sostantivi vengon portati alla forma singolare). He is reading detective stories LEMMATIZZAZIONE: He be read detective story
Prima diciamo alla macchina dove stanno queste parole, quali sono, poi le rendiamo tutte uguali così la macchina può applicare lo stesso processo su tutte le parole, poi possiamo lemmatizzare. La lemmatizzazione avviene tramite parsing morfologico. S e devo portare tutto a lemmi, devo distinguere radice e affisso della parola, dunque dov’è la root che porta la carica semantica della parola e dov’è il morfema che dà il genere al nome oppure la flessione al verbo. In questo modo io posso lemmatizzare le parole. Questo chiaramente è molto semplice per parole che hanno regolarità di flessione, ma per parole non regolari ci sono delle liste. Poi andiamo a segmentare le frasi. Ma come si fa? In teoria con i punti, perché noi diciamo che una frase finisce dove c’è un punto. Qui abbiamo il problema: gli acronimi come li rendo? Se riporto i punti degli acronimi sto dicendo che quella è una frase, però allo stesso tempo se li tolgo USA diventa verbo usare. Che soluzione si potrebbe adottare secondo voi? Ad esempio possiamo dire alla macchina che una nuova frase inizia quando c’è un punto e subito dopo uno spazio. Ovviamente questo non risolve tutti i nostri problemi, ci sarà sempre l’eccezione alla regola (molto banalmente ci sono persone che non mettono lo spazio dopo il punto o può capitare che ci siano dei typo, degli errori di scrittura). Un aspetto che dobbiamo considerare di questo trattamento automatico del linguaggio è che noi proseguiamo utilizzando i linguaggi formali. Un linguaggio formale , termine presente in matematica, logica, informatica ma anche linguistica, è un insieme di stringhe costruite a partire da un alfabeto. Un alfabeto è un insieme di oggetti base, semplici che vengono chiamati caratteri, simboli o lettere. In realtà questo ricorda molto una lingua naturale (badate che t ra lingua naturale e linguaggio formale c’è una vicinanza in termini di elementi utilizzati, ma una differenza di comportamenti ). In generale si ritiene che l’alfabeto su cui viene costruito questo linguaggio formale è un insieme finito di caratteri con i quali, attraverso la loro combinazione, si creano parole che combiniamo ulteriormente in frasi che creano linguaggio. Invece formale fa riferimento al fatto che esistono una serie di convenzioni, che esistono anche nel linguaggio naturale, ma mentre il linguaggio naturale ha possibilità infinite di combinazione, in realtà il linguaggio formale tendenzialmente lavora su sistemi finiti, perché sono costruiti a tavolino quindi vanno a rispondere a delle esigenze e per questo motivo vengono generalmente considerati finiti (vedremo che questo non è vero, o meglio è vero fino a un certo punto). La teoria dei linguaggi formali nasce negli anni Cinquanta in ambito della linguistica ed è usata per comprendere e descrivere le regolarità dei linguaggi naturali ; è una forma per formalizzare i linguaggi naturali che trasformiamo in simboli, a un certo simbolo corrisponde una certa parola e la combinazione di questi serve a descrivere come funziona una lingua naturale. Secondo questa teoria, una lingua naturale è un oggetto matematico. Ne stiamo parlando perché è quello che ci aiuta a portare il linguaggio umano verso la macchina. Nel linguaggio formale diciamo che l’alfabeto è costituito da simboli, da lettere o da token che vengono concatenate nelle stringhe. Queste stringhe messe una dietro l’altra, nell’alfabeto del linguaggio vengono chiamate parole. Negli studi linguistici, per analizzare linguaggi umani si ha soprattutto un approccio di tipo generativo. Tutti i linguisti, generativisti ma non solo in realtà ragionavano in questi termini. Anche quando Turing decripta messaggi in codice lo fa con un approccio matematico e questo è molto utile quando vogliamo trattare automaticamente il linguaggio. Noi stiamo codificando il linguaggio naturale tramite quello formale. Colorless green ideas sleep furiously Questa è una frase famosissima di Chomsky, perché è ben formata da un punto di vista formale; abbiamo due aggettivi, nome, verbo e un avverbio. Questo ci serve per capire la differenza di ciò che accade quando dobbiamo dare delle info alla macchina. Questa frase è accettabile dal punto di vista sintattico, ma da quello del significato no. Chomsky e Schutzenberg descrivono una gerarchia, che identifica 4 tipologie di linguaggi formali che descrivono delle grammatiche diverse che a
processamento dei testi potrebbe servirmi per risolvere il problema dei typo o anche con le diverse inflessioni, quella inglese e americana, nel caso di color/colour. LEZ 4 (13/10) Abbiamo detto che ci sono delle informazioni intermedie, cioè non sono mai l’obiettivo finale del processamento testo però sono comunque task che servono. In realtà questi task hanno come obiettivo quello di aggiungere ulteriori informazioni rispetto a quelle che abbiamo già. Esistono delle risorse già sviluppate, ad esempio nell’inglese ce ne sono tantissime, che presentano delle informazioni che possono essere utilizzate nei nostri task. Quando abbiamo un’informazione base standard, ad esempio, l’assegnazione della categoria grammaticale, queste risorse sono già disponibili. Noi non dobbiamo fare nuovamente il processo poiché applichiamo una libreria che fa automaticamente le operazioni base. Sono risorse linguistiche che rappresentano una lingua e possono essere in forma scritta o in forma digitale, noi faremo riferimento a quelle in forma digitale. L'assegnazione delle informazioni avviene generalmente attraverso quelle che si chiamano linguaggi di marcatura, chiamati anche Mark up Language, sono un sistema di codifica dei testi che si utilizza in diverse situazioni, ad esempio per sviluppare le risorse. Questi linguaggi di marcatura sono generalmente costituiti da un set di simboli che vengono aggiunti nei documenti di testo e servono in alcuni casi per la visualizzazione del documento, in altri casi per aggiungere informazioni. I Mark up Language, ad esempio, si usano per le pagine web (la professoressa ci ha fatto vedere come si vede una sorgente di una pagina web, basta cliccare il tasto destro del mouse e andare su “visualizza sorgente pagina”). Questo, ad esempio, è il retro di una pagina web. Questi linguaggi di marcatura ci permettono di aggiungere informazioni e vengono scritti in questo modo:
Limite dati esempio= I sistemi attuali di machine learning e degli algoritmi che si utilizzano adesso sono algoritmi che usano tantissimi dati di esempio, perché siamo convinti che dando più dati ad un certo punto ci saranno degli esempi buoni che servono alla macchina, quindi si va sulla quantità invece che sulla qualità, quindi è proprio una questione antitecnologica che crea dei problemi anche quando vogliamo creare delle risorse. Che cosa sono le annotazioni? Esistono 3 tipi di annotazione: Le annotazioni informali non sono legate a un linguaggio formale; un’annotazione informale può essere anche l’appunto preso a lezione. Le annotazioni formali sono fatte utilizzando un linguaggio formale e quindi in un formato machine readable (leggibile dalle macchine). Le annotazioni ontologiche sono anche queste in formato machine readable ma sono basate su delle rappresentazioni concettuali che sono le ontologie. In senso informatico sono la rappresentazione di un concetto. Le ontologie servono per annotare i concetti e generalmente c’è un accordo sulle ontologie, che vengono considerate un sistema condiviso; ci sono ontologie linguistiche e ontologie specifiche di dominio per rappresentare certi domini specifici. L’uso del carattere in grassetto indica le idee principali all’interno del testo, il font normale serve per l’out- line descrittiva e il corsivo per i commenti. È informale perché ci sono delle informazioni su come sta avvenendo l’annotazione però in realtà non è né in formato machine readable né condivisa con altri utenti. È qualcosa di noto tra l’autore e coloro i quali hanno accesso al file e possono vedere la legenda. Una macchina appunto ha bisogno di informazioni e queste vengono prodotte attraverso dei sistemi di annotazione.
Esempio: le hate speech detection, su cui si hanno la lecture di un intented speaker (il riconoscimento di discorsi d’odio). In questo caso un’annotazione iniziale che si deve fare per riconoscere questi dati è un’annotazione di tipo semantico e si fa a livello di frase a cui viene assegnata una polarità positiva o negativa. Può essere una frase discriminante oppure le viene assegnato un valore neutro, o addirittura un valore positivo come a indicare che quella frase non contiene messaggi d’odio. È un’annotazione di tipo semantico che viene fatta a livello di frase, ma potrebbe essere fatta a livello di parola; dunque, il problema dell’annotazione è legato a ciò che vogliamo analizzare. Siamo noi che decidiamo cosa annotare. Alcuni fenomeni sono più facili da annotare altri sono più difficili, perché questo? Perché dobbiamo considerare che un'annotazione di un certo fenomeno è in realtà un modo in cui noi vediamo il mondo. Se andiamo a guardare questa lista sulle cose più semplici e difficili da annotare troviamo ad esempio la co-referenza è abbastanza facile da annotare invece la struttura informativa (tema e rema) è più difficile da annotare. Però rispetto alla difficoltà di annotare abbiamo delle soluzioni per quelle più semplici, in quanto ci sono degli schemi che sono stati già realizzati. Ad esempio ci sono degli schemi già consolidati che ci permettono di annotare la morfologia o la sintassi. Ricordiamo l’albero sintattico quello con la frase famosa di Chomsky, dove abbiamo visto che c’era ND per indicare la noun phrase. Quella è una comprensione che usiamo tutti o comunque quelli che usano un certo tipo di schema anche sulle categorie grammaticali. Ad esempio alcuni indicano l’aggettivo utilizzando ADJ (adjective), mentre altri utilizzano altre forme. Come annotiamo? Ci sono dei linguaggi principali di annotazione che sono stati utilizzati: SGML (Standard Generalized Markup Language): è stato il primo metalinguaggio per sfruttare i testi digitali in maniera standardizzata, sostituito da XML. Perché questo linguaggio non ci dice che dobbiamo chiamare il titolo ‘’Titolo’’ (sta a noi decidere le categorie da utilizzare) ma ci dà semplicemente delle regole con cui noi possiamo creare le categorie. Quindi, ad esempio, sappiamo che dobbiamo mettere i tag all’interno di parentesi uncinate con un primo tag che apre la marcatura e poi chiude la marcatura. XML (eXtensible Markup Language): si utilizza per creazione di pagine web ed è molto diffuso. Per cambiare qualcosa dobbiamo innanzitutto mettere il tag e dare un nome a questo tag. Dobbiamo fare un’apertura dei tag e dobbiamo fare una chiusura che va fatta utilizzando degli slash e ripetendo il nome del tag che abbiamo messo all’inizio. Quindi, l’XML ci da delle regole con le quali noi possiamo creare qualsiasi categoria vogliamo. Da un certo punto di vista, quando è stata introdotta questa variazione rispetto all’SGML, c’è stata una rivoluzione, nel senso che si permettevano di creare le tappe e di creare dei documenti che avessero delle informazioni in linguaggio macchina. In realtà poi, c’è un limite che sarebbe anche una sua potenzialità. Qual è? La creazione di categorie illimitate. Ci sono delle categorie alle cui si è arrivati attraverso un accordo per cui io so che per mettere il titolo ad una pagina dovrò scrivere TITLE. Però XML ha delle potenzialità enormi perché permette di creare qualsiasi categoria e di far interagire queste categorie, ma non favorisce la situazione delle etichette da usare. Quando modifico un documento con le etichette che ho creato, questo documento è fine a sé stesso perché non può essere diffuso altrove dato che le etichette le comprendo solo io che le ho create e forse la macchina se do le istruzioni. Quindi XML è un linguaggio potente ma ha il limite delle categorie che si è tentato di superare creando una serie di convenzioni condivise. Il vincolo delle categorie viene dall’accordo esistente tra le persone su come utilizzare il linguaggio.
Vediamo ora come creare un task di annotazione: questo ciclo si chiama MATTER ed è stato sviluppato nel 2013 da Pustejovsky e Stubbs e si usa generalmente nel task di annotazione. È molto importante poiché consente di creare delle annotazioni consistenti e che siano informative. Il nome MATTER viene dalle iniziali delle fasi che dobbiamo compiere in questo ciclo, il quale si compone di 6 fasi:
serve a garantire una consistenza ed una coerenza tra le annotazioni. Quindi, si fa una prima annotazione uguale per assicurarci che siamo sullo stesso setting mentale, raccogliamo le annotazioni e poi c’è una fase di discussione dei casi dubbi. È molto frequente che ci siano dei dubbi in merito a cosa e come annotare. Perché ci sono? Perché il modello può essere imperfetto e poi in secondo luogo perché un’annotazione è una visione del mondo. Innanzitutto, di chi ha deciso il modello rispetto all’obiettivo dell’annotazione, ma ha una visione del mondo anche chi annota. Non è così semplice. L’altra volta dicevamo che, in generale, le categorie grammaticali sono facili da annotare, però se trovo una parola come premiato, quella parola può essere tanto un aggettivo quanto un participio passato e non è detto che io e tu la vediamo allo stesso modo. Quindi anche una cosa apparentemente così semplice, anche su quello ci possono essere dei disaccordi. Per cui è molto frequente che ci siano dei dubbi in merito all’annotazione e questi dubbi devono essere discussi e risolti. Quindi si deve dire all’annotatore “no, quando trovi la parola premiato in presenza del verbo essere, quello sarà un aggettivo.” La ridefinizione dello schema può avvenire dopo la prima fase di annotazione di test, ma anche dopo la discussione dei dubbi e il feedback degli annotatori. Quindi può essere necessaria questa ridefinizione dello schema perché appunto non è esaustivo. Che vuol dire che non è esaustivo un sistema? Che c’è un fenomeno che dovrebbe essere annotato e che nello schema non è previsto. Così come ci possono essere in realtà definizioni non chiare o insufficienti. Come definiamo una classe? Sempre in questo schema di annotazione (nelle slide trovate il link alle linee guida) c’era un problema in “Un incendio divampato alla raffineria di petrolio” in quel caso, “l’incendio” era effettivamente un evento, espresso attraverso un nome. Quindi dovevamo dare delle caratteristiche e descrivere agli annotatori, quali erano le spie, le caratteristiche che facevano ricadere un nome nella categoria eventi. Perché per esempio “fuoco” non era un evento, a differenza di “incendio”. Questo per dirvi che i modelli sono effettivamente complessi e non sono semplici né da sviluppare e né da spiegare a chi deve annotare. https://docs.google.com/document/d/ 0ByR2oTEm29J5N25kNlUtSVd5ZnB2MFhxWEZCOE5WZFo4dG9F/edit?resourcekey=0-Yuln1M7bAW- mH3ZksdiaLA (linee guida) Come si valuta questa annotazione? Attraverso due parametri principali: la correttezza e l’affidabilità. La correttezza è soggettivo. Allora noi possiamo valutare la correttezza rispetto allo schema e rispetto alle valutazioni che noi abbiamo dato nello schema, che è il motivo per cui noi dobbiamo essere precisi. Quanto più siamo precisi e più sarà facile dire se un’annotazione è corretta o meno. Questa storia di “Incendio” e “fuoco” è una storia complicata. Avevamo provato, ma i vincoli non erano abbastanza precisi. Quindi possiamo valutare la correttezza, magari rispetto allo schema e da qui la necessità che lo schema sia ben definito, ma non esiste una correttezza assoluta. Non esiste un’etichetta precisa, sempre valida. Ovviamente esistono gli standard, ma chiaramente le etichette non sono qualcosa di esistente in natura; è qualcosa che noi mettiamo in una formalizzazione che facciamo. È molto importante valutare l’affidabilità. Essa è valutata in termini di coerenza e consistenza dell’annotazione: quanto è affidabile. In una lezione precedente abbiamo parlato di risorse linguistiche e di corpora. Abbiamo detto che ci sono una serie di informazioni che vengono date su queste risorse e queste informazioni riguardano lo schema: viene descritto cosa è stato annotato e come. Questo è il valore di affidabilità, cioè: chi ha fatto l’annotazione? Innanzitutto, si dice, perché l’annotazione può essere automatica. Per alcuni task, si fa un’annotazione automatica. Però bisogna comunicarlo perché io che usato la risorsa, mi faccio un’idea di quanto può essere attendibile la risorsa e che tipi di errore posso trovare. Me lo aspetto che ci siano degli errori in un’annotazione automatica. Quando la annotazione è umana, invece, si da questo valore in generale di affidabilità ma soprattutto si da un valore di coerenza e consistenza dell’annotazione con quello che è l’Inter-Annotator Agreement (IAA)
Con l’IAA è un accordo tra gli annotatori. Considerate che è questo il valore che in genere viene associato all’affidabilità di una risorsa. O meglio, al fatto che gli stessi fenomeni siano annotati con la stessa etichetta, anche se fatti da annotatori diversi. Quindi è quello che ci dice quanto, di che qualità e quanto è affidabile una risorsa annotata. Quanto più alto è l’IAA, tanto più alta è la qualità della risorsa, perché vuol dire che è ben fatto lo schema, che gli annotatori sono ben allenati a riconoscere il fenomeno ed etichettarlo. Come si calcola l’IAA? Lo abbiamo già detto: un set di dati annotato da due o più annotatori e poi la verifica con un tipo di misure che vengono usate per calcolare l’IAA. Adesso le spieghiamo velocemente. Considerate però che ci sono degli strumenti online dove mettere i valori, quante etichette e quanti sono stati annotati in un certo modo da un annotatore e quanto da un altro e viene fatto un calcolo. Queste misure sono: precision e recall. Entrambe vengono combinate insieme per avere la cosiddetta F- measure o F1. Queste misure sono molto importanti perché sono quelle che si utilizzano in tantissimi task di processamento automatico del linguaggio. Le altre misure sono Cohen’s kappa e F-measure. A noi interessa la parte su Precision e Recall perché si usa tantissimo. La precisione calcola la qualità delle annotazioni effettuate. La formula è: Precision = Numero di annotazioni corrette eseguite Numero totale di annotazioni eseguite Ovvero ho un totale di 1000 annotazioni, quante ne sono corrette? 500. Allora la precision sarà del 50%. Il richiamo invece è sulla quantità e viene calcolato analizzando la quantità delle annotazioni effettuate: Recall = Numero di annotazioni corrette eseguite Numero totale di annotazioni corrette attese La precision e la recall sono calcolate sulla parte di riferimento che è sempre lo stesso, ovvero il numero di annotazioni corrette eseguite. Per la precisione, le paragoniamo al numero totale di annotazioni eseguite mentre per la recall, al numero totale di annotazioni corrette attese. Cioè, PRECISION: Ho fatto 1000 annotazioni, di queste, 500 sono corrette. La precisione sarà al 50%. Ho fatto 500 annotazioni corrette, io aspettavo fossero 800. Quindi quello che dobbiamo fare è 500 diviso 800 per vedere quanto effettivamente la recall è. La precision e la recall si possono usare separate, oppure si devono combinare in questa misura F- che consiste nel moltiplicare per due il prodotto. Comunque, online ci sono dei calcolatori. Concettualmente, quello che vogliamo stabilire con questo calcolo è quanto sono precisi gli annotatori e quante riescono a trovarne sul totale di quello che ci aspettiamo. Magari ci sono annotatori molto precisi ma che annotano poco, oppure altri molto bravi ma che hanno una recall bassa perché sono lenti o perché magari non vedono certi fenomeni, magari sono bravi a riconoscere il nome ma non riescono a riconoscere l’aggettivo. Come interpretiamo i valori di questi calcoli? In maniera diversa. Nel senso che ci sono valori alti che vengono considerati tali e vanno dallo 0,60 e 1 e quelli bassi che vanno da 0,01 a 0,40. Ciò dipende da quello che stiamo annotando, cioè ci si aspetta che certi task abbiano un accordo tra annotatori molto alto, come per esempio l’annotazione delle categorie grammaticali, oppure l’annotazione delle entità nominate. Quelli sono dei task considerati semplici, per cui ci si aspetta un agreement alto. Ciò significa che, se io trovo una risorsa online e la persona mi dice che questa risorsa online annota le entità nominate in arabo e abbiamo un agreement del 20%, ovviamente non uso questa risorsa. In genere, quando si calcola un agreement ed è così basso su questi task, si cerca di portarlo ad un livello più alto. Per alcuni task, ci si