[QQ群: 189191838,对算法和C++感兴趣可以进来]
数据挖掘领域一直都非常的火。现在炒的非常热的大数据,其实也是数据挖掘的一个应用而已,不管工程师用的是Hadoop还是其他平台,其实都是对一堆的数据进行分析,计算,然后得到我们希望得到的结果。所以我们可以知道,文本数据挖掘的必要性是因为信息技术,特别是网络的频繁使用,自媒体的越来越多,从大海中找到同一类,和用户期待的一类信息越来越重要,而人工完成几乎不可能,所以,文本挖掘就应运而生。
数据挖掘中的文本挖掘与我们的生活息息相关,比如说,百度上的新闻,当然,他少不了编辑人员的作用,但是在众多网络信息中,寻找到热点,离开机器的作用几乎是不可能完成的。还有最近一款非常热的app,<<头条>>。其实也是文本挖掘的应用。当然,其中还有推荐系统(这里我们不做讨论,如果大家有兴趣,我可以另写一博文普及一下相关知识)。还有,文本挖掘对百度,google等搜索引擎其实也起到非常大的重要。
好的,了解到了这些的话,我们就可以讲讲文本挖掘的一本步骤,这里以网络文本为例。数据挖掘就是做一道菜,经过各种加工,最后成为一道美食。
一、获取文本
一般来说网络文本的获取,主要是网页的形式。我们要把网络中的文本获取形成一个文本数据库(数据集)。利用一个爬虫(这是另外一个知识点),抓取到网络中的信息。爬取的策略有广度和深度爬取;根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分,主题爬取主要是在相关站点爬取或者爬取相关主题的文本,而通用爬虫则一般对此不加限制。爬虫可以自己写,当然现在网络上已经存在很多开源的爬虫系统。当然如果需要定制,自己写还是可以的。
二、对文本进行预处理
通过上面的步骤,我们已经获得了做菜的材料了,可以说,有了它,做出一道菜已经是顺利成当了。但是,菜好不好吃,可不可口,还需要经过很多步骤的。
我们知道,网页中存在很多不必要的信息,比如说一些广告,导航栏,html、js代码,注释等等,我们并不感兴趣的信息,可以delete掉。所以,我们还需要对文本中的信息进行筛选。这个步骤相当于我们做菜的洗菜过程,洗掉泥土等,吃起来才会口感好,否则,没有清洗过的菜,就算再牛逼的大厨,我想也很难做出佳肴吧。
三、分词系统
经过上面的步骤,我们会得到比较干净的素材。我们知道,文本中起到关键作用的是一些词,甚至主要词就能起到决定文本取向。比如说一篇文章讲的是体育还是娱乐,肯定是对文章中的中心词进行分析得到的结果。那么怎么样才能找到那些能够影响中心意思的词语呢?
别忘了,在找出中心词之前,我们首先得在每个文本中得到所有词吧。这里就会用到一个分词系统或者说分词工具。现在针对中文分词,出现了很多分词的算法,有最大匹配法、最优匹配法、机械匹配法、逆向匹配法、双向匹配法等等(可以参考各类文献)。我们经常用到的中科院的分词工具ICTCLAS,该算法经过众多科学家的认定是当今中文分词中最好的,并且支持用户自定义词典,加入词典,;对新词,人名,地名等的发现也具有良好的效果。
通过很多分词工具分出来的出会出现一个词,外加该词的词性。比如说啊是语气助词。
比如我们对:(我们都是牛逼的中国人。)进行分词,得到的结果是:
我们/rr 都/d 是/vshi 牛/n 逼/v 的/ude1 中国/ns 人/n 。/wj
四、去除停顿词等
经过上面的步骤,我们已经把所有的词进行了分类。但是这些所有的词,并不都是我们所需要的,比如说句号(。)显然,句号对意思的表达没有什么效果。还有"是"、“的”等词,也没有什么效果。因为这些词在所有的文章中都大量存在,并不能反应出文本的意思,可以处理掉。当然针对不同的应用还有很多其他词性也是可以去掉的,比如形容词等。
五、特征选择
经过上面的步骤,我们基本能够得到有意义的一些词。但是这些所有的词都有意义吗?显然不是这样的,有些词会在这个文本集中大量出现,有些只是出现少数几次而已。他们往往也不能决定文章的内容。还有一个原因就是,如果对所有词语都保留,维度会特别高,矩阵将会变得特别特别稀疏,严重影响到挖掘结果。那么对这些相对有意义的词语选取哪一本分比较合理呢?针对特征选择也有很多种不同的方式,但是改进后的TF*IDF往往起到的效果是最好的。tf-idf 模型的主要思想是:如果词w在一篇文档d中出现的频率高,并且在其他文档中很少出现,则认为词w具有很好的区分能力,适合用来把文章d和其他文章区分开来。
下面是百度对TF、IDF的解释:
在一份给定的文件里,词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否。)
逆向文件频率 (inverse document frequency, IDF) 是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于保留文档中较为特别的词语,过滤常用词。
通过计算,对词进行排序,选取合适的词数当做特征。
六、利用算法进行挖掘
经过上面的步骤之后,我们就可以把文本集转化成一个矩阵。我们能够利用各种算法进行挖掘,比如说如果要对文本集进行分类,我们可以利用KNN算法,贝叶斯算法、决策树算法等等。
以上六个步骤,就是一般文本挖掘的主要步骤,希望对大家有所帮助。谢谢!
版权所有,欢迎转载,但是转载请注明出处:潇一
简要的谈谈文本数据挖掘的一般步骤