Quejas de vigilancia de inteligencia artificial


Cualquier organización financiera es un organismo vivo y sus procesos son imperfectos. Las imperfecciones del proceso dan lugar a la insatisfacción del cliente, que incluso puede transformarse en quejas. En este artículo, hablaremos sobre nuestra contribución al proceso de automatización mediante la implementación de un pequeño proyecto de Machine Learning.

Puede intentar resolver cualquier tarea difícil utilizando métodos simples, y Machine Learning no es una excepción.

La retroalimentación es la información más valiosa, por lo que debe estudiar tanto como sea posible cada parte de ella. Analizando las quejas de los clientes, vemos objetivamente en qué procesos empresariales surgen problemas. Dado que los procesos a menudo están interconectados, se pueden agrupar y considerar como un grupo. En consecuencia, llegamos a la tarea estándar de Machine Learning (ML): "clasificación multiclase". Como resultado de este análisis, la tarea está resuelta: la recopilación de análisis consolidados para la organización.

La tarea de clasificación es una tarea en la que hay muchos objetos divididos en clases de cierta manera. En el caso de la clasificación multiclase, el número de clases debe ser superior a 2 e incluso puede llegar a muchos miles.

Los datos sobre las quejas y las respuestas a ellos se almacenan en el servidor, el proceso de descarga y preprocesamiento se lleva a cabo de manera estándar a través de una solicitud a la base de datos, en la salida obtenemos un marco de datos con los datos con los que trabajaremos. La queja y la respuesta son documentos bastante largos. Por ejemplo, la respuesta a una queja puede llegar a cientos o incluso miles de palabras. Procesar dicho texto directamente es muy costoso (computacionalmente), por lo que es necesario el preprocesamiento del texto.

def review_to_wordlist(review):
       		review_text = re.sub('[^--]',' ', review)
       		words = review_text.strip().lower().split()
       		words = [w for w in words if not w in stop_words] 
       		words = [morph.parse(w)[0].normal_form for w in words]
       		new_stop_words = find_names(words)
       		words = [w for w in words if not w in new_stop_words]
       		return words

La precisión según el modelo depende sustancialmente de la unicidad del texto, por lo tanto, es necesario eliminar las palabras del texto que no tienen mucho significado: "detener palabras". Por lo general, la composición de las palabras incluye preposiciones, conjunciones y otras partes insignificantes del discurso. También complementamos el diccionario de palabras de detención con nombres y apellidos.

def find_names(words, prob_thresh = 0.4):
    words = [w for w in words if 'str' in str(type(w))]
    add_stop_words = [w for w in words for p in morph.parse(w) if 'Name' in p.tag and
    p.score >= prob_thresh]
    stop_words.update(add_stop_words)
    return stop_words

Antes de la implementación del proyecto, la clasificación se realizaba manualmente, por lo tanto, tenemos datos marcados por expertos. Y esta es una tarea clásica de enseñanza de ML con un maestro. El texto preprocesado se reduce a una vista que el modelo puede procesar. Para hacer esto, traducimos las respuestas a las quejas en vectores de características (la variable independiente utilizada en el código son las características, la variable dependiente son las etiquetas).

tfidf = TfidfVectorizer(sublinear_tf=True, min_df=5, norm='l2', encoding='utf8',  
    ngram_range=(1, 2), stop_words=stop_words)
features = tfidf.fit_transform(df_temp['Consumer_complaint_narrative'])
labels = df_temp['Num_bp']

La clasificación de vectores de soporte lineal se selecciona para la clasificación. Esto se hizo por las siguientes razones:

  • alta eficiencia al trabajar con mediciones de gran dimensión;
  • trabajo estable en caso de exceso de dimensión sobre el número de muestras.

Este proyecto ha sido preparado para su implementación en el baile de graduación. Todos los días, el modelo llevará a cabo la clasificación de los datos ingresados ​​durante la jornada laboral. En la etapa inicial, se supone una verificación manual adicional del trabajo del modelo por parte de un experto. Una vez al mes, el modelo será reentrenado. ¡La implementación de este proyecto nos permitió dar un paso más hacia el futuro!

All Articles