首页 > 其他分享 >使用 NMF 进行投诉分类

使用 NMF 进行投诉分类

时间:2022-09-25 14:00:46浏览次数:105  
标签:单词 text 分类 NMF 导入 投诉 sklearn

使用 NMF 进行投诉分类

使用非负矩阵分解的主题建模

在这里,我们将在这种技术的帮助下使用 NMF(非负矩阵分解),这是一种主题建模方法,我们将检测每张票中出现的模式和重复出现的单词。然后可以使用它来了解每个类别集群的重要特征。通过分离集群,我们将能够识别客户投诉的主题。

什么是 NMF(非负矩阵分解)?

非负矩阵分解是一种统计方法,可以帮助我们减少输入语料库或语料库的维度。在内部,它使用因子分析方法对连贯性较低的单词给予相对较少的权重。非负矩阵分解 (NMF) 是一种无监督技术,因此没有对模型进行训练的主题标签。它的工作方式是,NMF 将高维向量分解(或分解)为低维表示。这些低维向量是非负的,这也意味着它们的系数是非负的。

在这里,我们有客户投诉,这些投诉本质上是非结构化的。因此,传统上,公司需要将评估和分配给相关部门的每张工单的任务分配给多个支持员工。随着公司的发展和拥有庞大的客户群,这变得乏味。

我们需要建立一个能够根据产品/服务对客户投诉进行分类的模型。通过这样做,您可以将这些工单分为相关类别,因此有助于快速解决问题。

 导入json  
 将 numpy 导入为 np  
 将熊猫导入为 pd  
 导入 re,nltk,spacy,字符串  
 nlp = spacy.load("en_core_web_sm")  
 将 seaborn 导入为 sns  
 将 matplotlib.pyplot 导入为 plt  
 %matplotlib 内联  
 从 plotly.offline 导入情节  
 导入 plotly.graph_objects  
 将 plotly.express 导入为 px  
 从文本块导入文本块  
 从 sklearn.feature_extraction.text 导入 CountVectorizer、TfidfVectorizer  
 从 pprint 导入 pprint  
 导入 en_core_web_sm  
 从 sklearn.decomposition 导入 NMF  
 导入警告  
 警告.filterwarnings(“忽略”)  
 from gensim.corpora.dictionary 导入字典  
 从 gensim.models.nmf 导入 Nmf  
 从 gensim.models.coherencemodel 导入 CoherenceModel  
 从操作员导入 itemgetter  
 从子流程导入 check_output  
 从 wordcloud 导入 WordCloud,停止词  
 进口泡菜  
 从 sklearn.feature_extraction.text 导入 CountVectorizer  
 从 sklearn.feature_extraction.text 导入 TfidfTransformer  
 从 sklearn.naive_bayes 导入 MultinomialNB  
 从 sklearn.linear_model 导入 LogisticRegression  
 从 sklearn.tree 导入 DecisionTreeClassifier  
 从 sklearn.ensemble 导入 RandomForestClassifier 从 sklearn.model_selection 导入 train_test_split  
 从 sklearn.metrics 导入混淆矩阵  
 从 sklearn.metrics 导入 f1_score  
 从 sklearn.metrics 导入分类报告 文件=打开('投诉-2021-05-14_08_16.json')  
 数据 = json.load(文件)  
 投诉数据 = pd.json_normalize(数据) ## 用 nan 替换“Complaints_what_happned”中的空白单元格 投诉数据 [投诉数据 ['投诉发生的事情'] == ''] = np.nan  
 ## 删除投诉列为 nan 的所有行 投诉数据 = 投诉数据.dropna(子集 = ['complaint_what_happened']) pd.options.mode.chained_assignment = 无 投诉数据['complaint_what_happened'] = 投诉数据['complaint_what_happened'].astype(str) def clean_text(文本): '''  
 1. 使文本小写  
 2.删除方括号中的文字  
 3.删除标点符号。  
 4. 删除数字。 ''' text = text.lower()  
 text = re.sub(r'\[.*?\]','', text)  
 text = re.sub(r'[%s]'%re.escape(string.punctuation),'',text)  
 text = re.sub(r'\w*\d\w*','',text)  
 返回(文本) 投诉数据清洁 = pd.DataFrame(投诉数据 ['投诉发生的事情'].apply(lambda x:clean_text(x)))

2. 清洁数据集的探索性数据分析

  • 根据“投诉”字符长度可视化数据。
  • 使用词云在处理文本后的所有文章中按频率查找前 40 个词
  • 处理文本后,在所有投诉中按频率查找排名靠前的一元、二元和三元。

3.词云

Word Cloud

一元模型:-

N-grams 也被称为 n 个单词的序列。基于单词序列的计数来确定概率的语言模型可以称为N-gram语言模型。根据字数,N-gram 可以是:

  • Unigram:只有 1 个单词的序列
  • Bigram:2个单词的序列
  • Trigram:三个单词的序列

在自然语言处理中,n-gram 是由 n 个单词组成的序列。例如,“统计”是一元组(n = 1),“机器学习”是一个二元组(n = 2),“自然语言处理”是一个三元组(n = 3)。对于较长的 n-gram,人们只是用它们的长度来识别它们,比如 4-gram、5-gram 等等。在项目的这一部分,我们将只关注基于 unigrams 的语言模型,即单个单词。

Unigram of Complaints

Bigram of Complaints

有关更多详细信息和完整代码,请查看我的代码 github 轮廓。

参考:

  1. https://www.analyticsvidhya.com/blog/2021/06/part-15-step-by-step-guide-to-master-nlp-topic-modelling-using-nmf/
  2. https://www.geeksforgeeks.org/non-negative-matrix-factorization/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/39322/53422513

标签:单词,text,分类,NMF,导入,投诉,sklearn
From: https://www.cnblogs.com/amboke/p/16727747.html

相关文章

  • Java基本语法 变量定义和分类
    变量定义●变量的概念:➢内存中的一个存储区域➢该区域的数据可以在同一类型范围内不断变化➢变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值●变量......
  • 语言分类 计算机网络OSI七层模型
    计算机程序是需要CPU处理的二进制数据机器语言:二进制汇编语言:高级一些,简化了中间过程高级语言:大大简化了中间过程cc++Javapython等OSI七层模型:定义:描述了网络活动......
  • 添加分类计数/求和……列
    问题:在新的一列里显示某列根据指定条件的分类计数/求和……let源=Excel.CurrentWorkbook(){[Name="表1"]}[Content],分组的行=Table.Group(源,{"类别"},......
  • MQ的分类和项目中如何选型MQ
    MQ的分类消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有......
  • 基于深度学习的文本分类案例:使用LSTM进行情绪分类
    SentimentclassificationusingLSTM在这个笔记本中,我们将使用LSTM架构在电影评论数据集上训练一个模型来预测评论的情绪。首先,让我们看看什么是LSTM?LSTM,即长短时记忆,......
  • Python下载安装与数据类型分类
    Pycharm下载与使用1.下载官网DownloadPyCharm:PythonIDEforProfessionalDevelopersbyJetBrains2.该软件分为收费版和免费版​免费版功能太少,尽量使用......
  • Java I/O流(四)I/O流原理和分类 [节点流,处理流]
    节点流可以从一个特定的数据源读写数据,如FileReader,FileWriter等等处理流(也叫包装流)是“连接”在已存在的流(节点流或处理流)之上,为程序提供更强大的读写功能,如BufferedRea......
  • 时序分类、预测和预训练相关最新论文间读
    目录1Omni-ScaleCNNs:asimpleandeffectivekernelsizeconfigurationfortimeseriesclassification(ICLR2022) 2FlexConv:ContinuousKernelConvolutio......
  • PyTorch 中的 CIFAR10 图像分类
    PyTorch中的CIFAR10图像分类如何为CIFAR10构建高精度CNNPhotoby伊戈尔·莱皮林on不飞溅在本文中,我们将深入探讨CIFAR10图像分类问题。为了解决这个问题,......
  • HTML详解、HTML标签分类
    什么是HTMLHTML(超文本标记语言——HyperTextMarkupLanguage)是构成Web世界的一砖一瓦。它定义了网页内容的含义和结构。除HTML以外的其它技术则通常用来描述一个网页......