MacにてText::MeCabを使う - すぎゃーんメモで下準備を終えた。
何がしたかったかというとこれ。
まずはこんなスクリプトを書いてみた。
#!/opt/local/bin/perl use strict; use warnings; use Text::MeCab; my $mecab = Text::MeCab->new(); my $n = $mecab->parse($ARGV[0]); my @nodes = (); # 分かち書きしたものを一つの配列に入れる my @noun = (); # 名詞を検出した番号を格納する my $index = 0; while ($n = $n->next) { push(@nodes, $n->prev->surface); if ((split(/,/, $n->prev->feature))[0] eq '名詞') { push(@noun, $index); } $index++; } # 名詞からランダムに一つ選び出して置換する my $replace = $noun[rand @noun]; $nodes[$replace] = 'kazuho'; print @nodes, "\n";
あとは適当な歌詞を拝借して引数に渡してやるだけ。
$ ./kazuho.pl "空と君とのあいだには今日も冷たい雨が降る" 空と君とのあいだには今日も冷たいkazuhoが降る $ ./kazuho.pl "空と君とのあいだには今日も冷たい雨が降る" kazuhoと君とのあいだには今日も冷たい雨が降る $ ./kazuho.pl "空と君とのあいだには今日も冷たい雨が降る" 空と君とのあいだにはkazuhoも冷たい雨が降る $ ./kazuho.pl "まわるまわるよ 時代はまわる 喜び悲しみくり返し" まわるまわるよ時代はまわる喜びkazuhoくり返し $ ./kazuho.pl "まわるまわるよ 時代はまわる 喜び悲しみくり返し" まわるまわるよ時代はまわるkazuho悲しみくり返し $ ./kazuho.pl "まわるまわるよ 時代はまわる 喜び悲しみくり返し" まわるまわるよkazuhoはまわる喜び悲しみくり返し $ ./kazuho.pl "悪女になるなら 月夜はおよしよ 素直になりすぎる" kazuhoになるなら月夜はおよしよ素直になりすぎる $ ./kazuho.pl "悪女になるなら 月夜はおよしよ 素直になりすぎる" 悪女になるならkazuhoはおよしよ素直になりすぎる $ ./kazuho.pl "悪女になるなら 月夜はおよしよ 素直になりすぎる" 悪女になるなら月夜はおよしよkazuhoになりすぎる
うん、出来たっぽいw
あとはそれをWassrに送信できればよいので。
#!/opt/local/bin/perl use strict; use warnings; use LWP::UserAgent; use Text::MeCab; my $mecab = Text::MeCab->new(); my $n = $mecab->parse($ARGV[0]); my @nodes = (); # 分かち書きしたものを一つの配列に入れる my @noun = (); # 名詞を検出した番号を格納する my $index = 0; while ($n = $n->next) { push(@nodes, $n->prev->surface); if ((split(/,/, $n->prev->feature))[0] eq '名詞') { push(@noun, $index); } $index++; } # 名詞からランダムに一つ選び出して置換する my $replace = $noun[rand @noun]; $nodes[$replace] = 'kazuho'; print @nodes, "\n"; # Wassrのユーザー情報変更APIにPOSTする my ($username, $password) = ('YOUR USER NAME', '**********'); my $url = 'http://api.wassr.jp/user/edit.json'; my $ua = LWP::UserAgent->new; $ua->credentials( 'api.wassr.jp:80', 'API Authentication', $username, $password, ); $ua->post($url, { nick => join('', @nodes) });
これで完成!
自前で歌詞の辞書でも用意して、それを引数にとるようにしてcronで1時間ごとに実行したりしたら面白いかも!?