Tecnologia di elaborazione del linguaggio naturale (lab)

Servizi di intelligenza artificiale di Azure
Azure Databricks
Azure HDInsight
Azure Synapse Analytics

L'elaborazione del linguaggio naturale (NLP) include molti usi: analisi del sentiment, rilevamento degli argomenti, rilevamento della lingua, estrazione di frasi chiave e categorizzazione dei documenti.

In particolare, è possibile usare NLP per:

  • Classificare i documenti. Ad esempio, è possibile etichettare i documenti come sensibili o spam.
  • Eseguire successive operazioni di elaborazione o ricerche. È possibile usare l'output NLP per questi scopi.
  • Riepilogare il testo identificando le entità presenti nel documento.
  • Contrassegna i documenti con parole chiave. Per le parole chiave, NLP può usare entità identificate.
  • Eseguire la ricerca e il recupero basati sul contenuto. L'assegnazione di tag rende possibile questa funzionalità.
  • Riepilogare gli argomenti importanti di un documento. L'NLP può combinare entità identificate in argomenti.
  • Classificare i documenti per lo spostamento. A questo scopo, la prevenzione della perdita dei dati usa gli argomenti rilevati.
  • Enumerare i documenti correlati in base a un argomento selezionato. A questo scopo, la prevenzione della perdita dei dati usa gli argomenti rilevati.
  • Assegnare un punteggio al sentiment. Usando questa funzionalità, è possibile valutare il tono positivo o negativo di un documento.

Apache, Apache Spark e il logo flame sono marchi o marchi registrati di Apache® Software Foundation nei Stati Uniti e/o in altri paesi. L'uso di questi marchi non implica alcuna approvazione da parte di Apache Software Foundation.

Potenziali casi d'uso

Gli scenari aziendali che possono trarre vantaggio dalla prevenzione della perdita di rete personalizzata includono:

  • Intelligence sui documenti per documenti scritti a mano o creati da computer in finanza, sanità, vendita al dettaglio, governo e altri settori.
  • Attività NLP indipendenti dal settore per l'elaborazione del testo, ad esempio il riconoscimento delle entità dei nomi (NER), la classificazione, il riepilogo e l'estrazione delle relazioni. Queste attività automatizzano il processo di recupero, identificazione e analisi delle 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.

Apache Spark come framework NLP personalizzato

Apache Spark è un framework di elaborazione parallela che supporta l'elaborazione in memoria per migliorare le prestazioni di applicazioni analitiche di Big Data. Azure Synapse Analytics, Azure HDInsight e Azure Databricks offrono l'accesso a Spark e sfruttano la potenza di elaborazione.

Per i carichi di lavoro NLP personalizzati, Spark NLP funge da framework efficiente per l'elaborazione di una grande quantità di testo. Questa libreria NLP open source offre librerie Python, Java e Scala che offrono la funzionalità completa delle librerie NLP tradizionali, ad esempio spaCy, NLTK, Stanford CoreNLP e Open NLP. Spark NLP offre anche funzionalità come il controllo ortografico, l'analisi del sentiment e la classificazione dei documenti. Spark NLP migliora le attività precedenti fornendo precisione, velocità e scalabilità all'avanguardia.

Diagram that shows areas of N L P functionality like entity recognition. Various boxes list N L P annotators, models, and supported languages.

I benchmark pubblici recenti mostrano Spark NLP come 38 e 80 volte più veloci rispetto a spaCy, con un'accuratezza paragonabile per il training di modelli personalizzati. Spark NLP è l'unica libreria open source che può usare un cluster Spark distribuito. Spark NLP è un'estensione nativa di Spark ML che opera direttamente nei frame di dati. Di conseguenza, le velocità in un cluster comportano un altro ordine di miglioramento delle prestazioni. Poiché ogni pipeline NLP spark è una pipeline di Spark ML, L'NLP di Spark è particolarmente adatta per la creazione di pipeline di NLP e Machine Learning unificate, ad esempio la classificazione dei documenti, la stima dei rischi e le pipeline di raccomandazione.

Oltre a prestazioni eccellenti, Spark NLP offre anche un'accuratezza all'avanguardia per un numero crescente di attività NLP. Il team spark NLP legge regolarmente i documenti accademici più recenti e implementa modelli all'avanguardia. Negli ultimi due-tre anni, i modelli con prestazioni migliori hanno usato l'apprendimento avanzato. La libreria include modelli di Deep Learning predefiniti per il riconoscimento di entità denominate, la classificazione dei documenti, il rilevamento di sentimenti ed emozioni e il rilevamento delle frasi. La raccolta include anche decine di modelli linguistici con training preliminare che includono il supporto per word, blocchi, frasi e incorporamenti di documenti.

La libreria include build ottimizzate per CPU, GPU e chip Intel Xeon più recenti. È possibile ridimensionare i processi di training e inferenza per sfruttare i vantaggi dei cluster Spark. Questi processi possono essere eseguiti in produzione in tutte le piattaforme di analisi più diffuse.

Sfide

  • 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. Questi processi spesso comportano la distribuzione di calcolo GPU.
  • 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. Si consideri, ad esempio, una rappresentazione testuale di una fattura: può essere difficile creare un processo che estrae correttamente il numero di fattura e la data in cui le fatture provengono da vari fornitori.

Criteri di scelta principali

In Azure, i servizi Spark come Azure Databricks, Azure Synapse Analytics e Azure HDInsight offrono funzionalità NLP quando vengono usate con Spark NLP. Servizi cognitivi di Azure è un'altra opzione per la funzionalità NLP. Per decidere quale servizio usare, prendere in considerazione queste domande:

  • Usare modelli predefiniti o con training preliminare? In caso affermativo, prendere in considerazione l'uso delle API offerte da Servizi cognitivi di Azure. Oppure scaricare il modello preferito tramite Spark NLP.

  • È necessario eseguire il training di modelli personalizzati con una raccolta di grandi dimensioni di dati di testo? In caso affermativo, prendere in considerazione l'uso di Azure Databricks, Azure Synapse Analytics o Azure HDInsight con Spark NLP.

  • Sono necessarie funzionalità di elaborazione del linguaggio naturale di base, quali tokenizzazione, stemming, lemmatizzazione e frequenza del termine/frequenza inversa del documento (TF/IDF)? In caso affermativo, prendere in considerazione l'uso di Azure Databricks, Azure Synapse Analytics o Azure HDInsight con Spark NLP. In alternativa, usare una libreria software open source nello strumento di elaborazione preferito.

  • Sono necessarie funzionalità di elaborazione del linguaggio naturale avanzate, quali identificazione di entità e finalità, rilevamento dell'argomento, controllo ortografico o analisi del sentiment? In caso affermativo, prendere in considerazione l'uso delle API offerte da Servizi cognitivi. Oppure scaricare il modello preferito tramite Spark NLP.

Matrice delle funzionalità

Le tabelle seguenti riepilogano le principali differenze nelle funzionalità dei servizi NLP.

Funzionalità generali

Funzionalità Servizio Spark (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) con Spark NLP Servizi cognitivi di Azure
Fornisce modelli sottoposti a training come servizio
REST API
Programmabilità Python, Scala Per le lingue supportate, vedere Risorse aggiuntive
Supporta l'elaborazione di set di Big Data e documenti di grandi dimensioni No

Funzionalità NLP di basso livello

Funzionalità di annotatori Servizio Spark (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) con Spark NLP Servizi cognitivi di Azure
Rilevamento frasi No
Rilevamento frasi profonde
Tokenizer
Generatore N-gram No
Segmentazione di parola
Stemmer No
Lemmatizer No
Tag delle parti del discorso No
Parser delle dipendenze No
Traduzione No
Pulitura parola non significative No
Correzione ortografia No
Normalizzatore
Matcher di testo No
TF/IDF No
Matcher di espressioni regolari Embedded in Language Understanding Service (LUIS). Non supportato in Conversational Language Understanding (CLU), che sostituisce LUIS.
Matcher data Possibile in LUIS e CLU tramite riconoscitori DateTime
Chunker No

Funzionalità NLP di alto livello

Funzionalità Servizio Spark (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) con Spark NLP Servizi cognitivi di Azure
Controllo ortografia No
Riepilogo
Risposta alle domande
Rilevamento del sentiment
Rilevamento delle emozioni Supporta il opinion mining
Classificazione dei token Sì, tramite modelli personalizzati
Classificazione testo Sì, tramite modelli personalizzati
Rappresentazione testuale No
NER Sì: l'analisi del testo fornisce un set di modelli NER e i modelli personalizzati sono nel riconoscimento delle entità
Riconoscimento delle entità Sì, tramite modelli personalizzati
Rilevamento lingua
Supporta le 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 la documentazione di Spark NLP.

# Install Spark NLP from PyPI.
pip install spark-nlp==<version>

# Install Spark NLP from Anacodna or Conda.
conda install -c johnsnowlabs spark-nlp

# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP as an external JAR after compiling and building Spark NLP by using sbt assembly.
spark-shell --jars spark-nlp-assembly-3 <version>.jar

Sviluppare pipeline NLP

Per l'ordine di esecuzione di una pipeline NLP, Spark NLP segue lo stesso concetto di sviluppo dei modelli di Machine Learning Spark ML tradizionali. Tuttavia, Spark NLP applica tecniche NLP.

Diagram that shows N L P pipeline stages, such as document assembly, sentence detection, tokenization, normalization, and word embedding.

I componenti principali di una pipeline spark NLP sono:

  • DocumentAssembler: trasformatore che prepara i dati modificandoli in un formato che Spark NLP può elaborare. Questa fase è il punto di ingresso per ogni pipeline spark NLP. DocumentAssembler può leggere una String colonna o un oggetto Array[String]. È possibile usare setCleanupMode per pre-elaborare il testo. Per impostazione predefinita, questa modalità è disattivata.

  • SentenceDetector: annotatore che rileva i limiti delle frasi usando l'approccio specificato. Questo annotatore può restituire ogni frase estratta in un oggetto Array. Può anche restituire ogni frase in una riga diversa, se impostata su explodeSentences true.

  • Tokenizer: annotatore che separa il testo non elaborato in token o unità come parole, numeri e simboli e restituisce i token in una TokenizedSentence struttura. Questa classe non è adattata. Se si adatta un tokenizer, l'interno RuleFactory usa la configurazione di input per configurare le regole di tokenizzazione. Tokenizer usa standard aperti per identificare i token. Se le impostazioni predefinite non soddisfano le proprie esigenze, è possibile aggiungere regole per personalizzare Tokenizer.

  • Normalizer: annotatore che pulisce i token. Normalizer richiede gli steli. Normalizer usa espressioni regolari e un dizionario per trasformare il testo e rimuovere caratteri dirty.

  • WordEmbeddings: cercare annotatori che eseguono il mapping dei token ai vettori. È possibile usare setStoragePath per specificare un dizionario di ricerca token personalizzato per gli incorporamenti. Ogni riga del dizionario deve contenere un token e la relativa rappresentazione vettoriale, separati da spazi. Se un token non viene trovato nel dizionario, il risultato è un vettore zero della stessa dimensione.

Spark NLP usa pipeline MLlib Spark, supportate in modo nativo da MLflow. MLflow è una piattaforma open source per il ciclo di vita di Machine Learning. I componenti includono:

  • Rilevamento Mlflow: registra gli esperimenti e fornisce un modo per eseguire query sui risultati.
  • Progetti MLflow: consente di eseguire codice di data science in qualsiasi piattaforma.
  • Modelli MLflow: distribuisce modelli in ambienti diversi.
  • Registro modelli: gestisce i modelli archiviati in un repository centrale.

MLflow è integrato in Azure Databricks. È possibile installare MLflow in qualsiasi altro ambiente basato su Spark per tenere traccia e gestire gli esperimenti. È anche possibile usare il Registro modelli MLflow per rendere disponibili i modelli a scopo di produzione.

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

Passaggi successivi