如何用academictwitteR提取Twitter提及ID并构建提及网络?
用academictwitteR构建Twitter提及网络
问题背景
使用academictwitteR的get_all_tweets获取推文后,tidy格式数据丢失了提及信息,而提及内容存储在非规整数据框的tweets_bind_lega$entities$mentions列表列中,需要将其展开为规整数据框用于构建提及网络。
解决方案
借助dplyr和tidyr工具包,可快速将嵌套的提及列表展开,并提取构建网络所需的关键字段:
1. 加载依赖包
library(dplyr) library(tidyr)
2. 展开提及列表并整理为网络边表
# 从原始非规整数据中提取核心字段,展开提及列表 mentions_edge_list <- tweets_bind_lega %>% # 保留发推用户ID、推文ID以及嵌套的提及数据 select(author_id, tweet_id = id, mentions = entities$mentions) %>% # 展开每个推文的提及列表,空提及的推文将被过滤(如需保留可设keep_empty = TRUE) unnest(mentions, keep_empty = FALSE) %>% # 重命名并提取网络分析所需的核心列 transmute( source = author_id, # 发推用户(网络节点起点) target = username, # 被提及用户(网络节点终点) tweet_id = tweet_id # 关联的推文ID(可选,用于溯源) ) # 查看整理后的边表 head(mentions_edge_list)
3. 构建提及网络(可选)
如果需要直接生成可分析的网络对象,可使用igraph包:
library(igraph) # 基于边表创建有向网络对象 mentions_graph <- graph_from_data_frame(mentions_edge_list[, c("source", "target")], directed = TRUE) # 查看网络基本属性 summary(mentions_graph)
补充说明
- 若需将用户ID转换为用户名,可使用
academictwitteR的lookup_users函数,传入ID列表获取用户详情后关联到边表中 - 可添加
created_at字段,实现按时间切片的动态网络分析
内容的提问来源于stack exchange,提问作者Doło
相关产品推荐
相关产品推荐

