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/