編集部イチオシ
2021年5月10日

「バズったキーワードを最初にツイートした人」を探す仕組みを作ってみた

API使えば簡単に作れるだろう、と思ったものの、意外に苦労したという話。 TwitterのAPIは、投稿するための機能には長けているのですが、調査・分析の方は制限されている部分が多いような…有料プランを使えってことですかね? https://buzz-origin.com/about.php
94
buzz_origin @buzz_origin

TwitterにはAPIがあるのだから、 「あるトレンドキーワードを最初につぶやいた人を探す」 なんて楽勝で出来るだろう!と思ってやってみたら、全然楽勝じゃないし意外にしょっぱい代物だったのだけど、まぁせっかく作ったので公開してみることにした、という顛末です。 buzz-origin.com

2021-05-10 19:42:08
buzz_origin @buzz_origin

そもそもTwitterには「高度な検索」という機能がありますし、これを上手く使えば、人力でもバズったキーワードの発端を見付けるのは、めっちゃ面倒ですが不可能ではないです。 以前にToggeterでもまとめられていました。 togetter.com/li/1084358

2021-05-10 19:45:18
buzz_origin @buzz_origin

が、せっかくAPIなるものがあるのだから、「めっちゃ面倒」な部分を人間様ではなくAPIにお願いしようと思ったのですが、実は無料版のAPIでは検索機能が手動よりもショボい、ということが分かりまして…。 こんな感じ↓で、無料版では過去7日間の検索しか出来ないのです。 qiita.com/ts-3156/items/…

2021-05-10 19:52:07

APIの検索で探すのが難しい大きな理由が実際にはもう一つありまして、これは手動検索でも同じなのですが、検索結果をソートして取り出すことが出来ないのです。

期間を指定して、日時を昇順で並べ替えられれば簡単に持ってこれるでしょうに、それが出来ないので、日時を細かく区切って探すしかないのです…。

buzz_origin @buzz_origin

いや7日間って…。 せめて30日位くださいよTwitter社さん…。 と、この時点で心が折れかけたのですが、でも、 「直近の数日で突然ボリュームが増えたキーワード」 だけを探せないか?と考え直しまして。 昨日までは無名だったのに、彗星の如く現れて一気にスターダムへ登り詰めたやつを探すのです。

2021-05-10 19:58:27
buzz_origin @buzz_origin

例を挙げて説明します。 下記のツイートは「#東京五輪は中止します」というキーワードの起源となったと見られるツイートで、今回のAPIを使って探し当てたものです。 いわゆるツイデモですが、それでも狙ってトレンド入りするのはさすが著名インフルエンサーさんですね。 twitter.com/knife900/statu…

2021-05-10 20:01:39
buzz_origin @buzz_origin

単に時間を絞りながら連続して検索を行ない力技で抽出するだけで、下がその履歴なのですが、一つだけ気にしている箇所があります。 それは、一枚目の画像の左側で青く囲っている部分で、実際の起点となった日(5月10日)より以前の数日間は、このタグの検索ヒットが無いこと、を条件にしています。 pic.twitter.com/q5zxLYNFzQ

2021-05-10 20:08:16
拡大
拡大
buzz_origin @buzz_origin

つまりこのキーワードは、トレンドに上がるまでは誰もツイートしていなかったのに、突然Twitter界に現れた新星だということが分かります。 逆に、7日前まで遡っても起点があやふやなものは除外することにしました。 先ほどの履歴は、こちらからも閲覧可能です。 buzz-origin.com/tweet_620

2021-05-10 20:10:50
buzz_origin @buzz_origin

あとは、自動巡回でトレンドキーワードを拾ってきて、その起源を探るだけ…と言いたいところですが、他にもいくつか懸念事項がありまして…。 その①: 「起源となるツイートをした人が、そのツイートを削除した場合、二番目以降のツイートが出てくる」 まぁこれは想定内ですが。

2021-05-10 20:13:02
buzz_origin @buzz_origin

その②: 「現状ではハッシュタグしか拾えない」 これは何故かと言うと、検索のAPIがご丁寧にも、あいまい検索をしやがるからです。 実際にやってみたものの、トレンドと無関係のツイートも大量に拾ってくるので全く判別不能でして…できればハッシュタグ以外も扱いたいので、今後の課題です。

2021-05-10 20:15:24
buzz_origin @buzz_origin

あと、懸念事項とはちょっと違いますけれど、このような構造上、この仕組みは 「あるキーワードが最初に呟かれたツイート」 ではなく(何しろ一週間しか拾えないので)、あくまで 「直近でトレンド入りしたタグの、そのバズりの起点となったツイート」 を拾う代物に成り果てた、ということですね。

2021-05-10 20:18:19
buzz_origin @buzz_origin

今後の予定としてはこれらの解消と、そのトレンドに集まるユーザーの嗜好などの傾向を拾えないかな?等も考えています。 有料プラン申し込まないとダメかな…使ってみたいけど、遊ぶためだけに払うにはちと高い…。 以上、こちら↓にもほぼ同じ内容をまとめておきました。 buzz-origin.com/about.php

2021-05-10 20:22:01

コメント

Isochan @giulia10536 2021年5月11日
ハッシュタグ以外のことを拾いたいなら、形態素解析が必要になるかなあ。
0
m232796 @m232796 2021年5月12日
giulia10536 同一のキーワードを探したいだけなら「他の語の中に紛れてミスヒットしたキーワードを除外する」場合以外そんな物必要ないのでは?むしろあいまい検索などの高度な(いらない)機能を持ってる検索APIの中でこそ使われてる要素で、この場合は無い方が嬉しいものだと思いますけど……検索用にインデックスを生成するとかであってもそれをやるのはサービス提供側でAPI利用者側ではないし……
0
亞嶋輝春 @ASHIMA__k 2021年5月12日
Twitterのあいまい検索、わざわざ検索ワードを解体して1文字単位でやりやがるからなぁ
11
y2_naranja@🦀ナランハ🍊モデルナx2済 @y2_naranja 2021年5月12日
APIはしょっぱいよなあ……。お疲れ様です。Twitter検索は大抵の検索除けは突破するし、去年のtweetでも取ってくるしでかなり強力だから、APIに実装してくれてもいいのになと思う機能がいくつもある。
3
Isochan @giulia10536 2021年5月13日
m232796 「クリーニング」と「スクリーニング」というような感じで包含された文字列をちゃんと峻別してマッチさせたい、とかだと単純なパターンマッチではうまく行かないんじゃないかと思うのですが、いかがでしょうか。
0