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.
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:
La natura del reclamo segnalato dal consumatore
Il problema menzionato dal consumatore
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.
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