Pipeline di preparazione dei dati testuali per il deep learning

Questo articolo mostrerà come preparare dei testi per applicazioni basate su reti neurali.

Dato un corpus di dati testuali, applicheremo il seguente processo

  1. mappatura della singola parola del testo (token) ad un indice
  2. creazione di token specifici per fine frase, padding e simboli non appartenenti al vocabolario
  3. conversione dei termini presenti in dizionario in tensori

Il vocabolario organizzerà i nostri dati in formato chiave: valore dove la chiave sarà il termine e il valore sarà un indice numerico intero associato a quel termine. Saranno presenti dei token speciali che avranno queste caratteristiche

  • __PAD__: indica il simbolo del padding
  • </e>: indica end of line (fine della frase)
  • __UNK__: indica un simbolo sconosciuto, non appartenente al dizionario

Questo lavoro sarà molto utile perché fornirà un template per creare l'input al nostro generatore di dati (data generator in gergo del deep learning) in maniera facile ed efficiente.

Il Dataset

Useremo il dataset fornito da Sklearn, 20newsgroups, per avere rapido accesso ad un corpus di dati testuali. A scopo dimostrativo, userò solo un campione di 10 testi.

Su questi testi applicheremo un preprocessing semplice, per pulire le frasi da stop word e caratteri speciali.

Il Processo

Funzione di preprocessing

La funzione di preprocessing è la seguente

Questa funzione è usabile per qualsivoglia problema di elaborazione del linguaggio naturale, non solo questo presente nell'articolo.

Creazione del vocabolario

Lavorare con un vocabolario ci permette di mappare termine ad indice. L'indice sarà l'elemento che verrà convertito a tensore.

L'output sarà il seguente

Da testo a tensori

Scriveremo una funzione che utilizzerà il dizionario per creare una rappresentazione numerica dei termini presenti in quest'ultimo. Questi numeri saranno inseriti in una lista e rappresenteranno i tensori da applicare in un task di deep learning.

Non utilizzeremo TensorFlow, PyTorch o Numpy per questo esempio, così da spiegare fondamentalmente come avviene il processo.

Partiremo dalla funzione text_to_tensor

Ora possiamo procedere a usare i nostri tensori per creare un batch_generator e un modello di deep learning, come una LSTM.

Andrea D'Agostino
Ciao, sono Andrea D'Agostino e sono un data scientist con 6 anni di esperienza nel campo della business intelligence. Applico tecniche statistiche e di machine learning per aiutare i clienti a trovare e risolvere problemi nei loro asset digitali e a sfruttare le debolezze dei competitor a loro vantaggio.

Sono il fondatore e l'autore di questo blog, il cui obiettivo è raccogliere le informazioni più importanti che ho imparato durante il mio percorso lavorativo e accademico al fine di poter aiutare il lettore a migliorare le sue analisi.