Tecnologia di elaborazione del linguaggio naturale
L'elaborazione del linguaggio naturale include molte applicazioni, ad esempio l'analisi del sentiment, il rilevamento degli argomenti, il rilevamento della lingua, l'estrazione di frasi chiave e la categorizzazione dei documenti.
In particolare, è possibile usare l'elaborazione del linguaggio naturale per:
- Classificare i documenti. Ad esempio, è possibile etichettarli come sensibili o spam.
- Eseguire operazioni di elaborazione o ricerche successive usando output di elaborazione del linguaggio naturale.
- Riepilogare il testo identificando le entità nel documento.
- Contrassegna i documenti con parole chiave usando entità identificate.
- Eseguire ricerche e recupero basati sul contenuto usando i tag.
- Riepilogare gli argomenti chiave di un documento usando le entità identificate.
- Classificare i documenti per la navigazione usando gli argomenti rilevati.
- Enumerare i documenti correlati in base a un argomento selezionato.
- Valutare il sentiment del testo per comprenderne il tono positivo o negativo.
Man mano che la tecnologia avanza, è possibile usare l'elaborazione del linguaggio naturale per classificare e analizzare i dati di testo. È anche possibile usarlo per migliorare le funzioni di intelligenza artificiale interpretabili in diversi domini. L'integrazione dei modelli linguistici migliora significativamente le funzionalità di elaborazione del linguaggio naturale. I modelli linguistici come GPT e BERT possono generare testo umano e con riconoscimento contestuale. Questa funzionalità li rende estremamente efficaci per le attività complesse di elaborazione del linguaggio. Completano le tecniche di elaborazione del linguaggio naturale esistenti gestendo attività cognitive più ampie, che migliorano i sistemi di conversazione e l'engagement dei clienti, soprattutto con modelli come Dolly 2.0 di Databricks.
Relazione e differenze tra i modelli linguistici e l'elaborazione del linguaggio naturale
L'elaborazione del linguaggio naturale è un campo completo che comprende varie tecniche per l'elaborazione del linguaggio umano. Al contrario, i modelli linguistici sono un subset specifico di elaborazione del linguaggio naturale. Si concentrano sull'apprendimento avanzato per eseguire attività linguistiche di alto livello. I modelli linguistici migliorano l'elaborazione del linguaggio naturale fornendo funzionalità avanzate di generazione e comprensione del testo, ma non sono sinonimi di elaborazione del linguaggio naturale. Servono invece come strumenti potenti all'interno del dominio di elaborazione del linguaggio naturale più ampio abilitando l'elaborazione del linguaggio più sofisticata.
Nota
Questo articolo è incentrato sull'elaborazione del linguaggio naturale. La relazione tra l'elaborazione del linguaggio naturale e i modelli linguistici dimostra che i modelli linguistici migliorano i processi di elaborazione del linguaggio naturale tramite funzionalità di comprensione e generazione del linguaggio superiori.
Casi d'uso potenziali
Gli scenari aziendali che possono trarre vantaggio dall'elaborazione personalizzata del linguaggio naturale includono:
Intelligence sui documenti per documenti scritti a mano o creati da computer in finanza, sanità, vendita al dettaglio, governo e altri settori.
Attività di elaborazione del linguaggio naturale indipendenti dal settore per l'elaborazione del testo, ad esempio riconoscimento di entità denominate (NER), classificazione, riepilogo ed estrazione delle relazioni.
Queste attività consentono di recuperare, identificare e analizzare automaticamente informazioni sui documenti, ad esempio testo e dati non strutturati. Esempi di queste attività includono modelli di stratificazione dei rischi, classificazione dell'ontologia e riepiloghi delle vendite al dettaglio.
Recupero delle informazioni e creazione del grafico delle informazioni per la ricerca semantica. Questa funzionalità consente di creare grafici di conoscenze mediche che supportano la scoperta di farmaci e studi clinici.
Traduzione testuale per sistemi di intelligenza artificiale conversazionale nelle applicazioni rivolte ai clienti in settori retail, finance, travel e altri settori.
Sentiment e intelligenza emotiva avanzata nell'analisi, in particolare per il monitoraggio della percezione del marchio e dell'analisi dei feedback dei clienti.
Generazione automatica di report. Sintetizzare e generare report testuali completi da input di dati strutturati. Queste attività aiutano settori come finanza e conformità, dove è necessaria una documentazione completa.
Interfacce attivate dalla voce che integrano l'elaborazione del linguaggio naturale per il riconoscimento vocale e le funzionalità di conversazione naturale. Questa integrazione migliora le interazioni degli utenti nelle applicazioni Internet delle cose e nelle applicazioni smart device.
Modelli di linguaggio adattivo che possono regolare dinamicamente l'output del linguaggio in base ai vari livelli di comprensione del pubblico. Questa funzionalità è fondamentale per i miglioramenti del contenuto didattico e dell'accessibilità.
Analisi del testo della cybersecurity per analizzare i modelli di comunicazione e l'utilizzo della lingua in tempo reale. Questa analisi consente di identificare potenziali minacce alla sicurezza nella comunicazione digitale e di migliorare il rilevamento di tentativi di phishing o di disinformazioni.
Apache Spark come framework di elaborazione del linguaggio naturale personalizzato
Apache Spark è un potente framework di elaborazione parallela che migliora le prestazioni delle applicazioni analitiche di Big Data usando l'elaborazione in memoria. Azure Synapse Analytics, Azure HDInsighte Azure Databricks offrono un accesso affidabile alle funzionalità di elaborazione di Spark. Questo accesso consente di eseguire facilmente operazioni di dati su larga scala.
Spark NLP è un framework efficiente che può elaborare grandi volumi di testo per carichi di lavoro di elaborazione del linguaggio naturale personalizzati. Questa libreria open source offre funzionalità complete usando le librerie Python, Java e Scala. Queste librerie offrono la sofisticatezza che è possibile trovare in importanti librerie di elaborazione del linguaggio naturale come spaCy e Natural Language Toolkit. Spark NLP include funzionalità avanzate come il controllo ortografico, l'analisi del sentiment e la classificazione dei documenti. Queste funzionalità consentono di garantire in modo coerente l'accuratezza e la scalabilità ottimali.
Apache®, Apache Spark e il logo con la fiamma sono marchi o marchi registrati di Apache Software Foundation negli Stati Uniti e/o in altri Paesi. L'uso di questi marchi non implica alcuna approvazione da parte di Apache Software Foundation.
I benchmark pubblici recenti evidenziano le prestazioni di Spark NLP. Questi benchmark mostrano miglioramenti significativi della velocità rispetto ad altre librerie. Spark NLP mantiene anche un'accuratezza paragonabile per il training di modelli personalizzati. In particolare, l'integrazione dei modelli Llama 2 e OpenAI Whisper migliora le interfacce di conversazione e il riconoscimento vocale multilingue. Queste funzionalità segnano progressi significativi nelle funzionalità di elaborazione ottimizzate.
Spark NLP usa in modo efficace un cluster Spark distribuito che funziona come estensione nativa di Spark ML e opera direttamente nei frame di dati. Questa integrazione supporta miglioramenti delle prestazioni nei cluster, che facilitano la creazione di pipeline di elaborazione del linguaggio naturale unificato e di Machine Learning per attività come la classificazione dei documenti e la stima dei rischi. Gli incorporamenti MPNet e l'ampio supporto ONNX arricchiscono ulteriormente queste funzionalità e consentono un'elaborazione precisa e compatibile con il contesto.
Spark NLP offre risultati estremamente accurati in un'ampia gamma di attività di elaborazione del linguaggio naturale. La raccolta include modelli di Deep Learning predefiniti per il riconoscimento di entità denominate, la classificazione dei documenti e il rilevamento del sentiment. Il design ricco di funzionalità include modelli linguistici preaddestrati che supportano embedding di parole, segmenti, frasi e documenti.
L'infrastruttura di Spark NLP viene ridimensionata usando build ottimizzate per CPU, GPU e chip Intel Xeon più recenti, che consentono ai processi di training e inferenza di usare completamente i cluster Spark. Questa funzionalità consente di garantire una gestione efficiente delle attività di elaborazione del linguaggio naturale in diversi ambienti e applicazioni.
Sfide
l'elaborazione delle risorse: l'elaborazione di una raccolta di documenti di testo in formato libero richiede una quantità significativa di risorse di calcolo. Anche l'elaborazione richiede molto tempo. Questo tipo di elaborazione comporta spesso la distribuzione di calcolo GPU. Miglioramenti recenti che supportano la quantizzazione, ad esempio le ottimizzazioni nelle architetture NLP spark come Llama 2, consentono di semplificare queste attività intensive allocando le risorse in modo più efficiente.
standardizzazione: senza un formato documento standardizzato, può essere difficile ottenere risultati coerenti quando si utilizza l'elaborazione di testo in formato libero per estrarre fatti specifici da un documento. Ad esempio, l'estrazione del numero e della data della fattura da varie fatture comporta problemi. L'integrazione di modelli di elaborazione del linguaggio naturale adattabili come M2M100 migliora l'accuratezza dell'elaborazione in più linguaggi e formati. Questa precisione migliorata porta a risultati più coerenti.
Varietà e complessità dei dati: Affrontare la varietà delle strutture dei documenti e delle sfumature linguistiche rimane complesso. Le innovazioni come gli incorporamenti MPNet offrono una comprensione contestuale avanzata, che porta a una gestione più intuitiva di formati testuali diversi e a un'elaborazione dei dati più affidabile.
Criteri di scelta principali
In Azure, i servizi Spark come Azure Databricks, Microsoft Fabric e HDInsight offrono funzionalità di elaborazione del linguaggio naturale quando vengono usate con Spark NLP. I servizi di intelligenza artificiale di Azure sono un'altra opzione per la funzionalità di elaborazione del linguaggio naturale. Per decidere quale servizio usare, considerare gli aspetti seguenti:
Se si vogliono usare modelli predefiniti o con training preliminare, è consigliabile usare le API fornite dai servizi di intelligenza artificiale. In alternativa, è possibile scaricare il modello preferito tramite Spark NLP, che include modelli avanzati come Llama 2 e MPNet per funzionalità avanzate.
Se è necessario eseguire il training di modelli personalizzati in base a una raccolta di dati di testo di grandi dimensioni, è consigliabile usare Azure Databricks, Fabric o HDInsight con Spark NLP. Queste piattaforme offrono potenza di calcolo e flessibilità necessarie per il training completo del modello.
Se sono necessarie funzionalità di elaborazione del linguaggio naturale di basso livello, ad esempio tokenizzazione, stemming, lemmatizzazione e frequenza dei documenti inversa(TF/IDF), è consigliabile usare Azure Databricks, Fabric o HDInsight con Spark NLP. In alternativa, usare una libreria software open source nello strumento di elaborazione preferito.
Se sono necessarie funzionalità semplici e di elaborazione del linguaggio naturale di alto livello, come l'identificazione di entità e finalità, il rilevamento degli argomenti, il controllo ortografico o l'analisi del sentiment, è consigliabile usare le API offerte dai servizi di intelligenza artificiale. In alternativa, scaricare il modello preferito tramite Spark NLP per usare funzioni predefinite per queste attività.
Matrice di funzionalità
Le tabelle seguenti riepilogano le differenze principali nelle funzionalità dei servizi di elaborazione del linguaggio naturale.
Funzionalità generali
Capacità | Servizio Spark (Azure Databricks, Fabric, HDInsight) con Spark NLP | Servizi di intelligenza artificiale |
---|---|---|
Fornisce modelli sottoposti a training come servizio | Sì | Sì |
REST API (Interfaccia di Programmazione delle Applicazioni REST) | Sì | Sì |
Programmabilità | Python Scala | Visualizza i linguaggi di programmazione supportati |
Supporta l'elaborazione di set di dati di grandi dimensioni e documenti di grandi dimensioni | Sì | NO |
Funzionalità degli annotatori
Capacità | Servizio Spark (Azure Databricks, Fabric, HDInsight) con Spark NLP | Servizi di intelligenza artificiale |
---|---|---|
Rilevatore di frasi | Sì | NO |
Rilevatore di frasi complesso | Sì | Sì |
Tokenizer | Sì | Sì |
Generatore di N-grammi | Sì | NO |
Segmentazione delle parole | Sì | Sì |
Algoritmo di Stemming | Sì | NO |
Lemmatizzatore | Sì | NO |
Tag delle parti del discorso | Sì | NO |
Parser delle dipendenze | Sì | NO |
Traduzione | Sì | NO |
Gestione delle stopword | Sì | NO |
Correzione dell'ortografia | Sì | NO |
Normalizzatore | Sì | Sì |
Matcher di testo | Sì | NO |
TF/IDF | Sì | NO |
Corrisponde all'espressione regolare | Sì | Incorporato nella funzionalità CLU (Conversational Language Understanding) |
Confronta date | Sì | Possibile tramite i riconoscitori della data e ora in CLU |
Chunker | Sì | NO |
Nota
Language Understanding (LUIS) verrà ritirato il 1° ottobre 2025. È consigliabile eseguire la migrazione di applicazioni LUIS esistenti alla funzionalità CLU (Conversational Language Understanding) del linguaggio di intelligenza artificiale di Azure, che migliora le funzionalità di comprensione del linguaggio e offre nuove funzionalità.
Funzionalità di elaborazione del linguaggio naturale di alto livello
Capacità | Servizio Spark (Azure Databricks, Fabric, HDInsight) con Spark NLP | Servizi di intelligenza artificiale |
---|---|---|
Controllo ortografico | Sì | NO |
Riepilogo | Sì | Sì |
Risposta alle domande | Sì | Sì |
Rilevamento del sentimento | Sì | Sì |
Rilevamento delle emozioni | Sì | Supporta il opinion mining |
Classificazione dei token | Sì | Sì, tramite modelli personalizzati |
Classificazione del testo | Sì | Sì, tramite modelli personalizzati |
Rappresentazione di testo | Sì | NO |
NER | Sì | Sì, l'analisi del testo fornisce un set di NER |
Riconoscimento delle entità | Sì | Sì, tramite modelli personalizzati |
Rilevamento della lingua | Sì | Sì |
Supporto altre lingue oltre all'inglese | Sì, supporta più di 200 lingue | Sì, supporta più di 97 lingue |
Configurare Spark NLP in Azure
Per installare Spark NLP, usare il codice seguente, ma sostituire <version>
con il numero di versione più recente. Per altre informazioni, vedere documentazione di Spark NLP.
# Install Spark NLP from PyPI.
pip install spark-natural language processing==<version>
# Install Spark NLP from Anaconda or Conda.
conda install -c johnsnowlabs spark-natural language processing
# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP as an external JAR after compiling and building Spark NLP by using SBT assembly.
spark-shell --jars spark-natural language processing-assembly-3 <version>.jar
Sviluppare pipeline di elaborazione del linguaggio naturale
Spark NLP segue lo stesso concetto di sviluppo dei modelli di Machine Learning Spark ML tradizionali quando esegue una pipeline di elaborazione del linguaggio naturale. Applica anche tecniche specializzate di elaborazione del linguaggio naturale.
Una pipeline spark NLP include i componenti principali seguenti:
DocumentAssembler è un trasformatore che prepara i dati convertendoli in un formato che spark NLP può elaborare. Questa fase è il punto di ingresso per ogni pipeline di Spark NLP. DocumentAssembler legge una colonna
String
o unArray[String]
e può pre-elaborare il testo usandosetCleanupMode
, che è disattivato per impostazione predefinita.SentenceDetector è un annotatore che identifica i limiti delle frasi usando approcci predefiniti. Può restituire ogni frase rilevata in un
Array
o in righe separate quandoexplodeSentences
è impostato su true.Tokenizer è un annotatore che divide il testo non elaborato in token discreti, ad esempio parole, numeri e simboli e li restituisce come
TokenizedSentence
. Il tokenizer non è preconfigurato e utilizza la configurazione di input all'interno del riferimentoRuleFactory
per creare regole di tokenizzazione. È possibile aggiungere regole personalizzate se quelle predefinite non sono sufficienti.Normalizer è un annotatore incaricato della raffinazione dei token. Normalizer applica espressioni regolari e trasformazioni del dizionario per pulire il testo e rimuovere caratteri estranei.
wordEmbeddings sono annotatori di ricerca che eseguono il mapping dei token a vettori e facilitano l'elaborazione semantica. È possibile specificare un dizionario di incorporamento personalizzato usando
setStoragePath
, dove ogni riga contiene un token e il relativo vettore, separati da spazi. I token non risolti sono impostati per impostazione predefinita su vettori nulli.
Spark NLP usa pipeline Spark MLlib con supporto nativo da MLflow, una piattaforma open source che gestisce il ciclo di vita di Machine Learning. MLflow include i componenti chiave seguenti:
MLflow Tracking registra esecuzioni sperimentali e offre solide funzionalità di query per analizzare i risultati.
I progetti MLflow consentono di eseguire codice di data science su piattaforme diverse. Questa funzionalità migliora la portabilità e la riproducibilità.
Modelli MLflow supportano la distribuzione di modelli versatili in ambienti diversi tramite un framework coerente.
registro modelli offre una gestione completa dei modelli archiviando le versioni centralmente per facilitare l'accesso e la distribuzione. Questo passaggio facilita l'idoneità alla produzione.
MLflow è integrato con piattaforme come Azure Databricks, ma è anche possibile installarlo in altri ambienti basati su Spark per gestire e tenere traccia degli esperimenti. Questa integrazione consente di usare il Registro modelli MLflow per rendere disponibili i modelli a scopo di produzione. È possibile semplificare il processo di distribuzione e gestire la governance del modello.
Usando MLflow insieme a Spark NLP, è possibile garantire una gestione e una distribuzione più efficienti delle pipeline di elaborazione del linguaggio naturale. È anche possibile soddisfare i requisiti moderni per la scalabilità e l'integrazione, supportando tecniche avanzate come incorporamenti di parole e adattamenti del modello linguistico.
Contributori
Microsoft gestisce questo articolo. I collaboratori seguenti hanno scritto questo articolo.
Autori principali:
- Freddy Ayala | Cloud Solution Architect
- Moritz Steller | Senior Cloud Solution Architect
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Passaggi successivi
Documentazione di Spark NPL:
Componenti di Azure:
Informazioni sulle risorse:
- nozioni fondamentali sull'intelligenza artificiale di Microsoft Azure : Esplorare l'elaborazione del linguaggio naturale
- Sviluppare soluzioni di elaborazione del linguaggio naturale con i servizi di intelligenza artificiale