人工智能观察投诉


任何金融组织都是活的有机体,其过程是不完善的。流程不完善会引起客户不满,甚至会转变成投诉。在本文中,我们将讨论通过实施一个小型机器学习项目对自动化过程的贡献。

您可以尝试使用简单的方法解决任何困难的任务,并且机器学习也不例外。

反馈是最有价值的信息,因此您应该尽可能多地研究它。通过分析客户的投诉,我们可以客观地查看哪些业务流程出现问题。由于流程通常是相互关联的,因此可以将它们分组并视为一个组。因此,我们来到了标准的机器学习(ML)任务-“多类分类”。分析的结果是解决了任务-为组织收集了整合的分析。

分类任务是其中许多对象以某种方式划分为类的任务。在多类分类的情况下,类的数量必须大于2,甚至可以达到数千。

有关投诉及其响应的数据存储在服务器上,卸载和预处理过程通过对数据库的请求作为标准进行,在输出处,我们获得一个包含将要使用的数据的数据框。投诉及其答复都是冗长的文件。例如,对投诉的回复可能达到数百甚至数千个字。直接处理此类文本非常昂贵(计算上),这就是为什么需要进行文本预处理的原因。

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

根据模型的准确性主要取决于文本的唯一性,因此有必要从文本中删除含义不大的单词-“停用词”。通常,单词的组成包括介词,连词和其他不重要的词性。我们还用名字和中间名补充了停用词词典。

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

在项目实施之前,分类是手动进行的,因此,我们有专家标记的数据。这是与老师一起进行的经典ML教学任务。预处理的文本被简化为模型可以处理的视图。为此,我们将对投诉的响应转换为特征向量(代码中使用的自变量是特征,因变量是标签)。

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']

选择“线性支持向量分类”进行分类。这样做的原因如下:

  • 在进行大尺寸测量时效率很高;
  • 如果尺寸超出样本数量,则可以稳定工作。

该项目已准备好在舞会上实施。该模型每天都会对在工作日中输入的数据进行分类。在初始阶段,应该由专家对模型的工作进行额外的人工验证。每月一次,将对模型进行重新训练。该项目的实施使我们向未来迈进了一步!

All Articles