3

特定のユーザーが別のユーザーにツイート/言及した頻度を調べようとしています。twitteR-packageを使用すると、特定のユーザーのツイートを取得できますが、ツイートに複数のユーザーが記載されている場合は、最初のユーザーのみがreplyToUIDフィールドに記載されます。したがって、データフレームの最初の列には、たとえば次のようなツイートが含まれています。

「@user1@ user2 @ user3が書いたものを読んだことがありますか?」

このようなリストにユーザー名を抽出したいと思います

  • user1
  • user2
  • user3

次のツイートのユーザーが下に追加されます。誰かがそれを行う方法(抽出、ループを処理することができます)を知っているか、正しい方向に私を向けるなら、それは大いに感謝されるでしょう。

オプションで、本当に役立つ場合は、リストを合成する方法がわかっている場合は、(n個のツイートが処理された後)代わりに

  • user1
  • user2
  • user3
  • user1
  • user3
  • user4

リスト(またはテーブル)は次のようになります(特定のユーザーが言及された頻度を数えます)

  • user1、2
  • user2、1
  • user3、2
  • user4、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

あなたは少し前にこれを投稿しましたが、私は別の質問への答えを探しているときにそれを見つけました。

この説明ページを「twitterentities」で紹介したかっただけです。 https://dev.twitter.com/docs/tweet-entities

ツイートのテキスト内のすべてのTwitterユーザー名を抽出し、配列を提供する「user_mentionエンティティ」があります。これにより、取得しようとしていたものにアクセスできるようになるはずです。

于 2013-03-05T04:25:00.027 に答える