チャットボットは、日本語だと、人工無脳 (Chatbot)って書くんですね、AIチャットボット、つまり、人工知脳 (Chatbot)も出てきてるけど

f:id:ts0818:20200109213812j:plain

チャッピー』(原題: CHAPPiE )は、2015年に公開されたアメリカ合衆国SFアクション映画。監督と脚本はニール・ブロムカンプ、主人公である意志を持つロボット・チャッピーの声とモーションキャプチャシャールト・コプリーが務める。なお、このふたりのコラボレーションは本作で3度目となる。

アメリカでは2015年3月6日、日本では同年5月23日に公開

チャッピー (映画) - Wikipedia

人工知能と言えば、そうだね、「チャッピー」だね。2020年を迎えたというのに、まだ観れてないんですよね、どうも、ボクです。 

 

2016年は「チャットボット元年」、2019年は「チャットコマース元年」 だそうですね。

ledge.ai

「チャットコマース」(海外ではConversational Commerce……通称“CC”と呼ばれている)とは、LINEなどのチャットアプリやFacebook Messengerなどのインターフェースを通じて企業やサービスと消費者がAIと「対話」しながら、食料品の注文、衣服の購入、旅行の予約などができるサービスを指します。

つまり、これまではリアル店舗でしかできなかった「接客体験」をWeb上で実現する技術です。

接客とチャットボットを組み合わせることで、多くのユーザーニーズに効率的に対応し売上を上げることができるため、海外では “ECに変わるCC” と注目が集まっています。

チャットボットの新戦略──2019年が“チャットコマース元年”と呼ばれる3つの理由 | Ledge.ai

⇧  「ヴァーチャル接客」の時代か! 

AIの勢力がますます盛んになっていますが、  

ELIZA効果(イライザこうか、英語ELIZA effect)は、意識的にはわかっていても、無意識的にコンピュータの動作が人間と似ていると仮定する傾向を指す。これは、プログラミングの限界の自覚とプログラム出力を生む動作との微妙な認知的不協和の結果とされる。ELIZA効果は人工知能研究における重要な発見であり、チューリングテストについてそれまで考えられていたような、言語(文字)を通した会話というだけではなく、人間の認知的性質といったことについても、より眼が向けられるようになった。

ELIZA効果 - Wikipedia

⇧  プログラミングの限界の自覚とプログラムの出力を生む動作との微妙な認知的不協和...

人間の認知的性質が鍵を握るってことですかね?

そんなこんなで、チャットボットについて調査してみました。レッツトライ~。

 

Chatbotって?

Wikipediaさんによりますと、

The term "ChatterBot" was originally coined by Michael Mauldin (creator of the first Verbot, Julia) in 1994 to describe these conversational programs. 

Today, most chatbots are accessed via virtual assistants such as Google Assistant and Amazon Alexa, via messaging apps such as Facebook Messenger or WeChat, or via individual organizations' apps and websites.

Chatbots can be classified into usage categories that include conversational commerce (e-commerce via chat), educationentertainmentfinancehealthnews, and productivity.

Beyond chatbots, Conversational AI refers to the use of messaging apps, speech-based assistants and chatbots to automate communication and create personalized customer experiences at scale.

Chatbot - Wikipedia

⇧  1994年に、Michael Mauldin って人によって作られた言葉ですと。

「会話型プログラム」のことらしい。 

 

2つの起源

ELIZAさんしか知らんかったのですが、

tech.nikkeibp.co.jp

現在の対話システムには2つの源流がある。「ELIZA(イライザ)」と「SHRDLU(シャードルー)」だ。共に50年ほど前に作られた非常に有名なシステムであるが、全く対極的なアプローチを採っていた。ELIZAは入力文から特徴的な単語を検出し、表層的なパターンマッチングによって反応を返す。基本的には発話内容の理解はせずに、どんな入力にも何らかの応答をする。これに対してSHRDLUは人工知能的なアプローチにより、発話の内容を深く理解した上で、きちんと返答しようとする。

音声対話システムの実際、Siri誕生の背景(前編) | 日経 xTECH ラーニング(クロステックラーニング)

⇧  上記サイト様によりますと、2つ起源が存在したそうです。

 

 

人口無能(チャットボット)と人工知能(チャットボット)

日本語の表記だと、「人口無能(チャットボット)」「人工知能(チャットボット)」って変な感じになっちゃうけど、「人口無能(チャットボット)」は、AI が発展したからこそ、無理やり生まれた言葉の感が強いですかね。

note.com

blog.global.fujitsu.com

⇧  チャットボットの種類とかは上記サイト様が詳しいです。

 

人工知能(チャットボット)、というか、AI Chatbot と呼ばれる方が多いかもしれませんが、については、

medium.com

⇧ 上記サイト様の図がイメージしやすいかと。

⇧  機械学習で成長していく感じですかね。

 

2020年1月10日(金)追記:↓ ここから

AI Chatbot は課題がまだまだ残ってるようです。

AI Chatbot は、大まかには、

  • 検索ベースモデル
  • 生成ベースモデル

の2つに分けることができるようです。

spjai.com

検索ベースのモデルは、入力(インプット)・コンテキスト・経験に基づき、決まったレスポンスを返します。

チャットボットの作り方 NLPとAI(機械学習・ディープラーニング)を応用

このモードの場合は、回答を生成する事は無く、決まったリソースの中から、回答を文字通り検索します。

チャットボットの作り方 NLPとAI(機械学習・ディープラーニング)を応用

決まったリソースから回答を用意するため、検索ベースモードでは文法のエラーは起こりえません。

チャットボットの作り方 NLPとAI(機械学習・ディープラーニング)を応用

しかしながら、検索ベースモードでは、想定外のインプットに対して対処する事ができない弱さがあります。

チャットボットの作り方 NLPとAI(機械学習・ディープラーニング)を応用

また、同じように、会話の継続性を意識した際に、過去の会話で、人の名前等、コンテキストとして重要な発言があったとしても、それらを過去の会話の中から参照する事ができません。

チャットボットの作り方 NLPとAI(機械学習・ディープラーニング)を応用

⇧ 「検索ベースモデル」は、安定性抜群ですが、あくまでも事前に用意されている答えしか導き出せない、良くも悪くもマニュアル通りの対応が持ち味。

一方、

生成ベースモデルは過去の会話の中の重要な情報を参照しながら、人間のような会話を実現する事ができます。

チャットボットの作り方 NLPとAI(機械学習・ディープラーニング)を応用

しかし、このモデルはトレーニングする事が非常に難解で、文法のミス等が多発する可能性があります。

チャットボットの作り方 NLPとAI(機械学習・ディープラーニング)を応用

そして、通常、モデルのトレーニングには大量のデータを要します。

チャットボットの作り方 NLPとAI(機械学習・ディープラーニング)を応用

機械翻訳等で用いられている、Deep learningの一技術の、「 sequence to sequence 」等は、会話を自動生成させるのに向いており、この分野の突破口として期待されています。

チャットボットの作り方 NLPとAI(機械学習・ディープラーニング)を応用

しかし、生成ベースモデルはまだ時期尚早なので、商用には検索ベースモデルを用いるべきでしょう。

チャットボットの作り方 NLPとAI(機械学習・ディープラーニング)を応用

⇧ 「生成ベースモデル」は、かなり空気を読んでくれる気の利いたタイプなのですが、如何せん、ムラッ気があり、うっかり八兵衛のようなミスを多発する可能性もあり、現状、本番環境には適用が厳しそうです。

 

2020年1月10日(金)追記:↑ ここまで

 

Microsoft Azure でチャットボットを構築する練習ができるみたい

クラウドでチャットボットを実現できるAPIというと、 

クラウド ボットAPI
Google Cloud Platform(GCP Dialogflow
IBM Cloud IBM Watson Assistant(旧Conversation)
Amazone Web Service(AWS Amazon Lex
Microsoft Azure Azure Bot Service

とかが有名になってくる感じですかね。

クラウドじゃないものだと、Lineの「Line Messaging API」が有名みたいです。

 

ボットAPIだけだと、学習とかはさせられないので、だいたい、「ボットAPI」+ α でチャットボットを構築する感じですかね。

今回、Microsoft Azure で試してみようかと思いましたと。

なぜならば、

www.atmarkit.co.jp

 2018年9月に開催された「Microsoft Ignite 2018」でリリースされた新しいオンライン学習サイトMicrosoft Learn」は、Azureの無料アカウントなどのサインアップ手続きなしで、ハンズオン環境としてMicrosoftの“本物のクラウドサービス”を利用できる、新しいタイプのオンライン学習サイトです

クレカ不要で本物のAzureを試用できる、無料の学習サイト「Microsoft Learn」がオープン:Microsoft Azure最新機能フォローアップ(65) - @IT

 例えば、Azureのハンズオン環境は、Microsoftアカウントでサインインし、サンドボックス環境をアクティブ化することで素早く準備でき、本物のAzure PortalやAzure Cloud Shellを実際に操作できます

クレカ不要で本物のAzureを試用できる、無料の学習サイト「Microsoft Learn」がオープン:Microsoft Azure最新機能フォローアップ(65) - @IT

⇧  Microsoft さん、いままでの数々の暴言をお許しください。

というわけで、Microsoftアカウント があれば、無料でAzure の機能が学習できますよ~、Microsoftさん太っ腹です。

 

2020年1月13日(月)追記:↓ ここから

完全に騙されました...

⇧ 結局、Azure の「無料アカウント作成」が必要らしいですと...

2020年1月13日(月)追記:↑ ここまで 

 

早速、「Learn」にサインインして、「bot」で検索したら、3件ヒットしました。

f:id:ts0818:20200108214821p:plain

⇧  順番に実施していく必要があるみたいです。
見た感じ、あくまでも、Azure内で完結した内容しか実施はできない気が...。

どういうことかと言うと、

ledge.ai

⇧  上記サイト様のように外部からの連携については試せないってことですかね。

 本当は、上記サイト様のように「Direct Line API」ってものを試してみたかったのです。

あと、上記サイト様では、「jQuery」の「Ajax」で直接、Azure Bot Service の「Bot Service」と「Direct Line API」による「REST」を実装していますが、「Bot Service」と通信できるのであれば、「Java」で「Direct Line API」による「REST」とかでも構わないわけです。

 

そして、Azure Bot Service の Direct Line API の説明が凄まじく分かりにくかったんですよ...、なので、Ledge.ai さんの記事で何となくイメージが掴めました。

公式の説明は以下です。

docs.microsoft.com

You can enable communication between your bot and your own client application by using the Direct Line API. This article introduces key concepts in Direct Line API 3.0 and provides information about relevant developer resources.

Key concepts in the Bot Framework Direct Line API 3.0 - Bot Service | Microsoft Docs

⇧  何となく、言わんとしてることは分かるんですが、前提として、Azure Bot Service が複数のチャネルに対応してはいるんだけれども、ほとんどがサードパーティ製のアプリ経由になっているというのを知ってないと、「Direct Line API」ってものの意味合いが掴みづらいんですな。

なので、チャネルとして「Direct Line API」を使えば、自分で開発したアプリから「Bot Service」 にアクセスできると。

⇧ 上記の図だと、「Channels」に「Direct Line API」が見当たらないんだけど、ちゃんとAzure上で「Bot Service」に対して「Direct Line API」を使うよって指定できるらしい。

頭の良い人達は、いろいろ説明を端折るから、意図を理解するまでに時間がかかって辛いな...

 

非常に多くのチャンネルでBotを作成できるMicrosoft Bot Framework。実はBotREST APIとして扱う事ができる仕組みが用意されています。それが「Direct Line APIです。

MicrosoftのDirect Line API × jQueryでWebブラウザで動くボットを作る | Ledge.ai

⇧  上記サイト様の説明にあるように、「Direct Line API」は「REST」を実現できますと。

あと、フロントエンドの部分については、

qiita.com

「WebChat」っていうものが用意されていますと。

一応、公式の説明でも、

docs.microsoft.com

Direct Line App Service 拡張機能を使用すると、クライアントはボットが配置されているホストに直接接続できます。 これにより、ワークロードの分離が実現され、場合によってはパフォーマンスが向上します。 次の図は、全体のアーキテクチャを示しています。

f:id:ts0818:20200109211917p:plain

Direct Line App Service 拡張機能 - Bot Service | Microsoft Docs

この記事では、Direct Line App Service 拡張機能と共に WebChat を使用する方法について説明します。 

WebChat を Direct Line App Service 拡張機能と共に使用します。 - Bot Service | Microsoft Docs

⇧ 「Direct Line API」と「WebChat」のUIを組み合わせて利用できるとありますね。

ただ、いまのところ、プレビューバージョンしか無いようなので、本番で使うには難ありなんですかね?

 

まぁ、プレビュー版ではあるけれど、フロントエンドとして「WebChat」を、バックエンドとしてJavaを使う場合、チャットボットの構成は、イメージ的には、

f:id:ts0818:20200109211453p:plain

みたいな感じになるんですかね?

Channelsにある「Web Chat」とフロントエンドで使ってる「WebChat」が紛らわしいけど、別物のはずです、たぶん...。

まぁ、そんな感じで、クライアントとの連携の練習はでき無さそうだけれど、「Azure Bot Service」の部分の練習は、「Learn」で無料で練習していけますかね~。

チャットボットについても勉強していかねばですかね。

今回はこのへんで。