ラベル AI の投稿を表示しています。 すべての投稿を表示
ラベル AI の投稿を表示しています。 すべての投稿を表示

2019-01-16

チャットボットは意図した通りにお話しするか

らいか

前記事はこちら
AIの民主化進む
チャットボット作成=キャラクター作成

前々回記事では、作成するチャットボットを、「就活生が気軽に質問出来る、先輩に質問コーナー」のようなコンテンツにすること。前回記事では、「チャットボットのキャラクターイメージ」を作成する所まで書きました。

今回記事では「IBM Watson Assistant」を使用し、実際にチャットボットを作成する所を書いていきたいと思います。

ワトソンの参考URLはこちら
IBM Cloud 資料 Watson Assistant 概説チュートリアル

Watson Assistantの使い方を知るには上記のチュートリアルを見るのがわかりやすく、且つ詳しく載っています。

こちらの記事では詳しい操作方法などは省き、実際に私が作ってみた部分をざっくり説明していきます。ちなみに前回記事に書きましたが、私が作成するチャットボットの名前は「らいか」といいますので、こちらの記事でも「らいか」で話を進めようと思います。

インテントで質問に対する答えの種類を大枠で設定する

インテント


前提として今から紹介するのは私のオリジナルな作り方なので、作成するコンテンツによって最適解は当然変わります。

タイトルが少し分かりにくいかと思いますが、らいかに何を答えさせたいかによってインテントを設定します。

私はこのように設定しました。

[#greeting]
こんにちは等のあいさつです。
ユーザー側のコメント例は「こんにちは」「元気?」などです。

[#question_work_company]
会社や業務のことに関する問い合わせへ返答する用です。
質問例は「仕事内容を教えて」「配属先は希望出来る?」などです。

[#resolve_anxiety]
学生さんの漠然とした不安に対して励ましのメッセージをコメントする用です。
質問例は「仕事を続けていけるかな?」「私にも出来るかな?」などです。

[#idletalk]
雑談用です。
コメント例は「なまえおしえて」「今日の朝なに食べた?」などです。

[#angry]
らいかが上手にしゃべれずにユーザーが苛立った時に謝る用です。
ユーザー側のコメント例は「もう!」「ちゃんとしゃべって!」などです。

インテント中身

ここに出来るだけたくさんの質問例を入れて、ユーザーがコメントを入力した際に、らいかが何について返答するべきなのか、AIが判断出来るようにします。

エンティティを必要に応じて設定する

エンティティ

エンティティ中身

エンティティでは特別にトリガーさせたい単語や語句を設定します。
トリガーというのはシステム(Watson Assistant)が返答を選択する際のきっかけです。

一部を載せます

[@greeting]
・こんにちは
  →(シノニム)
    こんちは
    やっほー
    ハロー
・元気ですか
  →(シノニム)
    元気?
    元気ですか?
    調子はどうですか?

[@labor]
・介護休暇
  →(シノニム)
    介護
    親の介護
・勤務地
  →(シノニム)
    配属先
    所属場所

 [@topics_chat]
・音楽
・食べ物
・恋愛

シノニムというのは同じ意味の言葉で、これを入れておかないと語句が似ていてもちょっと違うとトリガーしません。

ダイアログで返答を入力する

ダイアログ

ダイアログ中身

ダイアログにトリガーの条件と、トリガーした際の返答を入力します。

条件はインテントそのままでもOK。特定の単語に反応させたい時にはエンティティを使います。

全てを載せるとすごい量になるので一部のみ載せます。

条件:@greeting=こんにちは
返答:「こんにちは!」

条件:@greeting=元気ですか
返答:「元気だよ!」

条件:#resolve_anxiety
返答:「やってみたらきっと楽しいよ!」

システム側であらかじめ「ようこそ」ノードと「その他」ノードが用意されています。
「ようこそ」ノードは、ユーザーがページを開いた時にこちらから話しかける言葉を入力します。「こんにちは!」や「質問を入力してね!」などです。

「その他」ノードはダイアログの一番下にあり、他にトリガーされるノード(条件)がなかった時にトリガーされます。「表現を変えるか、他の質問をお願いします!」などです。

ダイアログでは、ノード(条件と返答のセット)を並べる順番が重要で、ユーザーがコメントを送信した際、システムはダイアログの上から順に検証し、条件に一致するノードがあると即座に返答を返します。トリガーされたノードより下にあったノードは検証されていません。

つまり重要な返答ほど上に配置する、ということです。

(それから私が地味につまずいてしまった部分ですが、ノード名に「?」が付くとトリガーしません。)

テスト&修正

ある程度データを入力したら「Try it」でテストします。


右下の欄にコメントを入力すると、システムがインテントやエンティティを認識して、ダイアログを検証、トリガーしたノードの返答をコメントで返してきます。


「仕事を続けていけるかな?」に対して「#question_work_company」が認識されています。これを「#resolve_anxiety」に変えて、「やってみたらきっと楽しいよ!」と返答させたいです。


これで修整できました。

このようにテスト→修整を繰り返して、らいかがユーザーの質問を正しく認識できるようにします。返答のパターンが足りないところはダイアログでノードを足していきます。

(もう一点地味につまずいた部分ですが、slackなどの他アプリと連携させるのは有料サービスのようです。)

まとめ

実際に自分でチャットボットを作成する前は、AIというのはAIが考えて導き出した答えをリターンしてくるものかと思っていましたが、「IBM Watson Assistant」に関して言えば、ダイアログのノードに私が入力した返答以外の言葉はしゃべりません。

2019年1月現在、企業向けに提供されているほとんど全てのチャットボットシステムは、企業の意図に反した言葉を話さないように、このようなシステムを取っているようです。

他国の話ですが、ユーザーと会話をすることで言葉を覚え、自分の意志で発話することができるAIがいたようなのですが、悪意のあるユーザーなども多く、あまり上手くいかなかったようです。

ダイアログに入力した言葉しか話さないのならば、普通のプログラムとどう違うのか?AIとは?と思うでしょうか。

実は一番最初に記述している「インテント」、この部分がAIなのです。
ユーザーの入力したコメントは何についての質問なのか。喜んでいるのか。怒っているのか。つまり「認知」の部分です。

現在流通しているAIの技術において、この「認知」に関してはかなり発達していて、

・人でいう目の役割
Googleなどの写真解析の発達
自動運転車に必要となる道路標識や、道を渡ろうとする人間の認知

・人でいう耳の役割
スマートスピーカーやスマホなど、声で操作できる端末の登場

・人でいう鼻の役割
あんまり聞かないですね。

と、すでに現実世界で活躍していますね。

自分で考えて何か新しい仕事のようなことを始めてみたり、自分の意志で何か人の役にたつような行動をしてみたり、という所謂「強いAI」と呼ばれる、ドラえもんのような、アンドロイドのような存在が生まれるのは、もう少し先の話になるでしょう。

らいか


Read More

2018-09-01

チャットボット作成=キャラクター作成

先輩AIらいか


チャットボット作成イコールキャラクター作成。
・・・と、私が考えている、という話です。あしからず。

前回記事はこちらから
AIの民主化進む

女子高生AIりんなローソンクルーあきこちゃんのように、SNSを通じてユーザーとコミュニケーションを取ることが出来るチャットボットをはじめ、最近では企業のホームページにも問い合わせ対応などのチャットボットが実装されているのをよく見かけるようになってきました。チャットボットとはユーザーの問いかけに対して自動応答してくれるシステムのことです。

このようなAI技術が発達する以前では、ユーザーの問い合わせに対してはメールなり電話なり人が対応していた訳です。これらの人件費を削減出来るだけでなく、「メール打つ程ではないしなー」というユーザーのちょっとした質問に応じることが出来たり、LINEなどを通じて会話することで企業ファンと密なコミュニケーションを取ることが出来たりと、前向きなメリットを挙げることが出来ます。

そこで私が提案したいこと。ボットにキャラクターを与えてほしい!

これからの時代、人に代わり企業の顔となり得るチャットボットさん。なんとなく作成して他社と似たり寄ったりの問い合わせボットになってしまい、「所詮ボットだし」とか言われたらかわいそう。おんなじ質問をされても企業それぞれのカラーでもって答えは変わるはず。

ユーザー:アールグレイ一つ
A社:かしこまりました。大変お熱くなっておりますのでお気をつけ下さいませ。(椿屋風)
B社:よろこんで!(居酒屋風)
C社:はい、どんどん♪(わんこそば風)

みたいな感じ。(ちょっと違うか)


問い合わせボットだから、当然カスタマーサービスのイメージで、と言われたらまあその通りなんですけどね。

それではプロフィールを考えていきましょう。(ディテールにこだわるたちですよ。)
今回は新卒学生が就職活動をする際に気軽に質問出来る、先輩AIを作成します。

名前:先輩AIのらいかくん
年齢:24歳くらい(大卒の勤務3年目)
性別:男性
職種:舞台裏方
勤務地:都内
口癖:「一緒に頑張ろうぜ」「仕事楽しいよ!」
技能レベル:技術の経験値は高くないが現場好きで力持ち。わからないことがあった時にちゃんと聞かずに力技で辻褄を合わせようとするのがたまにきず
心の内:「先輩の指示がわかりづらい時があるよなー。」「仕事を任せてもらえたら自分はもっと出来るのに」

てな感じにしておきましょう。キャラクターの性別を男性にしたのは男子学生に、より共感して欲しいから。女子はこちらが特別気を遣わなくてもしっかりしていて勢いがあるし・・


学生:仕事が辛くて続けられなかったらどうしよう?
らいか:仕事は辛くても楽しいこともあるよ。一緒に頑張ろう!


みたいな感じでしょうか。時々先輩風を吹かせるおちゃめな所がセリフに出てくるとなお良し。

次回からは実際にワトソンを使ってチャットボットを構築して行きたいと思います。
次回お楽しみに!

次記事:チャットボットは意図した通りにお話しするか

Read More

2018-06-29

AIの民主化進む

AIの民主化

「AIの民主化」勢いがすごいね。
この間連休の予定があったからなんとなく旅館のサイトをサイト(sight)していたら、こちらの旅館について詳しくはAIに聞いてねっていうチャットボットが出てきた。
チャットボット=質問を入力するとAIが自動返信してくれるやつ
AIってもうこんなに普及してるんだとか感心して、ちょっと調べてみたら、すでにフリーのチャットボット用ツールが結構色々出ていた。面白そう!
ってなわけで早速自分でもチャットボットを作ることにしてみた。

まずは良さげなツール探しから。

Repl-AI
NTTドコモ × インターメディアプランニング

Watson Assistant
IBM

Azure Bot Service
Microsoft

Dialogflow(英語)
Google

Amazon Lex
Amazon

上記はどれも作成するだけであれば無料で出来そうです。
Repl-AI以外はクラウドサービスを使用しているので、公開して運用するには従量課金になるようです。
今回実用化の予定はないので、極力お金をかけずに構築しますよ。自由研究(笑)


悩みました!3日間くらい。
特にWatsonとAzureで悩みました。

ちなみにWatsonはアメリカのクイズ番組で人間に勝利したことや、白血病患者の病名を見抜いたことなどで有名。AI分野の中心的存在かと思いきや、IBM自体はWatsonのことをAIではなく、コグニティブコンピューティング(人間を支援する存在の意)と呼ぶのだそう。
AIというと人間のように振舞うことを期待されると思われるが、そうではなく、人間の活動を支援するための技術である、という思想には賛成出来る。

対してAzureは女子高生AIりんなのエンジンであることで知られています。

AzureにはQnA MakerというAPIがあって、質問と回答のセットをサイトの「よくある質問コーナー」などから読み取って自動でデータベース化してくれたり、そのデータベースに手動で追加したり編集したりが簡単に出来る。これが使いやすそうで良いんだけど、質問の回答にさらに質問が被さって来た時にどう対応させることが出来るか、とか、雑談にどの程度対応することが出来るのかなかなかイメージが湧かず。

ユーザー:仕事って面白い?
こちら:面白いよ!
ユーザー:どうしてそう思う?

↑みたいなパターンの時に「質問の意味がわかりません」って機械的なメッセージが流れるとつまらないよなーと。

Watsonはデモやチュートリアルがかなり詳しくわかりやすく載っていたので、この辺りの疑問にある程度答えをくれて、具体的に開発する際のやり方や完成までの道のりを想像することが出来ました。

よって開発ツールはWatson Assistantに決定!

学生が就職活動をする際に会社の業務のことなどを先輩社員に質問することが出来る、会社説明会などでよく見かける「先輩に質問コーナー」のAI版を作ることにしました。

次回へつづく!
Next:チャットボット作成=キャラクター作成

Read More