From data
To meaning

Pubblichiamo qui di seguito la traduzione di un articolo del Dr. Wei Li, ricercatore dell’azienda NetBase Solutions Inc., che ci è sembrato particolarmente chiaro e completo nel descrivere che cos’è il Natural Language Processing. Ringraziamo il Dr. Wei Li che ci ha gentilmente concesso di tradurre e adattare il suo articolo (https://www.linkedin.com/pulse/overview-natural-language-processing-wei-li) per questo post.

 

Introduzione al Natural Language Processing

Quote:“NLP is not magic, but the results you can get sometimes seem almost magical.”  

(from http://www.confidencenow.com/nlp-seduction.htm)

Di tanto in tanto mi chiedono di fare una presentazione del settore del Natural Language Processing (NLP), sia come formazione introduttiva per i neofiti, sia come introduzione generale per gli amici fatta da un vecchio esperto di questa affascinante disciplina. Dopo 30 anni di lavoro in questo settore, durante i quali non ho mai dovuto cambiare mestiere (sono stato molto fortunato!), ogni giorno mi sembra ancora fresco e lunìminoso e addirittura ancora più affascinante di prima. Ho deciso di scrivere questa Introduzione al NLP per condividere le mie conoscenze, basate su anni di esperienza e di studio, sia con i nuovi colleghi che con un pubblico più vasto. È il mio contributo alla divulgazione della scienza riguardo alle alte tecnologie che oggi vediamo nella vita di tutti giorni (come ad esempio Siri nell’iPhone che abbiamo in mano o Google Translate alla portata di ogni utente di Internet, o i nostri prodotti di analisi del Sentiment e delle opinioni dei clienti nei social media, basati sul Natural Language Processing).

Vi auguro una buona lettura!

La versione cinese di questo articolo si trova anche sul mio blog in lingua Cinese nella più grande comunità online di studiosi e professionisti cinesi ScienceNet.cn)

 

INTRODUZIONE AL NATURAL LANGUAGE PROCESSING , di Wei Li

Da un’area tecnologica così attiva come il Natural Language Processing nascono di continuo nuovi concetti, con nuovi termini tecnici non standardizzati.

Senza un appropriato quadro di riferimento, i nuovi ricercatori sono spesso sopraffatti dalla lista confusa di termini tecnici. Ricercatori diversi alle volte usano termini diversi per uno stesso concetto. D’altra parte, alcuni termini sono essi stessi ambigui o si riferiscono a cose defferenti secondo persone diverse. Che la comunità scientifica abbia o meno raggiunto un accordo sulla terminologia, la soluzione è quella di decodificare la semantica o i referenti dietro un termine tecnico in senso lato o senso stretto, e chiarire possibili ambiguità.

I professionisti esperti sono sensibili ai nuovi termini e possono collocarli rapidamente al posto giusto nella gerarchia terminologica del settore. Questa presentazione si servirà di quattro grafici creati apposta per ordinare ed catalogare un enorme insieme di termini legati al NLP in una rete di concetti.

Tutti i termini tecnici menzionati sono in grassetto [sottolineati nell’originale], e gli acronimi in corsivo, alcuni hanno anche un link, per chi fosse interessato ad ulteriori approfondimenti.  

Che il nostro viaggio nel NLP abbia inizio.

Innanzitutto partiamo da cos’è il NLP, un po’ di background al concetto generale di Natural Language Processing (NLP), da dove proviene, e alcuni termini che sono interscambiabili o molto vicini al NLP.

 

NATURAL LANGUAGE PROCESSING (NLP)

Molto semplicemente, la concezione più ampia di NLP rientra nell’area tematica del linguaggio naturale: come suggerisce il nome, il Natural Language Processing si riferisce al trattamento informatico (computer processing) del linguaggio naturale, per qualsiasi scopo, indipendente dal livello di approfondimento dell’analisi. Per linguaggio naturale si intende la lingua che usiamo nella vita di tutti i giorni, come l’Inglese, il Russo, il Giapponese, il Cinese, ed è sinonimo di linguaggio umano, principalmente per poterlo distinguere dal linguaggio formale, incluso il linguaggio dei computer. Così com’è, il linguaggio naturale è la forma di comunicazione umana più naturale e più comune, e non solo nella sua versione parlata, anche quella scritta sta crescendo esponenzialmente negli ultimi anni, da quando il mobile internet è in fermento con i nuovi social media. Rispetto al linguaggio formale, il linguaggio naturale è molto più complesso, contiene spesso sottointesi e ambiguità, il che lo rende molto difficile da elaborare (da qui il NLP come professione altamente qualificata, meritiamo un premio noi praticanti di NLP 🙂 ).

 

NLP e LINGUISTICA COMPUTAZIONALE  

Un termine (quasi) equivalente a NLP è Computational Linguistics (CL, Linguistica Computazionale). Come suggerisce il nome, la Linguistica Computazionale è una materia interdisciplinare che comprende Informatica e Linguistica. NLP e CL sono infatti due facce della stessa medaglia. Il focus del NLP è la pratica, mentre quello della Linguistica Computazionale è la scienza (teoria).

Si può anche dire che la Linguistica Computazionale sia la base scientifica su cui poggia il NLP, e il NLP la sua applicazione. A differenza delle discipline di base come la matematica o la fisica, il NLP è per sua natura problem oriented, ed ha accorciato la distanza tra teoria e pratica, quindi NLP e Linguistica Computazionale sono in realtà davvero la stessa cosa in molti scenari d’uso. I professionisti del settore pertanto possono dichiararsi allo stesso tempo ingegneri nel settore operativo del NLP o linguisti computazionali nel settore accademico.

Naturalmente, nonostante anche i linguisti computazionali nel mondo accademico necessitino di costruire sistemi di NLP, il loro obiettivo è usare gli esperimenti per supportare lo studio della teoria e degli algoritmi. Gli ingegneri di NLP nel settore operativo invece sono più orientati verso l’implementazione di sistemi che hanno a che fare con situazioni concrete o verso la realizzazione di prodotti software di qualità. Tale differenza permette agli ingegneri di NLP di avvalersi di qualunque strumento utile a raggiungere lo scopo prefissato (seguendo la famosa “teoria del gatto” di Deng: bianco o nero, è un buon gatto finchè cattura un topo), senza preoccuparsi di quanto sofisticato o conosciuto un algoritmo sia.

 

NLP e MACHINE LEARNING 

Un altro termine che viene spesso usato in parallelo a NLP è Machine Learning (ML, Apprendimento Automatico). Strettamente parlando, machine learning e NLP sono concetti di livello completamente diverso, il primo si riferisce a un tipo di approccio, mentre il secondo rappresenta un’area tematica.

Nonostante questo, a causa della natura di “panacea” del machine learning, unita al fatto che il ML ha dominato la scena del NLP (specialmente nel mondo accademico) degli ultimi anni, molte persone dimenticano o semplicemente ignorano l’esistenza degli altri approcci di NLP, ossia le regole linguistiche. Quindi, non è una sorpresa che per queste persone, NLP equivalga a machine learning.

In realtà, naturalmente, il machine learning va ben oltre l’ambito del NLP. Gli algoritmi di apprendimento automatico usati per diversi casi di elaborazione del linguaggio  possono essere ugualmente usati per risolvere altri problemi di Artificial Intelligence (AI, Intelligenza Artificiale), come ad esempio l’analisi del mercato azionario, le previsioni meteo, il rilevamento di frodi delle carte di credito, la visione artificiale, la classificazione della sequenza del DNA, e addirittura la diagnosi medica.

 

MACHINE LEARNING e SISTEMI A REGOLE 

Parallelamente al machine learning, il più tradizionale approccio al NLP sono le regole linguistiche, formulate e implementate da linguisti o ingegneri della conoscenza (knowledge engineers). Un intero insieme di regole che risolvono un determinato compito di NLP forma una grammatica computazionale, che può essere compilata in un sistema a regole.

Il machine learning e i sistemi a regole hanno entrambi vantaggi e svantaggi. In generale, il machine learning è molto efficace in casi di analisi “a grana grossa” come la classificazione automatica o il clustering, mentre i sistemi a regole sono ottimi per analisi linguistiche “a grana fine” come il parsing (analisi sintattica) approfondito. Se paragoniamo il linguaggio a una foresta, e le frasi ad alberi, il machine learning è lo strumento adatto per vedere il panorama della foresta, mentre un sistema a regole ci consente di osservare ogni singolo albero.

In termini di qualità dei dati, il machine learning è molto forte nella recall (copertura di un fenomeno linguistico), mentre le regole sono una buona soluzione sopratutto per la precision (accuratezza).

Questi due approcci si completano a vicenda abbastanza naturalmente, purtroppo però ci sono alcuni “estremisti fondamentalisti” di entrambe le scuole che non sono disposti a riconoscere i punti di forza dell’altro approccio e anzi cercano di sminuirlo o eliminarlo.

Data la complessità del linguaggio naturale,  un sistema di NLP collocato in un contesto reale spesso deve bilanciare o regolare precision e recall e analisi a grana grossa e a grana fine. Quindi, combinare  in qualche modo i due approcci di NLP è spesso una saggia strategia. Un metodo semplice ed efficace per combinarli è quello di costruire un modello di back-up per ciascun passaggio importante: prima vengono compilate le grammatiche, per un’analisi dettagliata con alta precision (al costo di una modesta recall), dopodichè viene applicato il machine learning per rialzare la recall.

Tenete a mente che entrambi gli approcci devono affrontare, riguardo alle risorse, la questione del cosiddetto knowledge bottleneck (collo di bottiglia della conoscenza): le grammatiche richiedono manodopera specializzata (linguisti) per essere scritte e testate, e l’apprendimento automatico richiede enormi quantità di dati annotati: specialmente per approcci relativamente maturi di apprendimento controllato, considerevoli quantità di dati annotati (a mano), cioè corpora annotati, sono un prerequisito necessario. 

 

MACHINE LEARNING, SISTEMI A REGOLE e ARTIFICIAL INTELLIGENCE (AI)

Vale la pena di ricordare che anche la tradizionale Artificial Intelligence si basa su sistemi a regole, ma c’è una fondamentale differenza tra i sistemi a regole di AI e i sistemi per l’analisi linguistica basati su grammatiche (parsing). Generalmente parlando, le grammatiche computazionali sono molto più maneggevoli e funzionali di un sistema di AI. Un sistema a regole di AI non solo necessita di analisi linguistiche fatte da un sotto sistema come una grammatica computazionale, ma si vuole anche servire della rappresentazione della conoscenza e dei ragionamenti che offrono  per codificare il senso comune umano (o almeno il fulcro di esso), rendendo l’AI una disciplina molto più sofisticata e spesso poco agevole nelle applicazioni pratiche.

In un certo senso, il rapporto tra Machine Learning e Artificial Intelligence è un po’ come quello tra Natural Language Processing e Computational Linguistics: il ML si concentra sul versante applicativo dell’AI, e si potrebbe pensare quindi che l’AI sia in una posizione di guida teorica rispetto al ML. In realtà, però, non è per niente così: la (tradizionale) Artificial Intelligence è fortemente basata sulla codifica e rappresentazione della conoscenza (knowledge engineering) e sul ragionamento logico ad un costo spesso troppo elevato e complicato per scalare o troppo oneroso da mantenere in sistemi intelligenti realmente sostenibili.

Il panorama della costruzione di sistemi intelligenti (NLP incluso) è stato gradualmente occupato dal machine learning le cui fondamenta teoriche comprendono statistica e teoria dell’informazione, piuttosto che logica. Gli scienziati di AI come l’inventore del Cyc (https://en.wikipedia.org/wiki/Cyc) Douglas Lenat sono diventati rari in uno scenario dominato dagli statistici.

Forse in futuro ci sarà una ripresa della Artificial Intelligence pura, ma nel futuro prossimo il machine learning, che modella l’intelligenza umana come una scatola nera di connessioni tra input e output osservabili, sicuramente prevarrà. Si noti che la differenza tra l’impraticabile (o troppo ambizioso) approccio di ingegneria della conoscenza dell’AI, e il molto più praticabile approccio di grammatiche computazionali del NLP, determina il loro diverso risultato: mentre la (tradizionale) AI è praticamente sostituita dal machine learning in quasi tutti i sistemi intelligenti, l’approccio con grammatiche computazionali dimostra di essere ancora valido e continuerà a ricoprire un ruolo nel NLP per ancora molto tempo, anche se si trova ad affrontare il costante pregiudizio, così come la costante sfida, di machine learning e statistici.

 

NLP e NATURAL LANGUAGE UNDERSTANDING (NLU)  

C’è anche un altro termine tecnico quasi interscambiabile con NLP, e cioè Natural Language Understanding (NLU).

Anche se l’interpretazione letterale di NLU come un processo per le macchine per capire i linguaggi naturali può suonare come fantascienza con un forte sapore di AI, in realtà l’uso del NLP vs. il NLU, proprio come l’uso del NLP vs. la Linguistica Computazionale, è spesso solo una diversa abitudine adottata in ambienti diversi.

NLP e NLU sono quasi lo stesso concetto. Per “quasi” intendiamo che NLP può riferirsi al superficiale o addirittura banale language processing (ad esempio, un parsing blando, che comprende passaggi come la tokenizzazione ottenuta dividendo una frase in parole, o l’analisi morfologica fatta dividendo una parola in radice e affissi), ma il NLU per definizione prevede sempre un’analisi approfondita (parsing profondo). Questo è il punto: sotto la prospettiva dell’AI, si può chiamare NLU; guardando invece con la prospettiva del machine learning, dovrebbe essere chiamato solo NLP.

Inoltre, anche Natural Language Technology o semplicemente language technology sono referenti comuni di NLP.

 

NLP e LINGUISTICA APPLICATA 

Dal momento che la Computational Linguistics (Linguistica Computazionale), equivalente del NLP, ha due genitori, computer science e linguistica, ne consegue che anche il NLP li abbia: infatti, NLP può essere visto come applicazione sia della computer science, sia della linguistica.

Originariamente, il concetto generico di Linguistica Applicata era stato usato per descrivere il NLP, ma a causa dello stato ben definito e distinto della linguistica computazionale come disciplina autonoma ormai da decenni (con la rivista chiave “Computational Linguistics”, l’ACL come comunità, e le conferenza annuali ACL, COLING, etc., come massimi incontri di ricerca), il termine Linguistica Applicata si riferisce ormai sopratutto ad aree pratiche e di insegnamento della lingua, come la traduzione, e generalmente non è più considerato un termine padre di NLP o linguistica computazionale.

 

NLP e ARTIFICIAL INTELLIGENCE (AI)

Concettualmente il NLP (come area tematica), e il machine learning (come metodologia), appartengono entrambi alla grande categoria dell’Artificial Intelligence, specialmente quando usiamo il termine Natural Language Understanding equivalente a NLP o quando sono coinvolte specifiche applicazioni di NLP, come la traduzione automatica.

In ogni caso, come detto prima, la tradizionale AI, che enfatizza l’elaborazione della conoscenza (knowledge processing) (compresa la comprensione del senso comune), è molto diversa dagli attuali sistemi di ML e NLP basati sui dati.

 

4 LIVELLI e DIAGRAMMI SUL NLP  

Ora che abbiamo chiarito l’origine del NLP e quali siano i sinonimi e i termini vicini, cerchiamo di “cogliere i collegamenti chiave” per esaminare il NLP di per sé e risolvere il mistero della relativa gerarchia di concetti e termini. Presenterò il NLP su quattro livelli, usando 4 diagrammi di flusso come sistema di architettura concettuale (mostrati sotto, e da ripetere in ogni articolo successivo). I quattro livelli sono:

  1. livello linguistico;
  2. livello di estrazione;
  3. livello di data mining;
  4. livello di applicazioni

Questi quattro livelli di (sotto-)sistema rappresentano fondamentalmente una relazione di supporto dal basso verso l’alto (bottom-up): 1 ⇒ 2 ⇒ 3 ⇒ 4.

Chiaramente, il cuore di uno strumento di NLP (che è un parser), si trova al primo livello e fa da tecnologia abilitante, e il livello di applicazioni al quarto strato comprende applicazioni come Question Answering, traduzione automatica, assistenti virtuali come Siri.

Come nota finale, dal momento che il linguaggio naturale ha due forme, parlato (forma orale) e scritto (forma scritta), il NLP naturalmente copre anche due importanti settori nell’elaborazione della lingua parlata:

  • il riconsocimento vocale (speech recognition) progettato per consentire ai computer di comprendere il linguaggio umano;
  • la sintesi vocale (speech synthesis), per insegnare ai computer a parlare con gli umani.

Poichè l’autore non è esperto di parlato, questa serie di articoli tratterà solo di NLP orientato ai testi, assumendo il riconoscimento vocale come un passaggio precedente e la sintesi vocale come un passaggio successivo del nostro ambito, l’elaborazione del testo. In realtà, questa è una valida ipotesi di divisione del lavoro anche nei sistemi linguistici reali che oggi vediamo, per esempio, nelle popolari applicazioni di NLP degli smartphone, come Siri di iPhone, che usa prima il riconoscimento vocale per convertire il linguaggio parlato in testo, il quale è poi ciò che alimenta il sistema nel passaggio successivo di analisi e comprensione.

Mostriamo qui sotto tutti e 4 i diagrammi, li presenteremo nel dettaglio uno per uno nei prossimi articoli sull’argomento (in arrivo, si spera).

nlp_wei_li_1

nlp_wei_li_2

nlp_wei_li_3

nlp_wei_li_4

Vai all’articolo originale (in Cinese)

Vai al white paper sul NLP Engine (in Inglese): NLP White Paper

[l’immagine in evidenza nell’articolo è tratta dal libro: Speech and Language Processing]

Tags: ,