Plaintes concernant l'intelligence artificielle


Toute organisation financière est un organisme vivant et ses processus sont imparfaits. Les imperfections des processus donnent lieu à l'insatisfaction des clients, qui peut même se transformer en réclamations. Dans cet article, nous parlerons de notre contribution au processus d'automatisation en mettant en œuvre un petit projet de Machine Learning.

Vous pouvez essayer de résoudre n'importe quelle tâche difficile en utilisant des méthodes simples, et le Machine Learning ne fait pas exception.

Les commentaires sont les informations les plus précieuses, vous devez donc en étudier le plus possible chaque détail. En analysant les plaintes des clients, nous voyons objectivement dans quels problèmes de processus métier se posent. Les processus étant souvent interconnectés, ils peuvent être regroupés et considérés comme un groupe. En conséquence, nous arrivons à la tâche standard d'apprentissage automatique (ML) - «classification multiclasse». À la suite de cette analyse, la tâche est résolue - la collecte d'analyses consolidées pour l'organisation.

La tâche de classification est une tâche dans laquelle il y a de nombreux objets divisés en classes d'une certaine manière. Dans le cas d'une classification multiclasse, le nombre de classes doit être supérieur à 2 et peut même atteindre plusieurs milliers.

Les données sur les réclamations et les réponses à celles-ci sont stockées sur le serveur, le processus de déchargement et de prétraitement est effectué en standard via une demande à la base de données, à la sortie, nous obtenons une trame de données avec les données avec lesquelles nous travaillerons. La plainte et sa réponse sont des documents assez longs. Par exemple, la réponse à une plainte peut atteindre des centaines voire des milliers de mots. Le traitement direct d'un tel texte est très coûteux (calcul), c'est pourquoi un prétraitement du texte est nécessaire.

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 précision selon le modèle dépend essentiellement de l'unicité du texte, il est donc nécessaire de supprimer des mots qui n'ont pas beaucoup de sens - «mots vides». Habituellement, la composition des mots comprend des prépositions, des conjonctions et d'autres parties insignifiantes du discours. Nous avons également complété le dictionnaire des mots vides avec des prénoms et des prénoms.

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

Avant la mise en œuvre du projet, la classification était effectuée manuellement, nous avons donc des données balisées par des experts. Et ceci est une tâche d'enseignement ML classique avec un enseignant. Le texte prétraité est réduit à une vue que le modèle peut traiter. Pour ce faire, nous traduisons les réponses aux plaintes en vecteurs de fonctionnalités (la variable indépendante utilisée dans le code est les fonctionnalités, la variable dépendante est les étiquettes).

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 classification des vecteurs de support linéaire est sélectionnée pour la classification. Cela a été fait pour les raisons suivantes:

  • haute efficacité lors du travail avec des mesures de grande dimension;
  • travail stable en cas d'excès de dimension sur le nombre d'échantillons.

Ce projet a été préparé pour la mise en œuvre dans le bal. Chaque jour, le modèle effectuera le classement des données saisies au cours de la journée de travail. Au stade initial, une vérification manuelle supplémentaire du travail du modèle par un expert est supposée. Une fois par mois, le modèle sera recyclé. La mise en œuvre de ce projet nous a permis de faire un pas de plus vers l'avenir!

All Articles