ゆとりエンジニアの備忘録

音楽とITとすこしのゆとりの中で気づいたことについて

Excel VBAで対象アーティストの歌詞から頻出ワードを集計するツールを作ってみた件

こんにちは。

今回は前からやってみたかった好きなアーティストの頻出ワードを集計するツールを作成して動かしてみました。

まだソースぐちゃぐちゃなので、動かしてみた結果と使用感だけレビューしたいと思います。

はじめに

歌詞集計ツールといえば、Yahoo!が出している、下記の「Aritst Clustering」があることは知ってましたが、

docs.yahoo.co.jp

自分の好きなアーティストが掲載されていないし、なんか統計の根拠がわかりづらかったので、

自分で集計できるツールを作りたいなと前々から思ってようやく、この間の休みを使って書いてみました。

私のスキルレベルについて

VBAエキスパート スタンダードクラウン 取得 ※試験程度のコードなら書ける程度。。

f:id:tutttuwi:20170130184242p:plain

「歌詞集計ツール」ツール仕様について

  • 好きなアーティストの歌詞を単語ごとに分析するためのものです。
  • 単語解析はMicrosoft Wordで提供されているもの
  • とりあえず先頭日本語文字の単語にしか対応しないことにしました
  • 上位30個をグラフにして確認できるようにしました
  • 歌詞取得先はJ-Lyricのアーティストページトップ想定
  • 集計の際に記号などの不要な文字列を結果から省くための仕組みはソースにべた書き中。。。

今回、歌詞情報の取得先は「J-Lyric」を使用します。

http://j-lyric.net/

画面イメージ/概要

シート「表紙」

・処理実行ボタンを配置

・集計したい該当アーティストのページをJ-Lyricで検索し、

 設定値のURLに貼り付け

・集計処理は結構時間がかかるので、

 「歌詞集計」「単語分割」「統計取得」と処理を分けている

・歌詞集計:IEオブジェクトを使用して歌詞を一覧シートに取得するまで

・単語分割:一覧シートに取得された歌詞をWordオブジェクトを使用して単語に分割する

・統計取得:単語分割した歌詞を元に統計シートに統計を取得して、

 グラフで可視化する

f:id:tutttuwi:20170130171406p:plain:w400

シート「一覧」

・歌詞/単語をストックするためのシート

f:id:tutttuwi:20170130171437p:plain:w400

シート「統計」

・歌詞/単語の集計結果を出力するためのシート

f:id:tutttuwi:20170130171509p:plain:w400

集計処理中…

f:id:tutttuwi:20170130172441p:plain:w400

性能検証

Yahoo!で提供されている「Aritst Clustering」の情報と本ツールで取得した情報に

大きな差異がないかどうかを検証してみました!!

対象アーティストは「スキマスイッチ」です*

「Aritst Clustering」結果

f:id:tutttuwi:20170130172916p:plain:w400

ランキング形式ではないですが下記が頻出ワードとのこと

  • 未来
  • 僕ら
  • 思う
  • 言葉
  • 僕ら
  • 幸せだ

「歌詞集計ツール」結果

f:id:tutttuwi:20170130173140p:plain:w400

f:id:tutttuwi:20170130173203p:plain:w400

f:id:tutttuwi:20170130173225p:plain:w400

ランキング形式で下記を取得!!

  • 1位 :君
  • 2位 :僕
  • 3位 :何
  • 4位 :中
  • 5位 :手
  • 6位 :今
  • 7位 :時
  • 8位 :僕ら
  • 9位 :空
  • 10位:目

ほとんどあってますね!!これはいけてる!

娯楽程度のいいものが作れたんじゃないかなと思います。

まとめ

歌詞集計ツールはやろうと思えば作れちゃうみたいですね。

もともと作詞をするに当たって自分の好きなアーティストがどんな言葉を頻繁に使っているのかを知りた買ったっていうのもあります。

ただ、ツールで日本語を分割すると、決定的な歌詞の言い回しとかを分析できるようなものはやっぱりなかなか難しいなと感じました。

好きなアーティストの好きな言葉をってこんな感じなんだな程度で満足です。

同じようなツールを作ろうと思ったことがある方がいらっしゃいましたら、

是非!ご意見をお聞きしたいです。

今回はソースがぐちゃぐちゃなので、掲載しませんが、いつか整理できたら記載したいなと思います。