top of page
Team I.A. Italia

Classificare i reclami dei consumatori con python e il Machine Learning

Ogni dipartimento di assistenza clienti riceve migliaia di reclami ogni giorno. Il dipartimento deve identificare la natura dei reclami per agire prima su quelli più importanti.


Classificare i reclami dei consumatori con python e il Machine Learning
Classificare i reclami dei consumatori con python e il Machine Learning

Introduzione alla classificazione dei reclami con il machine learning

La classificazione dei reclami del consumatore significa classificare la natura delle lamentele segnalate dal consumatore. È utile per i dipartimenti di assistenza ai consumatori poiché ricevono migliaia di reclami ogni giorno, quindi classificarli aiuta a identificare i reclami che devono essere risolti prima per ridurre brutte recensioni oppure per non perdere clienti. Quindi, se vuoi imparare a utilizzare l'apprendimento automatico per la classificazione dei reclami dei consumatori, questo articolo fa per te. In questo articolo, ti illustreremo come classificare i reclami dei consumatori con il Machine Learning utilizzando Python.

Classificare i reclami dei consumatori con python e il Machine Learning

Il problema della classificazione dei reclami dei consumatori si basa sull'elaborazione del linguaggio naturale e sulla classificazione multiclasse. Per risolvere questo problema, avevamo bisogno di un set di dati contenente i reclami segnalati dai consumatori.

Ho trovato un set di dati ideale per questa attività che contiene dati su:

  1. La natura del reclamo segnalato dal consumatore

  2. Il problema menzionato dal consumatore

  3. La descrizione completa del reclamo del consumatore

Possiamo utilizzare questi dati per costruire un modello di Machine Learning in grado di classificare in tempo reale la natura dei reclami segnalati dai consumatori. È possibile scaricare il set di dati nella sezione Dataset, cercando "Lamentele Sample", oppure clicca quì se sei registrato. Il dataset che useremo contiene solo 10.000 record, questo perchè il file originale è molto grande, circa 1,6GB. Se ti interessa il file originale, lo puoi scaricare da quì.


Nella sezione seguente, ti illustrerò il compito di classificare i reclami dei consumatori con l'apprendimento automatico utilizzando Python.


Classificare i reclami dei consumatori con Python

Ora iniziamo con l'attività di classificazione dei reclami dei consumatori importando le librerie Python necessarie



import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.linear_model import SGDClassifier
import nltk
import re
from nltk.corpus import stopwords
import string

data = pd.read_csv("Lamentele_sample.csv")
print(data.head())

Output:

   Unnamed: 0 Date received  \ 0     2686509    2021-10-04    1     2107155    2017-01-19    2     1116803    2018-01-31    3      299024    2022-03-16    4        4251    2022-11-03                                                  Product  \ 0  Credit reporting, credit repair services, or o...    1                                       Student loan    2  Credit reporting, credit repair services, or o...    3  Credit reporting, credit repair services, or o...    4  Credit reporting, credit repair services, or o...                           Sub-product  \ 0                Credit reporting    1  Federal student loan servicing    2                Credit reporting    3                Credit reporting    4                Credit reporting                                                    Issue  \ 0                        Improper use of your report    1                 Dealing with my lender or servicer    2   Unable to get your credit report or credit score    3  Problem with a credit reporting company's inve...    4                        Improper use of your report                                                Sub-issue  \ 0      Reporting company used your report improperly    1             Received bad information about my loan    2     Problem getting your free annual credit report    3  Their investigation did not fix an error on yo...    4      Reporting company used your report improperly                             Consumer complaint narrative   0                                                NaN   1  In 2009 I got married and changed my last name...   2                                                NaN   3                                                NaN   4                                                NaN  

Il set di dati contiene una colonna Unnamed: 0. Rimuoviamo la colonna usando questa riga di codice:


data = data.drop("Unnamed: 0",axis=1)

Ora diamo un'occhiata se il set di dati contiene valori nulli o meno:


print(data.isnull().sum())

Output:

Date received                      0 
Product                            0 
Sub-product                      752 
Issue                              0 
Sub-issue                       2203 
Consumer complaint narrative    6381 
dtype: int64

Il set di dati contiene tanti valori null. Eliminerò tutte le righe contenenti valori nulli utilizzando questa riga di codice:


data = data.dropna()

La colonna del prodotto nel set di dati contiene le etichette. Qui le etichette rappresentano la natura dei reclami segnalati dai consumatori. Diamo un'occhiata a tutte le etichette e alla loro frequenza:


print(data["Product"].value_counts())

Output:

Credit reporting, credit repair services, or other personal consumer reports                            1670 
Debt collection                             641 
Credit card or prepaid card                 235 
Checking or savings account                 175 
Student loan                                99 
Vehicle loan or lease                       82 
Payday loan, title loan, or personal loan    3 

Name: Product, dtype: int64

Creiamo il modello di classificazione dei reclami

La colonna narrativa del reclamo del consumatore contiene la descrizione completa dei reclami segnalati dai consumatori. Pulirò e preparerò questa colonna prima di utilizzarla in un modello di Machine Learning .


nltk.download('stopwords')
stemmer = nltk.SnowballStemmer("english")
stopword=set(stopwords.words('english'))

def clean(text):
    text = str(text).lower()
    text = re.sub('\[.*?\]', '', text)
    text = re.sub('https?://\S+|www\.\S+', '', text)
    text = re.sub('<.*?>+', '', text)
    text = re.sub('[%s]' % re.escape(string.punctuation), '', text)
    text = re.sub('\n', '', text)
    text = re.sub('\w*\d\w*', '', text)
    text = [word for word in text.split(' ') if word not in stopword]
    text=" ".join(text)
    text = [stemmer.stem(word) for word in text.split(' ')]
    text=" ".join(text)
    return text
    
data["Consumer complaint narrative"] = data["Consumer complaint narrative"].apply(clean)

Ora che abbiamo pulito le lamentele, dividiamo i dati in set di addestramento e test:





data = data[["Consumer complaint narrative", "Product"]]
x = np.array(data["Consumer complaint narrative"])
y = np.array(data["Product"])

cv = CountVectorizer()
X = cv.fit_transform(x)
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.33, random_state=42)

Ora addestriamo il modello di Machine Learning utilizzando l'algoritmo di classificazione Stochastic Gradient Descent:



sgdmodel = SGDClassifier()
sgdmodel.fit(X_train,y_train)

Ora, usiamo il nostro modello addestrato per fare previsioni.

Ricapitolando abbiamo creato un modello che sulla base di una lamentela TESTUALE è in grado di classificare il "reparto o motivazione" della lamentela. Il set di dati è in inglese ma per farti capire meglio abbiamo tradotto input e output in italiano.



user = input("Inserisci un testo: ")
data = cv.transform([user]).toarray()
output = sgdmodel.predict(data)
print(output)

Output:

Inserisci un testo: ho contestato diversi account dal mio rapporto di credito con Equifax, XXXX e XXXX ho inviato un totale di 4 lettere diverse chiedendo una risposta e devo ancora essere informato che è stata avviata un'indagine per mio conto. Le lettere sono state inviate nelle seguenti date: Lettera 1: XX/XX/2020 XXXX 2: XX/XX/2020 XXXX XXXX: XX/XX/2020 XXXX XXXX: XX/XX/2020

['Rapporti di credito, servizi di riparazione del credito o altri rapporti personali dei consumatori']

Vediamo un altro esempio:


user = input("Inserisci un testo: ")
data = cv.transform([user]).toarray()
output = sgdmodel.predict(data)
print(output)

Output:

Inserisci un testo: ho provato a inviare le mie controversie alle principali agenzie di credito, ma ho difficoltà a inviare le mie controversie e a correggere le informazioni inesatte sul mio rapporto di credito.

['Rapporti di credito]

Quindi è così che puoi utilizzare l'apprendimento automatico per l'attività di classificazione dei reclami dei consumatori utilizzando Python.




Riepilogo classificazione dei reclami con python e il Machine Learning

La classificazione dei reclami dei consumatori è utile per i dipartimenti di assistenza ai consumatori poiché ricevono migliaia di reclami ogni giorno, quindi classificarli aiuta a identificare i reclami che devono essere risolti per primi per ridurre feedback negativi o per scegliere cosa ha precedenza. Spero che questo articolo sulla classificazione dei reclami dei consumatori con l'apprendimento automatico tramite Python ti sia piaciuto. Sentiti libero di porre domande preziose nella sezione commenti qui sotto.


2 Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
Fortunato De Luca
Nov 28, 2022

Gentilissimi,

caricando su Colab il vostro file ipynb del progetto Classificare i reclami dei consumatori con python e il Machine Learning, mi segnala un errore e quindi anche i successivi:


inoltre segnalo che scaricando i vostri dati zip, compaiono due file csv che non vengono riconosciuti. (ho provato a rinominare i files...)



Grazie per le vostre puntuali risposte e dell'ottimo sito da voi gestito (Mi sono permesso di segnalarlo a molti colleghi).

A presto


Like
Team I.A. Italia
Team I.A. Italia
Nov 29, 2022
Replying to

Eccoci😀

Non avevamo fatto caso ai file nascosti, sono solo dei residui dell'elaborazione che abbiamo fatto in locale per ridurre la dimensione del dataset e renderla accessibile anche a chi non ha gpu o molta memoria.


Abbiamo rimosso tutti i file in più, puoi provare a riscaricare la NUOVA CARTELLA.


Per quanto riguarda l'errore prova a condividerci il tuo link colab, così possiamo vedere quale è l'errore. Nel caso possa esserti di aiuto ti condividiamo il nostro link di google colab. Ti basterà creare una copia e caricare il dataset, e dovrebbe funzionare senza problemi 😀


Ecco il link : https://colab.research.google.com/drive/1_OON1VZZuMizzdLI8esyJ77KoOGYvfg3?usp=sharing


Facci sapere se è tutto ok o se ci sono errori 🤗


Grazie davvero Fortunato per le tue segnalazioni,…

Like
PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page