3

我试图找出特定用户向/提及另一个用户的推文频率。通过 twitteR-package 我可以检索给定用户的推文,但是如果一条推文提到了几个用户,那么在 replyToUID 字段中只提到第一个用户。所以我的数据框的第一列包含推文,例如:

“@user1 @user2 你读过@user3 写的东西吗?”

我想将用户名提取到这样的列表中

  • 用户1
  • 用户2
  • 用户3

下一条推文中的用户将在下面添加。如果有人知道该怎么做(提取,我可以处理循环)或将我指向正确的方向,那将非常感激。

可选地,对于真正有用的,如果您知道如何组合最终的列表(在处理 n 条推文之后),而不是

  • 用户1
  • 用户2
  • 用户3
  • 用户1
  • 用户3
  • 用户4

列表(或表)如下所示(计算某个用户被提及的频率)

  • 用户 1, 2
  • 用户 2, 1
  • 用户 3, 2
  • 用户 4, 1

它会更加赞赏。

谢谢你,埃利亚斯

4

2 回答 2

6

我不确定有效 twitter 用户名的规则是什么,但假设只允许使用字母数字字符,您可以使用简单的正则表达式来做到这一点:

x <- "@user1 @user2 have you read what @user3 wrote?"

users <- function(x){
  xx <- strsplit(x, " ")
  lapply(xx, function(xx)xx[grepl("@[[:alnum:]]", xx)])
}

users(x)
[[1]]
[1] "@user1" "@user2" "@user3"

此外,该解决方案还假设所有单词都用空格分隔,即它不适用于用户名后跟标点符号。您必须扩展此答案以应对这种情况。

于 2012-08-22T18:43:37.787 回答
2

您不久前发布了此内容,但我只是在寻找另一个问题的答案时遇到了它。

我只是想把这个关于“推特实体”的说明页面指向你。 https://dev.twitter.com/docs/tweet-entities

有一个“user_mention 实体”可以提取推文文本中的所有推特用户名,并为您提供一个数组。我认为这应该使您可以访问您想要获得的内容。

于 2013-03-05T04:25:00.027 回答