R说话绘制笔墨云
差不多一年没有怎么当真写过博客了,最近要做结业计划,记录一下有关尝试。参考尝试楼上一个尝试。首要进修行使分词包
# 加载包 > 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函数实现数据集的起源筛选,剔除频数低的单词(关于 # 行使sunset函数选取要害词漫衍地区 > newdatas <- subset(datas,freq>=3) # 剔除与文章无关的单词 > newdatas <- newdatas[-c(1:22),] > nrow(newdatas) > head(newdatas,30) 由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行所代表的数据。 # 加载词云包 > library(wordcloud) # 参数scale配置字体的巨细,col配置字体颜色为彩虹色 > wordcloud(words=new_sample$word,freq=new_sample$freq,scale=c(10,.5),col=rainbow(length(new_sample$freq))) (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |