从R中的twitter状态中提取用户

问题描述 投票:3回答:2

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

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

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

  • USER1
  • 用户2
  • 用户3

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

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

  • USER1
  • 用户2
  • 用户3
  • USER1
  • 用户3
  • USER4

列表(或表格)读取如下(计算某个用户被提及的频率)

  • user1,2
  • user2,1
  • user3,2
  • user4,1

它会更加值得赞赏。

谢谢你,伊莱亚斯

r twitter
2个回答
5
投票

我不确定有效的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"

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


2
投票

你刚刚发布了这个,但我刚刚在寻找另一个问题的答案时遇到了它。

我只是想在“twitter实体”上指导你这个说明页面。 https://dev.twitter.com/docs/tweet-entities

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

© www.soinside.com 2019 - 2024. All rights reserved.