Twitter APIのトレンドデータ

ツイッターのトレンド情報を取得できるTwitter GET trends/place APIを使い「tweetan」というサイトを作ってありますが、2020年も大晦日となりましたので、10分毎に収集するトレンドデータの一年分を使ってランキングを抽出してみることにしました。

Twitter APIのデータ取得方法

Twitter APIからのデータ取得方法の基本については、PHPのcowitterライブラリを使ってデータ取得をする手順を説明しているこちらの記事をご参照ください。

GET trends/place APIの仕様

Twitterで盛り上がっているツイート・ハッシュタグをリアルタイムで取得することができる、Twitter GET trends/place APIの仕様や使い方については、こちらの記事でご紹介しています。

年間で収集したデータ件数

API側では5分毎にトレンドデータが更新されるようですので、当初は5分おきにデータ取得をかけていましたが、サーバ負荷も考えて10分おきのバッチ処理に変更をしておりました。

一度に取得可能なトレンドランキングデータは50件程度なので、これで単純計算すると日に7,200レコード、365日で2,628,000レコードが取得される予定でしたが、実際には今日の時点では2,530,934レコードとなっていたので、50レコードを取れなかったことが結構あったのかもしれません。

とはいえ、これだけデータがたまっていれば年間トレンドの集計をするのにも問題はなさそうです。

ログデータから2020年分を抽出

ログデータをためるトランテーブルを見ると320万レコード程たまっているので、ここから2020年分データを切り出しつつ、レコードに保持をさせたランキングスコアでSUM ORDER BYをしてみました。

上位20件程度を試しに抽出してみたところ、実行時間が58.4296秒もかかってしまい、とてもプログラムにかませるといったことができなさそうでした。

MySQLで320万レコードをORDER BYした結果58秒を超えた
DBチューニングはそこまでやってないとはいえ、時間かかりすぎですね。

抽出データで静的ページを作成

月次のランキングのように毎月定期出力するというものでもないので、とりあえずSQLで取得したデータを使って静的ページを作ってしまうことにしました。完成したものがこちらの2020 Twitter 年間トレンドランキングとなります。

2020年の年間ツイッタートレンドランキング
2020年のTwitter APIトレンドデータを年間でランキング

大手のランキング結果とだいぶ異なる

ランキングの結果を某社がやっているTwitter年間トレンドと比べてもらうと一目瞭然でしょうが、ランキングのトレンドワードが全く違う印象のものとなってしまっておりました。

こちらは毎月おなじみの「メンテの日なのでssを貼る」や「日向坂で会いましょう」がランキング上位に並んでおりますが、あちらのランキングだと「ニュースワードランキング」といった印象のワードばかりが並んでおりました。世の中のトレンドという意味では大手の年間ランキングの方がしっくりくる感じです。

1位 コロナ(新型コロナ)
2位 #検察庁法改正案に抗議します
3位 緊急事態宣言
4位 100日後に死ぬワニ
5位 鬼滅の刃

大手の年間トレンドランキング

1位 #メンテの日なのでssを貼る
2位 #日向坂で会いましょう
3位 #annkw
4位 #菅田将暉ANN
5位 #乃木坂46ANN
6位 #乃木坂工事中
7位 #SixTONESANN
8位 #星野源ANN

tweetanの年間トレンドランキング

違いの原因はAPIのtweet_volumeの値

以前の記事でもご紹介していますが、Twitter GET trends/place APIのJSONレスポンスデータにはツイートボリュームもあることはありますが、ほとんどがNULLデータばかりとなってしまっており、肝心のツイートボリュームをまともに取得することができませんでした。

 [
  {
    "trends": [
     {
        "name": "あなたの精神年齢",
        "url": "http://twitter.com/search?q=%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E7%B2%BE%E7%A5%9E%E5%B9%B4%E9%BD%A2",
        "promoted_content": null,
        "query": "%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E7%B2%BE%E7%A5%9E%E5%B9%B4%E9%BD%A2",
        "tweet_volume": null
      },

ランキングの順位でスコアリング

tweet_volumeの値が取れなかったため、「1位:50点」~「50位:1点」まで単純にスコアリングをするしかできず、大手ランキングで1位の「コロナ(新型コロナ)」というワードが瞬間的に100万ツイートされていても、同じく夜中に「#メンテの日なのでssを貼る」でトレンド1位になったものと同じ扱いとなってしまうこととなり、このあたりが原因かとは考えておりました。

大手ワードをTwitter APIのログで見る

とはいえ、一年間ひたすら取得した320万レコードのTwitter GET trends/place APIのレスポンスデータで大手ランキングで1位の「コロナ(新型コロナ)」というワードを見てみると、少々気になるところがありました。

大手ワードのトレンド入り回数が異様に少ない

保有するログデータで「新型コロナ」を調べてみると、トレンドに入ったのは4月中旬に6回しかなく、「コロナ」の方は2月下旬にたった2回しかありませんでした。

気になったので他のワードについても見てみましたが、「緊急事態宣言」は562回とある程度ログにも入っていましたが、「100日後に死ぬワニ」についてはログに一度も入っておらず、10万語以上あるツイート、ハッシュタグのマスターデータの中に存在すらしていませんでした。

Twitterトレンドはどのように決定されるか

Twitterのヘルプセンターにも記載がありますが、Twitterトレンドというものはこのような仕組みでアルゴリズムされているようです。

トレンドはアルゴリズムによって決定され、….ここ数日や今日1日で話題になったトピックではなく、今まさに注目されているトピックが選び出されるため、Twitterで盛り上がっている最新の話題をリアルタイムで見つけることができます。

Twitterのヘルプセンター

じわじわとツイートされていたものの、Twitterで盛り上がるといったことがなかったため、Twitterトレンドにはならなかったということなのかもしれないですが、「#乃木坂工事中」ハッシュタグですら2,197回はトレンドログに出現しているので、本当にみんながツイートして盛り上がっていたものをランキングにしたのか?といったことが少々気にはなってしまいます。

大手サイトのランキング説明

某大手ランキングの説明を見ると、「Twitterのトレンドにランクインしたワードを様々なデータ*から検証」とあり、※注釈には「*ツイート数・トレンド欄のワードクリック数/露出回数など」といったことも補足で書いてありました。

単純にTwitterのトレンドデータだけということではないようですので、「100日後に死ぬワニ」はツイート数は少なくてもインプレッションは恐ろしくあったということで、年間ランク4位というランキングになったということなのかもしれませんが、そもそものTwitterのトレンドの仕様とはだいぶ異なるようですので、なんだか違和感が残ります。

おわりに

Twitterの年間トレンドランキングという名前は同じですが、元とするデータと指標や抽出方法も全く違うため、全く別物のランキングということのようです。

どちらかというとtweetanのランキングの方が、Twitterで普段つぶやく人のイメージに合っているような気がしてしまいますが、色々見比べると面白いことが分かったような気がしました。

ABOUT dtn.jp

この運営ブログをみてdtn.jpの運営サイトに興味をお持ちになった方は下記のリンク集からサイトをご参照ください。PHP・SQL・JS・HTML・CSSや様々なAPIでゼロから立ち上げたサイトを複数運営しています。

dtn.jp関連サイト

  • ディレクトリ型検索エンジンdtn大手サイトは全てサービスを終了し、中小でも運営を継続するところがほとんどなくなってしまったディレクトリ型検索エンジンを2002年から細々運営しており、未だに細かい機能改修も行っております。申請されたサイトは実際に訪問して細かく確認をしているので登録までかなりお時間いただきます。
  • 猫ネコサーチエンジン猫・ペットサイト専用のディレクトリ型検索エンジンです。登録サイトはサイトのスクリーンショット付きでカテゴリに掲載しています。
  • 画像掲示板の泉画像やYouTubeやニコニコ動画が貼り付け可能な匿名画像掲示板です。27ジャンルに分かれた掲示板に、それぞれ100スレッドまで立てることが可能です。
  • ツイータンTwitter APIを使って10分おきに収集したTwitter(ツイッター)のトレンドワードや人気ハッシュタグデータを月別に集計してランキング形式で公開しています。
  • Keyword Tool++Yahoo APIや楽天サイトのデータを日次で収集したデータを元に、EC系キーワードをラインキング形式でご紹介しています。各ワードは検索ボリュームや関連語、24か月の検索ボリュームトレンドを確認も可能です。
  • 消費者金融の泉カードローン商品を取り扱う金融業者を一覧で比較可能としたサイトです。カテゴリ別、人気度別、限度額別、金利別に比較可能なサイトにしています。
  • TrendinGファッションモールに出店するブランドをアイテムヒット率でランキングとしたサイトです。まだβ版です。

各サイトの開発方法などについて

各サイトの開発方法や運用トラブルについては、当ブログで不定期にご紹介しています。Twitterで新着記事のお知らせもしています。宜しければフォローどうぞ。