昨日に引き続き、25日間完走するための穴埋めです。察してください。
手軽に作れつつ、実際に役に立つものを何か作ってみようと思って、完全に俺得なのですが**「twitterでよくつぶやかれているさだまさしの曲」**を集めてみました。
動機
個人的な話なのですが、500曲以上曲を聴き続けているとどうしても趣味が偏ってしまい、自分が好きな曲と、世間的に知名度がある曲とのギャップが生まれてしまいます。
なので意外と、もしかしたらコアなファンあるあるかもしれませんが、「世間で受け入れられているさだまさしの曲」が分からなかったりします。
知人に尋ねてみても、**「さだまさしの曲?知ってる知ってる、「神田川」でしょ」**といった、憤怒のあまり卒倒してしまいそうな回答しか得られません。
なので、みんなだいすき twitter で、民意(?)を集めてみることにしました。
デモサイト
https://sadatech.herokuapp.com/youtube
twitter で YouTube の URL とともに紹介されているさだまさしの歌を集めて、一応その場で動画を見れるようにしています。
左側の一覧は収集できた曲一覧で、バッジの数字はその曲についてつぶやいている人の数です。
データベースなどは用意せず、ページがリクエストされた度に twitter API を叩きにいっているゆとり設計です。
そして bot 判定は一応しているのですが、面倒なので一律で扱っています。
どんな曲が多いか
時期的な影響も多少ありそうですが、概ね以下のような曲がつぶやかれる回数が多いようです。
- 関白宣言
- 主人公
- 遙かなるクリスマス
- 案山子
- 償い
- ...
「関白宣言」は言わずもがなですね。セールス的に最大のヒット曲です。
「主人公」は TV 番組の主題歌でもなく一般には知名度は低そうに思えますが、長年ファンの人気投票で1位を取り続けている、知る人ぞ知る名曲です。
「遙かなるクリスマス」もシングルカットもされてない曲ですが、紅白歌合戦で歌われた事もきっかけで多く人に認知された曲ですね。「クリスマス」という単語に似つかわしくない、さだまさしには珍しい情熱的で直情的な思いがぶつけられている曲です。
今が12月でクリスマスシーズンであるということも、この曲が多い理由のひとつでしょうね。
「案山子」も長年語り継がれている名曲です。「かかし」と読めない人も世代的には増えているのでしょうか...
「償い」もシングルカットされてないですが、とある裁判官の振る舞いがきっかけで、世の中の多くのシーン(特に運転免許取得時など)で耳にする事が多くなった曲です。
と、特にオチも無いのですが、取り上げられる事が多い曲が「世間で受け入れられている曲なんだな...」と、ひとり納得をしています。
そして、僕が結構好きな「8つ目の青春」などのようなマイナーでファンからも忘れられていそうな曲は、なかなかつぶやかれる機会も無いようです。
実装
こちらも昨日同様、実装としてはあまり大した事はしていません。
同一曲の同定の部分で、若干の自然言語処理的な処理を行っています。
twitter search API
前日同様、情報ソースとして、twitter search API を使用して情報を取得します。
クエリーは "さだまさし" "youtube"
つぶやきから歌のタイトル情報の取得
あらかじめ、さだまさしの歌のタイトル一覧を辞書として用意し、それを元に trie 木を作ります。
そして、抽出したつぶやき文字列を先頭位置から終端までカーソル移動していき、common prefix search でマッチした文字列をタイトル候補として抽出します。
誤判定との戦い
しかし、いろいろ課題があり、たとえばさだまさしには「51」というタイトルの曲があり、ナイーブにやりすぎると数字の羅列をタイトルと誤認してしまいます(20151217など)
なので、つぶやき文字列を kuromoji
などで形態素解析し、カーソルを1文字単位ではなく形態素単位で移動していくことで、先に述べたような単純な数字の羅列を誤認するようなことは減らせます。
それでも、やはりどうしても誤判定は無くせてません。たとえば「長崎から」という曲があるのですが、同名の「長崎から」という名前の野外コンサートをさだまさし氏は20年以上実施しており、多くの動画が YouTube にも存在します。こうなると、文字列だけでは曲の名前なのか、コンサートの名前なのか、判別できないケースが発生しやすくなります。
あと、「関白宣言」を「亭主関白の歌」と書いているつぶやきが非常に多い......これはリアルで話していてもよく遭遇するケースではあります。
この辺の名寄せ的な作業はやろうと思えば対応できそうですが、あまり細かくやり過ぎても辛いので、取り敢えず今回はゆとりな感じで対応しています。
次回
穴埋めのため軽め目の記事で寄り道をしましたが、次回は、一応完成版の**「さだロボ」**の話を書きます。