u++の備忘録

自分のTwitter投稿内のURLを分析してみた

これは何?

次の記事に着想を得て、自分のデータでやってみました。具体的には、2015年6月から現在までの自分のTwitter投稿から、全部のURLを抽出し、ドメイン単位で集計しました。

www.buzzfeed.com

データの取得

twilog*1に自分の投稿データが保存されていたので、ダウンロードしました。なおTwitterでは自分の投稿をダウンロードする機能が公式に提供*2されていますが、今年7月のインシデントの影響で現在は使えない状況のようです*3

分析結果

全投稿数は40903でした。Excelで処理するには少し大きいので、手慣れているPythonで分析しました。最終的には、頻度の高い上位40サイトを棒グラフで表示しました。

import collections
import itertools
import re

import pandas as pd


df = pd.read_csv(
    "drive/My Drive/twitter/upura0200827.csv",
    header=None,
    names=["id", "timestamp", "text"]
)

print(df.loc[0, "text"])
"""
初回の題材はVRらしい。シーズン18の最終回はディープフェイクだったし、技術的な話題を盛り込んでるな。

『相棒シーズン19』10月スタート!水谷豊、21年目の“一心同体” 反町隆史も続投(サンケイスポーツ)
#Yahooニュース
https://news.yahoo.co.jp/articles/dfffd7fab8172ba9d8997f54ab2314259ce7c811
"""

pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"
urls = re.findall(pattern, ' '.join(list(itertools.chain(df["text"]))))
print(len(urls))    # 12314
domains = [url.split('/')[2] for url in urls]

c = collections.Counter(domains)
res = pd.DataFrame(c.most_common()[:40])
res.columns = ["Domain", "Frequency"]
res.plot.bar(x="Domain", y="Frequency", figsize=(13, 5))

f:id:upura:20200827031251p:plain

考察

上位10件を以下に示します。最も多い pic.twitter.com と 3番目の twitter.com はそれぞれ、画像と引用リツイートだと考えられます。

f:id:upura:20200827031504p:plain

2、4、6番目はニュースサイトでした。headlines.yahoo.co.jpnews.yahoo.co.jp を足すと 942 + 437 = 1379個 で www.nikkei.com の1205個を上回ります。ニュースの情報源として、主に2種類のサイトを見ていることが読み取れます。8番目にも www.asahi.com が来ています。残りは技術的なサイトで、自身の技術ブログ upura.hatenablog.com や Qiita qiita.comarXiv arxiv.orgGitHub github.com が続きました。

おわりに

本記事では、BuzzFeedの記事に倣って自分のTwitter投稿内のURLを分析しました。個人の興味が色濃く出た結果のように感じます。2017年にソフトウェアエンジニアとして就職した後は少し技術的な投稿が比重が増えている認識なので、時系列で分割した分析も面白そうだなと思っています。