DeepLearningで アイドルグループの歌詞を自動生成してみる

  • 27
    いいね
  • 0
    コメント

qiita_idor_lyric_eyecatch.png

はじめに

DeepLearningで好きなアイドルグループの歌詞を自動生成してみました。
所要時間は、学習データ1万行ぐらい(文字数78815文字)で30分~1時間程かかりました。

使用ツール

OS:Windows
言語:Python2
Pythonの環境:Anaconda 4.4.0(Windows)Python 2.7 version 64bit
歌詞取得ツール:Lyrics Master 2.4.8.1
他:コマンドプロンプト

学習データの取得

Lyrics Master 2.4.8.1を使いました。
LyricsMaster.png

黄緑色で囲まれた
Lyrics Master 2.4.8.1 for Windows (ZIP)を選択
http://www.kenichimaehashi.com/lyricsmaster/

ここで好きなアイドルの歌詞を取得してきます。

ZIPで落とせたら、LyricsMaster.exeを起動します。

「ファイル」→「設定」→「保存」で以下のように設定します。
LyricsMaster_configuration.png
「保存フォルダ」は好きな所に保存して下さい。

設定を閉じて「ファイル」→「歌詞を検索」で
タイトルやアーティスト情報を入力し、入手したい歌詞を手に入れます。
取得したい歌詞を右クリック、全曲取得したいのであれば全て選択し「すべてダウンロード」をクリックします。
※曲は多めに50曲ほど取得しとくと良いです。

これで一旦、保存できます。

学習データの加工

学習データには、グループ名、作詞、作曲者の不要な情報も含まれているので
こちらを削除します。

コマンドプロンプトで保存したディレクトリまで移動し、
「bash」と打ち込みます。

bash.png
今回AKB48さんの歌詞を使ってみたので以下のようなフォルダにテキストデータを入れて
bashと打ち込んでます。

起動したら、以下のコマンドを打つ、または、コピペして貼り付け

sed -i -e "1,5d" *.txt # 不要な1~5行を消去しフォルダ内の全てのテキストファイルを上書き保存する

そのあと全てのファイルを結合したファイルを生成します。
type *.txt > c:\歌詞が入っているフォルダ/LyricMerge.txt

LyricMerge.txtは、自分がわかりやすい名前をつけてください。

Pythonの環境を構築する

すでにanaconda3を入れている方は、こちらを参照に
2系を併用できるようにしてください
[Anaconda で Python 環境をインストールする]
http://qiita.com/t2y/items/2a3eb58103e85d8064b6

まだPythonの環境(anaconda)を入れていない方は下記を参照にしてください。

以下のサイトで
https://www.continuum.io/downloads
Anaconda 4.4.0をインストールpython_anaconda.png
お使いの環境で64bitか32bitを選ぶ。

調べ方はこちらを参照
[自分のパソコンが 32 ビット版か 64 ビット版かを確認したい]
https://support.microsoft.com/ja-jp/help/958406

インストール中にadd path…というのがチェックボックスであるのでチェックしておいて
PATHを通しておきましょう。

コマンドプロンプトを拓いて「Python」と入力して、Python2.7…と表示されたらOKです。

必要なパッケージとして「Chainer」を入れます。

conda install Chainer
と入力して、パッケージをインストールします。

chainer-char-rnnをクローンする

以下のサイトに行って、今回使うchainer-char-rnnをクローンしてきます。
https://github.com/yusuketomoto/chainer-char-rnn

コマンドプロンプトで、ご自身が進めたい環境にgit cloneしてきます。

git clone https://github.com/yusuketomoto/chainer-char-rnn.git

落としてきたら、
「data」フォルダに新しくフォルダをつくります。
楽曲名でもいいですし、アーティストの名前でもいいです。

data.png
そのフォルダに作った
LyricMerge.txtを「input.txt」に名前を変更して保存します。

その後、train.pyを触ります。

さくらエディタで開くとこんな感じです。
data_dir.png

自分がLyricMerge.txtを入れたフォルダを指定します。

コマンドプロンプトを開いて、chainer-char-rnnに移動し

python train.py

と入力すると学習が始まります。

※データが少ないと上手く学習できないので10000行ぐらいは必要です。

サンプリングする

学習が終わったら、サンプリングします。

dataで自分が学習用に使ったフォルダに「vocab.bin」
cvの中に多くの「・・・chainermodel」があると思います。

これらを使ってサンプリングしていきます。
python sample.py --vocabulary ./data/akb_lyric/vocab.bin --model ./cv/latest.chainermodel --gpu -1 >c:\xampp\htdocs\log01.text

コード解説
python sample.py --vocabulary ./data/akb_lyric/vocab.bin --model ./cv/latest.chainermodel --gpu -1

vocab.binと最新のchainermodel、gpu -1を使いますと命令

c:\xampp\htdocs\log01.text`
生成した歌詞を吐き出すファイルを作成
ディレクトリやファイル名は、お好きなものを指定してください

アウトプット

一部抜粋
epoc 50

クュウウーイ あ上かって…
フ真あのは 呼吸をして
どうか 挑んで君よ
あきらめ捨てる
夢の秘ぺがしいのに…
夢を見ざなっても
誰よりは言われてしまけど…
必大力に思ったの中に知り場所さん 気命
聴いてかでかって頷す書きらな
秘密の夜 また り 走って 笑顔が手突ぎて、
僕に 逃とんだ
どのここへ 忘れた
キョーとして
踊りつくか?
その場持ち見せるやれ
歩き出意返つのさま
いんだってあなくて
君はいつも?
今日も このまいなこと
わかえ合えゃおうぜ
やり合ればもしかって
時女のそばにいる
あの頃 あの頃
願いふい星は
そこかへ
笑顔であれる
アイドルなんてタータ

epoc 100

行よ!
天思い抱きしろう
正涙 やさしい 空の魔ラスラ
片思いメヨプロのキュータピー
始滅れ!までドイピーン
僕は(料ジージーン
夏むだけことさ
偉い生目隠持たの?
君が逃げていたかった
女の子をしちゃう? ←自分的に気に入ったフレーズ
どんな輝くる道を
何に信じてないで…
このロオルリアで
もしも 全もないで
もうするんだ者にも

日本語を成していない
epoc100の方が良いフレーズが生成できたと思います。
(アイキャッチに使用しているフレーズは、epoc100で生成)
もっと学習させる必要がありますね。

注意点

2系と3系で文法が違うためエラーが出るので2系の環境構築が必要

使用しているchainer-char-rnnは、2系で動くので3系で動かそうとすると
Print文が読み込めずエラーが出ます。
なので3系しか無い方は、2系の環境を用意する必要があります。

Anacondaだと2系3系併用した環境を構築することができます。

[Anaconda で Python 環境をインストールする]
http://qiita.com/t2y/items/2a3eb58103e85d8064b6

さいごに

皆様もお気に入りのアイドルやアーティストでディープラーニングしてみて楽しんで下さい!