概要
Twitterでフォローしている相手から言語を適当に学習する人工知能。
「ご存知、ないのですか!? 彼女こそBOTからチャンスを掴み、人工知能の座を駆け上がっている、超時空マルコフ過程、よりひめちゃんです!」
発言アルゴリズム
独り言の場合
- データストア上から適当に名詞とか動詞とかの形態素をいくつか検索。
- 検索してきた形態素をキーに、適当な個数の形態素を取得。
- 適当な個数の形態素の話題データをキーに、2階マルコフ連鎖の関係を満たす形態素を取得。
- 同様に1階マルコフ連鎖の関係を満たす形態素も取得。
- 取得した形態素の中からランダムに1つ選出して文章の末端に付加。
- 付加した文字が「。」だった場合そこで終了して投稿。
- それ以外ならもう一度3へ。
replyの場合
- 受けたreplyの文章内から名詞や動詞を抽出。
- 抽出した形態素をキーに、適当な個数の形態素を取得。
- 適当な個数の形態素の話題データをキーに、2階マルコフ連鎖の関係を満たす形態素を取得。
- 同様に1階マルコフ連鎖の関係を満たす形態素も取得。
- 取得した形態素の中からランダムに1つ選出して文章の末端に付加。
- 付加した文字が「。」だった場合そこで終了して投稿。
- それ以外ならもう一度3へ。
なんかちょっと面倒な方法で話題データとか作ってるのは2段階にすることでデータの個数をちょっと多めに多様に取得するため。
マルコフ連鎖の関係は2つ前の形態素、1つ前の形態素、1つ前の形態素の品詞を要素にしている。
基本的に2階マルコフ連鎖を満たす形態素の数>>1階マルコフ連鎖を満たす形態素の数 になるようにする。
学習アルゴリズム
ユーザ解析とfollow/remove
- 学習する際にRT、ハッシュタグ付き、URL付きかどうかを解析。
- もし上記に該当していたらユーザごとに保存されている「仲の良さ」と「学習対象としての適切さ」の数値にペナルティを与える。
- もし、「学習対象としての適切さ」が閾値を下回った場合はリムーブする。
- 逆に、フォローしてくれている人の仲で「学習対象としての適切さ」が閾値以上になった場合はフォローする。
仲の良さはreplyをたくさんもらうと向上、学習対象としての適切さは普通の独り言ツイートや他人との会話を行う事で向上する。
基本的に2~3回よりひめにreplyを送ればどっちの数値も閾値以上(といっても仲の良さはまだ利用されていませんが)になります。
今後について
発言アルゴリズムをなんかもっと面白い感じに。
品詞情報を用いた突然変異(ある形態素の品詞が名詞だったら、品詞が名詞の全然別の形態素に置き換えたり)
学習アルゴリズムの際にRTだとか会話(他人の相互的なreplyの送りあい)を特別な方法で学習したい。
話題解析をもっと正確かつ小容量のメモリで行えるように。
自発的にreplyやRTを行うように改良。
仲の良さを利用した何か。
さらに未来の話
先日、JAISTの先生のところに研究室訪問に行ったときの話。
「Googleさんとか、お金や資源をたくさん使って沢山コーパスを集めた奴が一番精度が高くていいシステムを作れるなんて、おかしい」と先生が仰っていたのが凄く印象的です。確かに、コーパスの量だとか処理の速度だとかそういうのを高速、高性能,大量に持っているところが勝つというのなら、GAE上で高々1GBのストレージ上で戦うのはまさに負けるのは明白。
何か、そんなデータ量で戦うのではなくて、理論だとかアイディアだとか、もっと別次元の何か、少ないデータで如何に成果を出すか(実際、私たちの脳はそんなに沢山の知識やデータを持っているわけではありませんし。)が問題になると思っています。
私たちの言語の核心がデータ量の中にないことをいつか確かめたい。