ブログ

ボットエンジン(自然言語)の選択に迷っている方向け、比較と活用のまとめ。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

ボットエンジンがたくさんあって、どれを選んだらいいかわからない!そんな方向けの記事です。

まずは、Techジャイアント御三家の比較。日本語訳です。※1

Wit.ai Api.ai Luis.ai
料金・制限 Wit.ai APIは完全に無料で、リクエストに制限はありません api.aiには有料のエンタープライズオプションがあり、これをプライベートクラウド上で内部的に、さらにサービスチームから実行することができます。基本的な有料版は月額89USDから始まります。無料アカウントには月間のトランザクション制限はありません。 LUISはベータ版で、毎月10K件のトランザクションと各アカウントに対して毎秒5件のリクエストを無料で利用できます。
提供機能 開発者向けの音声認識と機械学習の両方の優れた組み合わせを提供します。 テキストから音声へのスピーチ機能、機械学習機能 LUISは機械学習ベースの方法を使用して文章を分析します。機械学習を行うために、LUISは発声を「トークン」に分解する。
サポート インテントとエンティティの2つの主な要素がアプリ内に設定されています。アクションは、結合された操作として使用するために分離されています。 インテント、エンティティ、アクション、および1つの重要なフォーカス領域のサポートは、その「ドメイン」です。 インテント、エンティティおよびアクションをサポートします。
ビルド前エンティティ 温度、番号、URL、電子メール、期間などの事前ビルドエンティティを持っています。 @ sys.date、@ sys-color、@ sys.unit-currency …などのビルド前のエンティティを持っています。 ビルド前のエンティティにbuiltin.intent.alarm、builtin.intent.calendar、builtin.intent.email …などがあります。
統合モジュールの提供 Facebookのメッセンジャーや他のメッセンジャーAPIと直接通信するための統合モジュールはありません。サービスをフックするWebサービスAPIを持っています。 Facerbookメッセンジャーや他のメッセンジャーAPIに直接接続するための統合モジュールを備えています。 herokuサーバー、エンタープライズ有料環境への展開をサポートしています。 Microsoft Azureと他のサービスとの統合は、サポートされているすべてのサーバーに展開できます。
沿革 2015年の初めにFacebookに加わり、プラットフォーム全体を公開してプライベートインスタンスの両方で無料にしました。 主要なモバイルプラットフォーム用のパーソナルアシスタントアプリケーションを作成したチームによって作成されました。Googleによって買収されました。(2016年9月) LUISは、Skype Botsの作成に使用できるMicrosoft Bot FrameworkとSkype Developer Platformと共に導入されました。
SDK iOS、Android、Node.js、Rasberry Pi、Ruby、Python、C、Rust、Windows Phoneの開発者向けのWit.ai API。フロントエンド開発者向けのJavascriptプラグインもあります。 API.aiには、Android、iOS、Apple Watch、Node.js、Cordova、Unity、C#、Xamarin、Windows Phone、Python、JavascriptのSDKがあります。また、AmazonのEchoやMicrosoftのCortanaと統合することもできます。 LUISは、LUIS Webインターフェイスを使用してアプリケーションを構築することができます。アプリケーションで返されたJSONを解釈して使用する機能以外にコーディングする必要はありません。アプリケーションの自動化にLUIS REST APIを使用することもできます。

Amazon Lexは、現在プレビュー版なのでレポートはまた後日。

こうした自然言語処理を主に行うボットエンジンには、主な用途別に「FAQ」タイプと「雑談」タイプに分けられそうです。

FAQタイプ

ユーザの意図(intent)を解析して、カテゴリ(entities)で処理を分ける。よくあるQuestionにAnswerを返すような問題解決の用途に向く。上の表の3つは全部これですね。

雑談タイプ(3種類)

FAQタイプは雑談をつくるのには向いてません。(やってやれないことはないと思いますが、コンソールが見難くなってしまいそうです。)

雑談専用エンジンを使いましょう。たくさんありますが、内容と実装方法別に3つのタイプに分けられそうです。※2

  • 辞書型(単語のパターンマッチング):TwitterBot
  • ログ型(会話ログを参照して類似の返信文を返す):精度重視。パン田一郎。
  • 生成型(返信文を自動生成):エンタメ向き。りんなちゃん。

1.辞書型

2.ログ型

3.生成型

Twitter Botと同様「〇〇」という言葉が入っていたら、「✕✕」という返事を返す。

ワトソンのdialogのシナリオを使ったパターンマッチング型(if文)

言語処理概念を追加。事前にデータベースに返信パターンを用意する。Inputの文章に類似度が高い返信文をデータベースから見つけ出し結果を返す。データベースに圧倒的な文章量を入れることで精度が高まる。ビジネスで多い。パン田一郎はこのタイプ。精度重視。 生成型は返信文章を計算し、Inputの文章に相応しい返信文章を自動生成する。アルゴリズムとしてマルコフ連鎖では限界があるので、最近はニューラルネットの一種類であるRNN(リカレント・ニューラル・ネットワーク)を用いる。りんなちゃんはこのタイプ。エンタメ向き。

1.辞書型

2.ログ型

3.生成型

おもしろさ

小(パターン限定)

中(類似を検索)

大(想定外)

運営コスト

大(都度入力)

中(類似は入力不要)

小(自動生成)

初期開発コスト

中(入力要)

小(入力要)

大(AI開発)

ロボットぽい会話で良いなら辞書型、より人間らしく話をさせたいなら生成型。でも、生成型は実装コストが大きいし文脈を理解しない回答をたまにしてしまうのが欠点。より精度を求めるのであれば、ログ型。

まず、作りたいボットがFAQと雑談のどちらのタイプのエンジンを使うのが適している、あるいは両方使うのか?を検討します。

両方使う場合には、ボットからの入力文をどちらのエンジンに振り分けるのか?を判定しないといけませんが、ボットエンジンにはその振り分け機能が含まれています。

panda

上の図は、振り分け機能も自前で機械学習を実装した「パン田一郎」の処理概要図です。パターンマッチング後、FAQ(天気・バイト)か雑談に振り分けられています。※3

振り分けコストを抑えたい場合も、FAQタイプのボットエンジンが活用できそうです。

 


引用

※1 ソースはstackoverflow(原文は英語)

※2 本文 http://qiita.com/kanottyan/items/2783bf91c8ea6a8a4ce8 画像 http://www.slideshare.net/tak9029/tensorflowai

※3 http://atl.recruit-tech.co.jp/news/linepanda/

 

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

ページ上部へ戻る