干货 | 文本挖掘与词云图速成
Posted 数智泉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货 | 文本挖掘与词云图速成相关的知识,希望对你有一定的参考价值。
数据 · 科学
机器学习
文本挖掘
本文速览
1.为什么要学习文本挖掘
2.什么是文本挖掘
3.文本挖掘的应用
4.文本挖掘的一般流程
5.词云图速成(1分钟)
1.为什么要学习文本挖掘
1.1
我们正处于大数据时代
以2012年的互联网为例,每天有2940亿封电子邮件发出,如果采用20多年前寄信的方式,需要美国邮政局处理两年;每天有200万篇博客发表、2.5亿张照片上传到Facebook;每天有86.4万小时的视频上传到Youtube,如果连续播放需要770年,这一天产生的信息量,可以装满1.86亿张DVD光盘。
1.2
文本数据占比大
数据分析师Seth Grimes曾指出“80%的商业信息来自非结构化数据,主要是文本数据”。这一表述可能夸大了文本数据在商业数据中的占比,但是文本数据的蕴含的信息价值毋庸置疑。
非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。包括所有格式的文档、文本、图片、html、各类报表、图像、音频、视频信息等等。
2.什么是文本挖掘
文本挖掘(Text Mining)是指从文本数据中抽取有价值的信息和知识的技术。
文本挖掘是数据挖掘的一个分支,只不过它是从文本中进行数据挖掘罢了。
文本挖掘是一个多学科混杂的领域,涵盖了多种技术,包括数据挖掘技术、信息抽取、信息检索,机器学习、自然语言处理、计算语言学、统计数据分析、线性几何、概率理论甚至还有图论。
3.文本挖掘的应用
3.1
文本分类
文本分类是一种典型的机器学习方法,一般分为训练和分类两个阶段。文本分类一般采用统计方法或机器学习来实现。
3.2
文本聚类
文本聚类是一种典型的无监督式机器学习方法,聚类方法的选择取决于数据类型。
首先,文档聚类可以发现与某文档相似的一批文档,帮助知识工作者发现相关知识;其次,文档聚类可以将一类文档聚类成若干个类,提供一种组织文档集合的方法;再次,文档聚类还可以生成分类器以对文档进行分类。
文本挖掘中的聚类可用于:提供大规模文档内容总括;识别隐藏的文档间的相似度;减轻浏览相关、相似信息的过程。
3.3
信息检索
主要是利用计算机系统的快速计算能力,从海量文档中寻找用户需要的相关文档。
3.4
信息抽取
信息抽取是把文本里包含的信息进行结构化处理,变成表格一样的组织形式。输入信息抽取系统的是原始文本,输出的是固定格式的信息。
3.5
自动文摘
利用计算机自动的从原始文档中提取出文档的主要内容。互联网上的文本信息、机构内部的文档及数据库的内容都在成指数级的速度增长,用户在检索信息的时候,可以得到成千上万篇的返回结果,其中许多是与其信息需求无关或关系不大的,如果要剔除这些文档,则必须阅读完全文,这要求用户付出很多劳动,而且效果不好。
自动文摘能够生成简短的关于文档内容的指示性信息,将文档的主要内容呈现给用户,以决定是否要阅读文档的原文,这样能够节省大量的浏览时间。简单地说自动文摘就是利用计算机自动地从原始文档中提取全面准确地反映该文档中心内容的简单连贯的短文。
自动文摘具有以下特点:(1)自动文摘应能将原文的主题思想或中心内容自动提取出来。(2)文摘应具有概况性、客观性、可理解性和可读性。(3)可适用于任意领域。
按照生成文摘的句子来源,自动文摘方法可以分成两类,一类是完全使用原文中的句子来生成文摘,另一类是可以自动生成句子来表达文档的内容。后者的功能更强大,但在实现的时候,自动生成句子是一个比较复杂的问题,经常出现产生的新句子不能被理解的情况,因此目前大多用的是抽取生成法。
3.6
自动问答
自动问答是指对于用户提出的问题,计算机可以自动的从相关资料中求解答案并作出相应的回答。自动问答系统一般包括 3 个组成部分:问题分析、信息检索和答案抽取。
3.7
机器翻译
利用计算机将一种源语言转变为另一种源语言的过程。
3.8
信息过滤
指计算机系统可以自动的进行过滤操作,将满足条件的信息保留,将不满足条件的文档过滤掉。信息过滤技术主要用于信息安全领域。
3.9
自动语音识别
自动语音识别就是将输入计算机的自然语言转换成文本表示的书面语。
4.文本挖掘的一般流程
4.1
获取文本
网络爬虫等技术
4.2
预处理
指剔除噪声文档以改进挖掘精度,或者在文档数量过多时仅选取一部分样本以提高挖掘效率。
4.3
文本的语言学处理
(1)分词
分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂得多、困难得多。
现在针对中文分词,出现了很多分词的算法:
A、字符匹配
这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。
按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;
常用的几种机械分词方法如下:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的词数最小);
4)双向最大匹配法(进行由左到右、由右到左两次扫描)。
B、理解法
这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。
C、统计法
从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。
但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。
实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。
D 、基于机器学习的方法
基于统计机器学习的方法。首先给出大量已经分词的文本,利用统计机器学习模型学习词语切分的规律(称为训练),从而实现对未知文本的切分。我们知道,汉语中各个字单独作词语的能力是不同的,此外有的字常常作为前缀出现,有的字却常常作为后缀(“者”“性”),结合两个字相临时是否成词的信息,这样就得到了许多与分词有关的知识。这种方法就是充分利用汉语组词的规律来分词。这种方法的最大缺点是需要有大量预先分好词的语料作支撑,而且训练过程中时空开销极大。
(2)去除停用词
比如说句号、是、的等词,没有什么实际的意义。然而这些词在所有的文章中都大量存在,并不能反应出文本的意思,可以处理掉。当然针对不同的应用还有很多其他词性也是可以去掉的,比如形容词等。
4.4
文本的数学处理-特征提取
我们希望获取到的词汇,既能保留文本的信息,同时又能反映它们的相对重要性。如果对所有词语都保留,维度会特别高,矩阵将会变得特别稀疏,严重影响到挖掘结果。所以这就需要特征提取。
特征选取的方式有4种:
(1)用映射或变换的方法把原始特征变换为较少的新特征;
(2)从原始特征中挑选出一些最具代表性的特征;
(3)根据专家的知识挑选最有影响的特征;
(4)用数学的方法进行选取,找出最具分类信息的特征,这种方法是一种比较精确的方法,人为因素的干扰较少,尤其适合于文本自动分类挖掘系统的应用。
向量空间模型
经典的向量空间模型(VSM: Vector Space Model)由Salton等人于60年代提出,并成功地应用于著名的SMART文本检索系统。VSM概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。当文档被表示为文档空间的向量,就可以通过计算向量之间的相似性来度量文档间的相似性。文本处理中最常用的相似性度量方式是余弦距离。
文本挖掘系统采用向量空间模型,用特征词条(T1 ,T2 ,…Tn) 及其权值Wi 代表目标信息,在进行信息匹配时,使用这些特征项评价未知文本与目标样本的相关程度。特征词条及其权值的选取称为目标样本的特征提取,特征提取算法的优劣将直接影响到系统的运行效果。
设D为一个包含m个文档的文档集合,Di为第i个文档的特征向量,则有
D={D1,D2,…,Dm},
Di=(Di1,Di2,…,Din),i=1,2,…,m
其中Dij(i=1,2,…,m;j=1,2,…,n)为文档Di中第j个词条tj的权值,它一般被定义为tj在Di中出现的频率tij的函数,
通过上述的向量空间模型,文本数据就转换成了计算机可以处理的结构化数据,两个文档之间的相似性问题转变成了两个向量之间的相似性问题。
A、词频方法(Word Frequency)
词频是一个词在文档中出现的次数。通过词频进行特征选择就是将词频小于某一阈值的词删除,从而降低特征空间的维数。这个方法是基于这样一个假设,即出现频率小的词对过滤的影响也较小。但是在信息检索的研究中认为,有时频率小的词含有更多的信息。因此,在特征选择的过程中不宜简单地根据词频大幅度删词。
B、文档频次方法(Document Frequency)
文档频数(Document Frequency, DF)是最为简单的一种特征选择算法,它指的是在整个数据集中有多少个文本包含这个单词。在训练文本集中对每个特征计一算它的文档频次,并且根据预先设定的阈值去除那些文档频次特别低和特别高的特征。文档频次通过在训练文档数量中计算线性近似复杂度来衡量巨大的文档集,计算复杂度较低,能够适用于任何语料,因此是特征降维的常用方法。
在训练文本集中对每个特征计算它的文档频数,若该项的DF 值小于某个阈值则将其删除,若其DF值大于某个阈值也将其去掉。因为他们分别代表了“没有代表性”和“没有区分度”2 种极端的情况。
DF 特征选取使稀有词要么不含有用信息,要么太少而不足以对分类产生影响,要么是噪音,所以可以删去。DF 的优点在于计算量很小,速度快,它的时间复杂度和文本数量成线性关系,所以非常适合于超大规模文本数据集的特征选择。而在实际运用中却有很好的效果。缺点是稀有词可能在某一类文本中并不稀有,也可能包含着重要的判断信息,简单舍弃,可能影响分类器的精度。
C、TF-IDF法
单词权重最为有效的实现方法就是TF-IDF, 它是由Salton在1988 年提出的。其中TF(term frequency) 称为词频, 用于计算该词描述文档内容的能力; IDF(inverse Document frequency) 称为逆文档频率, 用于计算该词区分文档的能力。TF-IDF 的指导思想建立在这样一条基本假设之上: 在一个文本中出现很多次的单词, 在另一个同类文本中出现次数也会很多, 反之亦然。所以如果特征空间坐标系取TF 词频作为测度, 就可以体现同类文本的特点。
其中分子表示该词在此文档中出现的次数,分母表示此文档所有词的总数。另外还要考虑单词区别不同类别的能力, TF-IDF 法认为一个单词所在的文本出现的频率越小, 它区别不同类别的能力就越大, 所以引入了逆文本频度IDF 的概念。
其中分子表示文档库总文档数,分母表示包含该单词的文档总数,加1是为了编码分母出现0的情况。
以TF 和IDF 的乘积作为特征空间坐标系的取值测度。
其中, Wi表示第i个特征词的权重。
用TF-IDF算法来计算特征词的权重值是表示当一个词在这篇文档中出现的频率越高,同时在其他文档中出现的次数越少,则表明该词对于表示这篇文档的区分能力越强,所以其权重值就应该越大。将所有词的权值排序, 根据需要可以有两种选择方式:
(1) 选择权值最大的某一固定数n个关键词;
(2)选择权值大于某一阈值的关键词。
但是IDF单纯地认为文本频数小的单词就越重要,文本频数大的单词就越无用,显然这并不是完全正确的。IDF的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以TFIDF法的精度并不是很高。
此外,在TFIDF算法中并没有体现出单词的位置信息,对于Web文档而言,权重的计算方法应该体现出HTML的结构特征。特征词在不同的标记符中对文章内容的反映程度不同,其权重的计算方法也应不同。因此应该对于处于网页不同位置的特征词分别赋予不同的系数,然后乘以特征词的词频,以提高文本表示的效果。
D、其他方法
互信息(Mutual Information)
期望交叉熵(Expected Cross Entropy)
二次信息熵(QEMI)
信息增益方法(Information Gain)
x2统计量方法
文本证据权(The Weight of Evidence forText)
遗传算法(Genetic Algorithm, GA)
主成分分析法(Principal Component Analysis,PCA)
模拟退火算法(Simulating Anneal,SA)
N—Gram算法
4.5
分类聚类
分类常用的方法有:简单贝叶斯分类法,矩阵变换法、K-最近邻参照分类算法以及支持向量机分类方法等。
聚类方法通常有:层次聚类法、平面划分法、简单贝叶斯聚类法、K-最近邻聚类法、分级聚类法等。
5.词云图速成(1分钟)
第一步:
找到如下图所示的2018年工作报告,复制粘贴生成一个名为“政府报告”txt文档,保存于桌面:
第二步:
在RStudio中运行如下的代码,注意将文档路径是双斜线隔开:
#安装jiebaR包和wordcloud2包
install.packages("jiebaR")
install.packages("wordcloud2")
#加载jiebaR包和wordcloud2包
library(jiebaR)
library(wordcloud2)
#读入数据分隔符是‘ ’,字符编码是‘GBK’,what=' '表示以字符串类型读入
f <- scan('C:\Users\asus\Desktop\政府告.txt',sep=' ',what='',encoding="GBK")
#使用qseg类型分词,并把结果保存到对象seg中
seg <- qseg[f]
#去除字符长度小于2的词语
seg <- seg[nchar(seg)>1]
#统计词频
seg <- table(seg)
#去除数字
seg <- seg[!grepl('[0-9]+',names(seg))]
#去除字母
seg <- seg[!grepl('a-zA-Z',names(seg))]
#查看处理完后剩余的词数
length(seg)
#降序排序,并提取出现次数最多的前100个词语
seg <- sort(seg, decreasing = TRUE)[1:100]
#查看词频最高的100个
seg
#存为表格
data<-data.frame(seg)
#生成词云图
wordcloud2(data,size=1,minSize=0,gridSize=0,fontFamily=NULL,fontWeight='normal',color = 'random-dark', backgroundColor = "white",minRotation = -pi/4, maxRotation = pi/4, rotateRatio = 0.4, shape='circle', ellipticity = 0.65, widgetsize = NULL)
wordcloud2参数解释:
data:词云生成数据,包含具体词语以及频率;
size:字体大小,默认为1,一般来说该值越小,生成的形状轮廓越明显;
fontFamily:字体,如‘微软雅黑’;
fontWeight:字体粗细;
color:字体颜色,可以选择‘random-dark’以及‘random-light’,其实就是颜色色系;
backgroundColor:背景颜色,支持R语言中的常用颜色,如‘gray’,‘blcak’,但是还支持不了更加具体的颜色选择,如‘gray20’;
minRontatin与maxRontatin:字体旋转角度范围的最小值以及最大值,选定后,字体会在该范围内随机旋转;
rotationRation:字体旋转比例,如设定为1,则全部词语都会发生旋转;
shape:词云形状选择,默认是‘circle’,即圆形。
得到如下图所示的词云图:
用上述的步骤分析杨幂的百度百科将得到下图:
文字/潘银
图片/潘银、网络
编辑/潘银
版权说明
本文仅代表本编辑部观点,未经授权禁止转载。
以上是关于干货 | 文本挖掘与词云图速成的主要内容,如果未能解决你的问题,请参考以下文章