我们的数据分析工作,不仅仅有对数据的分析,还有对文字资料整合的统计分析。在进行词频统计之前,有一项必须要做的工作就是中文的分词。
语料库
语料库是我们要分析的所有文档的集合
中文分词
将一个汉字序列切分成一个一个单独的词
停用词
数据处理的时候,自动过滤掉某些字或词,包括泛滥的词,例如web,
网站等,又如语气助词、副词、介词、连接词等,例如的,地,得。
R 中的 API(应用程序的接口)
tm包
安装 install.packages(“tm”)
读入语料库:
Corpus(x,readerControl)
x 语料库的数据源
readerControl 语料库的读取控制器,是一个list
语料库处理与中文分词
语料库处理函数:
tm_map(x,FUN)
x 语料库
FUN 处理函数
Rwordseg包
安装方法:
install.packages(“rJava”)
install.packages(“Rwordseg”,repos=”http://R-Forge.R-project.org”)
在安装Rwordseg包时,大家可能会遇到各种各样的问题,我专门写了一篇关于Rwordseg包的安装教程,供大家参考:
https://cloud.tencent.com/developer/article/1016392
分词方法:
segmentCN(strwords,outfile=”“,returnType=c(“vector”,”tm”))
安装字典来提高分词的准确性
安装/卸载 字典
installDict(dictpath,dictname)
uninstallDict(dictname)
字典下载:http://pinyin.sougou.com/dict/
显示字典列表
listDict()
中文分词的代码示例:
#install.packages("tm");
#install.packages("tmcn", repos="http://R-Forge.R-project.org");
library(tm)
library(tmcn)
#按目录读入语料库
C000007 <- Corpus(
DirSource(
'SogouC.mini/Sample/C000007'
),
readerControl = list(language="UTF-8")
)
stopwordsCN()
library(Rwordseg)
C000007 <- tm_map(C000007, stripWhitespace)
C000007 = tm_map(C000007, content_transformer(segmentCN), returnType='tm')
C000007 <- tm_map(C000007, content_transformer(function(x) iconv(x, from="UTF8", to="GB2312", sub="byte")))
control = list(
wordLengths = c(4, 8),
stopwords = stopwordsCN()
)
dd = stopwordsCN()
fix(dd)
#转成向量矩阵
mt <- TermDocumentMatrix(C000007, control=control)
mt$dimnames
dmt <- as.matrix(mt)
fix(dmt)
#install.packages("wordcloud")
library(wordcloud)
v <- sort(rowSums(dmt), decreasing = TRUE)
d <- data.frame(word = names(v), freq = v)
wordcloud(
d$word,
d$freq,
min.freq=10,
random.order=F,
colors=rainbow(length(row.names(dmt)))
)