用R语言对NIPS会议文档进行聚类分析
一、用R语言建立文档矩阵
(这里我选用的是R x64 3.2.2)
(这里我取的是04年NIPS共计207篇文档做分析,其中文档内容已将开头的作者名和最后的参考文献进行过滤处理)
##1.Data Import 导入自己下的3084篇NIPStxt文档
library("tm")#加载tm包
stopwords<- unlist(read.table("E:\\AllCode\\R\\stopwords.txt",stringsAsFactors=F))
dir<-"E:\\newtext(No including Authors and References)\\2004" #NIPS文本文档的路径
nips<-Corpus(DirSource(dir),readerControl=list(language="en"))
##2.Transformations
nips <- tm_map(nips, stripWhitespace)#去多余空白
nips <- tm_map(nips, content_transformer(tolower))#转换为小写
nips <- tm_map(nips, removeWords, stopwords)#去停用词
library("SnowballC")
nips <-tm_map(nips, stemDocument)#采用Porter‘s stemming 算法提取词干
##3.Creating Term-Document Matrices
#将处理后的语料库进行断字处理,生成词频权重矩阵(稀疏矩阵)也叫词汇文档矩阵
dtm <- DocumentTermMatrix(nips)
##4.Reducing dimensions
#因为生成的矩阵是一个稀疏矩阵,再进行降维处理,之后转为标准数据框格式
#我们可以去掉某些出现频次太低的词。
dtm1<- removeSparseTerms(dtm, sparse=0.6))#除了词频统计中低于40%的稀疏条目项
data <- as.data.frame(inspect(dtm1))
二、WordCloud
library(wordcloud);
tdm<-TermDocumentMatrix(nips)
tdm_matrix<-as.matrix(tdm)
v <- sort(rowSums(tdm_matrix),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
wordcloud(d$word,d$freq,c(8,.3),2)
png(paste("d://wb//sample_comparison",".png", sep = ""), width = 1500, height = 1500 );
comparison.cloud(tdm_matrix,colors=rainbow(ncol(tdm_matrix)));####由于颜色问题,稍作修改
title(main = "sample comparision");
dev.off();
三、文档矩阵进行聚类分析
层次聚类的结果图如下:(看不清)
##5.Clustering
#再之后就可以利用R语言中任何工具加以研究了,下面用层次聚类试试看
#先进行标准化处理,再生成距离矩阵,再用层次聚类
data.scale <- scale(data)
d <- dist(data.scale, method = "euclidean")
fit <- hclust(d, method="ward.D")
plot(fit,main ="文件聚类分析")
当然也可以用Kmeans聚类:
##5.Clustering
#下面用kmeans聚类分析
km<-kmeans(dtm1,centers=3)
最新文章
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(10)-系统菜单栏[附源码]
- AngularJs优缺点
- java基础-基本数据类型
- easyVS
- Intervals---poj1201(差分约束系统)
- 聚类结果的评估指标及其JAVA实现
- Debug Intro
- Thinkphp框架 -- 短信接口验证码
- Zabbix探索:纠结的选择
- C++中str1::function和bind
- 《Metasploit魔鬼训练营》第三章
- JAVA入门[14]-Spring MVC AOP
- 第31月第10天 tableview头部空白 Other Linker Flags rtmp
- 学习Python语言 基础语法:变量的基本使用
- js Location
- 36. Oracle查询数据库中所有表的记录数
- PAT 1088 三人行(20 分)(暴力破解+流程分析)
- Controller向View传值方式总结
- JS-缓冲运动:菜单栏型悬浮框
- JavaScript周报#184
热门文章
- C++利用注册表添加桌面右键新建菜单
- [原]My first Python
- 关于使用SVN update时出现:E155004错误
- leetcode1:在数组中找2个数的和正好等于一个给定值--哈希
- POJ C++程序设计 编程作业—类和对象 编程题#1
- Apache开启Rewrite伪静态
- Custom Sort Order
- css3 文本效果
- Java排序
- 【Delphi】从内存(MemoryStream)使用WMP(WindowsMediaPlayer)控件播放视频音频(Play Video with WMP from MemoryStream)