u++の備忘録

Stay Homeで『相棒』全部観た(おまけ:nagisa & nlplotで可視化)

今年4月にKDDIテレビ朝日が設立したTELASA株式会社が運営する動画配信サービス「TELASA」にて、2000年のpre seasonから2019年の最新作まで『相棒』全シーズンの動画が配信されています。

www.videopass.jp

『相棒』はたびたび夕方に再放送され、「AbemaTV」「Amazon Prime Video」などで一部シーズンは配信されました/されていますが、全てのシーズンが一挙に配信されるのは私の知る限り初めてです。昔から生粋の『相棒』ファンだったこと、かつ新型コロナウイルス感染症の影響で在宅が推奨されていることから、この機に見返すことに決めました。

せっかくなので、最後に『相棒』データを自然言語処理した結果を可視化しておきます。

データ収集

誰でも閲覧可能な各動画の概要欄を収集して、次のようなcsv形式で保存しておきます。

第1話 アレスの進撃/右京(水谷豊)が突然、消息を絶って1週間。亘(反町隆史)は、何者かによって海に流された右京のスマートフォンが秋田に流れついたことから、潮流を計算し、北海道付近に浮かぶ“天礼島”にあたりをつける。すると亘は、島に渡って早々、男が若い女性を連れ去ろうとしている現場に遭遇。何とか拉致を防ぐが、男は姿を消してしまう。

www.videopass.jp

f:id:upura:20200626005233p:plain

各シーズンの動画数は次の通りでした。

df.groupby('seasons').count()['vols'].plot.bar()

f:id:upura:20200626005349p:plain

日本語の自然言語処理

日本語の文章をサクッと分かち書きして可視化するために、今回は次の2つのライブラリを利用しました。

  1. 形態素解析ライブラリ「nagisa」 https://github.com/taishi-i/nagisa
  2. 可視化ライブラリ「nlplot」 https://github.com/takapy0210/nlplot

前者は以前にブログで紹介したこともあるライブラリです。文字単位の双方向LSTMを採用しておりURLなどに頑健な点、人名などの分かち書きしたくない単語指定が手軽な点から採用を決めました。

upura.hatenablog.com

後者は自然言語処理の基本的な可視化を手軽にできるようにしたライブラリです。基本的な描画はplotlyを用いており、Notebook上でインタラクティブにグラフを操作できます。

www.takapy.work

現状のpipで入るバージョンにはWord Cloudの可視化に不具合があります。PRを出して修正済なので、当面はgithubのmasterからインストールすると良いでしょう。

github.com

可視化

それでは可視化した結果を以下に示していきます。一覧の処理は、KaggleのNotebookを公開しました。

www.kaggle.com

uni-gram

f:id:upura:20200626010244p:plain

bi-gram

f:id:upura:20200626010326p:plain

Tree Map

f:id:upura:20200626010439p:plain

Word Cloud

f:id:upura:20200626010458p:plain

Co-occurrence network

f:id:upura:20200626010719p:plain

sunburst chart

f:id:upura:20200626010756p:plain