ボット開発プラットフォーム「API.AI」で日本語ボットをむりやり機械学習させてみた

API.AI
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

このところずーっとボット開発に没頭しております。ボットだけに。(ぶたないで欲しい >_<)

TensorFlowなどにも手を出しつつ、自然言語処理って英語に比べて日本語はホントにやっかいだなあとか思いつつ。言語学習のモデルを作るところまでは、さすがに手を動かすマーケターとしても範疇外だなぁと思いつつ、既存のAPIでできることでは満足できない状態で悶々としておりましたが、API.AIで自分なりにやりたい事は何とかできそうです。

API.AIは2016年9月にGoogleが買収した自然言語対話プラットフォームです。10数か国語に対応するAPI.AIは、買収前後で日本語にも対応はしています。実際にボットの単位となる「エージェント」を作成する際、対応言語として日本語を選択できます。ただし、対話データの評価(対話結果の評価)やルールベースの部分一致などまではまだ対応していない模様。なので、たくさんのルールを自分で設定していかないと、今の段階ではとてもじゃないけど作り込みが大変そう。

そこで試してみたのが「英語のボットで日本語使ったら挙動はどうなるのか?」ということ。言語としては英語を選択しつつ、ルールの学習には日本語を使う、という感じ。

結論から言うと、うまくいきました。(∩´∀`)∩

英語と日本語の一番の違いと言えば、「分かち書き」と呼ばれような、単語どおしを半角スペースでつないでいるかどうか?というところ。ユーザーが投稿した文章をmecabなどで分かち書きをしてあげた上でAPI.AIに渡してあげれば、部分一致的に対話ができました。下は、投稿内容を分かち書きにしつつ、それに対応する返答をしているの図。会話になっていないのは学習ルールとずれているから。

もちろんここから、対話履歴からのトレーニングでばっちり学習できました。学習させたいルールと併せて、どの単語がどのEntitiesに該当するかも選択OKできます。

これなら、日本語でも機械学習させながらのボット運用もラクラクですね。

まぁ英語版のトレーニング機能もベータ版のようですし、日本語対応も今後されるようであれば、そんなに無理してこの状態で使うこともないんですけどね。分かち書きするためのコードも書かないといけないし。

ただまぁWatsonのNatural Language Classifierとかと比べて、ある程度機械学習っぽいことを無料でできるのは嬉しいしという事で。いろいろ使い込んでみようと思います!

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone