加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

R说话绘制笔墨云

发布时间:2021-03-13 21:14:44 所属栏目:大数据 来源:网络整理
导读:差不多一年没有怎么当真写过博客了,最近要做结业计划,记录一下有关尝试。参考尝试楼上一个尝试。首要进修行使分词包 Rwordseg 对莎士比亚的名著《仲夏夜之梦》中的内容举办单词频数统计,提取要害词,并举办数据洗濯,最后行使包 wordcloud 按照要害词呈现

差不多一年没有怎么当真写过博客了,最近要做结业计划,记录一下有关尝试。参考尝试楼上一个尝试。首要进修行使分词包Rwordseg对莎士比亚的名著《仲夏夜之梦》中的内容举办单词频数统计,提取要害词,并举办数据洗濯,最后行使包wordcloud按照要害词呈现的频数对该书绘制标签云图。
首要内容:“笔墨云”也称“词云”就是对收集文本中呈现频率较高的“要害词”予以视觉上的突出,形成“要害词云层”或“要害词渲染”,从而过滤掉大量的文本信息,使赏识网页者只要一眼扫过文本就可以明确文本的主旨。

  1. 情形筹备
    数据筹备:
    起首下载下载summer压缩包
    summer压缩包解压获得txt文件。把txt文件放在R的事变目次下。
    R的逻辑包筹备
    项目中必要用到的分词包Rwordseg用于对文本中的词举办频数统计,该包是R中的中文分词包,Rwordseg包依靠于rJava包,而且必要预装好java情形,以及java情形变量的设置。
  2. 数据洗濯
    英文中许多单词并没有现实上的要害词浸染,譬喻冠词the、人称代词he等单词并不能指向现实的意义,它们只是组成一句话的语法构成元素,那么这一类的词就必要被剔除,被洗濯,这就是数据洗濯,洗濯对文本要害词提取没有影响的单词。
    文天职词
    分词在英文中就是单词可能词组(本文首要是单词),一个单词在文中呈现的频率越高就越证明它在文章中占据的职位,也就是要害字。个中文天职词包Rwordseg用于提取单词。
    下面行使Rwordseg对文档举办分词统计(输入?function可以查询函数的详细行使要领)
# 加载包
> library(Rwordseg)
# 以字符串情势读入文本
> text<-readLines('summer.txt')
# 破除全部空字符串的行
> res <- text[text!=""]
# 行使segmentCN函数对字符串res举办分词归类
> words <- unlist(lapply(X=res,FUN=segmentCN))
# 以空字符串为脱离符对字符串支解并对每个单词位置举办赋值
> word <- lapply(X=words,FUN=strsplit," ")  
# 计较每个单词的频数
> v <- table(unlist(word))
# 凭证单词呈现的频数(词频)降序分列
> v <-sort(v,decreasing=T)
# 将数据存储为数据框的情势,数据由单词和对应的频数构成
> datas <- data.frame(word=names(v),freq=v)

数据预处理赏罚

数据预处理赏罚就是噪声数据破除。起首,调查数据集的漫衍:

> summary(datas$freq)
> length(datas$freq)
> head(datas,100)

数据预处理赏罚


由上图中summary函数的输出功效可知,频数的漫衍并不匀称,中位数为1,声名文中有一半阁下的单词都只是呈现了一次罢了,单词呈现一次的可以忽略不计,且第3分位数为3,也就是说3362个单词中,要害词首要漫衍在频数为3-475的单词中,因此必要将数据齐集频数较量低的数据剔除。

调查head函数的运行功效,频数排名前22的单词均是冠词、人称代词、毗连词、介词之类与文章内容无关的单词,从第23个开始,与文章有关的单词才开始呈现,因此必要将这一类构成英文句子语法布局的单词剔除。

起首,行使subset函数实现数据集的起源筛选,剔除频数低的单词(关于subset函数的行使可以输入?subset查察函数文档)。再剔除与文章无关的单词。

# 行使sunset函数选取要害词漫衍地区
> newdatas <- subset(datas,freq>=3)
# 剔除与文章无关的单词
> newdatas <- newdatas[-c(1:22),]
> nrow(newdatas)
> head(newdatas,30)

subset


由length函数的输出功效可知,洗濯数据后保存了990个单词,因为首次洗濯后的数据集如故较量大,并且按照head函数查察排名前30的数据中如故有许多与文章内容无关的单词,因此必要抽样;可是剔除这些单词,调查一些大写的单词:LYSANDER、HERMIA、BOTTOM、THESEUS这些专著名词都是必要存眷的要害词,也许是人名可能地名。

# 配置随机种子
> set.seed(3000)
# 抽样后行使floor函数对抽样功效取整
> sample_1 <- floor(runif(30,min=1,max=990))
# 新的数据集样本
> new_sample <- newdatas[c(sample_1,1),]

这里的抽样数目选择31(30+1),是取总体数目990的开平方31,个中因为排名第一的love这个单词是与文章内容有关的要害词,因此必要插手到样本中。因此选取的样本数据集应该就是将floor抽取的行号和第1行所代表的数据。
3. 绘制笔墨云

# 加载词云包
> library(wordcloud)
# 参数scale配置字体的巨细,col配置字体颜色为彩虹色
> wordcloud(words=new_sample$word,freq=new_sample$freq,scale=c(10,.5),col=rainbow(length(new_sample$freq)))

笔墨云

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读