ohmemo メモです

ohmemo

メモです

はてなブックマークのコメントにおける流行語の調査

この記事はCAMPHOR- Advent Calendar 2017の24日目の記事です。

はじめに

前回の記事ではスクレイピングの練習として, はてなブックマークの人気エントリの一覧から情報を抽出してみました. 今回は, その続きとしてAPIを使いながら, エントリーに対するコメントを取得してみます. 「流行語の調査」という大げさなタイトルですが, 要するに 単語を数えてみたよ というだけの記事です.

APIによるコメントの取得

はてなブックマークエントリー情報取得APIを利用する事で, エントリーに対するコメントや, ブックマークをしたユーザIDなどを取得できます. /entry/json/ エンドポイントは関連エントリーに対する情報も返ってくるので, それが不要場合には /entry/jsonlite/ を使えば関連エントリーを返さないのでレスポンスが高速になります. また, URLよってはブックマーク情報を公開していない物もあるため, 実装する際にはレスポンスの中身を確認する必要があります.

import urllib
from pandas import DataFrame
from pandas.io.json import json_normalize


def get_bookmark_df(target_url):
    url = "http://b.hatena.ne.jp/entry/jsonlite/?" + urllib.parse.urlencode({"url": target_url})
    res = requests.get(url).json()
    if res and ("bookmarks" in res.keys()):
        bookmark_df = DataFrame.from_dict(json_normalize(res["bookmarks"]), orient='columns')
        bookmark_df["title"] = res["title"]
        bookmark_df["bookmark_count"] = res["count"]
        bookmark_df["url"] = res["url"]
        bookmark_df["entry_url"] = res["entry_url"]
        bookmark_df["entry_id"] = res["eid"]
        
    return bookmark_df

bookmark_df = get_bookmark_df("http://hatenablog.com/")

これを実行するとこんな感じになります. comment カラムにブックマークした際のコメントがある事が分かります. (URLによってはタグ情報がないものもあるので注意して下さい.) gyazo.com

流行語が知りたい

毎年この季節になると, 1年の流行語が発表されます.
www.oricon.co.jp

個人的には流行語というのは, 自分のいる環境や関心のあるトピックによって納得度が変化すると思います.
今年の「インスタ映え」という言葉は自分では全く使っていないし, 周りにもそのような言葉を使う人がいなかったので, 納得度が低いです.
そこで, 自分が毎日利用しているはてなブックマークでは, 他の人達がどのような言葉を使っていたのかを調べたくなりました.

どうやって調べるの?

(正しい流行語の定義が何かよく分かりませんが...)
今回は1年毎に, はてなブックマークのコメントで使われた単語を数えて行き, 以下の式で単語の流行度を計算します.

gyazo.com

コメントを単語に分割する際の形態素解析にはMeCabを, 辞書にはmecab-ipadic-neologdを使用します.
流行度の計算に使用するコメントは, はてなブックマークの「世の中」のカテゴリにおける, 1日ごとの人気エントリ一覧に対してのコメントです.
このコメントを2014年~2017年について各365日分集めました. (2017年分は12月19日までのデータを使用しています.) コメントの中には, 2016年のエントリに対して2017年にコメントされた物もありますが, その場合には流行度の計算から除外しています.

調査結果

コメントの総数は 7,307,039 となりました.
流行度の上位20語と, 前年の単語には無かった新語達についてはその年での出現割合の上位20語を出してみました.

gyazo.com

gyazo.com

gyazo.com

まとめ

スクレイピングAPIを使って, はてなブックマークのコメントから単語を数えてみました.
データを集めるのに苦労しましたが, 流行度の上位20語については正直微妙な結果になってしまった感があります...

明日は shiba6v が担当です. お楽しみに.