Che cos’è l’elaborazione del linguaggio naturale?

L’elaborazione del linguaggio naturale, in inglese Natural Language Processing, definisce l’elaborazione delle lingue naturali tramite computer. Ad esempio ad esso appartengono anche i campi della traduzione di una lingua in un’altra, del riconoscimento vocale o di risposta automatica alle domande. Nello svolgimento di questi compiti i computer hanno spesso problemi legati alla comprensione, poiché tendono a focalizzarsi principalmente sul significato delle singole parole. Per un programma di traduzione è perciò difficile riuscire ad intuire le differenze di significato di una stessa parola, come ad esempio la parola “cavolo”, nelle frasi “questo piatto è a base di cavolo” e “non capisci un cavolo”.

Attraverso l’elaborazione del linguaggio naturale, i computer imparano a capire il significato di segmenti di testo abbinati tra loro, come frasi e proposizioni, e ad utilizzarle di conseguenza. Questo non è utile solo per le traduzioni o per i chatbot, ma anche quando il computer si ritrova a dover eseguire un ordine trasmesso a voce o quando deve comunicare, a sua volta a voce, con l’utente, come nel caso in cui si trovi a dover comunicare con una persona non vedente. Anche per poter riassumere lunghi testi o estrarre precise informazioni mirate da testi molto lunghi, i computer hanno bisogno di poter comprendere la coerenza testuale.

Come funziona l’elaborazione del linguaggio naturale?

Indipendentemente che si tratti di una traduzione automatica o di una conversazione con un chatbot: tutti i metodi relativi al Natural Language Processing hanno in comune il fatto che seguono la gerarchia che definisce le connessioni tra le singole parole. Questo risulta tuttavia complicato, poiché molte parole hanno un doppio significato: un esempio potrebbe essere “assumere”, che può significare sia impiegare qualcuno per un lavoro, sia prendere in carico qualcosa su di sé (“assumersi l’incarico”), ma può anche acquisire il senso di ingerire, ad esempio un medicinale o una determinata sostanza.

Per via proprio di queste difficoltà, il Natural Language Processing rappresenta uno dei campi più complicati dell’informatica. La lingua è spesso ambigua, e per poterla capire è necessario possedere una conoscenza esauriente del contesto nel quale essa viene usata. Molti utenti vengono a conoscenza della comunicazione sconnessa che avviene con i chatbot, i quali vengono utilizzati sempre più spesso nell’assistenza clienti come sostituto per le live chat. Tuttavia la comprensione delle lingue umane da parte dei computer è migliorata sempre più. Al fine di poter insegnare loro la lingua, i linguisti computazionali hanno attinto alle conoscenze disponibili della linguistica tradizionale, ovvero ai seguenti campi:

  • la morfologia si occupa della composizione delle parole e delle loro relazioni con altre parole;
  • la sintassi definisce la struttura secondo la quale le parole vengono messe in relazione all’interno di una frase;
  • la semantica tratta invece il significato delle parole e dei gruppi di parole;
  • con l’aiuto della pragmatica si esplora invece il contesto delle affermazioni e quindi delle finalità espressive delle parole;
  • la fonologia si occupa invece della struttura acustica della lingua parlata ed è quindi importante per il riconoscimento delle lingue.

Part of Speech tagging (PoS)

Il primo passo dell’elaborazione del linguaggio naturale ha a che fare con la morfologia: si tratta di determinare la funzione delle singole parole. La maggior parte delle persone sono venute a contatto con una forma basilare di questo processo a scuola, ovvero l’analisi grammaticale, che serve a riconoscere e riferirsi alle parole come sostantivi, verbi, aggettivi, ecc. Determinare tale funzione non è di certo un compito facile per i computer, visto che una parola può cambiare funzione in base alla proposizione nella quale viene impiegata.

Per poter snocciolare l’ambiguità delle parole, ci sono diversi metodi a disposizione: quelli presenti da più tempo si basano su grandi corpora testuali come il Brown Corpus e il British National Corpus. Questi corpora, ovvero grandi collezioni di testi, si compongono di milioni di parole derivanti da testi di prosa, a cui vengono assegnati dei tag e dai quali vengono dedotti delle regole di apprendimento atte a migliorare ed ampliare la classificazione delle parole. Sulla base del Brown Corpus può ad esempio essere determinata la regola che un verbo perde la sua funzione predicativa quando è preceduto da un articolo.

I nuovi programmi per la classificazione implementano algoritmi autodidatti, in grado di dedurre, in maniera autonoma, delle regole dal corpo testuale e di utilizzarle per riuscire ad intendere ulteriori funzioni delle parole. Un metodo di tagging tra i più conosciuti, che si basa appunto su un algoritmo di questo tipo, è il Brill Tagger, che definisce innanzitutto le funzioni più ricorrenti in una proposizione, per riuscire successivamente ad evincere altre funzioni delle parole grazie all’aiuto delle regole. Una regola potrebbe essere: quando la prima parola di una proposizione è un nome proprio, con ogni probabilità la parola seguente sarà un verbo. In un frase come “Jacopo ha comprato un libro”, la parola “ha” può essere classificata come verbo.

Albero sintattico o diagramma ad albero

Nel secondo passaggio vengono utilizzate le conoscenze derivanti dalla sintassi, in modo da riuscire a comprendere la struttura delle proposizioni. A tale scopo la linguistica computazionale utilizza un diagramma ad albero, dove una proposizione viene suddivisa in frasi. Degli esempi di frasi sono le frasi nominali, le quali si formano con un nome proprio o altrimenti con un sostantivo e un articolo, o le frasi verbali, le quali si compongono di un verbo e una frase nominale.

In lingua inglese la suddivisione delle proposizioni prende il nome di parsing, ed è proprio da questo che deriva il diagramma ad albero parse tree, chiamato in italiano semplicemente come albero sintattico. Ogni lingua ha una grammatica propria, il che significa che in ogni lingua le frasi vengono strutturate in maniera differente e la gerarchia delle frasi funziona quindi in maniera differente. La grammatica di una lingua all’interno di un programma per computer può essere configurata manualmente o può essere acquisita gradualmente tramite corpus, all’interno del quale vengono annotate le strutture delle frasi.

Semantica

Il terzo passaggio dell’elaborazione del linguaggio naturale porta lo sviluppatore nel campo della semantica. Anche se sia la funzione sintattica che la classificazione attribuita ad una parola sono le stesse, è possibile che la parola abbia diversi significati. Le seguenti proposizioni ne sono un esempio:

Il commercialista fa la fattura

La strega fa la fattura

Chiunque conosca a sufficienza la lingua italiana capirebbe immediatamente che sebbene la parola “fattura” abbia la stessa funzione all’interno di queste due frasi, nella prima si fa riferimento ad un documento emesso a fini commerciali, mentre nella seconda si tratta di un atto di stregoneria. Per un computer questo non sarebbe invece così immediato. La conoscenza che sta alla base tra i due significati della parola “fattura”, il computer non la possiede; e saper distinguere tra le due accezioni risulta quindi estremamente complicato.

Per ovviare a questo problema i computer tentano di individuare il significato di una parola con l’aiuto delle parole che la precedono e che la seguono. Così facendo gli sarà possibile dedurre che quando la parola fattura è messa in connessione alla parola “commercialista”, allora il significato sarà quello legato all’ambito economico/fiscale, mentre quando nelle vicinanze della parola si troverà “strega”, allora si parlerà di stregoneria e superstizione. Il computer è in grado di apprendere questa differenza sulla base di un corpus, all’interno del quale è restituito il significato corretto di ogni parola.

Tutto considerato l’elaborazione del linguaggio naturale rimane un campo complesso: i computer devono già elaborare una grande quantità di singoli casi e per ogni parola con più di un possibile significato è facile che il computer la interpreti in maniera errata. Soprattutto nel campo della pragmatica vanno fatti ancora notevoli passi in avanti, poiché la comprensione di una qualsiasi proposizione è strettamente legata al contesto nella quale essa viene espressa, e per capirne il contesto, che è spesso legato comunque alla vita terrena, è dunque necessaria una buona conoscenza del mondo che manca ai computer. In modo particolare l’ironia, il sarcasmo e le metafore scherzose sono concetti che il computer fa molta fatica a comprendere; anche se ci sono stati diversi tentativi di classificarle.

Strumenti per l’elaborazione del linguaggio naturale

Chi vuole tentare di approcciare l’elaborazione del linguaggio naturale, troverà online strumenti e guide pratici. Quale strumento sia quello che faccia al caso vostro dipende essenzialmente da quali siano la lingua e il metodo di utilizzo. Qui di seguito vi presentiamo alcuni conosciuti strumenti open source e un database che raccoglie la maggior parte degli strumenti pensati per la lingua italiana:

  • Il Natural Language Toolkit: è una raccolta di strumenti per l’elaborazione del linguaggio naturale, sviluppati con il linguaggio di programmazione Python. Questo toolkit offre accesso ad oltre 100 corpora in numerose lingue. Questo strumento è inoltre in grado di condurre diversi tipi di elaborazioni testuali come Part of Speech tagging, Parsing, Tokenization (ovvero la classificazione delle radici delle parole; un passaggio propedeutico spesso utilizzato per l’elaborazione del linguaggio naturale) e la possibilità di riassumere i testi, operazione chiamata wrapping. Il Natural Language Toolkit comprende anche un’introduzione alla programmazione e una documentazione estesa, il che lo rende un programma adatto alle esigenze di studenti, docenti e ricercatori.
  • Stanford NLP Group Software: lo Stanford NLP Group è uno dei gruppi di ricerca di maggiore importanza nel settore dell’elaborazione del linguaggio naturale ed offre diversi validi strumenti. Con questi strumenti è possibile distinguere e classificare le derivazioni delle parole (Tokenization), la loro funzione (Parts of Speech tagging), e la struttura delle proposizioni (Parsing). In aggiunta vi sono dei tool per processi più complicati come il Deep Learning, tramite il quale il focus viene posto sul contesto delle proposizioni. Tutte le più importanti funzioni base possono essere trovate nello Stanford Core NLP. Tutti i programmi dello Stanford NLP Group sono scritti in Java e disponibili in diverse lingue.
  • Visualtext: è un set di strumenti scritto in un linguaggio di programmazione puro, pensato per l’elaborazione del linguaggio naturale, cioè NLP++. Questa lingua di programmazione è stata sviluppata soprattutto per i cosiddetti Deep Text Analyzers, ma anche per le analisi necessarie per l’intelligenza artificiale, ovvero riguardanti ambiente e società. Visualtext serve soprattutto ad estrarre informazioni mirate da testi molto lunghi. Ad esempio, con Visualtext, è possibile riassumere lunghi testi, ma anche raccogliere eventi da diversi siti web, relativi ad una tematica precisa e raggrupparli assieme. Se utilizzate Visualtext per fini non commerciali, allora sarà disponibile gratuitamente.
  • PARLI: è un progetto italiano, finanziato pubblicamente, che si propone come punto di riferimento per la lingua italiana delle tecnologie del linguaggio. Da questo progetto è nato un portale web che raccoglie numerose risorse e strumenti. Nella sezione strumenti è possibile trovare un’ampia gamma di tool specifici per l’italiano, messi a disposizione dai vari ricercatori che operano nell’ambito della NLP della lingua italiana. I vari strumenti sono categorizzati in base alla funzione che offrono. Il portale è dedicato soprattutto all’ambito della ricerca e a quello dell’industria.
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.