La linguistica computazionale si concentra sullo sviluppo di formalismi descrittivi del funzionamento di una lingua naturale, che siano tali da poter essere trasformati in programmi eseguibili da computer.
I problemi che affronta la linguistica computazionale – come intuibile dal nome stesso della disciplina – consistono nel trovare una mediazione fra il linguaggio umano, oggetto di studio in costante evoluzione, e le capacità di comprensione della macchina, limitate a quanto può essere descritto mediante regole formali.
Storia della disciplina All'inizio della seconda metà del Novecento, due diversi filoni di ricerca costruirono le fondamenta sulle quali oggi poggia la linguistica computazionale: a) gli studi di padre Roberto Busa intorno all'utilizzo del computer come mezzo di immagazzinamento e di analisi del testo (anni Cinquanta e Sessanta), che sfociarono nella creazione del primo corpus elettronico dell'opera di Tommaso d'AquinoArmando Torno, Il gesuita che mise San Tommaso nel pc, in Corriere della Sera, 11 agosto 2011, p. 39.; b) l'applicazione di metodi formali alle suddette analisi testuali (anni Sessanta e Settanta), che procedette di pari passo ai progressi fatti nel settore dell'Intelligenza Artificiale.
Il neonato settore dell'Elaborazione del Linguaggio Naturale (in inglese Natural Language Processing), fu lungamente influenzato dai metodi deduttivi utilizzati dalla grammatica generativa di Noam Chomsky: questa teoria linguistica, prescindendo dall'uso, cerca di individuare delle regole astratte che descrivano la competenza della lingua posseduta da un parlante.
Di fianco alla tradizione razionalista se ne sviluppò una seconda che dava invece la priorità alla raccolta di ingenti quantità di testi: i corpora. Questo indirizzo (prevalente in Gran Bretagna e negli Stati Uniti) sfruttava metodi statistici per estrarre dai testi regolarità linguistiche, punti di partenza per la descrizione della struttura del linguaggio. Il primo grande successo del "metodo empirista" è datato 1964, anno di comparsa del Brown Corpus di Francis e Kucera: si tratta del primo esempio di corpus nato per lo studio di una varietà linguistica contemporanea, in tal caso l'inglese americano.
La crescita delle dimensioni dei corpora - sempre più fondamentali per verificare l'efficacia degli strumenti - e quella parallela del web - dalle infinite risorse testuali - hanno sancito il prevalere del secondo approccio. Infatti, con l'aumento delle dimensioni del materiale da analizzare, occorrevano tecnologie che potessero affrontare l'immensa varietà delle realizzazioni linguistiche: le astrazioni dall'uso della metodologia razionalista, che avevano portato alla creazione dei cosiddetti "modelli giocattolo" (applicazioni di analisi linguistica inefficaci in contesti reali), erano inadeguate a tale scopo. Inoltre, nacquero linguaggi standard di marcatura come XML che aumentarono l'usabilità e la facilità di scambio reciproco dei corpora e permisero di esplicitare le strutture dei testi.
Oggi la Linguistica Computazionale può contare su numerosi gruppi di ricerca nel panorama scientifico internazionale; un buon numero di centri sono presenti anche sul territorio italiano (per esempio l'Istituto di Linguistica Computazionale del Consiglio Nazionale delle Ricerche, fondato da Antonio Zampolli) e più d'una università italiana ha posto l'Informatica umanistica come materia fondamentale di percorsi di studio a metà fra l'Informatica e gli studi umanistici. Dopo una lunga contrapposizione fra approccio razionalista ed empirista, ci si orienta sempre più verso la messa a punto di strumenti che, al tempo stesso, incorporino la conoscenza rappresentata come regole astratte e come moduli statistici. Siamo tuttavia ancora distanti dal simulare con le tecnologie informatiche una competenza linguistica paragonabile a quella umana, per limiti che non sono solo tecnici, ma che concernono anche la nostra comprensione delle modalità con cui il linguaggio viene elaborato dalla mente umana.
Analizzare il testo
Il problema principale, quando si vuole avviare l'analisi computazionale del testo, è stabilire dei criteri di identificazione per quella che è la sua unità di base: la parola.
I token
La tokenizzazione, ovvero l'operazione mediante la quale si suddivide il testo in Token, è relativamente semplice per lingue che adoperano gli spazi per delimitare le parole; molto complessa per lingue a sistema ortografico continuo (l'operazione richiede algoritmi estremamente complicati). Se ci limitiamo al primo caso, il token è definibile semplicemente come una qualunque sequenza di caratteri delimitata dagli spazi; tuttavia, tale definizione lascia spazio a numerose eccezioni. Pensiamo ad esempio ai segni di punteggiatura, che compaiono attaccati alle parole: l'apostrofo compare di norma in mezzo a due parole diverse che, in virtù della definizione, verrebbero erroneamente identificate come una parola unica.
L'ambiguità della punteggiatura costituisce un problema anche quando dobbiamo identificare l'unità linguistica superiore alla parola, ovvero la frase. Potremmo definire le frasi -semplificando- come sequenze di parole separate da punto e spazio e comincianti con una maiuscola; ma ci sono anche abbreviazioni come "Mr. Johnson" che, secondo questa euristica, verrebbero scisse in frasi distinte.
Stringhe ed espressioni regolari
Come si capisce dagli esempi precedenti, la tokenizzazione deve basarsi su criteri a volte complessi per tenere conto delle possibili eccezioni. La ricerca di stringhe, cioè sequenze di caratteri che soddisfino certi criteri, viene effettuata per mezzo delle espressioni regolari, notazioni algebriche che descrivono formalmente dei pattern di stringhe. Vari linguaggi di programmazione, ad esempio Perl, consentono di specificare pattern di stringhe tramite la sintassi delle espressioni regolari (d'ora in poi ER) e verificano se in un testo esistono pattern corrispondenti. Ogni linguaggio restituisce un diverso risultato, nel caso la corrispondenza sia verificata: la stringa che soddisfa il pattern, la sua riga di occorrenza, un valore booleano ecc.
Tramite le ER, possiamo formulare euristiche a struttura condizionale cioè basate sulla verifica di una serie di condizioni. L'esempio che segue mostra un'euristica per individuare il punto come confine di frase.
/\b[a-z]+\.\s+[A-Z]/
Se il punto è preceduto da una parola in lettere minuscole (\b indica il confine di token, la sequenza "[a-z]+" indica l'occorrenza di una o più lettere minuscole), seguito da uno o più spazi e infine da una maiuscola, allora quel punto è confine di frase ed andrà considerato come un token indipendente.
Il caso dell'abbreviazione (vedi sopra) non viene così risolto, perciò serviranno dei perfezionamenti di questa euristica. Ciò che conta però è che, grazie alle ER, possiamo formalizzare in modo semplice le regole per tokenizzare il testo correttamente, regole leggibili dai programmi che si occupano di tale operazione: i tokenizzatori.
Tipi di token
Se ci interessasse sapere quanto un testo tokenizzato è ricco dal punto di vista lessicale, può esserci utile classificare i token in tipi di token, ovvero raggruppare in classi dei tokens con qualche tipo di somiglianza reciproca. Ad esempio potremmo raggrupparli in base alla forma grafica: due tokens appartengono allo stesso tipo se sono identici a prescindere dalla posizione nel testo. Si dovrebbe poi fare astrazione dalla rappresentazione tipografica del testo, per escludere differenze del tipo minuscole/maiuscole, stampato/corsivo ecc. Quando forme tipografiche diverse di una stessa parola vengono ricondotte a una forma standard, si dice che sono ricondotte a una forma normalizzata.
Si definisce vocabolario di un testo l'insieme delle parole tipo che ricorrono al suo interno. Per farci un'idea della ricchezza lessicale di un testo, tenendo conto delle diverse lunghezze possibili, calcoliamo il rapporto fra i tipi di token -raggruppati in base alla loro forma normalizzata- e le unità di token (Type token ratio o TTR):
La TTR sarà sempre compresa fra 0 e 1: più vicino a 1 è il valore ottenuto, più variato e ricco sarà il testo analizzato.
Un altro indice interessante della ricchezza lessicale di un testo è il rapporto fra il numero di hapax in esso presenti e la lunghezza del testo, dove per "hapax" s'intendono le parole che ricorrono una volta sola.
Il valore ottenuto ci dice in che percentuale il testo sia composto da parole "uniche"; valori bassi corrispondono a testi molto ripetitivi.
In base alla loro frequenza, cioè al numero di occorrenze, potremmo ordinare le parole di un testo in una lista decrescente (dalle più frequenti alle meno frequenti). Indicando poi con un numero crescente le posizioni delle parole, chiameremmo questo numero rango della parola. Se osserviamo quali sono le parole del testo che occorrono più spesso, noteremo che ai primissimi ranghi ci sono le "parole grammaticali", grossomodo definibili come quelle parole che non sono associate ad un referente della realtà concreta o astratta, ma servono ad esprimere una serie di relazioni interne al sistema della lingua: ne sono un esempio articoli e preposizioni; queste parole costituiscono il tessuto connettivo di ogni testo, indipendentemente dall'argomento. In fondo alla lista ci saranno invece le "parole lessicalmente piene", la cui presenza è strettamente dipendente dall'argomento trattato. Va ricordato inoltre che le parole grammaticali sono una classe chiusa, cioè il loro numero complessivo in una lingua è basso e resta più o meno costante nel tempo, altro fattore che ne determina la massiccia presenza in qualunque tipo di testo. Un'interessante relazione esistente fra il rango della parola e la sua frequenza è espressa dalla Legge di Zipf.
Andamento del vocabolario
La distribuzione delle parole cambia col procedere del testo, per cui potremmo interessarci ad una visione più dinamica su di esso, il che significa studiare come varia nel tempo la composizione del suo lessico. Un simile interesse è facilmente motivabile con la ricerca di una qualche regolarità statistica che ci consenta di prevedere la distribuzione finale delle parole, sulla base di osservazioni solo parziali dei dati. Abbastanza intuitivamente, il vocabolario cresce con grande rapidità a inizio testo, ma rallenta non appena le parole cominciano a ripetersi. Anche nei testi lessicalmente molto vari, la ripetizione perlomeno delle parole grammaticali è inevitabile. Un altro fattore a favore della ripetitività è inoltre la coerenza lessicale, perché quando parliamo di uno stesso argomento tendiamo a riutilizzare sempre i medesimi termini.
Il rapporto inverso alla TTR -ovvero la lunghezza del testo diviso per il suo vocabolario- ci restituisce la frequenza media delle parole in quel testo (f), un indice inverso della sua ricchezza lessicale. Ma se considerassimo le variazioni di T e vT nel procedere del testo, noteremmo che inizialmente il rapporto T/vT è uguale 1, per cominciare a crescere man mano che le parole si ripresentano. In testi dal contenuto omogeneo l'andamento è quello delle funzioni non decrescenti: ; occasionalmente può avvenire un'inversione di tendenza, con se nelle ultime h parole il vocabolario cresce in modo significativo, rispecchiando con ogni probabilità una qualche discontinuità del contenuto.
Teorema del limite centrale
Le parole corte sono generalmente più facili delle parole lunghe, quindi potrebbe essere interessante indagare come le parole di un testo si distribuiscono se le suddividiamo in base al parametro della lunghezza.