之前的文章中给大家简单介绍了wordcloud2这个包,
用的都是自带的数据集,今天我们用自己的数据手把手教大家做一个属于你们自己的词云图。
既然是手把手,希望大家再看这篇文章的时候能够把你们的Rstudio打开,边看边练习,不然你永远没有那个感觉。
首先大家自己去找一篇英文文本,内容不限,甚至说你用看过的英文文献都行,
这儿我是在网上找了拜登的胜选演讲中的一小段作文我们今天的示例文本。
数据读入和包加载
library(wordcloud2)
library(tm)
text <- readLines('C:/Users/hrd/Desktop/bootcamp/dataset/remarks of biden.txt')
读入数据之后,我们需要将文本变成R能够处理的语料库
docs <- Corpus(VectorSource(text))
这儿得给大家写写VectorSource这个:
In text mining, the phrase vectorizing a document may come up. This means turning a document into a vector, which could be a list of the words in the document and a numeric value signifying the number of times that particular word appears in the document.
就是在文本挖掘中,我们得将我们的文件首先进行向量化计算机才好处理,向量化就是将文本转换成词的列表,同时会给这个词一个代表其在文本中出现次数的数字,差不多就是这个意思,大家可以自己体会体会,这个VectorSource就是干这个事的
语料建好之后我们就开始处理
常见的会进行转小写(这个只针对英文哈),去特殊符号,去停用词,去空白格等:
docs <- tm_map(docs,tolower)
docs <- tm_map(docs,removeNumbers)
docs <- tm_map(docs,removePunctuation)
docs <- tm_map(docs,removeWords,stopwords('en'))
docs <- tm_map(docs,stripWhitespace)
当然,文本中还会有各种奇奇怪怪的字符,也要去除,这个时候我们可以用content_transformer这个方法:
toSpace <- content_transformer(function(x,pattern) gsub(pattern,' ',x))
我们只需要将奇奇怪怪的字符当参数喂给它就行:
docs <- tm_map(docs,toSpace,'/')
然后就是建立文档-词矩阵:
dtm <- TermDocumentMatrix(docs)
m <- as.matrix(dtm)
v <- sort(rowSums(m),decreasing = T)
d <- data.frame(word=names(v),freq=v)
好了,到了这一步得到的结果就和昨天的文章的输入结果一样一样的啦,大家现在就可以用词云包做出各种各样有意思的词云啦,词云的各种详细设置大家可以去翻前面一篇文章这儿也给一个例子代码:
wordcloud2(d, size = 0.5, shape = 'star')
运行上面的代码词云图就出来了,可以从词云看出来,拜登大首领还是想给美国人民以信心哈,大家用自己的文本做做看哦,下一篇文章给大家写中文词云的做法。
小结
今天手把手教大家用自己的文本做了一个词云图,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python和R的,加油。
(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)
往期内容: