📜  R clean tweets 中的 twitter 分析 (1)

📅  最后修改于: 2023-12-03 15:04:45.070000             🧑  作者: Mango

R clean tweets 中的 twitter 分析

简介

本文介绍如何使用 R 语言分析 Twitter 数据,并对数据进行清洗和分析。我们将使用R包 tidytextrtweet,以及其他一些常用的 R 包来完成分析。

安装与导入包

我们需要先安装和导入一些 R 包。如果您已经安装过这些包,可以跳过此步骤。

# 安装包
install.packages("rtweet")
install.packages("tidyverse")
install.packages("tidytext")
install.packages("quanteda")
install.packages("ggplot2")

# 导入包
library(rtweet)
library(tidyverse)
library(tidytext)
library(quanteda)
library(ggplot2)
获取twitter数据

在开始分析之前,我们需要获取Twitter数据。我们将使用 rtweet 包来获取数据。要使用此包,您需要先在 Twitter 开发者平台 上注册并创建一个应用程序。注册后,将会为您提供一个 API 密钥和 API 密钥的秘密。将这些信息存储在 .Renviron 文件中,然后重新启动R会话。

# 登录
create_token(app = "My_App")

# 搜索最新的Twitter数据
tweets <- search_twitter("COVID-19", n = 1000)

# 查看数据
head(tweets$text)
清洗数据

获得 Twitter 数据后,我们需要先对数据进行清洗。在这个案例中,我们将使用 tidytext 包中的函数 unnest_tokens() 来分离 Twitter 中的单词和标点符号。

# 展开分词
tidy_tweets <- tweets$text %>% 
 unnest_tokens(word, text)

# 移除停用词
stopwords <- data.frame(word = stopwords("english"))
tidy_tweets_clean <- tidy_tweets %>%
  anti_join(stopwords)

# 查看清理后数据
head(tidy_tweets_clean)
分析数据

在我们清洗 Twitter 数据后,我们可以分析数据了。首先,我们将创建一个单词计数表来计算每个单词在 Twitter 中出现的次数。

# 创建单词计数表
word_freq <- tidy_tweets_clean %>% 
  count(word, sort = TRUE)

# 查看前100个单词
head(word_freq, n = 100)

我们还可以使用 ggplot2 包创建单词出现次数的条形图。

# 创建条形图
word_freq %>% 
  top_n(20) %>%
  ggplot(aes(x = word, y = n)) +
  geom_col() +
  xlab(NULL) +
  coord_flip()

条形图

接下来,我们将创建单词云,以更清晰地展示哪些单词在 Twitter 中出现最频繁。

# 创建单词云
wordcloud(words = word_freq$word, freq = word_freq$n, max.words = 100, random.order = FALSE)

单词云

最后,我们可以对 Twitter 数据进行情感分析,以确定 Twitter 中所使用的情感词汇。我们将使用 quanteda 包中的函数 textmodel_sentiment()

# 情感分析
sentiment_score <- tidy_tweets_clean %>%
  textmodel_sentiment() %>%
  as.data.frame() %>%
  rownames_to_column(var = "word") 

# 查看前100个情感词
head(sentiment_score, n = 100)
总结

在本文中,我们了解了如何使用 rtweet 包来获取 Twitter 数据,以及如何使用 tidytextquanteda 包来清洗和分析数据。我们还了解了如何使用 ggplot2wordcloud 包来可视化数据。在完成本案例后,您应该已经掌握了 R 语言中的 Twitter 分析基础,能够进行基本的清洗和分析,进一步挖掘数据背后的更多信息。