Come si applica SMOTE alla classificazione del testo?


13

Synthetic Minority Oversampling Technique (SMOTE) è una tecnica di sovracampionamento utilizzata in un problema con un set di dati sbilanciato. Finora ho un'idea di come applicarlo su dati generici e strutturati. Ma è possibile applicarlo sul problema della classificazione del testo? Quale parte dei dati è necessaria per sottocampionare? C'è già un'altra domanda al riguardo, ma non ha una risposta. Dove posso forse imparare a iniziare con questo?

Risposte:


11

In realtà la PNL è una delle aree più comuni in cui è necessario il ricampionamento dei dati in quanto vi sono molte attività di classificazione del testo che trattano problemi sbilanciati (si pensi al filtro antispam, al rilevamento di commenti offensivi, alla classificazione degli articoli, ecc.). Ma SMOTE sembra essere problematico qui per alcuni motivi:

  • SMOTE funziona nello spazio delle caratteristiche. Significa che l'output di SMOTE non è un dato sintetico che è un vero rappresentante di un testo all'interno del suo spazio delle caratteristiche.
  • Da un lato SMOTE funziona con KNN e, d'altro canto, gli spazi delle funzionalità per il problema della PNL sono enormemente enormi. KNN fallirà facilmente in quelle enormi dimensioni.

Quindi posso proporti due approcci:

  1. Non preoccuparti della rappresentazione testuale reale di nuovi campioni sintetici che presumo dovrebbe andare bene. Devi bilanciare la distribuzione per il tuo classificatore non per un lettore di dati di testo. Quindi applica SMOTE come tradizionale (tuttavia di solito uso la soluzione 2 qui sotto, quindi non garantisco il risultato!) Con un passaggio Riduzione dimensionale.

1) Supponiamo che tu voglia fare il doppio dei tuoi campioni di dati da una classe minore usando 3-NN. Ignora le classi principali e conserva solo campioni di classi minori.

2) Per ogni punto campione nello spazio delle caratteristiche, scegliere 5 vicini più vicini. Quindi scegline 3 a caso (non è inutile complicarlo? Se non volessi spiegare l'algoritmo originale, direi solo 3 vicini!)

3) Per ogni dimensione calcolare la distanza tra campione e vicini e moltiplicarlo in un numero casuale tra 0-1 e aggiungerlo al valore originale del campione in quella dimensione. (questo complicato paragrafo significa semplicemente per ogni dimensione scegliere un valore casuale tra il campione originale e quel vicino!)

  1. Ma di solito faccio un altro sovracampionamento che è sul testo (così più intuitivo) ed è un po 'SMOTE.

1) Ignora la classe principale. Ottieni una distribuzione di lunghezza di tutti i documenti in classe minore in modo da generare nuovi campioni in base alla lunghezza del documento reale (numero di parole / frasi). Partiamo dal presupposto che vogliamo triplicare le dimensioni della classe (quindi producendo documenti sintetici per documento originale)k=2

2) Genera una sequenza di numeri interi casuali in base a tale distribuzione. Viene utilizzato per determinare la lunghezza del nuovo documento sintetico.n

3) Per ogni documento: scegli un numero intero dalla sequenza di lunghezza casuale e documento casuale la cui lunghezza è vicina all'intero. Metti i token di tutti i documenti in un set e scegli casualmente token volte. questi sono i tuoi nuovi documenti.m n k kmmnkk


Grazie per la risposta, ma SMOTE può essere applicato per i campioni se sono rappresentati utilizzando la codifica one-hot? o dovrebbero essere rappresentati in un altro modo?
adnanmuttaleb,

Ciao Kasra, puoi condividere alcune implementazioni relative ai passaggi che hai citato
Payal Bhatia il

2

Se si desidera aggiungere ulteriori dati di testo / frasi per la conversione, è possibile utilizzare incorporamenti di parole pre-addestrati. Modelli predefiniti come forniscono la rappresentazione vettoriale di parole di ogni singola parola del dizionario. Fornisce anche parole "most_smiliar".

Puoi semplicemente usare la frase di esempio e generare nuovi campioni facendo permutazioni di ogni singola parola con le sue parole più simili TOP_N.

ad es. se la tua frase ha 3 parole e se scegli le 3 più simili per ogni parola, puoi ripetere il campionamento di 27 volte.


Ciao Yashodhan, come possiamo usare questo processo se è specifico del dominio? Grazie
Payal Bhatia il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.