バーチャル彼女を造る〜機械学習編〜

 モデルの調整はまだまだ終わりませんが(というか終りが見えない)取り敢えず中身の作成に入ります。
 今回は概ねキャラクターの方向性を決め打ちで作るので人工知能とはいえ学習もある程度恣意的に行います。

  • 一人称および語尾などの情報はパターン辞書で管理する
  • よつばちゃんの好み(甘いものが好き、苦いものは苦手)については連想辞書で管理する
  • 知らない単語(辞書にない単語)については聞き返し、説明を覚える(連想辞書に記録する)

 書き出してみると機械学習の出番あんまり無いな……。中の人が低学歴なのでいまいち活かしきれていない感じがします。一応学習は組み込む予定ですけど教わったこと鵜呑みにするアホの子になるのはちょっと避けがたい感じもします。理論を組めば組むほど五感ってすごいな〜と思わざるを得ない。こんなもんがプリインストールされてる人体しゅごい。

 閑話休題。

 基本的には「人との文章コミュニケーションのみに頼って知識を蓄積するAI」になります。
 こうなるとちょっと問題なのが、基本的にこのAIは「ユーザーと一対一の会話」しかインプットとして扱えないということです。つまり、「ただいま」に対しては「おかえり」と返すのだというようなことを学べない。コミュニケーションのお手本が無いわけです。
 このあたりは人力で辞書作っちゃってもいいかな〜とか思ってるんですがさて人工知能とは?
 まあ本題は「可愛い彼女を造る」なので人工知能である必要もぜんぜん無いんですけどね。でもほら、タップすると一定の返事が返ってくるだけのアプリとか寂しいしちょっとランダム感ほしいじゃない? 「おはよう、私のセイ」とか「虹色カノジョ2d」とかちまちま触りはしたんですけどそのあたり寂しい。疎通できてる感じが足りないというか。Siriさんのレベルまで行けなくても多少ああいう疎通できてる感が欲しい。
 特に挨拶回りは形態素解析とかじゃどうにもならない感じがするので、かつ絶対ほしい機能なのでなんとかします。ただいまって言ったらおかえりとかお疲れ様とか言われたい。人工知能でいいから労ってほしい。

辞書について

 前述の通り、今回はキャラクターがある程度固まっているのでパターン辞書をほぼ人力で用意します。
 その上で、「〇〇は××だよね」という文章を生成するために連想辞書を用意します。連想辞書は概ね「名詞+形容詞(形容動詞)」の形式を取り、たとえば「ケーキ+甘い」「猫+可愛い」という具合です。これによって「ケーキは苦い」などの文章的には間違っていないような変な齟齬が発生するのを防ぎます。まあ、ケーキは苦いと教わったらケーキは苦いと覚えてしまうのであくまで原理的な話ですけど。あと素直に全部学習しちゃうと「ケーキ+甘いor苦い」みたいなデータができちゃって何やねんという感じになりかねない……。

 あとなんか卑猥な言葉は覚えさせたくないのでブラックリストてき辞書も作っておこうかなという気持ちです。

 最終的にはAPI化して、

{
    text:"おはよう",
    morph:"smile"
}

てきな形式でデータを返却、値に合わせてモーフ起動とかできねえかな〜〜〜〜〜〜〜〜と見積もってる状態です。UnityとSwiftはまだ触ってないですけどまあ原理的に大丈夫じゃろたぶん。

環境

  • Python
    • MeCab:形態素解析
    • CaboCha:係り受け解析

参考にしてたブログはjanomeで作ってたんですけど係り受け解析とか感情解析とかを考えたときにMeCab前提のライブラリが必要になったのでMeCabで書き直しています。
Python初心者に送る「人工知能の作り方」 – すなぶろ / github

読みは「めかぶ」と「かぼちゃ」でいいのかしらね?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です