My plot.

イントロクイズの話とか、プログラム関係の備忘録だったり。書きたいことを気が向いたときに書きます。

おなじ話

IKMで月1くらいのペースで MyHobbyBox という企画を開かせていただいています。要するに自分が好きな曲をいっぱい出す企画なんですけど、好きな曲を出すということは曲がかぶる可能性もあるわけで、現に#1と#2は2曲くらいかぶっていたようです。

#3以降はかぶりチェックをちゃんとしているのでかぶりはおそらくないんですが、だんだん曲数が増えてきてかぶりチェックがめんどくさくなってきました。

foobar上で重複曲の削除機能はデフォルトで入っていますし、JavaScriptで実装することは難しくない気はしないでもないんですけど、JSがあんまり得意でない、という理由で曲情報を引っ張ってきてPythonで比較させようかな、みたいなことを昨晩していました。それについて書きます。

やること

  • 楽曲のデータを基に、重複を確認する。対象とする項目は以下。
    • 楽曲名
    • アーティスト名
    • 作品名
    • 作詞家
    • 作曲家
    • 編曲家
    • ジャンル
  • 項目ごとに重みを付けて、重要なデータを特に重く見る。

やった

方針

github.com

コードはこんな感じ。Pythonです。実装時間全然掛けてないので多少の雑さは勘弁。

適当に SongData オブジェクトを作って、そいつら同士で比較できるような関数を用意、CSVファイルを1つないし2つ選んだらそいつらを比較するよ、みたいな感じ。

重みはこんな感じにしました。

項目 重み
楽曲名 100
アーティスト名, 作品名 10
作詞家,作曲家,編曲家 1
ジャンル 1

アーティスト名は重み重くしても良い気がするんですけど、そうすると、グループ名とかで末尾に構成員名が入ってる入ってないみたいなところで差が出てしまった場合に大きく影響すると困るよなぁと。正直重要な因子ではあるので、なんか上手く工夫してもう少し重みを重くしたいとは思いつつ……。

楽曲名100って重すぎるかな?そんな気もする。

各項目、比較する2データで一方でも値が存在しなければ、そいつは無視するようにしてます。

結果

MyHobbyBoxの#1~7の曲を互いに比較させてみました。上位はこんな感じ(類似度50%以上)。

91.2% - "『アイドルマスター ミリオンライブ!』IM アライブファクター 如月千早 (CV.今井麻美)×最上静香 (CV.田所あずさ)" <-> "『アイドルマスターミリオンライブ!』AR アライブファクター 朝ノ瑠璃×星街すいせい"
90.7% - "『ブレンド・S』AR ぼなぺてぃーと♡S 葉加瀬冬雪, 星川サラ, リゼ・ヘルエスタ" <-> "『ブレンド・S』OP ぼなぺてぃーと♡S ブレンド・A"
82.67% - "『アイドルマスターミリオンライブ! シアターデイズ』IM RED ZONE 4 Luxury" <-> "『beatmania IIDX 11 IIDX RED』IN, 『DanceDanceRevolution SuperNOVA』IN, 『jubeat plus』IN, 『jubeat saucer』IN RED ZONE Tatsh & NAOKI"
70.9% - "『続・終物語』ED azure TrySail" <-> "『とある飛空士への恋歌』OP azurite petit milady"
66.73% - "『CHUNITHM PLUS』IN ハート・ビート 明坂芹菜(CV.新田恵海)" <-> "『上野さんは不器用』OP 閃きハートビート 伊藤美来"
64.93% - "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)" <-> "『12歳。~ちっちゃなムネのトキメキ~』OP1 Sweet Sensation 村川梨衣"
64.27% - "『ワガママハイスペックOC』OP1 Hey Darling! 松下" <-> "『ラブライブ!』IM Darling!! 西木野真姫 (Pile)"
64.07% - "『月刊少女野崎くん』AR 君じゃなきゃダメみたい SMC組" <-> "『月刊少女野崎くん』AR 君じゃなきゃダメみたい -OxT ver.- OxT"
62.82% - "『水瀬いのりMELODY FLAG』ED2 Innocent flower 水瀬いのり" <-> " innocent world Mr.Children"
60.58% - "『RIDDLE JOKER』ED あやせルート ゆびきり 霜月はるか" <-> "『彼氏彼女の事情』OP1 天使のゆびきり 福田舞"
58.05% - "『プリパラ』OP3 Realize! i☆Ris" <-> "『アイカツ!』OP1 Signalize! わか・ふうり・すなお・りすこ from STAR☆ANIS"
57.45% - "『NARUTO-ナルト- 疾風伝』OP3 ブルーバード いきものがかり" <-> "『蒼き鋼のアルペジオ-アルス・ノヴァ-』ED1 ブルー・フィールド Trident"
55.95% - "『BLOOD+』OP1 青空のナミダ 高橋瞳" <-> "『機動戦士ガンダムUC』ED 流星のナミダ CHiAKi KURiYAMA"
53.12% - "『オーガストファンBOX』OP jewelry days 榊原ゆい" <-> "『カードキャプターさくら クリアカード編』ED1 Jewelry 早見沙織"
52.55% - "『きんいろモザイク』OP Jumping!! Rhodanthe*" <-> "『ラブライブ!サンシャイン!!』OP 青空Jumping Heart Aqours"
52.49% - "タイアップなし Nurse and Singer Nyarons & ましのみ" <-> "タイアップなし dream triangle JK組"
51.45% - "タイアップなし Sunflower 堀江由衣" <-> "タイアップなし Closer 鬼頭明里"
51.42% - "『SHOW BY ROCK!!』IN Regret Breaker プラズマジカ" <-> "『バトルガールハイスクール』IM Dear Dreamer 若葉昴(CV:佐倉綾音)、天野望(CV:東山奈央)、火向井ゆり(CV:上坂すみれ)、芹沢蓮華(CV:南條愛乃)、粒咲あんこ(CV:内山夕実)、綿木ミシェル(CV:加藤英美里)"
50.93% - "『白猫テニスグランドスラム4周年オープン』TM Flash Kotone" <-> "タイアップなし Lilas 雨宮天"
50.68% - "『ラブライブ!虹ヶ咲学園スクールアイドル同好会』IN ep.12 Awakening Promise 上原歩夢(CV.大西亜玖璃)" <-> "『アイドルマスターシンデレラガールズ』IN ep.22, 『アイドルマスターシンデレラガールズ スターライトステージ』IN Trancing Pulse Triad Primus(渋谷凛(福原綾香), 神谷奈緒(松井恵理子), 北条加蓮(渕上舞)) "
50.12% - "『NARUTO-ナルト- 疾風伝』OP3 ブルーバード いきものがかり" <-> "『ふしぎの海のナディア』OP1 ブルーウォーター 森川美穂"

逆に類似度0%はこんな感じ。

0% - "『サントリークレスト12年』CM, 『サントリー角瓶』CM ウイスキーが、お好きでしょ [Live] 山崎エリイ(Gt.鷲崎健,青木佑磨, Per.内田稔)" <-> "タイアップなし yoso 早見沙織"
0% - "『サントリークレスト12年』CM, 『サントリー角瓶』CM ウイスキーが、お好きでしょ [Live] 山崎エリイ(Gt.鷲崎健,青木佑磨, Per.内田稔)" <-> "タイアップなし ショコラ 小倉唯"
0% - "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)" <-> "タイアップなし ていく・あ・ぶれいく♪ Study"
0% - "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)" <-> "タイアップなし パンプキン・ミート・パイ 麻倉もも"
0% - "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)" <-> "タイアップなし ショコラ 小倉唯"
0% - "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)" <-> "タイアップなし こきゅうとす 花澤香菜"
0% - "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)" <-> "タイアップなし ファンシー☆フリル 新谷良子"
0% - "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)" <-> "タイアップなし バレンタイン・ハンター 渕上舞"
0% - "タイアップなし クロックワイズ 駒形友梨" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなし アンチテーゼ 夏川椎菜" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなし あなたがいないと世界はこんなにつまらない miwa" <-> "一般曲 Dizzy Trickster UNISON SQUARE GARDEN"
0% - "タイアップなし あなたがいないと世界はこんなにつまらない miwa" <-> "一般曲 青春の一番札所 チャットモンチー"
0% - "タイアップなし あなたがいないと世界はこんなにつまらない miwa" <-> "一般曲 Up To You feat. 愛美 from Poppin'Party SILENT SIREN"
0% - "タイアップなし フラミンゴディスコ 渕上舞" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなし おとな人間 花澤香菜" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなし ハッピーメリーゴーランド! 大橋彩香" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなし カオティック・ラッシュ・ナイト 小松未可子" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなし 23時の春雷少女 鬼頭明里" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - " 熱帯ロマンス POP ART TOWN" <-> " innocent world Mr.Children"
0% - " French Toast Mashinomi" <-> " 熱帯ロマンス POP ART TOWN"
0% - "タイアップなし あしあと 麻倉もも" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなしAR チェリボム 相羽ういは" <-> "一般曲 つくり囃子 パスピエ"
0% - "タイアップなしAR チェリボム 相羽ういは" <-> "一般曲 hys- miwa"
0% - "タイアップなしAR チェリボム 相羽ういは" <-> "一般曲 Dizzy Trickster UNISON SQUARE GARDEN"
0% - "タイアップなしAR チェリボム 相羽ういは" <-> "一般曲 青春の一番札所 チャットモンチー"
0% - "タイアップなし シングデイズ 駒形友梨" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "TBS『はいすくーる落書』TM TRAIN-TRAIN THE BLUE HEARTS" <-> "一般曲 つくり囃子 パスピエ"
0% - "TBS『はいすくーる落書』TM TRAIN-TRAIN THE BLUE HEARTS" <-> "一般曲 青春の一番札所 チャットモンチー"
0% - "TBS『はいすくーる落書』TM TRAIN-TRAIN THE BLUE HEARTS" <-> "タイアップなし あなたがいないと世界はこんなにつまらない miwa"
0% - "タイアップなし 満月の音 花澤香菜" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなし 私だけの、革命。 ニノミヤユイ" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなし キミがいないクリスマスなんて 大橋彩香" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "ドラマ『パーフェクト・リポート』TM Rain YUI" <-> "一般曲 つくり囃子 パスピエ"
0% - "ドラマ『パーフェクト・リポート』TM Rain YUI" <-> "一般曲 hys- miwa"
0% - "ドラマ『パーフェクト・リポート』TM Rain YUI" <-> "一般曲 青春の一番札所 チャットモンチー"
0% - "ドラマ『パーフェクト・リポート』TM Rain YUI" <-> "タイアップなし あなたがいないと世界はこんなにつまらない miwa"
0% - "ドラマ『パーフェクト・リポート』TM Rain YUI" <-> "タイアップなしAR チェリボム 相羽ういは"
0% - "タイアップなし Nurse and Singer Nyarons & ましのみ" <-> "一般曲 つくり囃子 パスピエ"
0% - "タイアップなし Nurse and Singer Nyarons & ましのみ" <-> "一般曲 青春の一番札所 チャットモンチー"
0% - "タイアップなし クラクトリトルプライド 夏川椎菜" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなし 好きなものは好き! 鈴木みのり" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "タイアップなし 選手宣誓ガール 山崎はるか" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "『Google Chrome』CM Tell Your World (feat. Hatsune Miku) livetune feat. 初音ミク" <-> "タイアップなし 空奏列車 葉加瀬冬雪"
0% - "『Google Chrome』CM Tell Your World (feat. Hatsune Miku) livetune feat. 初音ミク" <-> "タイアップなしAR ダーリンダンス 星川サラ"
0% - "『Google Chrome』CM Tell Your World (feat. Hatsune Miku) livetune feat. 初音ミク" <-> "タイアップなしAR シリョクケンサ 葉加瀬冬雪"
0% - "タイアップなし 純真エチュード 小松未可子" <-> "『カンコー学生服 学生工学 Do you like you? 編』CMソング New Sensation 水樹奈々(Cho.奥井雅美, 津田和恵, koh-chan, 田中耕作)"
0% - "KDDI「au LISMO!」CM 手をたたけ NICO Touches the Walls" <-> "一般曲 つくり囃子 パスピエ"
0% - "KDDI「au LISMO!」CM 手をたたけ NICO Touches the Walls" <-> "一般曲 青春の一番札所 チャットモンチー"
0% - "タイアップなし 永遠 愛美" <-> "『サントリークレスト12年』CM, 『サントリー角瓶』CM ウイスキーが、お好きでしょ [Live] 山崎エリイ(Gt.鷲崎健,青木佑磨, Per.内田稔)"

考察

上の方を見ると、やっぱり曲名の重みが大きそうですね。まあ十分可用な範囲かな?『azure』と『azurite』が近いのとか、いい感じに結果に出ているような気がする。

下を見ると要するにカッコの中身が沢山入ってると値は低くなりやすそうですね。データ量が単純に多いので正確になるのはそれはそうか。Liveバージョンとかで余分なものがいっぱいついてると考えている以上に値が低く出てしまいそうな気がする。対策できるんだろうか……。データ数が少ないのも1文字もかぶってなかったら類似度があるはずないので、低く出ますね。これは問題ないと思う。

なんか全体的にもう少しうまくやりたいです。こういう分析については素人なので、有識者の方いい案あったら教えてもらえると嬉しいです。

本日の一曲

おなじ話 / 緑仙・葉加瀬冬雪(原曲はハンバート・ハンバート

安心のコンビでの、安心させるようなテンポの曲。とてもほっこりします。葉加瀬×緑はもっとやってほしいですね。 昨日2/19は葉加瀬冬雪さんバースデーです。おめでとうございます。

www.youtube.com