读书频道 > 网站 > 网页设计 > 数据挖掘:你必须知道的32个经典案例
5.4 文本分析——经典的垃圾邮件过滤系统
15-12-22    奋斗的小年轻
收藏    我要投稿   
本书是为广大数据分析师量身定做的入门读物,它旨在帮助读者站到大数据时代的制高点。数据分析处于统计学、计算机信息科学、运筹学、数据库等多种领域的交叉地带,大数据时代的到来更是大大丰富了数据分析的内涵立即去当当网订购
文本分析算法是一系列算法的合称,在文本分析中必须要完成的工作的有分词、清洗和在文本中发现信息。这些工作可以使用K均值算法、支持向量机或朴素贝叶斯算法完成,本小节通过垃圾邮件过滤系统的构建展示了不同算法是如何用于文本分析工作的,以及文本分析工作中需要注意的地方和文本分析工作能够解决的常见问题。

5.4.1  大数据时代需要文本分析工作

大数据时代最显著的一个特点就是能够在海量的数据中获取有用的知识。数据分析师之所以能够利用海量数据,不仅是因为现代世界数据量的爆炸性增长,还因为我们开始利用以往忽略的非结构化数据。这些非结构化数据包括图像、音频、视频、文字等,它们占据了现有数据量中的绝大部分。
在大数据时代到来前,我们对于非结构化数据的利用是低效的。比如犯罪事件发生后,警察会调出视频记录查看案件发生时的情况,这时几百个小时的视频记录中只有几分钟被利用起来了,这种利用是非常低效的。但是现在我们可以用这些视频来训练人脸识别算法,并在新的监控视频中智能识别出罪犯,这种基于大数据和算法的识别就比较高效了。
对图片、视频的分析工作统称为图像分析,同理,对文字的分析工作统称为文本分析。由于摄像机等监控设备往往由政府部门掌管,因此图像分析通常局限于政府公共事务领域,比如3.5小节提到的智能人脸识别系统,以及4.2小节提到的自动驾驶技术。
而文本分析则不然,网络上存储的文本数据大部分都是可以随意被个人或企业获取的,如论坛上的用户发言、推特内容、微博内容、新闻网站发布的文章资讯等等,因此文本分析能够解决的问题要丰富得多。本小节所介绍的如何使用分类系统将邮件分为垃圾邮件和正常邮件的问题就是一个典型的文本分析问题。此外在2.5小节中我们提到的谷歌预测流感就是一个经典的文本分析问题,而6.3小节中即将介绍的为新闻报道分类这一案例也属于文本分析的范畴。
对于非结构化数据来说,想要从中获取知识,首先需要做的就是将数据转化为结构化的、可以被计算机识别利用的。在图像分析和音频分析中,我们利用各种算子将数据的物理特征使用数字表达出来,在文本分析中,我们则通常使用词向量来表示文本中的数据。
比如在本小节中,我们关心的是邮件正文中某些特定词汇的出现与否,比如“特价”、“促销”、“尊敬的”、“您好”等显然属于垃圾邮件的词汇。因此,在垃圾邮件分类器中,词向量就根据这些词汇构造而成。在不同问题中使用的词向量并不相同,比如研究顾客评论时词向量的构建则围绕“售后”、“客服”、“物流”等词汇完成,词向量的选择应由具体问题决定。

5.4.2  垃圾邮件过滤中的分词技术和词集模型

分词是文本分析的第一个步骤。在英文中,单词与单词之间被空格分隔开,因此英文文档的分词工作是较为简单的,只需在每个空格处切割文本即可。但在中文中,字与字、词与词之间没有明显的分割点,因此需要一个模型来完成这件事。


图5.8  机械分词模型示例词典
图5.8是一个机械分词模型的示例词典,它一共收录了感冒、解毒颗粒、解毒灵茶、解痛散、康胶囊、感觉、肺炎、肺厥等八个词语,使用树状结构表示,当新的词语输入模型时,它就被用来和词典相匹配,从而完成分词工作。
以“感冒解毒颗粒”这一短语为例,模型首先提出短语的第一个字符“感”,并在词典中寻找到“感”字的位置,然后接着将短语后续的内容与词典中收录的词汇相匹配,由于“冒”字是粉色的终止字符,故“感冒解毒颗粒”中提出的第一个词汇就是“感冒”。然后原始短语中删除“感冒”,从“解”字重新开始匹配,最终完成分词过程。
在实际应用中,分词词典几乎包含了所有已知的常见词汇,因此中文句子中的所有词汇都可以切分出来。这种按照句子顺序从前向后切分的方法完全依赖词典的完备性,而不涉及任何概率知识,因此叫做机械分词模型。
机械分词模型只能按照从前向后的顺序切割,因此“我喜欢上海南了”这句话就会切割成“我、喜欢、上海、南、了”这种形式,为了避免这种错误,我们通常在机械分词模型的基础上引入神经网络或贝叶斯决策方法,通过使用概率来寻找正确的分词方法。即“喜欢、上、海南”这种组合出现的概率大于“喜欢、上海、南”,因此我们选择将句子分割为“我、喜欢、上、海南、了”。
解决了分词问题后,垃圾邮件分类系统的构建就已经完成一半工作了。在垃圾邮件分类系统中,我们需要两组邮件,一组是用于训练的邮件,一组是用于测试的邮件。训练邮件的分类属性我们已经提前知道,并且会告诉分类系统。测试邮件的分类属性我们也知道,但不会告诉分类系统。  
我们将训练邮件按照垃圾邮件和正常邮件分为两组,为它们分词后,统计出每组邮件中高频出现的词语以及它们的词频。可以理解,这两组邮件中的高频词汇是绝对不会相同的。垃圾邮件中的高频词汇会是尊敬的、顾客、活动、促销、欢迎等,正常邮件中的高频词汇则是朋友、宠物、约会、有趣等。
  尊敬的 顾客 活动 促销 欢迎 朋友 宠物 约会 有趣 属性
1 1 1 0 1 1 0 0 0 1 垃圾邮件
2 1 1 1 1 0 1 0 0 0 垃圾邮件
3 1 0 1 0 0 0 0 0 0 垃圾邮件

频数 3 2 2 2 1 1 0 0 1  
频率 0.25 0.17 0.17 0.17 0.08 0.08 0 0 0.08  
4 0 0 0 0 0 1 0 1 0 正常邮件
5 0 0 0 0 0 1 1 1 1 正常邮件
频数 0 0 0 0 0 2 1 2 1  
频率 0 0 0 0 0 0.33 0.17 0.33 0.17  
图5.9  训练邮件的词频统计图
图6.9是根据五封训练邮件统计得到的词频统计图。其中0表示某个词汇在某封邮件中没有出现,1则表示某个词汇在某封邮件中出现了。我们将垃圾邮件和正常邮件分开统计,最终得到每个词汇在每种邮件中出现的频率。当训练邮件个数较多时,我们将频率直接当做概率来使用。
根据图6.9,我们认为尊敬的、顾客、活动、促销、欢迎、朋友、宠物、约会、有趣等词汇在垃圾邮件中出现的概率分别是0.25、0.17、0.17、0.17、0.08、0.08、0、0、0.08,在正常邮件中出现的概率分别是0、0、0、0、0、0.33、0.17、0.33、0.17等。那么当新邮件中出现“尊敬的”这一词汇时,我们就认为它是垃圾邮件的概率是0.25。
当新邮件出现时,我们首先对其进行分词,并根据概率公式,我们可以计算新邮件属于垃圾邮件或正常邮件的概率,比如对于一个含有尊敬的、欢迎、朋友、约会、有趣的邮件来说,它属于垃圾邮件的概率为,属于正常邮件的概率为。由于0.83大于0.4,因此新邮件属于正常邮件。
我们根据训练邮件得出模型参数后,还需在测试集上测试模型的准确率,即使用模型为测试集分类,并观察预测结果和实际结果的差异。这种交叉验证方法在机器学习中是不可或缺的一个步骤。

5.4.3  文本分析小结

本小节介绍的垃圾邮件过滤系统是一个经典的文本分析问题。为了解决这一问题,本小节着重讲述了如何使用机械分词方法为中文分词,以及如何将概率相加计算得到每一个新邮件最终属于垃圾邮件或正常邮件的可能性。
在文本分析中,还有许多值得补充的内容。比如对于分词来说,专家系统分词模式、神经网络分词模式以及路径选择分词模式等都是机械分词模式的加强版,它们在精确度方面要优于机械分词模式,但机械分词模式的速度是最快的。无论是哪种分词模式,分词结果的准确与否都极大地依赖于分词词典的完备性。
而对于概率计算方法来说,一方面我们使用的是词集模型,即考虑某一单词在某一邮件中是否出现,而没有使用词袋模型,即考虑某一单词在某一邮件中出现的次数;另一方面我们使用的是简单的概率相加公式,它计算简洁,但最终结果并不是落在0到1之间,因此具有缺陷。作为简单概率公式的改进,我们也可以使用概率相乘公式,或朴素贝叶斯概率公式来计算新邮件落入不同邮件分类中的概率。
此外,我们还可以选择其他解决问题的思路来处理垃圾邮件分类问题。比如将每一个特征词看做一个维度,使用支持向量机或K均值聚类算法来完成分类。但由于在垃圾邮件分类问题中,我们往往提取的特征数非常多,且数据中存在很多0,因此支持向量机或K均值算法的效果并不会比朴素贝叶斯算法的效果好。
垃圾邮件分类问题的重点在于合理的提取用于计算概率的特征词,而对于其他文本分析问题来说,使用数据表示文本信息的方法未必是唯一的,在具体问题中如何将文字性的问题转化为用公式表达的问题才是重点。
总的来说,大部分文本分析问题都是垃圾邮件分类系统的变形或复杂化。在文本分析中使用概率的规则要比使用硬编程的方法好得多,在估计概率时好的分词系统将起到重要作用,此外在模型中加入人为监督的因素也会提高分类准确度,比如在垃圾邮件分类问题中人为筛选高频词汇。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站