Spark – Text Classification 2017-11-06T12:26:52+00:00

Project Description

Obiettivo
L’obiettivo del lavoro svolto è quello di classificare i tweet postati da utenti casuali su Twitter in una specifica categoria tra alcune predefinite (Business, Health, Sport, Home, Animal..) ed indicanti un possibile rischio assicurabile, al fine di interpretare le necessità e preoccupazioni che gli utenti esternalizzano sul Social e puntualizzando poi la futura vendita da parte della Compagnia Assicurativa di una garanzia che soddisfi le esigenze espresse dal potenziale cliente.
Metodologia
Tramite la libreria di Python “Tweepy” e la creazione dei quattro codici di accesso alle API di Twitter, si è costruito un flusso di scraping in streaming che salva i dati (tweet) in tempo reale in un file Json all’interno di un dizionario. Il dizionario è composto da due chiavi: “label” e “text” ed ogni tweet scaricato viene inserito in una diversa riga del file Json.
Inizialmente, come filtro di selezione dei tweet da scaricare vengono impostate un insieme di keywords relative a ciascuna categoria. Ad ogni tweet all’interno del file Json viene poi assegnata manualmente una specifica “label” tra le categorie predefinite, indicanti i possibili rischi assicurabili cui la persona che ha postato il tweet è interessata. Questo primo file di tweet verrà poi utilizzato come dataset di training e di test, mentre un secondo file di tweet senza “label” impostate verrà utilizzato come dataset di score.
Il dataset viene considerato come un oggetto Dataframe all’interno di Spark, su cui viene eseguita una serie di operazioni di data quality per rendere il più analizzabili possibili i testi dei tweet. Tra le operazioni eseguite vi sono: rimozione della punteggiatura e degli spazi multipli, rimozione degli hyperlinks, degli hashtags, delle parole non significative (stopwords), delle principali emoticons e di alcuni caratteri speciali, riduzione del testo in minuscolo.
Tramite il tokenizzatore e il modello TF-IDF ogni testo viene suddiviso nelle diverse parole che lo compongono, identificando ogni parola con la frequenza relativa con cui essa compare nel testo. Il Dataframe diventa quindi una matrice di records (corpus), dove ad ogni record (testo) è associata una specifica “label”, assegnata in modo manuale. Gli algoritmi di classificazione utilizzati successivamente cercheranno di apprendere la logica di assegnazione di ogni vettore di frequenze alla relativa “label” e di replicare la stessa logica sui nuovi dati di score.
A tale scopo sono stati utilizzati i seguenti modelli classificativi, con applicazione della Cross Validation come processo di feature selection: Decision Tree, Random Forest e Naive Bayes, quest’ultimo utilizzato anche come modello “baseline” di riferimento.

Strumento: Spark
Linguaggio di programmazione: Python
Analisi: Text Classification

 

Project Details