Condividi tramite


Latent Dirichlet Allocation

Importante

Il supporto dello studio di Azure Machine Learning (versione classica) terminerà il 31 agosto 2024. È consigliabile passare ad Azure Machine Learning entro tale data.

A partire dal 1° dicembre 2021 non sarà possibile creare nuove risorse dello studio di Azure Machine Learning (versione classica). Fino al 31 agosto 2024 sarà possibile continuare a usare le risorse dello studio di Azure Machine Learning (versione classica).

La documentazione relativa allo studio di Machine Learning (versione classica) è in fase di ritiro e potrebbe non essere aggiornata in futuro.

Usare la libreria Vowpal Wabbit per eseguire VW LDA

Categoria: Analisi del testo

Nota

Si applica a: Machine Learning Studio (versione classica)

Moduli di trascinamento della selezione simili sono disponibili nella finestra Azure Machine Learning progettazione.

Panoramica del modulo

Questo articolo descrive come usare il modulo Latent Dirichlet Allocation in Machine Learning Studio (versione classica) per raggruppare testo altrimenti non classificato in diverse categorie. Latent Dirichlet Allocation (LDA) viene spesso usato nell'elaborazione del linguaggio naturale (NLP) per trovare testi simili. Un altro termine comune è la modellazione di argomenti.

Questo modulo accetta una colonna di testo e genera gli output seguenti:

  • Testo di origine, insieme a un punteggio per ogni categoria

  • Matrice di caratteristiche, contenente termini e coefficienti estratti per ogni categoria

  • Trasformazione, che è possibile salvare e riapplicare al nuovo testo usato come input

Poiché questo modulo usa la libreria Vowpal Wabbit, è molto veloce. Per altre informazioni su Vowpal Wabbit, vedere il repository GitHub che include esercitazioni e una spiegazione dell'algoritmo.

Altre informazioni sull'allocazione Latent Dirichlet (LDA)

In generale, LDA non è un metodo per la classificazione di per se, ma usa un approccio generativo. Ciò significa che non è necessario fornire etichette di classe note e quindi dedurre i modelli. L'algoritmo genera invece un modello probabilistico usato per identificare gruppi di argomenti. È possibile usare il modello probabilistico per classificare i case di training esistenti o i nuovi case forniti al modello come input.

Un modello generativo può essere preferibile perché evita di formulare supposizioni solide sulla relazione tra il testo e le categorie e usa solo la distribuzione delle parole per modellare matematicamente gli argomenti.

Per altre informazioni, vedere la sezione Note tecniche.

Come configurare l'allocazione Latent Dirichlet

Questo modulo richiede un set di dati che contiene una colonna di testo, non elaborata o pre-elaborata.

  1. Aggiungere il modulo Latent Dirichlet Allocation all'esperimento.

  2. Come input per il modulo, fornire un set di dati contenente una o più colonne di testo.

  3. Per Colonne di destinazione scegliere una o più colonne contenenti testo da analizzare.

    È possibile scegliere più colonne, ma devono essere di tipo stringa.

    In generale, poiché LDA crea una matrice di funzionalità di grandi dimensioni dal testo, in genere si analerà una singola colonna di testo.

  4. Per Numero di argomenti da modellare digitare un numero intero compreso tra 1 e 1000 che indica il numero di categorie o argomenti da derivare dal testo di input.

    Per impostazione predefinita, vengono creati 5 argomenti.

  5. Per N-grammi, specificare la lunghezza massima di N-grammi generati durante l'hashing.

    Il valore predefinito è 2, ovvero vengono generati sia bigram che unigrammi.

  6. Selezionare l'opzione Normalizza per convertire i valori di output in probabilità. Pertanto, anziché rappresentare i valori trasformati come numeri interi, i valori nel set di dati di output e funzionalità verrebbero trasformati come segue:

    • I valori nel set di dati verranno rappresentati come probabilità in cui P(topic|document).

    • I valori nella matrice dell'argomento della funzionalità verranno rappresentati come probabilità in cui P(word|topic).

  7. Selezionare l'opzione Mostra tutte le opzioni e quindi impostarla su TRUE se si vuole visualizzare e quindi impostare parametri avanzati aggiuntivi.

    Questi parametri sono specifici dell'implementazione Vowpal Wabbit di LDA. Sono disponibili alcune esercitazioni su LDA in Vowpal Wabbit online, nonché sul wiki ufficiale di Vowpal Wabbit.

    Vedere questo esempio per esempi nella versione 8 e l'uso di VW in Azure ML.

    • Parametro Rho. Fornire una probabilità precedente per la sparsità delle distribuzioni degli argomenti. Corrisponde al parametro di VW lda_rho . Usare il valore 1 se si prevede che la distribuzione delle parole sia flat. Ad esempio, si presuppone che tutte le parole siano equiprobable. Se si pensa che la maggior parte delle parole venga visualizzata in modo sparso, è possibile impostarla su un valore molto più basso.

    • Parametro Alpha. Specificare una probabilità precedente per la sparsità dei pesi per argomento del documento. Corrisponde al parametro di VW lda_alpha .

    • Numero stimato di documenti. Digitare un numero che rappresenta la stima migliore del numero di documenti (righe) che verranno elaborati. In questo modo il modulo alloca una tabella hash di dimensioni sufficienti. Corrisponde al parametro lda_D in Vowpal Wabbit.

    • Dimensioni del batch. Digitare un numero che indica il numero di righe da includere in ogni batch di testo inviato a Vowpal Wabbit. Corrisponde al parametro batch_sz in Vowpal Wabbit.

    • Valore iniziale dell'iterazione usato nella pianificazione dell'aggiornamento di apprendimento. Specificare il valore iniziale per la frequenza di apprendimento. Corrisponde al parametro initial_t in Vowpal Wabbit.

    • Potenza applicata all'iterazione durante gli aggiornamenti. Indicare il livello di potenza applicato al conteggio delle iterazioni durante gli aggiornamenti online. Corrisponde al parametro power_t in Vowpal Wabbit.

    • Numero di passaggi sui dati. Specificare il numero di volte in cui l'algoritmo scorrerà i dati. Corrisponde al parametro epoch_size in Vowpal Wabbit.

  8. Selezionare l'opzione Compila dizionario di ngram o Compila dizionario di ngram prima di LDA, se si vuole creare l'elenco n-gram in un passaggio iniziale, prima di classificare il testo.

    Se si crea il dizionario iniziale in anticipo, è possibile usarlo in un secondo momento durante la revisione del modello. La possibilità di eseguire il mapping dei risultati al testo anziché agli indici numerici è in genere più semplice per l'interpretazione. Tuttavia, il salvataggio del dizionario richiederà più tempo e userà spazio di archiviazione aggiuntivo.

  9. Per Dimensioni massime del dizionario ngram digitare il numero totale di righe che è possibile creare nel dizionario n-grammi.

    Questa opzione è utile per controllare le dimensioni del dizionario. Tuttavia, se il numero di ngrammi nell'input supera queste dimensioni, possono verificarsi collisioni.

  10. Eseguire l'esperimento. Il modulo LDA usa il teorema Bayes per determinare quali argomenti possono essere associati alle singole parole. Le parole non sono associate esclusivamente ad argomenti o gruppi. ogni n grammo ha invece una probabilità appresa di essere associato a una delle classi individuate.

Risultati

Il modulo ha due output:

  • Set di dati trasformato: contiene il testo di input e un numero specificato di categorie individuate, insieme ai punteggi per ogni esempio di testo per ogni categoria.

  • Matrice di argomenti della funzionalità: la colonna più a sinistra contiene la funzionalità di testo estratto ed è presente una colonna per ogni categoria contenente il punteggio per tale funzionalità in tale categoria.

Per informazioni dettagliate, vedere Esempio di risultati LDA.

Trasformazione LDA

Questo modulo restituisce anche la trasformazione che applica LDA al set di dati, come interfaccia ITransform.

È possibile salvare questa trasformazione e usarla di nuovo per altri set di dati. Questo può essere utile se è stato creato un training su un corpus di grandi dimensioni e si vogliono riutilizzare i coefficienti o le categorie.

Ridefinizione di un modello o di risultati LDA

In genere non è possibile creare un singolo modello LDA che soddisfi tutte le esigenze e anche un modello progettato per un'attività potrebbe richiedere molte iterazioni per migliorare l'accuratezza. È consigliabile provare tutti questi metodi per migliorare il modello:

  • Modifica dei parametri del modello
  • Uso della visualizzazione per comprendere i risultati
  • Ottenere il feedback degli esperti in materia per verificare se gli argomenti generati sono utili.

Le misure qualitative possono essere utili anche per valutare i risultati. Per valutare i risultati della modellazione di argomenti, prendere in considerazione:

  • Accuratezza: gli elementi simili sono molto simili?
  • Diversità: il modello può discriminare elementi simili quando necessario per il problema aziendale?
  • Scalabilità: funziona in un'ampia gamma di categorie di testo o solo in un dominio di destinazione ristretto?

L'accuratezza dei modelli basati su LDA può spesso essere migliorata usando l'elaborazione del linguaggio naturale per pulire, riepilogare e semplificare o classificare il testo. Ad esempio, le tecniche seguenti, tutte supportate in Machine Learning, possono migliorare l'accuratezza della classificazione:

  • Eliminazione parole vuote

  • Normalizzazione delle maiuscole e minuscole

  • Lemmatizzazione o stemming

  • Riconoscimento di entità denominate

Per altre informazioni, vedere Pre-elabora testoe Riconoscimento entità denominata.

In Studio (versione classica) è anche possibile usare librerie R o Python per l'elaborazione del testo: Esegui script R, Esegui script Python

Esempio

Per esempi di analisi del testo, vedere questi esperimenti nel Azure AI Gallery:

  • Esegui script Python: usa l'elaborazione del linguaggio naturale in Python per pulire e trasformare il testo.

Per informazioni dettagliate e un esempio basato sul testo di revisione dei clienti, vedere Informazioni sui risultati di LDA.

Esempio di risultati LDA

Per illustrare il funzionamento del modulo Latent Dirichlet Allocation, l'esempio seguente applica LDA con le impostazioni predefinite al set di dati Book Review fornito in Machine Learning Studio (versione classica).

Set di dati di origine

Il set di dati contiene una colonna di classificazione, nonché il testo di commento completo fornito dagli utenti.

Questa tabella contiene solo alcuni esempi rappresentativi.

text
Questo libro ha i suoi punti di riferimento. Se non altro, consente di inserire in parole ciò che si vuole da un supervisore.
Ammetto di non aver completato questo libro. Un amico mi ha consigliato di farlo perché ho avuto problemi con l'insonnia...
Scritto male ho provato a leggere questo libro, ma l'ho trovato così turgid e mal scritto che l'ho messo in stato di frustrazione. ...
Dopo aver preso in prestito una copia con le orecchini da amici che la passavano da qualche anno, non sono riuscito a mettere le mani su questo libro che è diventato un preferito di setta di breve durata
Il tracciato di questo libro era interessante e avrebbe potuto essere un buon libro. Sfortunatamente, non lo era. Il problema principale per me era che ...

Durante l'elaborazione, il modulo Latent Dirichlet Allocation pulisce e analizza il testo in base ai parametri specificati. Ad esempio, può creare automaticamente token del testo e rimuovere la punteggiatura e allo stesso tempo trovare le funzionalità di testo per ogni argomento.

Set di dati trasformato LDA

La tabella seguente contiene il set di dati trasformato , basato sull'esempio book review. L'output contiene il testo di input e un numero specificato di categorie individuate, insieme ai punteggi per ogni categoria.

Nome del film Argomento 1 Argomento 2 Argomento 3 Argomento 4 Argomento 5
questo libro ha i suoi punti di riferimento 0.001652892 0.001652892 0.001652892 0.001652892 0.9933884
friend consigliato a me 0.00198019 0.001980198 0.9920791 0.001980198 0.001980198
ha provato a leggere questo libro 0.002469135 0.002469135 0.9901233 0.002469135 0.002469135
preso in prestito da un amico 0.9901232 0.002469135 0.002469135 0.002469135 0.002469135
tracciato di questo libro è stato interessante 0.001652892 0.001652892 0.9933884 0.001652892 0.001652892

In questo esempio è stato usato il valore predefinito 5 per Numero di argomenti da modellare. Pertanto, il modulo LDA crea cinque categorie, che è possibile presupporre corrisponderanno approssimativamente al sistema di classificazione originale a cinque scale.

Il modulo assegna anche un punteggio a ogni voce per ognuna delle cinque categorie che rappresentano gli argomenti. Un punteggio indica la probabilità che la riga debba essere assegnata a una determinata categoria.

Matrice di argomenti delle funzionalità

Il secondo output del modulo è la matrice dell'argomento della funzionalità. Si tratta di un set di dati tabulare che contiene il testo di featurized, , nella colonna Feature, insieme a un punteggio per ognuna delle categorie, nelle colonne rimanenti Argomento 1, Argomento 2, ... Argomento N. Il punteggio rappresenta il coefficiente.

Funzionalità Argomento 1 Argomento 2 Argomento 3 Argomento 4 Argomento 5
Interessante 0.0240282071983144 0.0354678954779375 0.363051866576914 0.0276637824315893 0.660663576149515
Era 0.0171478729532397 0.0823969031108669 0.00452966877950789 0.0408714510319233 0.025077322689733
da 0.0148224220349217 0.0505086981492109 0.00434423322461094 0.0273389126293824 0.0171484355106826
grafico 0.0227415889348212 0.0408709456489325 0.182791041345191 0.086937090812819 1 0.0169680136708971
lettura 0.0227415889348212 0.0408709456489325 0.182791041345191 0.0869370908128191 0.0169680136708971
Provato 0.0269724979147211 0.039026263551767 0.00443749106785087 0.0628829816088284 0.0235340728818033
me 0.0262656945140134 0.0366941302751921 0.00656837975179138 0.0329214576160066 0.0214121851106808
in 0.0141026103224462 0.043359976919215 0.00388640531859447 0.0305925953440055 0.0228993750526364
it 0.0264490547105951 0.0356674440311847 0.00541759897864314 0.0314539386250293 0.0140606468587681
friend 0.0135971322960941 0.0346118171467234 0.00434999437350706 0.0666507321888536 0.018156863779311
punti 0.0227415889348212 0.0396233855719081 0.00404663601474112 0.0381156510019025 0.0337788009496797
good 0.651813073836783 0.0598646397444108 0.00446809691985617 0.0358975694646062 0.0138989124411206
.its 0.0185385588647078 0.144253986783184 0.00408876416453866 0.0583049240441475 0.015442805566858
di 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
Prestito 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
has 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
libro 0.0143157047920681 0.069145948535052 0.184036340170983 0.0548757337823903 0.0156837976985903
Consigliato 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372
this 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372

Note tecniche

Questa sezione contiene informazioni dettagliate sull'implementazione, suggerimenti e risposte alle domande frequenti.

Dettagli dell'implementazione

Per impostazione predefinita, le distribuzioni degli output per il set di dati trasformato e la matrice feature-topic vengono normalizzate come probabilità.

  • Il set di dati trasformato viene normalizzato come probabilità condizionale degli argomenti in base a un documento. In questo caso, la somma di ogni riga è uguale a 1.

  • La matrice feature-topic viene normalizzata come probabilità condizionale delle parole in base a un argomento. In questo caso, la somma di ogni colonna è uguale a 1.

Suggerimento

In alcuni casi il modulo potrebbe restituire un argomento vuoto, che è spesso causato dall'inizializzazione pseudo-casuale dell'algoritmo. In questo caso, è possibile provare a modificare i parametri correlati, ad esempio la dimensione massima del dizionario N-gram o il numero di bit da usare per l'hashing delle funzionalità.

Modellazione di argomenti e LDA

Latent Dirichlet Allocation (LDA) viene spesso usato per la modellazione di argomenti basata sul contenuto, che significa fondamentalmente l'apprendimento di categorie da testo non classificato. Nella modellazione di argomenti basata sul contenuto, un argomento è una distribuzione rispetto alle parole.

Si supponga, ad esempio, di aver fornito un corpus di recensioni dei clienti che include molti, molti prodotti. Il testo delle recensioni inviate da molti clienti nel corso del tempo contiene molti termini, alcuni dei quali vengono usati in più argomenti.

Un argomento identificato dal processo LDA può rappresentare revisioni per un singolo prodotto A o può rappresentare un gruppo di revisioni di prodotti. Per LDA, l'argomento stesso è solo una distribuzione di probabilità nel tempo per un set di parole.

I termini sono raramente esclusivi di qualsiasi prodotto, ma possono fare riferimento ad altri prodotti o essere termini generali che si applicano a tutto ("ottimo", "inascienziato"). Altri termini potrebbero essere parole non erre. Tuttavia, è importante comprendere che il metodo LDA non richiede di acquisire tutte le parole nell'universo o di comprendere come le parole sono correlate, a parte le probabilità di co-occorrenza. Può raggruppare solo le parole usate nel dominio di destinazione.

Dopo aver calcolato il termine indici, le singole righe di testo vengono confrontate usando una misura di somiglianza basata sulla distanza, per determinare se due parti di testo sono simili tra loro. Ad esempio, è possibile che il prodotto abbia più nomi strettamente correlati. In caso contrario, è possibile che i termini fortemente negativi siano in genere associati a un determinato prodotto. È possibile usare la misura di somiglianza sia per identificare i termini correlati che per creare raccomandazioni.

Input previsti

Nome Tipo Descrizione
Set di dati Tabella dati Set di dati di input

Parametri del modulo

Nome Tipo Intervallo Facoltativo Predefinito Descrizione
Numero di bit hash Integer [1;31] Si applica quando la casella di controllo Mostra tutte le opzioni non è selezionata 12 Numero di bit da usare per l'hashing delle funzionalità
Target column(s) Selezione colonne Necessario StringFeature Nome o indice della colonna di destinazione
Numero di argomenti da modellare Integer [1;1000] Necessario 5 Modellare la distribuzione del documento in base agli argomenti N
N-grams Integer [1;10] Obbligatoria 2 Ordine di N grammi generati durante l'hashing
Normalizzare Boolean Necessario true Normalizzare l'output in base alle probabilità. Il set di dati trasformato sarà P(topic|document) e la matrice dell'argomento della funzionalità sarà P(word|topic).
Mostra tutte le opzioni Boolean true o false Necessario Falso Presenta parametri aggiuntivi specifici di Vowpal Wabbit online LDA
Parametro Rho Float [0.00001;1.0] Si applica quando la casella di controllo Mostra tutte le opzioni è selezionata 0,01 Parametro Rho
Parametro alfa Float [0.00001;1.0] Si applica quando la casella di controllo Mostra tutte le opzioni è selezionata 0,01 Parametro alfa
Numero stimato di documenti Integer [1;int.MaxValue] Si applica quando la casella di controllo Mostra tutte le opzioni è selezionata 1000 Numero stimato di documenti (corrisponde al lda_D)
Dimensioni del batch Integer [1;1024] Si applica quando la casella di controllo Mostra tutte le opzioni è selezionata 32 Dimensioni del batch
Valore iniziale dell'iterazione usato nella pianificazione dell'aggiornamento della frequenza di apprendimento Integer [0;int. MaxValue] Si applica quando la casella di controllo Mostra tutte le opzioni è selezionata 0 Valore iniziale del conteggio delle iterazioni usato nella pianificazione dell'aggiornamento della frequenza di apprendimento (corrisponde initial_t parametro)
Alimentazione applicata all'iterazione durante gli aggiornamenti Float [0,0;1,0] Si applica quando la casella di controllo Mostra tutte le opzioni è selezionata 0,5 Potenza applicata al conteggio delle iterazioni durante gli aggiornamenti online (corrisponde power_t parametro)
Number of training iterations Integer [1;1024] Si applica quando la casella di controllo Mostra tutte le opzioni è selezionata 25 Number of training iterations
Compilare il dizionario degli ngrammi Boolean true o false Si applica quando la casella di controllo Mostra tutte le opzioni non è selezionata Vero Compila un dizionario di ngram prima di calcolare LDA. Utile per l'ispezione e l'interpretazione dei modelli
Numero di bit da usare per l'hashing delle funzionalità Integer [1;31] Si applica quando l'opzione Build dictionary of ngrams è False 12 Numero di bit da usare durante l'hashing delle funzionalità
Dimensioni massime del dizionario ngram Integer [1;int.MaxValue] Si applica quando l'opzione Build dictionary of ngrams è True 20000 Dimensioni massime del dizionario ngrams. Se il numero di token nell'input supera queste dimensioni, possono verificarsi conflitti
Compilare il dizionario di ngram prima di LDA Boolean true o false Si applica quando la casella di controllo Mostra tutte le opzioni è selezionata Vero Compila un dizionario di ngram prima di LDA. Utile per l'ispezione e l'interpretazione dei modelli
Numero massimo di ngrammi nel dizionario Integer [1;int.MaxValue] Si applica quando l'opzione Compila dizionario di ngrams è True e la casella di controllo Mostra tutte le opzioni è selezionata 20000 Dimensioni massime del dizionario. Se il numero di token nell'input supera queste dimensioni, possono verificarsi conflitti

Output

Nome Tipo Descrizione
Set di dati trasformato Tabella dati Set di dati di output
Matrice di argomenti delle funzionalità Tabella dati Matrice di argomenti delle funzionalità prodotta da LDA
Trasformazione LDA Interfaccia ITransform Trasformazione che applica LDA al set di dati

Eccezioni

Eccezione Descrizione
Errore 0002 L'eccezione si verifica se non è possibile trovare una o più colonne specificate del set di dati.
Errore 0003 L'eccezione si verifica se uno o più input sono null o vuoti.
Errore 0004 L'eccezione si verifica se un parametro è inferiore o uguale a un valore specifico.
Errore 0017 Si verifica un'eccezione se il tipo di una o più colonne specificate non è supportato dal modulo attuale.

Per un elenco degli errori specifici dei moduli di Studio (versione classica), vedere Machine Learning codici di errore.

Per un elenco delle eccezioni API, vedere Machine Learning di errore dell'API REST.

Vedi anche

Analisi del testo
Hashing di funzioni
Riconoscimento di entità denominate
Punteggio vowpal wabbit 7-4 modello
Training del modello Vowpal Wabbit 7-4
Training del modello Vowpal Wabbit 8