R中的子图文本分析(igraph)
subgraph text analysis in R (igraph)
我很好奇如何访问与边关联的图的附加属性。下面是一个最小的例子:
library("igraph")
library("SocialMediaLab")
myapikey =''
myapisecret =''
myaccesstoken = ''
myaccesstokensecret = ''
tweets <- Authenticate("twitter",
apiKey = myapikey,
apiSecret = myapisecret,
accessToken = myaccesstoken,
accessTokenSecret = myaccesstokensecret) %>%
Collect(searchTerm="#trump", numTweets = 100,writeToFile=FALSE,verbose=TRUE)
g_twitter_actor <- tweets %>% Create("Actor", writeToFile=FALSE)
c <- igraph::components(g_twitter_actor, mode = 'weak')
subCluster <- induced.subgraph(g_twitter_actor, V(g_twitter_actor)[which(c$membership == which.max(c$csize))])
初始推文包含以下列
colnames(tweets)
[1] "text" "favorited" "favoriteCount" "replyToSN" "created_at" "truncated" "replyToSID" "id"
[9] "replyToUID" "statusSource" "screen_name" "retweetCount" "isRetweet" "retweeted" "longitude" "latitude"
[17] "from_user" "reply_to" "users_mentioned" "retweet_from" "hashtags_used"
如何访问子图的文本 属性 以执行文本分析?
E(subCluster)$text
无效
E(subCluster)$text
不起作用,因为 tweets$text
的值在制作时未添加到图表中。因此,您必须手动执行此操作。这有点痛苦,但可行。需要 tweets
数据框的一些子集并根据用户名进行匹配。
首先,请注意边缘类型按特定顺序排列:转推、提及、回复。来自特定用户的相同文本可以适用于所有这三个。所以我认为连续添加文本是有意义的。
> unique(E(g_twitter_actor)$edgeType)
[1] "Retweet" "Mention" "Reply"
使用 dplry
和 reshape2
使这更容易。
library(reshape2); library(dplyr)
#Make data frame for retweets, mentions, replies
rts <- tweets %>% filter(!is.na(retweet_from))
ms <- tweets %>% filter(users_mentioned!="character(0)")
rpls <- tweets %>% filter(!is.na(reply_to))
由于 users_mentioned
可以包含个人列表,我们必须将其取消列出。但是我们想把提到的用户和提到他们的用户关联起来。
#Name each element in the users_mentioned list after the user who mentioned
names(ms$users_mentioned) <- ms$screen_name
ms <- melt(ms$users_mentioned) #melting creates a data frame for each user and the users they mention
#Add the text
ms$text <- tweets[match(ms$L1,tweets$screen_name),1]
现在通过匹配边缘类型将这些作为边缘属性添加到网络中。
E(g_twitter_actor)$text[E(g_twitter_actor)$edgeType %in% "Retweet"] <- rts$text
E(g_twitter_actor)$text[E(g_twitter_actor)$edgeType %in% "Mention"] <- ms$text
E(g_twitter_actor)$text[E(g_twitter_actor)$edgeType %in% "Reply"] <- rpls$text
现在您可以子集化并获取文本的边缘值。
subCluster <- induced.subgraph(g_twitter_actor,
V(g_twitter_actor)[which(c$membership == which.max(c$csize))])
我很好奇如何访问与边关联的图的附加属性。下面是一个最小的例子:
library("igraph")
library("SocialMediaLab")
myapikey =''
myapisecret =''
myaccesstoken = ''
myaccesstokensecret = ''
tweets <- Authenticate("twitter",
apiKey = myapikey,
apiSecret = myapisecret,
accessToken = myaccesstoken,
accessTokenSecret = myaccesstokensecret) %>%
Collect(searchTerm="#trump", numTweets = 100,writeToFile=FALSE,verbose=TRUE)
g_twitter_actor <- tweets %>% Create("Actor", writeToFile=FALSE)
c <- igraph::components(g_twitter_actor, mode = 'weak')
subCluster <- induced.subgraph(g_twitter_actor, V(g_twitter_actor)[which(c$membership == which.max(c$csize))])
初始推文包含以下列
colnames(tweets)
[1] "text" "favorited" "favoriteCount" "replyToSN" "created_at" "truncated" "replyToSID" "id"
[9] "replyToUID" "statusSource" "screen_name" "retweetCount" "isRetweet" "retweeted" "longitude" "latitude"
[17] "from_user" "reply_to" "users_mentioned" "retweet_from" "hashtags_used"
如何访问子图的文本 属性 以执行文本分析?
E(subCluster)$text
无效
E(subCluster)$text
不起作用,因为 tweets$text
的值在制作时未添加到图表中。因此,您必须手动执行此操作。这有点痛苦,但可行。需要 tweets
数据框的一些子集并根据用户名进行匹配。
首先,请注意边缘类型按特定顺序排列:转推、提及、回复。来自特定用户的相同文本可以适用于所有这三个。所以我认为连续添加文本是有意义的。
> unique(E(g_twitter_actor)$edgeType)
[1] "Retweet" "Mention" "Reply"
使用 dplry
和 reshape2
使这更容易。
library(reshape2); library(dplyr)
#Make data frame for retweets, mentions, replies
rts <- tweets %>% filter(!is.na(retweet_from))
ms <- tweets %>% filter(users_mentioned!="character(0)")
rpls <- tweets %>% filter(!is.na(reply_to))
由于 users_mentioned
可以包含个人列表,我们必须将其取消列出。但是我们想把提到的用户和提到他们的用户关联起来。
#Name each element in the users_mentioned list after the user who mentioned
names(ms$users_mentioned) <- ms$screen_name
ms <- melt(ms$users_mentioned) #melting creates a data frame for each user and the users they mention
#Add the text
ms$text <- tweets[match(ms$L1,tweets$screen_name),1]
现在通过匹配边缘类型将这些作为边缘属性添加到网络中。
E(g_twitter_actor)$text[E(g_twitter_actor)$edgeType %in% "Retweet"] <- rts$text
E(g_twitter_actor)$text[E(g_twitter_actor)$edgeType %in% "Mention"] <- ms$text
E(g_twitter_actor)$text[E(g_twitter_actor)$edgeType %in% "Reply"] <- rpls$text
现在您可以子集化并获取文本的边缘值。
subCluster <- induced.subgraph(g_twitter_actor,
V(g_twitter_actor)[which(c$membership == which.max(c$csize))])