R是数据统计分析中很常用的编程语言,以其入门容易上手简单和强大的社区支持以及15000+R包几乎覆盖各个领域,深受科研人员喜爱。下面我们利用jiebaR+wordcloud2分析这一万五千个R包的描述关键词统计信息。
首先我们在R官网获取了所有R包的信息:
地址:https://cloud.r-project.org/
也可以下载整理好的列表:
我们对Title列进行词频分析,这里我们用到的主要有jiebaR和 wordcloud2 ,其中jiebaR主要做分词, wordcloud2 主要用于可视化展示。
代码如下:
# devtools::install_github("qinwf/jiebaR")
library(jiebaR)
# install.packages("wordcloud2")
library(wordcloud2)
library(dplyr)
# 数据来源:https://cloud.r-project.org/
# 此处我们取title列分析,简单起见,将title列复制到文本逐行读取
text <- readLines("R.txt")
# 分词处理
# 在调用worker()函数时,我们实际是在加载jiebaR库的分词引擎
#
# 包括mix, mp, hmm, full, query,tag, simhash, keyword,分别指混合模型,
# 支持最大概率,隐马尔科夫模型,全模式,索引模型,词性标注,文本Simhash相似度比较,
# 关键字提取
#
# https://github.com/qinwf/jiebaR
seg <- worker()
seg <= text
segment(text, seg)
# 词性标注
seg2 <- worker("tag")
segment(text, seg2)
# 关键词提取
seg3 <- worker(type = "keywords", topn = 1)
keywords(paste(text, collapse = " "), seg3)
# 结果是DATA,这和R很相符
# 避免影响最后的结果,去除连接词、短词和一些高频的链接词
text.filter <-
gsub(
' \\w{1,3} | with | from | using',
'',
text,
ignore.case = T,
perl = T
)
# 然后分词
seg.filter <- worker("mix")
seg.filter <= text.filter
# 建立词频
freq <- freq(segment(text.filter, seg.filter))
freq$len <- apply(freq, 1, function(x) {
nchar(as.character(x[1]))
})
# 过滤英文词长度小于3的单词且词频大于2
freq <- freq[freq$len > 3 & freq$freq > 2,]
freq$len <- NULL
# 排序
index <- order(-freq[, 2])
freq.order <- freq[index,]
wordcloud2(
freq.order,
size = 1,
shape = "diamond"
)
我们看到在所有的R包中出现最多的词是DATA、Model等,这和R本身主要是用于统计分析的特性也很相符。
参考资料:
1.https://cloud.r-project.org/
2.https://github.com/qinwf/jiebaR
3.http://qinwenfeng.com/jiebaR/