Home > 2007年12月27日

2007年12月27日

作詞スル - 歌詞自動生成アプリ - を作った

[長文注意]

前々から人口無能とかに興味はあったんだけど、
+最近流行りの圧縮新聞に触発されて
僕もJavaScriptでAIっていうかボットなサイトを作ってみた↓

作詞スル

はいはい、ネーミングセンス0ですよ、わかってますよ。
その名の通り、歌詞っぽい文字列を生成します。

作った歌詞を並べたらこんなんできました。
人口無能のシュールさ全快です!?

VOCALOID2:初音ミクとかのお供にどうですか?
(実は昨日初めて聞いた、そのためにニコニコにも今さら(!)入ったり。思ったよりぽくてびっくり。すげーな、YAMAHA…だよなエンジン作ってるの。)

[使い方]

は、ロゴをクリックするだけの、ワンクリックアプリケーション(?)です。
あと、下の方に隠し(てないけど)メニューがあって、「タグにする」ボタンで歌詞のHTMLを表示できます。
他のメニューは、correct.jsサンプルの時と同じくドーピング用で、他のテキストを読ませたりできます。
(重いのとかヤパイのは読み込ませないでくださいね。)

[仕組み]

ソースを見てください…じゃああんまりなので、ちょっと説明します。
他のサイトでも良く使われてる形態素解析+マルコフ連鎖です、たぶん。
あんま理解できてないです、マルコフ連鎖 - Wikipedia(2007年12月27日 21:45:14)見て泣きそうになりました。
要は、文をバラバラに区切って、隣接する確率によって繋げていくっていう単純明快アルゴリズムです。(言い切った!)
サイトにもある通り、解析の正規表現は形態素解析もどきを改良してみた - エブログで紹介されてる方法をほぼそのままパクりました。

※ N-gramもちょっと試してみたら面白そうだったけど…いかんせん重いんです!

そして、Alice's Adventures in Wonderland: Japaneseから拝借した、不思議の国のアリスのテキストを読ませて(重いので1~6、7~12章で分けてランダムでどちらか)、そこから歌詞っぽいデータを作ってるわけです。
元がクリエイティブ・コモンズ(表示-継承)だから、機械的に作ったのもCCになる・・・のかなぁ?
もちろん、他のテキストだけを読み込んだ場合は関係ないけど。

以上、説明でした。

※ 今回は、ちゃんとOOPで作ろうと頑張った
 …んだけどだんだん飽きてきて、HTMLを作るころにはもう適当2。
 その場しのぎの応急処置を多発してしまう悪い癖が。
 (結果ソースは僕以外が見ると意味不明な記述だらけに;)
 それでもわりとおもしろいものができたんじゃないかと、自画自賛しなくちゃやってらんない!

ちなみに、これは自分の中で正式サービスと勝手に位置付けてるので、いつものゴミ箱じゃなく、サブドメイン(lyrics)を与えてみました。(のわりにはHTML&css適当すぎとか言わないで…)

[参考]

はじめてのAIプログラミング―C言語で作る人工知能と人工無能
この本がきっかけで、人口無能を面白いと思うようになった。
だいぶ前に読んだんだけど、今回改めて読み直した。やっぱ人口無能の会話は笑っちゃう。
ただ、最近LLっていうかJSばっかやってるからCを読むのがつらかった。本質じゃない文字列処理とかにてこずっちゃってもう…。

PR

ウィキペディアを引用するときは日付を入れよう、なブックマークレット

ちょっと自分用に作ったので一応公開。

copipedia?

wikipediaの情報はすぐ変わるので引用するときは日付をつけるべきだと思う。
そうすれば、その人がいつの情報を見たのかがすぐわかるので、履歴からすぐに辿り着ける。

まぁ普通は記事を書いた日なんだろうけど、僕みたいに下書きだけ書いて放置する人だとその間にwikipediaの情報が変わっちゃうことがあるので。
(前に、英語版のブックマークレットの内容が大幅に削除されててびっくりした。作り方がなくなってた。wikipediaはチュートリアルじゃねぇよ、らしい。ユーザにとって便利ならいいんだと思うけど…そうもいかないんだろうなぁ。)

[サンプル]

こんなリンクができます。
クリエイティブ・コモンズ - Wikipedia(2007年12月27日 18:01:59)

ちなみに、どのサイトで使ってもこの形式のリンクになります。
ホントは、リンク作成bookmarkletに追加したかったんだけど、面倒かったのでとりあえず単体で。

どうせwikipediaは、誰にとっても外部サイトだし。

Home > 2007年12月27日

Search
Loading
Feeds
Links
スポンサードリンク

Page Top