library(tm)
get_word_counts <-function(text){
# 分词
corpus <- VCorpus(VectorSource(text))
corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeWords, stopwords("english"))
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, stemDocument)
# 统计词频
tdm <- TermDocumentMatrix(corpus)
freq_terms <- findFreqTerms(tdm, lowfreq = 50)
word_counts <- rowSums(as.matrix(tdm))
word_counts <- sort(word_counts, decreasing = TRUE)
return(word_counts)
}
tweets <- read.csv('tweets.csv')
word_counts <- get_word_counts(tweets$text)
# 输出词频前25单词
result <- data.frame(count = word_counts)
print(head(result, n = 25))
library(wordcloud)
# 获取前40个高频单词
top_words <- head(word_counts, n = 40)
# 绘制词云
wordcloud(words = names(top_words), freq = top_words, min.freq = 1, max.words = 100, random.order = FALSE, rot.per = 0.35, colors = brewer.pal(8, "Dark2"))