超簡易版形態素解析

最初は辞書からランダムに会話をひっぱってきて返したり,ユーザーの発言から適当な語句を拾ってきてそれに関係しそうな会話を返すだけにしようかと思ったけど,やはりそれだとすぐにやることが終わってしまうのでつまらない.とりあえず第1段階としてrubitの文章生成にマルコフ連鎖を利用しようと思い,形態素解析のライブラリを探す.いくつか適当なのが見つかったけど,Cのプログラムをコンパイルして使うような形になっていたのでウェブ上で使いたいなあと思っていたので後回しにすることにした.とりあえず形態素解析の代用品として単純な正規表現で区切ってみた.

[一-龠]+
[ぁ-ん]+
[ァ-ヴ]+
[a-zA-Z0-9]+
[a-zA-Z0-9]+

これらのどれかに一致するような正規表現のオブジェクトを適当な会話文の文字列に対して実行する.

if 正規表現 =~ 適当な文字列

一致した最後のパターンマッチが組み込み変数$1, $2, $3 ...に入っているのでこの場合は括弧が1個しかないので$1だけ取り出して,ごにょごにょ処理をしたあとにsub!メソッドで切り取っちゃってください.そうすると一応文字列の先頭から,ひらがな,漢字,英語,みたいな感じで分割されていきます.とりあえず

こんにちは、私の名前はrubitです。
0 : こんにちは
1 : 私
2 : の
3 : 名前
4 : は
5 : rubit
6 : です

こんな感じになる.だけどこれだと「わたしのなまえはるびっとです」なんてひらがな連続で書かれるともうダメダメなんですが,このへんはあとでなんとかすることにしますw

あとはマルコフ辞書を作って適当な場所に突っ込んでいって,会話するときに相手の言葉から適当なキーワードを拾って,そこから連鎖させていけばある程度それっぽい文章が作れそう.んーだけど1行の文章はなんとかなっても,複数行の意味ある文章を作るってすごい難しい.