Rappresentazione del dato linguistico |
Cerca nel web, nel sito, nei siti amici Ricerca personalizzata
|
Rappresentazione del dato linguisticoArgomento di questa sezione sono le possibilità di formalizzare il dato linguistico con lo scopo di costruire programmi per elaborarlo automaticamente. Esamineremo alcune tecniche e i principi che le sorreggono, con qualche semplificazione, allo scopo di fornire una panoramica anche terminologica. Infine presenteremo qualche esempio di applicazioni esistenti. Sequenza di caratteri vs. grammaticaIl modo più immediato e primitivo per rappresentare un testo in un linguaggio di programmazione è considerarlo come sequenza di caratteri, dove per caratteri intendiamo sia le lettere dell'alfabeto, sia i separatori tra le parole (spazi bianchi e punteggiatura). L'analisi di un testo così rappresentato può essere condotta soltanto come raffronto tra sequenze di caratteri. Per un programma di statistica che deve individuare la frequenza di una determinata locuzione questo approccio è soddisfacente. La rappresentazione di strutture linguistiche finalizzate ad applicazioni più complesse richiede strumenti per lavorare a un livello più alto di astrazione, per costruire grammatiche: una grammatica è basata su regole di produzione la cui struttura è < categoria > --> < elementi costitutivi > dove il simbolo --> significa "è costituito da", e < elementi costitutivi > può contenere simboli terminali, cioè oggetti non ulteriormente specificabili, oppure altri oggetti del tipo < categoria >. Es.[5] frase
--> soggetto, verbo. soggetto
--> [io]. verbo --> [mangio]. Questa minigrammatica è in grado di rappresentare un sistema linguistico in grado di produrre una sola frase: "io mangio". Proveremo ora a esaminare diversi tipi di grammatiche rappresentandole mediante un formalismo, detto DCG (Definite Clause Grammar). Questo formalismo è stato sviluppato nell'ambito di un linguaggio di programmazione - Prolog (PROgramming in LOGic) - nato esplicitamente per applicazioni di elaborazione di linguaggio naturale. Context free grammarUna grammatica context free, indipendente dal contesto, prevede che non ci siano interdipendenze tra gli elementi di una produzione. Nell'esempio appena presentato, nella produzione < frase > gli elementi < soggetto > e < verbo > non si trasmettono informazioni. Nella scheda 1 è riportato un esempio di grammatica context free. Le frasi generate o riconosciute dalla grammatica in scheda 1 presentano la combinazione di tutti i soggetti con tutti i verbi con tutti gli oggetti; tutte le combinazioni corrispondono a frasi che noi riconosciamo sintatticamente corrette. La fig.2 contiene una rete di transizioni corrispondente a quella grammatica. Le reti di transizioni (Transition Network, [Winograd 1983, pag. 55]) sono formalismi grafici che descrivono il processo di produzione o analisi della frase in termini di stati (i nodi della rete) e transizioni (archi, rappresentati da linee orientate che congiungono i nodi). Se supponiamo di analizzare la frase "lei insegue la gatta rossa" possiamo ipotizzare un processo che "entra" nella rete nello stato iniziale e per ogni parola sceglie l'arco opportuno, che lo condurrà allo stato successivo, fino a consumare l'intera frase giungendo nello stato finale con un percorso d-e-f-g-h-j. La frase è accettata dalla grammatica se esiste un percorso che ad ogni parola associ un arco, per cui al termine della frase ci si ritrovi nello stato finale .
Context free ed esplosione combinatoriaTorniamo alla nostra grammatica e aggiungiamo le produzioni pronome
--> [io]. pronome
--> [tu]. verbo_transitivo
--> [inseguo]. verbo_transitivo --> [insegui]. La grammatica sarà in grado di generare e riconoscere molte più frasi, tra cui io inseguo la gatta ma anche tu corre oppure lei
insegui io. Osserviamo come nella grammatica che abbiamo rappresentato non c'è alcuna restrizione su quali forme verbali vadano usate con quali soggetti, o quali pronomi sia corretto usare come soggetto. Cerchiamo quindi di inserire nella nostra grammatica le informazioni adeguate a rappresentare concordanze e vincoli sintattici tra i vari elementi. Context sensitive grammarNella notazione utilizzata qui di seguito, gli elementi delle regole di produzione possono essere ulteriormente specificati tramite i parametri o argomenti indicati tra parentesi[6]. Questo significa che, nel caso di pronome(Persona,Funzione) il pronome della grammatica viene connotato più precisamente quanto a persona (prima, seconda o terza) e funzione (soggetto/oggetto), e tale attributo dovrà corrispondere a quello del verbo. La scheda 2 fornisce un esempio in merito. L'esplosione combinatoria risulta limitata in questo esempio alle sole frasi in cui la persona del soggetto concorda con quella del verbo. Val la pena notare che alcune delle frasi ottenibili, pur sintatticamente corrette, hanno una semantica perlomeno discutibile. D'altra parte la rappresentazione sintattica della frase che abbiamo proposto è corretta. Sul piano operativo sarebbe possibile specificare ulteriori parametri per rappresentare la necessità che verbo e oggetto siano semanticamente compatibili, ma questo mescolerebbe e tratterebbe sullo stesso piano informazione sintattica e semantica. Quello di cui abbiamo bisogno è una notazione che consenta di applicare restrizioni alla regola di produzione senza modificarne la struttura; in altre parole, vogliamo poter arricchire le regole con l'aggiunta di informazione semantica. Context sensitive grammar arricchita di informazioni semanticheNella scheda 3 l'informazione semantica è inserita in parentesi graffe nelle regole di produzione: in questo modo dovrebbe essere evidente come questa informazione non è una vera e propria produzione, perché in effetti non produce nulla, ma costituisce un controllo. Le grammatiche riportate nelle schede 1‑3 sono programmi Prolog ‑ un linguaggio di programmazione particolarmente adatto a descrivere strutture linguistiche. Ciò significa che partendo da grammatiche scritte con questo tipo di notazione è possibile produrre o analizzare frasi automaticamente, come vedremo nelle schede successive: in questa sezione ci interessano piuttosto i problemi di formalizzazione che sorgono anche in esempi limitati come questi. [5] I simboli terminali sono rappresentati tra parentesi quadre. [6] Tra i parametri in parentesi, quelli con iniziale maiuscola rappresentano variabili, gli altri sono costanti.
|