過去のテレビ番組の放送内容をスクレイピングで集めて分析する方法
こんにちは。Hakali Inc.の秦です。
北海道にある浄土真宗のお寺に生まれて、今は住職になる前の俗世での修行期間として、7名のスタートアップでデータ活用コンサルタントとして働いています。
せっかくの修行期間なので、働く中での気づきを書き残しています。
今日はWebスクレイピングの話。
ありがたいことに前回のPython入門記事が想像以上に反響あり、「Pythonやってみたい!」との声もいくつか頂きました。
その中でも、やりたいこととして多く挙がっていたのが、Webスクレイピング。
Webスクレイピングとは、Webスクレイピングとはウェブサイトから任意の情報を取得する技術です。
Webスクレイピングを使えば、あらゆるWebサイトからデータを収集することができます。
例えば食べログからデータを収集してきてこんな解析も。
(当時読んで、いつかこんなことできるようになりたい!と夢見た)
今回は、テレビ番組の過去の放送内容をスクレイピングして、自然言語処理までやってみます。
(本記事は処理の流れを中心に説明するもので、具体的なやり方やコードは省略します。)
広告代理店にいた時「とにかくバズらせてほしい!」とか「話題性のある企画を!」といったオーダーを頂くことがしばしばありました。
こういう時、経験と勘に頼るのでもいいのですが、過去にテレビで取り上げられたトピックを分析してメディアに取り上げられやすい切り口を探る、というアプローチもとれたら、ドヤれそうですね。
今回は、ビジネスメディアの最高峰「ワールドビジネスサテライト」の過去の放送内容を収集してみます。
to Bで話題性のあるネタを考える という想定で進めます。
Scrapyを使う
Pythonでスクレイピングをやる方法はいくつかあるのですが、ある程度コードがパッケージとして用意されている「Scrapy」を使います。
スクレイピングするためのベースのコードは用意されているので、自分で書くのは
・スクレイピングしたいURL
・そのソースコード内の 抽出したいテキストを指定する記述
・次ページに進んで処理を続ける記述
・何秒に何回、何ページ取得するかの記述
この辺くらいで、初級者でもかなり簡単にスクレイピングができます。
この記述がうまく行けば、欲しいデータがCSV形式でどんどん書き込まれていきます。
テレビ情報を抜き出せるサイトを探す
ワールドビジネスサテライトの過去の放送データが抜き出せるサイトを探します。
まずは明るくWBSのサイトを見に行ってみました。
めちゃカッコいいサイトです。カレンダー形式で、日付をクリックするとその日の放送内容がをみることができます。
しかしソースコードみると、JavaScriptでグニュグニュ書かれててわけかわからんです。断念しました。
何か構造が簡単でいいサイトはないものかと探していたら、こんな素敵なサイトを見つけました。
価格.comさんが、あらゆるテレビ番組の放送内容をまとめてくれています。複数のトピックスの見出しと内容が簡単にまとめられています。
これはすごい。(一体誰が、何のために...!?)
しかも、HTMLで書かれていてサイト構造も簡単そう!
このサイトから、見出しと概要文を抜き出すことにします。
スクレイピングする
下準備をして、過去3年分くらい抜き出してみました。
一気に説明します。(書くの疲れてきました><)
コードはこんな感じ(一部)。
出てきたものはこんな感じ。
(そのままだと不要なデータや重複があったので、Pandasで前処理した)
無事に説明文とタイトルがシンプルに抜き出せました。
(1,000%ダンゴムシが気になりますね。)
自然言語処理をする
いよいよスクレイピングしてきたデータを分析します。
今回は説明文を自然言語処理して、頻出キーワードや共起語マップを見て見ます。
自然言語処理に使うのは、立命館大学教授が作ったKH-Coder。無料です。
(サイトに案内ある通り、macだとインストールが煩雑で、Mac用にインストールサポート版が3,980円で提供されています。)
PCにインストールするだけ。データをぶち込めば、文章を品詞や名詞の意味単位に分解して、出現回数順に並べてくれます。
処理後のアウトプットはこんな感じ。
眺めると結構楽しいです。
例えば地名ランキングだと、並み居る国に並んで北海道が13位にランクインしています。さすが北海道。地元民の誇り。
(詳細見たら、北海道新幹線関連のニュースで出現回数稼いでるようでした。)
続いて共起マップ。
出ました。すごそうな図。
世界情勢、国内企業動向、新商品関連 に大きく分けられそうですね。
全体像としてはこんな感じ。なるほど。
すごそうな雰囲気ですが、この状態では、まだ何か言うのは難しそうですね。
続いて、キーワードを絞り込んで見てみます。
「AI」で絞り込んだ結果こんな感じ。
結構面白そうな話題がたくさんありますね。
「ラーメン×AI」気になる。
これを単語レベルで分解して共起度をスコアリングしたものがこれ。
おお。これは何か言えそう。スピーカー、タクシー、カメラ、音声、といった言葉が特徴的ですね。タクシーとか意外。
まとめ
以上、Webスクレイピングから自然言語処理までをやってみました。
スクレイピング、貴重なデータではありますが、これだけで何かを言うのは難しそうですね。
仮説立てや、アイデア練りの方針立てには使えそう。
あとは、練り上げた企画の裏付けとしてこういうデータが使えると、説得力増しそうですね。
でもやっぱり最後は人間が脳みそ絞って、データを意味あるものに育て上げていく作業が必要だなと思います。
データ分析全般言えることですが、結局この作業が一番難しく、価値があるところかなと思います。社長はよく「職人技」という表現を使っていて、ほんとそうだなと思います。
「回向返照」という仏教の言葉を思い出しました。
「外へと向かいがちな意識を、時々、自分の内面に向けてみなさい」という意味の言葉です。
わたしたちは普段、自分の「外にある世界」に気を取られて過ごしがちです。
「Python書けるぜ。スクレイピングできるぜよっしゃ。次は何を習得してやろうか。」
と、スキルを得ると何かすごくレベルアップした気持ちになります。
しかし、自分の外側をスキルで武装するだけではあまり意味がなくて、結局自分の中に、どっしりとした土台となる思考を育て、経験値を蓄積していかないと、本当に価値のある仕事はできないなと思います。
スキルを習得するのは楽しいですが、あまり外ばかりに目を奪われず、自分の内面を育てて行くことも忘れずに、日々過ごしていきたいなと思いました。
合掌。
この記事が気に入ったらサポートをしてみませんか?