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

「atmaCup#5 振り返り会」で「MLflow Tracking を用いた実験管理」について発表しました

昨日開催された「atmaCup#5 振り返り会」*1で「MLflow Tracking を用いた実験管理」について発表しました。本記事にリンク集を掲載します。

発表資料

コンペで使用していたGitHubリポジトリ

https://github.com/upura/atma-comp05

自作ライブラリ「Ayniy」のGitHubリポジトリ

github.com

自作ライブラリ「Ayniy」のドキュメント

upura.github.io

発表再現動画

コンペ参加録

upura.hatenablog.com

人工知能学会2020@熊本のご飯まとめ

2020年度 人工知能学会全国大会 (第34回)に参加してきました。 昨年度と同様、現地で満喫したご飯をまとめます。

upura.hatenablog.com

おわりに

本年度はオンライン開催だったので、熊本料理を満喫する野望は叶いませんでした。(コロナが落ち着いたら必ず・・・)

オンラインでの学会参加は初めてでしたが、運営・座長・発表者らの皆さまのご尽力のおかげで、快適な参加体験でした。学会参加の魅力の一つである参加者同士の交流がほとんどできなかったのは、仕方ないですが残念なところです。 2021年度の人工知能学会全国大会は仙台で開催されると発表されました。来年度は、できれば現地で参戦したいなと思っています。

「atmaCup オンサイトデータコンペ#5」参加録 #atmaCup

「atmaCup オンサイトデータコンペ#5」*1に参加し、public 16位・private 27位*2でした。観測データを基にした2値分類タスクで、指標はPR-AUC*3でした。

途中から K_mat さん*4 とチームマージし、テーブルデータに対するニューラルネットワーク周りなど、大いに勉強になるコンペでした。

最後に選んだ2サブの概要を以下にまとめておきます。

Submission 1: Trust LB (public: 0.9137, private: 0.8595)

f:id:upura:20200606192258p:plain

Submission 2: Trust CV (public: 0.8687, private: 0.7691)

f:id:upura:20200606194716p:plain

Nishika「財務・非財務情報を活用した株主価値予測」コンペ2位でした

Nishikaで開催されていた「財務・非財務情報を活用した株主価値予測」コンペ*1で、2位になりました。

f:id:upura:20200528191049p:plain

オープンデータのコンペなので、pipelineを整備しながら、のんびりと取り組みました。最終的にはLightGBMとCatBoostで3種類の予測値(public 19位, 19位, 36位相当)を作り、Netflix blending*2で、public 2位、private 3位になりました。その後の最終成果物の確認で1位だった方が辞退したため、2位で順位確定しました。

ソースコードGitHub*3で公開しています。

第85回R勉強会@東京 #TokyoR にて "R言語で「言語処理100本ノック 2020」" の題目で発表しました

第85回R勉強会@東京 #TokyoR にて、LT発表しました。2019年1月開催の第75回以来*1、久々の参加でした。

tokyor.connpass.com

発表の題目は "R言語で「言語処理100本ノック 2020」" で、4月に取り組んでいた「言語処理100本ノック 2020」の紹介*2R言語でのデモという内容でした。

発表資料

デモ用のKaggle Notebook

www.kaggle.com

YouTube動画

発表の様子を再現したYouTube動画も公開しています。

Jupyter Notebook の CSS 要素を編集する

Jupyter Notebook の CSS 要素を編集する方法に関するTipsです。IPython.core.displayを用いて、次のようにCSS要素を編集できます。

from IPython.core.display import display, HTML
display(HTML("<style>.cm-s-ipython span.cm-comment { color: red; }</style>"))

CSSを当てるClass名については、ブラウザの開発者ツールなどで確認できます。

f:id:upura:20200516005241p:plain

Kaggle Notebook も公開しています。編集ページと公開ページでClass名が異なるので、公開ページでは色が編集されていません。

www.kaggle.com

公開ページでも色を変えたい場合は、公開ページのClass名の要素を変更する次のコードを実行しておくと良いでしょう。

display(HTML("<style>.highlight .c1 { color: red; }</style>"))

www.kaggle.com