星期五, 五月 22, 2015
星期三, 十月 16, 2013
奇异值分解和潜在语义分析
奇异值分解是一种矩阵分解技术,如果将列看作特征,SVD也能看作是一种降维技术。如果将数据先进行标准化之后,再进行SVD操作,其左奇异向量U就是主成分得分,右奇异向量V就是主成分负载。但SVD的优势恰恰在于不进行标准化,当我们处理高维稀疏数据(例如文本数据)时,标准化会使矩阵不再稀疏,影响计算效率。所以一般是用SVD直接对原始数据进行操作。得到U的第一列是平均值的意义,U的后几列才有区别各样本的功能。
在文本挖掘中,潜在语义分析(LSA)假设在词项和文档之间有一个潜在语义层,词汇和语义产生关联,文档也和语义产生关联。这样通过语义概念,可以将词项和文档放在一个语义空间中观察分析。进一步我们可以将语义所为词项的“主成分”放到数据挖掘中进行分析。LSA的一般过程是先构造词项-文档矩阵(其转置为文档-词项矩阵,视需要而定),再计算TFIDF值,然后用SVD来分解这个矩阵,得到的奇异向量就是潜在语义。U的第一列可以认为是词项在文档中的平均出现频率,V的第一列可以认为是文档中包含的词项频率,我们更有兴趣的是后几列。关于SVD和LSA有一份精彩的入门文档,下面的R代码就是对该文档的模仿,但是SVD得到的结果却和文档不同,我很奇怪为什么会这样。(使用的数据)
在文本挖掘中,潜在语义分析(LSA)假设在词项和文档之间有一个潜在语义层,词汇和语义产生关联,文档也和语义产生关联。这样通过语义概念,可以将词项和文档放在一个语义空间中观察分析。进一步我们可以将语义所为词项的“主成分”放到数据挖掘中进行分析。LSA的一般过程是先构造词项-文档矩阵(其转置为文档-词项矩阵,视需要而定),再计算TFIDF值,然后用SVD来分解这个矩阵,得到的奇异向量就是潜在语义。U的第一列可以认为是词项在文档中的平均出现频率,V的第一列可以认为是文档中包含的词项频率,我们更有兴趣的是后几列。关于SVD和LSA有一份精彩的入门文档,下面的R代码就是对该文档的模仿,但是SVD得到的结果却和文档不同,我很奇怪为什么会这样。(使用的数据)
星期五, 七月 13, 2012
O'Reilly新书推荐:用R和Ruby来探索万物
这本书绝对是个另类,它并不以严肃的学术研究或商业项目作为主题,而是以好玩为宗旨。用R和Ruby这两种免费工具,来探索我们身边的各种数据资源。
首先作者用两章篇幅对Ruby和R作了一个介绍。之后第三章来解决办公室内的洗手间数量问题,用Ruby来模拟人们上洗手间的次数,然后用R来绘制各种可能的情况。第四章建立了一个简单的经济动态系统,其中包括了生产者、消费者、价格和市场,并对这些因素进行了模拟。第五章比较有趣,作者用Ruby中的mail库获取了安然丑闻中的电邮数据,然后用R进行了电邮的时间分布描述和文本挖掘。最有Geek味道的是第六章,作者自制声频拾取器测量自己的心跳,并用Ruby来处理音频文件,最后用R绘制出了心跳波形,还分析了自己的心率数据。最后两章同样是模拟,简单模拟分析了生物迁徙和人类社会的进化。
这本书立意非常新奇有趣,但称不上非常有Discovery的感觉,因为它并非用大量的篇幅来介绍如何挖掘真实世界的数据,很多章节内容是用Ruby来进行动态模拟,然后用R中的ggplot2包来可视化展现。不过其中的第五章和第六章还是很精彩的。下载本书电子版
此外,如果想学习用R来抓取真实数据进行分析,我建议看这个小册子Data_Mashups_in_R
星期日, 六月 17, 2012
初次尝试igraph包
igraph是为了进行社会网络分析而创建的一个包。与R语言中同类包相比,它的速度更快,而且函数命令与图形展现更为丰富。它可以处理有向网络和无向网络,但无法处理混合网络。igraph中的函数非常多,本文只是初步的介绍如何创建图形,并提供一些简单的例子。
星期五, 六月 01, 2012
红楼梦文本折腾纪要
虽然对红学一无所知,对文本挖掘只是“略懂”,但并不妨碍我们勇于折腾的生活方式。上周参加了第五届R会议,学到不少好东西,其中一个就是中文分词的工具。当然要找个对象来折腾一下啦。本次的黑手就伸向了被人蹂躏无数次的小说《红楼梦》。
折腾的思路基本上就是:1、将文本按章回划分。2、按章回获取某些统计量,看能否区别前八十回和后四十回。3、中文分词后以空间向量模型方法构造词条-文档关系矩阵。4、计算文档间距离后用多维标度方法降到二维展现120回的散点图形。
先从网上扒拉下一个纯文本的文档,也不知道什么版本。先用记事本打开后转成UTF8格式,然后在R中读入资料。此时的存储格式是list格式,list的每一个元素是文本中的一段。首先找出文本的章节划分点,然后计算出每一章节的段落数。下图即是这120回的段落数条形图,似乎在后四十回段落数量较少,而且趋于稳定,不如前八十回变化大。对二者作一个wilcox检验,证实了数量较少的显著性。同时用置换检验也证实了这一点。
星期三, 一月 11, 2012
Twitter文本挖掘初步
Twitter已经成为社交媒体领域重要的信息来源,也是数据挖掘和可视化的重点研究对象。据说华尔街的多家对冲基金公司已经在利用twitter数据挖掘来衡量人们的情绪,从而预测资本市场的运动方向。可见在未来数年,对twitter信息的挖掘必将成为一个热点。
在R语言中提取twitter信息的扩展包是twitterR,它可以提取公共信息流,也可以针对某个用户提取其信息流,或者是以某个标签搜索推文。下面我们以“wukan”(乌坎)为关键词搜索推文标签,观察推友的发推数量。
首先载入软件包,以#wukan为关键词提取1000条推文,然后将其转化为数据框格式。df数据中存储的中文推文内容在R中似乎无法正常浏览,不过推文的用户名仍然是英文的可加以利用。
在R语言中提取twitter信息的扩展包是twitterR,它可以提取公共信息流,也可以针对某个用户提取其信息流,或者是以某个标签搜索推文。下面我们以“wukan”(乌坎)为关键词搜索推文标签,观察推友的发推数量。
首先载入软件包,以#wukan为关键词提取1000条推文,然后将其转化为数据框格式。df数据中存储的中文推文内容在R中似乎无法正常浏览,不过推文的用户名仍然是英文的可加以利用。
星期二, 八月 30, 2011
基于支持向量机的文本挖掘
文本挖掘中很重要的一项任务就是对文本进行分类,基本步骤就是收集训练文本和已知对应的分类,通过分类器来学习训练集,然后利用建立的模型对未知的文本进行分类检验。
#指定原始文本存放目录,然后生成文本集。本例中的两类文本存放在crude和acq两个文件夹中,格式均为xml,若格式为纯文本,则需指定reader = readPlain
crude = Corpus(DirSource("d:/crude"), readerControl = list(reader = readReut21578XML))
acq = Corpus(DirSource("d:/acq"), readerControl = list(reader = readReut21578XML))
#合并两个文本集,并将其转为纯文本格式
ws = c(acq, crude)
ws = tm_map(ws, as.PlainTextDocument)
#指定原始文本存放目录,然后生成文本集。本例中的两类文本存放在crude和acq两个文件夹中,格式均为xml,若格式为纯文本,则需指定reader = readPlain
crude = Corpus(DirSource("d:/crude"), readerControl = list(reader = readReut21578XML))
acq = Corpus(DirSource("d:/acq"), readerControl = list(reader = readReut21578XML))
#合并两个文本集,并将其转为纯文本格式
ws = c(acq, crude)
ws = tm_map(ws, as.PlainTextDocument)
星期六, 八月 27, 2011
利用R语言的tm包进行文本挖掘
tm包是R语言中为文本挖掘提供综合性处理的package,进行操作前载入tm包,vignette命令可以让你得到相关的文档说明
library(tm)
vignette("tm")
首先要读取文本,本次操作所用的文本是tm包自带的20个XML格式文本,存放在library\tm\texxts\crude文件夹中。用Corpus命令读取文本并生成语料库文件
library(tm)
vignette("tm")
首先要读取文本,本次操作所用的文本是tm包自带的20个XML格式文本,存放在library\tm\texxts\crude文件夹中。用Corpus命令读取文本并生成语料库文件
星期三, 八月 24, 2011
利用rapidminer进行文本挖掘
在数据挖掘软件中有五大开源软件,其中weka在国内的使用率较高,而rapidminer却较少看到。就连学习资料也少之又少,只在youtube上能看到一些教学视频。以下的内容就是照葫芦画瓢弄出来的。
文本挖掘(text mining)有时也被称为文字探勘、文本数据挖掘等,大致相当于文字分析,一般指文本处理过程中产生高质量的信息。高质量的信息通常通过分类和预测来产生,如模式识别。
文本挖掘通常要将文本进行断字预处理,然后利用空间向量模型将文本转换为数值数据,让学习器进行学习。中文的文本挖掘天生就比较悲惨,因为中文不象英文那样天然断字。而且中文语料库很少有免费的,要自己去处理语料那真是工程量浩大。因此只有转而求其次,利用网上已有的英文免费文本库中的新闻稿件进行文本挖掘实验。算是做一个rapidminer的练习。
此次任务是对从两种新闻来源中抽取文本,分析其特征词汇,建立分类模型,然后根据模型来检测分类的效果。
文本挖掘(text mining)有时也被称为文字探勘、文本数据挖掘等,大致相当于文字分析,一般指文本处理过程中产生高质量的信息。高质量的信息通常通过分类和预测来产生,如模式识别。
文本挖掘通常要将文本进行断字预处理,然后利用空间向量模型将文本转换为数值数据,让学习器进行学习。中文的文本挖掘天生就比较悲惨,因为中文不象英文那样天然断字。而且中文语料库很少有免费的,要自己去处理语料那真是工程量浩大。因此只有转而求其次,利用网上已有的英文免费文本库中的新闻稿件进行文本挖掘实验。算是做一个rapidminer的练习。
此次任务是对从两种新闻来源中抽取文本,分析其特征词汇,建立分类模型,然后根据模型来检测分类的效果。
订阅:
博文 (Atom)



