Che cos'è l'elaborazione del linguaggio naturale (NLP)?

Caroline Eppright | Content Strategist | 25 marzo 2021

Elaborazione del linguaggio naturale (NLP) definita

L'elaborazione del linguaggio naturale (NLP, Natural Language Processing) è un ramo dell'intelligenza artificiale (AI) che consente ai computer di comprendere, generare e manipolare il linguaggio umano. L'elaborazione del linguaggio naturale ha la capacità di interrogare i dati con testo o voce del linguaggio naturale. Questo è anche chiamato "lingua in". La maggior parte dei consumatori ha probabilmente interagito con l'NLP senza rendersene conto. Ad esempio, l'NLP è la tecnologia di base dietro gli assistenti virtuali, come Oracle Digital Assistant (ODA), Siri, Cortana o Alexa. Quando poniamo domande a questi assistenti virtuali, l'NLP è ciò che consente loro non solo di comprendere la richiesta dell'utente, ma anche di rispondere in linguaggio naturale. L'NLP si applica sia al testo scritto che al discorso e può essere applicata a tutte le lingue dell'uomo. Altri esempi di strumenti basati sull'NLP includono la ricerca web, l'applicazione di filtri per lo spam delle e-mail, la traduzione automatica di testo o di un discorso, la sintesi dei documenti, l'analisi delle opinioni e il controllo grammaticale/ortografico. Ad esempio, alcuni programmi di posta elettronica possono automaticamente suggerire una risposta appropriata a un messaggio in base al suo contenuto: questi programmi utilizzano l'elaborazione NLP per leggere, analizzare e rispondere al messaggio.

Ci sono molti altri termini che sono più o meno sinonimo di NLP. La comprensione del linguaggio naturale (NLU) e la generazione del linguaggio naturale (NLG) si riferiscono all'uso di computer per, rispettivamente, comprendere e produrre il linguaggio dell'uomo. NLG ha la capacità di fornire una descrizione verbale di ciò che è successo. Viene anche chiamato “language out" e riassume informazioni significative nel testo utilizzando un concetto noto come "grammatica della grafica".

In pratica, la NLU viene utilizzata per indicare l'NLP. Comprensione da parte dei computer della struttura e del significato di tutti i linguaggi umani, consentendo a sviluppatori e utenti di interagire con i computer utilizzando frasi naturali e comunicazioni. La linguistica computazionale (CL) è il campo scientifico che studia gli aspetti computazionali del linguaggio umano, mentre l'NLP è la disciplina ingegneristica interessata alla costruzione di manufatti computazionali che comprendono, generano o manipolano il linguaggio umano.

La ricerca sull'NLP è iniziata poco dopo l'invenzione dei computer digitali negli anni '50 e la PNL si basa sia sulla linguistica che sull'AI. Tuttavia, le principali scoperte degli ultimi anni sono state alimentate dal machine learning, che è un ramo dell'intelligenza artificiale che sviluppa sistemi che imparano e generalizzano dai dati. Deep learning è un tipo di apprendimento automatico che può imparare modelli molto complessi da grandi set di dati, il che significa che è ideale per imparare le complessità del linguaggio naturale da set di dati provenienti dal Web.

Applicazioni di elaborazione del linguaggio naturale

Automatizza le attività di routine: i chatbot basati sull'NLP possono elaborare una vasta gamma di attività di routine che sono gestite dagli agenti umani oggi, lasciando ai dipendenti la possibilità di lavorare su attività più impegnative e interessanti. Ad esempio, i chatbot e gli assistenti digitali possono riconoscere una vasta gamma di richieste utente, abbinarle alla voce appropriata in un database aziendale e formulare una risposta adeguata all'utente.

Migliorare la ricerca: l'NLP può migliorare la ricerca di corrispondenze con parole chiave per il recupero di documenti e domande frequenti disambiguando i sensi di parole in base al contesto (ad esempio, "vettore" significa qualcosa di diverso nei contesti biomedici e industriali), i sinonimi corrispondenti (ad esempio, il recupero di documenti che menzionano "auto" alla ricerca di "automobile") e la considerazione della variazione morfologica (che è importante per le query non inglesi). Sistemi efficaci di ricerca accademica basati sull'NLP possono migliorare notevolmente l'accesso alla ricerca all'avanguardia per medici, avvocati e altri specialisti.

Ottimizzazione del motore di ricerca: NLP è un ottimo strumento per far sì che il tuo business sia classificato più in alto nella ricerca online analizzando le ricerche per ottimizzare i tuoi contenuti. I motori di ricerca utilizzano l'NLP per classificare i risultati e sapere come utilizzare efficacemente queste tecniche rende più facile essere classificati al di sopra dei propri concorrenti. Ciò determinerà una maggiore visibilità per la tua attività.

Analisi e organizzazione di raccolte di documenti di grandi dimensioni: le tecniche NLP quali il clustering dei documenti e la modellazione di argomenti semplificano il compito di comprendere la diversità dei contenuti nelle raccolte di documenti di grandi dimensioni, come report aziendali, articoli di notizie o documenti scientifici. Queste tecniche sono spesso utilizzate per scopi legali.

Analisi dei social media: l'NLP può analizzare le recensioni dei clienti e i commenti sui social media per dare un senso ai grandi volumi di informazioni. La sentiment analysis identifica i commenti positivi e negativi in un flusso di commenti sui social media, fornendo una misura diretta delle opinioni dei clienti in tempo reale. Ciò può portare a risvolti positivi significativi su tutta la linea, come aumento della soddisfazione del cliente e dei ricavi.

Analisi di mercato: grazie all'NLP che analizza il linguaggio dei clienti, avrai a disposizione un'analisi più accurata delle loro esigenze e un'idea migliore di come comunicare con loro. La sentiment analysis orientata agli aspetti rileva il sentimento associato ad aspetti o prodotti specifici nei social media (ad esempio, "la tastiera è ottima, ma lo schermo è poco illuminato"), fornendo informazioni direttamente fruibili per la progettazione e il marketing del prodotto.

Moderazione dei contenuti: se la tua azienda attira grandi quantità di commenti degli utenti o dei clienti, l'NLP consente di moderare ciò che viene detto per mantenere qualità e rispetto, analizzando non solo le parole, ma anche il tono e l'intento dei commenti.

Settori che utilizzano l'elaborazione del linguaggio naturale

L'NLP semplifica e automatizza una vasta gamma di processi aziendali, in particolare quelli che coinvolgono grandi quantità di testo non strutturato come e-mail, sondaggi, conversazioni sui social media e altro ancora. Grazie all'NLP, le aziende possono analizzare meglio i propri dati per prendere le decisioni giuste. Ecco alcuni esempi di applicazioni pratiche dell'NLP:

  • Servizi sanitari: mentre i sistemi sanitari di tutto il mondo passano a record medici elettronici, riscontrano grandi quantità di dati non strutturati. L'NLP può essere utilizzata per analizzare e ottenere nuovi insight sui record sanitari.
  • Settore legale: per prepararsi a un caso, gli avvocati devono spesso dedicare ore all'esame di grandi raccolte di documenti e alla ricerca di materiale pertinente per un caso specifico. La tecnologia NLP può automatizzare il processo di ricerca legale, riducendo sia il tempo che l'errore umano attraverso il dimensionamento di grandi volumi di documenti.
  • Settore finanziario: Il mondo finanziario si muove molto velocemente, ed è importante qualsiasi vantaggio competitivo. Nel settore finanziario, i trader utilizzano la tecnologia NLP per estrarre automaticamente informazioni da documenti aziendali e comunicati stampa e individuare informazioni rilevanti per portafogli e decisioni commerciali.
  • Servizio clienti: molte grandi aziende utilizzano assistenti virtuali o chatbot per rispondere alle richieste di informazioni e richieste dei clienti di base (come le domande frequenti), indirizzando domande complesse agli esseri umani quando necessario.
  • Assicurazioni: le grandi compagnie di assicurazione utilizzano l'elaborazione NLP per esaminare documenti e report relativi alle richieste di rimborso, allo scopo di semplificare il modo in cui viene svolta l'attività.

Panoramica della tecnologia NLP

Modelli di apprendimento automatico per l'NLP: abbiamo già accennato che l'NLP moderna si basa pesantemente su un approccio all'intelligenza artificiale, chiamato apprendimento automatico. L'apprendimento automatico esegue previsioni generalizzando gli esempi in un set di dati. Questo set di dati è denominato dati di formazione, mentre gli algoritmi di apprendimento automatico si basano su questi dati di formazione per produrre un modello di apprendimento automatico che porta a termine un'attività di destinazione.

Ad esempio, i dati di formazione per la sentiment analysis sono costituiti da frasi insieme al loro sentiment (ad esempio, sentiment positivo, negativo o neutro). Un algoritmo di apprendimento automatico legge questo set di dati e produce un modello che accetta frasi come input e restituisce le proprie opinioni. Questo tipo di modello, che accetta frasi o documenti come input e restituisce un'etichetta per tale input, viene definito modello di classificazione dei documenti. I classificatori di documenti possono anche essere utilizzati per classificare i documenti in base agli argomenti citati (ad esempio, sport, finanza, politica e così via).

Un altro tipo di modello viene utilizzato per riconoscere e classificare le entità nei documenti. Per ogni parola di un documento, il modello prevede se tale parola fa parte di un'entità menzione e, in caso affermativo, quale tipo di entità è coinvolta. Ad esempio, in "Le azioni XYZ Corp sono state scambiate a $28 ieri", "XYZ Corp" è un'entità azienda, "$28" è un importo in valuta e "ieri" è una data. I dati di formazione per il riconoscimento di entità sono una raccolta di testi, in cui ogni parola è etichettata con i tipi di entità a cui si riferisce la parola. Questo tipo di modello, che produce un'etichetta per ogni parola nell'input, viene chiamato modello di etichettatura di sequenza.

I modelli sequenza-sequenza sono un'aggiunta molto recente alla famiglia di modelli utilizzati nell'NLP. Un modello sequenza-sequenza (o seq2seq) utilizza un'intera frase o un documento come input (come in un classificatore di documenti), ma produce una frase o un'altra sequenza (ad esempio un programma per computer) come output. (Un classificatore di documenti produce solo un singolo simbolo come output). Le applicazioni di esempio dei modelli seq2seq includono la traduzione automatica, che ad esempio prende una frase inglese come input e restituisce la frase francese come output; la sintesi dei documenti (dove l'output è un riepilogo dell'input) e l'analisi semantica (dove l'input è una query o una richiesta in inglese e l'output è un programma informatico che implementa tale richiesta).

Deep learning, modelli pre-addestrati e transfer learning: Deep learning è il tipo di apprendimento automatico più diffuso nell'NLP. Nel 1980, i ricercatori hanno sviluppato reti neurali, in cui un gran numero di modelli di apprendimento automatico primitivi sono abbinati in un'unica rete: per analogia con i cervelli, i semplici modelli di apprendimento automatico sono talvolta chiamati "neuroni". Questi neuroni sono disposti in strati, e una rete neurale profonda è una con molti strati. Il deep learning è un apprendimento automatico che utilizza modelli di rete neurali profondi.

A causa della loro complessità, in genere ci vogliono molti dati per formare una rete neurale profonda e l'elaborazione richiede molta potenza e tempo di elaborazione. I moderni modelli NLP di rete neurale profonda vengono addestrati da una vasta gamma di fonti, come tutte le Wikipedia e i dati scaricati dal Web. I dati di formazione possono avere dimensioni pari o superiori a 10 GB e potrebbero richiedere una settimana o più su un cluster ad alte prestazioni per addestrare la rete neurale profonda. (I ricercatori hanno scoperto che la formazione di modelli ancora più approfonditi da data set ancora più grandi hanno prestazioni ancora più elevate, per cui attualmente esiste una gara per addestrare modelli sempre più grandi da set di dati sempre maggiori).

I dati voraci e i requisiti di calcolo di reti neurali profonde sembrano limitare gravemente la loro utilità. Tuttavia, il transfer learning consente di formare ulteriormente una rete neurale profonda addestrata per raggiungere un nuovo compito, con una quantità di dati di formazione e un impegno di calcolo inferiori. Il tipo più semplice di transfer learning si chiama ottimizzazione. Esso consiste semplicemente nell'addestramento del modello su un grande set di dati generici (ad esempio, Wikipedia) e poi nell'ulteriore addestramento ("fine-tuning") del modello su un set di dati specifico di un task molto più piccolo, etichettato con il task target effettivo. Forse, in maniera sorprendente, i set di dati con ottimizzazione regolare possono essere estremamente piccoli, forse contenenti solo centinaia o addirittura decine di esempi di formazione e la formazione perfezionata richiede solo pochi minuti su una singola CPU. Il transfer learning semplifica la distribuzione di modelli di deep learning in tutta l'azienda.

Oggi esiste un intero ecosistema di provider che distribuisce modelli pre-addestrati su diverse combinazioni di lingue, set di dati e attività di pre-addestramento. Questi modelli pre-addestrati possono essere scaricati e perfezionati per una vasta gamma di task di destinazione.

Scopri come creare un centro di eccellenza AI (CoE) può aumentare il tuo successo con le tecnologie NLP. Il nostro ebook fornisce suggerimenti per creare un CoE e utilizzare in modo efficace modelli di machine learning avanzati.

Esempio di tecniche di pre-elaborazione NLP

Tokenizzazione: la generazione di token suddivide il testo RAW (ad esempio, una frase o un documento) in una sequenza di token, ad esempio parole o parti di parole secondarie. La tokenizzazione è spesso il primo passo di una pipeline di elaborazione NLP. I token sono in genere sequenze ricorrenti di testo trattate come unità di atomi nell'elaborazione successiva. Possono essere parole, sottoparole denominate morfemi (ad esempio, prefissi come "un-" o suffissi come "-ing" in inglese) o anche singoli caratteri.

Modelli Bag-of-words: i modelli Bag-of-words trattano i documenti come raccolte di token o parole non ordinate (un bag è simile a un set, ad eccezione del fatto che tiene traccia del numero di volte in cui viene visualizzato ciascun elemento). Poiché ignorano completamente l'ordine delle parole, i modelli bag-of-words confonderanno una frase come "dog bites man" con "man bites dog". Tuttavia, i modelli bag-of-words vengono spesso utilizzati per motivi di efficienza su grandi attività di recupero di informazioni come i motori di ricerca. Possono produrre risultati quasi ottimali con documenti più lunghi.

Rimozione "stop word": "stop word" è un token ignorato nell'elaborazione successiva. In genere sono parole brevi, frequenti come "a", "the" o "an". I modelli Bag-of-words e i motori di ricerca spesso ignorano le stop word per ridurre i tempi di elaborazione e l'archiviazione all'interno del database. Le reti neurali profonde di solito tengono conto dell'ordine delle parole (cioè non sono modelli bag-of-words) e non eseguono la rimozione delle stop word, perché le stop word possono trasmettere distinzioni sottili nel significato (ad esempio, "il pacchetto è stato perso" e "un pacchetto è perso" non significano la stessa cosa, anche se sono uguali dopo la rimozione di stop word) .

Stemming e lemmatizzazione: i morfemi sono gli elementi con significato più piccoli del linguaggio. In genere, i morfemi sono più piccoli delle parole. Ad esempio, "rivisitato" è costituito dal prefisso "ri-", dalla radice "visit" e dal suffisso "-ato" per il tempo passato. Lo stemming e la lemmatizzazione mappano le parole alle loro forme tema (ad esempio, "rivisit" + PASSATO). Stemming e lemmatizzazione sono passi cruciali nei modelli di apprendimento pre-approfondito, ma i modelli di apprendimento approfondito generalmente imparano queste regolarità dai propri dati di formazione, e quindi non richiedono passaggi espliciti di stesura o di lemmatizzazione.

Tagging parziali e analisi sintattica: l'applicazione di tag part-of-speech (PoS) è il processo di etichettatura di ogni parola con la sua parte vocale (ad esempio, sostantivo, verbo, aggettivo e così via). Un parser sintattico identifica il modo in cui le parole si combinano per formare espressioni e frasi. L'applicazione di tag PoS è un task di etichettatura di sequenza, l'analisi sintattica è un tipo esteso di attività di etichettatura di sequenza e Nntworks neurali profondi sono la tecnologia all'avanguardia sia per l'applicazione di tag PoS che per l'analisi sintattica. Prima dell'apprendimento approfondito, l'applicazione di tag e l'analisi sintattica PoS sono stati passi essenziali nella comprensione della frase. Tuttavia, i moderni modelli di NLP per l'apprendimento approfondito generalmente beneficiano solo marginalmente (se non affatto) di PoS o informazioni sulla sintassi, quindi né l'applicazione di tag PoS né l'analisi sintattica sono ampiamente utilizzati nell'elaborazione di NLP per l'apprendimento approfondito.

Linguaggi di programmazione NLP

Python:

Le librerie e gli strumenti NLP sono generalmente disponibili in Python e, per questo motivo, la maggior parte dei progetti NLP è stata sviluppata in Python. L'ambiente di sviluppo interattivo di Python semplifica lo sviluppo e il test di un nuovo codice.

Java e C++:

Per elaborare grandi quantità di dati, C++ e Java sono spesso i linguaggi preferiti in quanto sono in grado di supportare un codice più efficiente.

Librerie NLP e ambienti di sviluppo

Ecco alcuni esempi delle librerie NLP più diffuse.

TensorFlow e PyTorch: si tratta dei due toolkit di apprendimento approfondito più diffusi. Sono disponibili gratuitamente per la ricerca e per scopi commerciali. Sebbene supportino più linguaggi, il loro linguaggio primario è Python. Sono dotati di grandi librerie di componenti predefiniti, quindi anche i modelli NLP di deep learning molto sofisticati richiedono spesso di collegare questi componenti insieme. Inoltre, supportano un'infrastruttura di computazione a elevate prestazioni, ad esempio cluster di macchine con acceleratori GPU (Graphical Process Unit). Hanno documentazione e tutorial eccellenti.

AllenNLP: si tratta di una libreria di componenti NLP di alto livello (ad esempio, chatbot semplici) implementati in PyTorch e Python. La documentazione è eccellente.

HuggingFace: questa azienda distribuisce centinaia di modelli NLP di Deep Learning pre-addestrati e un toolkit software plug-and-play disponibile in TensorFlow e PyTorch che consente agli sviluppatori di valutare rapidamente l'efficacia dei diversi modelli pre-addestrati nelle proprie attività specifiche.

Spark NLP: Spark NLP è una libreria di elaborazione a testo open source per NLP avanzata per i linguaggi di programmazione Python, Java e Scala. Il suo obiettivo è fornire un'interfaccia API (Application Programming Interface) per le pipeline di elaborazione del linguaggio naturale. Offre modelli di rete neurali pre-addestrati, pipeline e integrazioni, nonché supporto per la formazione di modelli personalizzati.

SpaCy NLP: SpaCy è una libreria gratuita e open source per NLP avanzata in Python ed è progettata in modo specifico per aiutare a creare applicazioni in grado di elaborare e comprendere grandi volumi di testo. SpaCy è noto per essere estremamente intuitivo e in grado di gestire molte delle attività necessarie nei progetti NLP comuni.

In sintesi, l'elaborazione del linguaggio naturale è un'entusiasmante area di sviluppo dell'intelligenza artificiale che alimenta una vasta gamma di nuovi prodotti, come motori di ricerca, chatbot, sistemi di raccomandazione e sistemi di riconoscimento vocale. Mentre le interfacce umane con i computer continuano a migrare da pulsanti, moduli e linguaggi specifici del dominio, la domanda di crescita nell'elaborazione del linguaggio naturale continuerà ad aumentare. Per questo motivo, l'impegno di Oracle Cloud Infrastructure è fornire prestazioni on-premise con le forme e gli strumenti di computazione ottimizzati per le prestazioni dedicate alla NLP. Oracle Cloud Infrastructure offre una gamma di forme GPU che puoi distribuire in pochi minuti per iniziare a sperimentare l'NLP.