2017年6月6日(火)
きょうの横浜は、晴れて、暑かったです。
― ― ― ― ― ― ― ― ― ―
[中二病でも作れるゴールマッチ方式AIチャットボット 改二]
※ ITの難しい話(チャットボット)が延々と続きますので、興味がない方は、スルーして、ポチっとしてください。
※この記事は、2017.05.30に、オマケで書いたネタの焼き直しです。
LINEやSkype、Slack、SFB(旧Lync)などのチャットに、あたかも人間のような会話の振る舞いをする「ボット」が増えています。
主に質問応答(Question Ansering)で使われることが多いのですが、機械翻訳や、コールセンターでの対応や、ホテルのコンシェルジュロボットなどにも使われていますよね。
質問応答型のAIエンジンでは、IBM社のWatsonが有名ですが、エンタープライズ用途で業務をやらせようとすると、業務のシナリオ通りには会話してくれないことが多々あります。
そこで、当ブログでも、昨年夏ごろから、繰り返し書いている、ゴールマッチ方式のAIチャットボットが使われることもあります。
これは、エンティティという要素を、未決のエンティティから順に質問していくなどして値を埋めていき、すべてのエンティティの値が決まったら、何かのタスクを実行する、というような、ステート(状態)を維持した会話に向いています。
それぞれのエンティティは、選択肢を表示して選ばせると便利なので、ファイルや、Webサービスなどのデータプロバイダを介して、選択肢を取得するようにするのが普通です。
当ブログで取り上げている、「小規模イベント企画アシスタント」のケースを以下に示します。
ゴールマッチシナリオを作るには、達成するゴール(この例では、イベント企画調整)を表現する「オブジェクト」(この例では、イベントオブジェクト)を作ります。
「オブジェクト」には、ゴールを達成するために必要な項目=エンティティのリストを、メンバーとしてもちます。
エンティティは、「イベント名」や、「開催場所」といった、エンティティ名を持ちます。
チャットボットエンジンが、それぞれ、まだ決まっていないエンティティの値を埋めていき、全部のエンティティの値が埋まれば、ゴールが達成されます。
各エンティティに対して、フリー入力でもよいですが、選択肢から選ぶ方が、入力が楽になりますので、「データプロバイダ」をもちます。
「データプロバイダ」は、いろんなタイプを用意しておくとよいです。
基本は、プロパティファイルなどからテキストファイルに選択値を列挙しておき、それを「データプロバイダ」で読み込み、質問の選択肢として表示します。
このとき、応答文は、文字列でも、数字でも、受け付けるようにしておくと便利です。
ただし、参加者の予定(開いている日)は、スケジューラにアクセスしないとわかりません。
こういう場合は、ファイルからではなく、ネットワークで Google Calenderや、O365 Onlineなどにアクセスし、ネットワーク経由で認証し、選択リストを取得し、回答文を作成する「データプロバイダ」を用意しておきます。
実用化するには、「エンティティ」と「データプロバイダ」の間に「選択値リストキャッシュ」を入れると、応答の高速化と、ユーザごとのパーソナライズ(選択頻度によって昇順か降順に並び変え)が可能になります。
チャットボットエンジンが、それぞれ、まだ決まっていないエンティティの値を埋めていき、全部のエンティティの値が埋まれば、ゴールが達成され、そのときに、実行されるのがゴールアクションです。
たとえば、適切な認証後に、参加者のスケジューラに予定を入れたり、お店や会議室などを予約します。
なお、Webと違ってチャットの場合は、開始した対話中のセッションが永続化されるように設計しておく必要があります。
このゴールマッチ方式のチャットボットは、一見、良さそうに見えても、やたら作りこみが増えてしまう欠点があり、もはや、この方式は、レガシー チャットボットと言えましょう。
※あえて「AIチャットボット」とは認めたくありません
実際には、時刻の正規化や、固有値表現処理など、複雑な処理をやっています。
詳しい説明は、過去記事を参照してください。
[MADSHIPチャットボット 関連記事]
iPhoneのSkypeでも動作する AIチャットボットエンジン MADSHIP(1)
http://yuna-k.blog.so-net.ne.jp/2017-03-03-1
iPhoneのSkypeでも動作する AIチャットボットエンジン MADSHIP(2)
http://yuna-k.blog.so-net.ne.jp/2017-04-03
iPhoneのSlackでも動作する AIチャットボットエンジン MADSHIP
http://yuna-k.blog.so-net.ne.jp/2017-04-11
SlackやLyncにも対応 AIチャットボットは中学生でも作れちゃう
http://yuna-k.blog.so-net.ne.jp/2017-05-16
中二病でも作れるゴールマッチ方式 Slack チャットボット
http://yuna-k.blog.so-net.ne.jp/2017-06-06
AIチャットボットを作るために必要な要素としては、日本語の形態素解析、品詞のタグ付け、語義曖昧性解消、固有表現抽出、構文解析、、、、 などなどがあります。
こういった要素は、かなり前からあって、過去にも AIブームが何度か起きました。
でも、ここにきて、自動運転だとか、プロ棋士に勝ったとか、スマホを音声でコントロールできたりとか、2016年あたりから、急激に進歩した感がありますよね。
AIチャットボットでいえば、この背景には、既存のレガシーな自然言語処理システムに変わり、ディープラーニング(Deep Learning)=深層学習が広く使われるようになり、スカイネット ニューラルネットによる自然言語処理システムが増えたことが挙げられます。
ニューラルネットがどういうものかは、行列だの、ベクトルだの、偏微分だの数式だらけになるので、ここには書きませんが、興味があれば検索してみるとよいです。
ニューラルネットでAIチャットボットを作ると、「近くのイタリアンのランチがおいしい店を教えて」と話しかけると、機械学習した結果を元に最も可能性が高いであろう回答をするか、わかりません、と諦めるかの応答が返ってきます。
この対話モデルは、検索の機能を使っているのではなく、計算で求めています。
日本語は難しい言語なので、応答がイマイチだったりしますが、ものすごい勢いでチューニングが進んでいます。
より適切な応答を得るためには、パラメータのチューニングが必要であり、このために、何日間もかかる、ということはザラです。
これは、オープンソースコミュニティの威力です。
ニューラルネット(ディープラーニング)を使っていないチャットボットは、AIチャットボットと名乗るな! 的な勢いです。
チャットボットを選択するときは、古臭いものを選択しないよう、気を付けましょう。
ところで、自然言語処理システムで人名や企業名、地名などの固有表現抽出は、SNSやメディアなどで新語が多く登場する昨今、すべての「語」を辞書に登録すると、何万語も登録することになり、常にメンテナンスが必要になります。←こんなめんどくさいのは、ありえないですよね。
一方、人名などに用いられる「文字」を登録しておくのであれば、データ量は減りますが、誤抽出が増えますので、残念ながら浅知恵です。
なので、この問題には、とてもよい解決法があり、今の自然言語処理システムでは、その方法を採用しています。
たとえば、「ガンダム」とカタカナで入力すると、計算によって、シノニムである「GUNDAM」とは近いところにマッピングされるため、類似度が高いと判定します。
このとき、計算結果が、どのぐらいの数値のとき、類似と判定するかのパラメタ設定が、かなり難しいです。
大量のデータで学習しないと、誤解答します。(このへんは、飲食店だと、いくつだけど、一般企業名だと、いくつ、といったふうに、違ってきます)
今回は Slackでチャットしていますが、チャットボットエンジンと、チャットシステムの「コネクター」を並列で走らせると、SFB(旧Lync)や、Skype、WebChat、Facebook Messanger、LINEなどのチャットシステムとも、会話できるようになっています。
― ― ― ― ― ― ― ― ― ―
[ジョナサン 平日 日替わりランチ]
お昼は、近所のファミレス(ジョナサン)で、平日のみの日替わりランチにしました。(680円)
チキンのデミグラスソースと、イカフライ、あと 1品、それと、ライスとスープバー付です。
平日ランチは、コスパいいです。
― ― ― ― ― ― ― ― ― ―
[追伸]
昨夜は、薬の種類を増やしたので、発作は起きませんでしたが、朝、6:30時点で、この血圧だったので、通勤を見送りました。
なぜなら、この直後に、朝の薬を飲むので、これよりさらに、血圧と脈拍が下がるからです。
予想通り、朝の薬を飲んだら、すぐに落ちて、目が覚めたら、昼 12:30でした。
15:00 ~ 17:30まで、在宅ワークで、溜まったメールの対応などしました。
もう、通勤はムリぽいので、出社できる日は、少ないと思っています。
コメント
とても、美味しそうなランチですね。
お医者様がいうことすべて信用していたらやはりだめですね~えらい目に合うのは自分ですもんね~
お大事にね。
血圧低過ぎ!^^;
発作が起きずに良かったです。
在宅ができるなら、それが一番ですね。
通勤って無駄に体力を使いますしね。
> みぃにゃん さん
薬を減らしてくれと頼んだのは、自分なんです。
先生の判断ではないのです。
だから、先生は、信用できるんです。
信用できないのは、自分なんです。
********************
中二病でも作れるゴールマッチ方式 Slack チャットボット の
ブログ記事に、たくさんのコメントを頂きまして、
ありがとうございました。
********************