用R进行文本挖掘与分析:分词、画词云【转】

1、直接上源码:

-----------------------以下是源码,直接复制即可使用---------------------------------

#调入分词的库

library("rJava")

library("Rwordseg")

#调入绘制词云的库

library("RColorBrewer")

library("wordcloud")

   

   

#读入数据(特别注意,read.csv竟然可以读取txt的文本)

myfile<-read.csv(file.choose(),header=FALSE)

   

#预处理,这步可以将读入的文本转换为可以分词的字符,没有这步不能分词

myfile.res <- myfile[myfile!=" "]

   

   

#装载分词词典(如果需要的话,我这里没有装载,下面有说明)

   

   

#分词,并将分词结果转换为向量

myfile.words <- unlist(lapply(= myfile.res,FUN = segmentCN))

   

#剔除URL等各种不需要的字符,还需要删除什么特殊的字符可以依样画葫芦在下面增加gsub的语句

myfile.words <- gsub(pattern="http:[a-zA-Z\\/\\.0-9]+","",myfile.words)

myfile.words <- gsub("\n","",myfile.words)

myfile.words <- gsub(" ","",myfile.words)

   

#去掉停用词

data_stw=read.table(file=file.choose(),colClasses="character")

stopwords_CN=c(NULL)

for(in 1:dim(data_stw)[1]){

stopwords_CN=c(stopwords_CN,data_stw[i,1])

}

for(in 1:length(stopwords_CN)){

myfile.words <- subset(myfile.words,myfile.words!=stopwords_CN[j])

}

#过滤掉1个字的词

myfile.words <- subset(myfile.words, nchar(as.character(myfile.words))>1)

   

#统计词频

myfile.freq <- table(unlist(myfile.words))

myfile.freq <- rev(sort(myfile.freq))

myfile.freq <- data.frame(word=names(myfile.freq), freq=myfile.freq);

   

#按词频过滤词,过滤掉只出现过一次的词,这里可以根据需要调整过滤的词频数

myfile.freq2=subset(myfile.freq, myfile.freq$freq>=2)

   

   

   

#绘制词云

#设置一个颜色系:

mycolors <- brewer.pal(8,"Dark2")

#设置字体

windowsFonts(myFont=windowsFont("华文彩云"))

#画图

wordcloud(myfile.freq2$word,myfile.freq2$freq,random.order=FALSE,

random.color=FALSE,colors=mycolors,family="myFont")

   

   

-------------------------源码结束-------------------------------

   

2、看看效果

   

3、关于停用词

停用词就是没有实际意义,但使用频率又很高的词,比如"的、地、得、当然、并且、而且、去、拿、好"等等。这类词语对分析、绘制词云都有干扰,需要去掉。可以到网上找找"停用词表",是个txt文件,每个词一行。一般有2个版本,分别为500多个词、1000多个词。我用了后一个版本。

4、关于如何准确分词

首先,"Rwordseg"库的分词已经很不错了,调用了java的分词程序进行分词,分词的精度高、速度快,还能标注词性,其算法采用中科院的ictclas中文分词算法,基于隐马尔科夫模型(HMM)进行分词,且开源。算是目前国内中文分词的佼佼者。

其次,就算"Rwordseg"的分词很精准,但程序总归是程序,算法总归是算法,实际分词过程中仍然会出现误差。比如会将"两岸关系"分为"两岸"、"关系",把"港澳特别行政区"分为"港澳"、"特别"、"行政区"。实际上这两个词都是整体词,不用分开。要修正这种误差,需要自己提供修正词库。

"Rwordseg"可以导入2种类型的词库来修正,一种是txt版本的词库,一种是scel版本的词库(就是搜狗输入法的细胞词库)。对txt版本的词库,自己新建一个即可,把一些自定义的、特殊的词语输入进去,每个词一行就可以了;对scel版本的词库,直接到搜狗输入法的官方网站下载就可以了,比如需要分词的文章是计算机方面的 ,就下载一个计算机专业的细胞词库。

搞好词库后,用下面的语句就可以装入内存:

installDict(file.choose(),dictname = "my dict")

查看装载的词典:

listDict()

删除安装的词典:

uninstallDict()

5、关于对wordcloud的吐槽

Wordcloud虽然给R提供了绘制词云的功能,但是,实际上,根本上,不具备美感!功能还很单薄,比如形状不能改变等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值