/JpopTextMining

J-POPの歌詞をテキストマイニングして、ワードクラウドを作成する

Primary LanguagePython

About

  1. アーティストの歌詞を抽出して、(実装済み)
  2. それを元にWordcloudを作るスクリプト(2017/06/01実装中)

これを作るに至った経緯

Jpopってどいつもこいつも、瞳を閉じて、翼生やして、ナンバーワンよりオンリーワンって言ってやがる!青臭くて中二病で最高じゃねーか!

っていう言説が主に自分の中にあったので、「本当に青臭いのかどうか」を客観的に視覚的に表すツールを作れないかということで作りました。

環境

実行方法

scrapephantom.py

if __name__ == '__main__':
    artist_name = "スガシカオ"
    main(artist_name)
    wordcloud.main(artist_name)

artist_nameを任意のアーティスト名に変えて、

python scrapephantom.py

を実行。minedLyricsに出力がある。 この内容をワードクラウドを作成するWebアプリなり、モジュールにぶち込む。

あとは、結果を見て、「aikoっぽいわー、ミスチルっぽいわー」と言って楽しむ。

作るまでの道のり

このスクリプトを作ったということは、 要はテキストマイニングするためのデータ集めに奔走したということになる。

どのようなアルゴリズム、設計で作るか、そのために

  • 出力を決め、そこから逆算する。
    • 出力:ワードクラウド.png→
    • (ワードクラウドを生成する機能+)歌詞を入れたテキストファイルがいる。→
    • 歌詞をどこからか抽出して、それを結合させる必要がある→
    • 歌詞を抽出できるサイトを探し、構造を見る

といったことが必要になる。↑をさらに分解し、関数を作っていき、それらをテストし、結合させるといった手順を踏む必要があるが、これが意外と難しい。

  • pythonの基礎文法を当然として、
  • 歌詞を抽出できるサイトを見つけるのがそもそも難しい。
    • 運と根気とShift + 右クリック という裏技の知識がいる。
  • URLに変数(クエリー)与えてアクセスすると、任意のページにアクセスできるという知識がいる
  • スクレイピング、bs4、という単語を知ってる必要がある。
  • HTMLソースがjsで生成されてたりすると、bs4では抽出できないという知識。
    • phantom.jsというモジュールと組み合わせればイケるという知識。

と言った知識がいる。もっとも、

  • Pythonの文法含めて、足りない知識をどうにかしてググって探すググり力。 があればどうにかなる。このスクリプトを作るためにググった回数はおそらく30回を超える。

逆に言えば、単語さえ思いつければどうにかなる。

そんなことをうだうだ考えた制作過程であった。