Python机器学习项目化教程(微课视频版)课件 第16章 深度学习垃圾邮件分类_第1页
Python机器学习项目化教程(微课视频版)课件 第16章 深度学习垃圾邮件分类_第2页
Python机器学习项目化教程(微课视频版)课件 第16章 深度学习垃圾邮件分类_第3页
Python机器学习项目化教程(微课视频版)课件 第16章 深度学习垃圾邮件分类_第4页
Python机器学习项目化教程(微课视频版)课件 第16章 深度学习垃圾邮件分类_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第16章综合案例分析:垃圾邮件分类目录CONTENTS16.1文本预处理16.2中文垃圾邮件分类算法及实现16.3本章小结16.1文本预处理学习基础学习认知能力信息素养高为了将该问题转换为分类问题,需要处理这些文本信息,将其转化为分类问题所要求的特征空间和标签空间,从而选择合适的机器学习方法进行参数学习,然后对邮件进行分类。中文文本经过分词之后,仍然是非结构化的,为方便计算机处理,必须转换为机器可识别的格式,同时尽可能保留文本的原有语义信息,就需要进行文本表示。0102中文分词(ChineseWordSegmentation)是处理中文自然语言问题的第一步工作,它指的是将一个汉字序列切分成一个个单独的词。16.1文本预处理中文分词1.基于规则的分词基于规则的分词方法也称为机械分词方法,主要借助于词典工具,将语句中的每个字符串与词典中的词进行逐一匹配,找到则切分,否则不切分。常用的几种机械分词方法如下: 正向最大匹配法。 逆向最大匹配法。 双向最大匹配法。16.1文本预处理16.1.1非参数估计与参数估计defcut_words(self,text):dic=['计算机','程序','设计','艺术']whiletext_length>start_i:forword_lengthinrange(self.words_size+start_i,start_i,-1):word=text[start_i:word_length]ifwordindic:start_i=word_length-1breakstart_i=start_i+1result.append(word)returnresult16.1文本预处理(2)逆向最大匹配defcut_words(self,text):size=self.word_sizewhilecobegin<coend:whilesize>0:seg_word=text[coend-size:coend]ifseg_wordinself.dic:coend-=sizeout.append(seg_word)size=self.word_sizebreakelse:#匹配失败

size-=116.1文本预处理(3)双向最大匹配双向最大匹配算法的原理就是结合正向最大匹配算法和逆向最大匹配算法的分词结果,选择正确的分词方式。选择的原则是:: 在两个分词结果中,如果切分后词的数量不同,则选择数量较少的那个作为分词结果。 分词后,如果词的数量相同,则分为两种情况来处理:若分词结果相同,则返回任意一个。若分词结果不同,则返回分词为单字的数量较少的那个;若词为单字的数量也相同,则任意返回一个。16.1文本预处理2.基于统计的分词方法(1)建立统计语言模型目前主要采用n元语言模型(n-gram),这种模型结构简单、直接,但同时也因为数据缺乏而必须采取平滑算法。由长度为n个词构成句子s的概率为:16.1文本预处理下面通过一个简单的例子说明HMM模型的训练过程。16.1文本预处理状态转移概率矩阵A:观测转移矩阵B:16.1文本预处理(2)利用维特比算法求解状态序列时刻t状态为i的所有单个路径中概率最大值为,其公式表示为:16.1文本预处理3.目前的分词系统与语料库Jieba有3种分词方式:精确模式、全模式、搜索模式。importjiebas='人工智能实验室总监's_list=jieba.cut(s,cut_all=False)print('精确模式:','/'.join(s_list))s_list=jieba.cut(s,cut_all=True)print('全模式:','/'.join(s_list))s_list=jieba.cut_for_search(s)print('搜索模式:','/'.join(s_list))精确模式:人工智能/实验室/总监全模式:人工/人工智能/智能/实验/实验室/总监搜索模式:人工/智能/人工智能/实验/实验室/总监16.1文本预处理2.向量空间模型TF-IDF(termfrequent-inversedocumentfrequency,词频-逆文档频率)表示每个词语(特征)在文本中的权重,其中词频通过用一个词在一篇文档中出现的次数来表示该词的重要性,IDF用一个词在多少个文档中出现来表示该词在文档中的区分度。16.1文本预处理3.概率模型pLSA(ProbabilisticLatentSemanticAnalysis,浅层概率语义分析)、LDA(LatentDirichletAllocation,隐含狄利克雷分布)等语义模型来实现。pLSA和LDA是通过概率手段计算潜在主题与word、document之间的关系,这种方法也称为主题模型,其核心公式为:16.2中文垃圾邮件分类算法及实现1.读取数据正常邮件保存在ham_data.txt文件中,垃圾邮件保存在spam_data.txt文件中。frame1=pd.DataFrame(ham_txt)frame2=pd.DataFrame(spam_txt)frame1.insert(1,'class',np.ones(len(ham_txt)))frame2.insert(1,'class',np.zeros(len(spam_txt)))frame=pd.concat([frame1,frame2])frame.head()16.2中文垃圾邮件分类算法及实现2.邮件文本数据的可视化在对邮件进行分类之前,我们可以通过对分词后的两类文本数据进行词云展示,观察它们的差异情况。ham_txt_processed=remove_stopwords(ham_txt)#去除正常邮件中的停用词

spam_txt_processed=remove_stopwords(spam_txt)#去除垃圾邮件中的停用词

show_wordcloud("".join(ham_txt_processed))#正常邮件的词云显示show_wordcloud("".join(spam_txt_processed))#垃圾邮件的词云显示16.2中文垃圾邮件分类算法及实现3.贝叶斯模型训练在建立贝叶斯模型对邮件数据训练之前,需要先对数据样本进行划分,我们利用train_test_split()函数将数据按8:2划分为训练集和测试集,即80%为训练集,20%为测试集。train,test,train_label,test_label=train_test_split(frame.text,frame.label,test_size=0.2)CV=CountVectorizer()TF=TfidfTransformer()train_tfidf=TF.fit_transform(CV.fit_transform(train))16.2中文垃圾邮件分类算法及实现4.贝叶斯模型测试与评估。test_tfidf=TF.transform(CV.transform(test))pre=model_gaussian.predict(test_tfidf.toarray())print(metrics.classification_report(test_label,pre))16.2中文垃圾邮件分类算法及实现svm=SVC(kernel='linear',C=0.5,random_state=0)model_svc=svm.fit(train_tfidf,trainlabel)pre2=model_svc.predict(test_tfidf.toarray())print(metrics.classification_report(testlabel,pre2))16.2中文垃圾邮件分类算法及实现16.2中文垃圾邮件分类算法及实现16.2中文垃圾邮件分类算法及实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论