Watsonと会話する チャットボットの作り方

Watson Conversationを使って会話をする、チャットボットを作ってみました。(無料で始められます)
まず、上のBluemixのカタログから、Watsonの 「Conversation」 をクリックします。(⇒Bluemixが初めての方はまずこのリンクをクリック

すると以下のWatson Conversationの説明が表示されます。Conversationは、日本語など自然言語のインターフェースでのやり取りを自動化する、チャットボットを含むサービスです。[作成]をクリックし自分用の対話を作成します。

以下のようにWatson Conversationの画面が出てきますので、LoginボタンをクリックしてBluemixのIDでログインしてください。

まずWatson Conversationの作業領域である ワークスペースを作成します。以下の [Create] をクリックしてください。

以下にワークスペース名 (Name)を入力してください。私は「WhatIsWatson」と入力しましたが、好きな名称をインプットできます。言語は既にセットされていると思いますが [Japanese] を選んでください。

以下の画面になりますが、上のメニューで 「Intents: 意図」 が選択されているように、まずWatsonが理解できる「意図」をインプットしてあげます。Watsonは初期状態では何も知識が無いため、ここからがWatsonのトレーニングになります。

上で [Create new ⊕] し以下の画面になったら、上の「#」のところに 「#what_is_watson」 と名称(Name)をインプットします(名称は自分が分かれば大丈夫で特に深い意味はありません)。ここでは 「Watsonって何?」 と聞かれた時に、それがWatsonとは何か教えて欲しいという意図であることを、Watsonに教えます。以下のように下半分の「⊕」 のところに、いくつか 「Watsonとは何か?」 を問い合わせるための例文を示してあげます。このことでWatsonは、これらを聞かれたら「Watsonとは何か?」を聞かれているんだなと意図を理解します。

次にメニュー 「Entities: 対象」 に移り、ある対象のカテゴリに含まれる要素群を定義します。ここではWatsonについて、Watsonのサービスという対象に対し、その要素である単語を登録してみます。まず 「@」のところに「@watson_services」と名称を入力します。次に、Watsonのサービス (API)には「会話」「自然言語分類」「音声認識」という要素があるため、これらを入力します。Synonym (同義語)として、同じ意味で使われる可能性のある単語を追加しておいてください。こちらでは「conversation」など英語名をインプットしておきました。

ここまでがWatsonに理解して欲しい意図や対象の定義ですが、ここから「Dialog: 対話」 でそれらを活用した対話のストーリーを組み立てます。以下で [Create ⊕] してください。

以下のような会話の流れの最初の箱(Node)が表示されますので 、呼ばれるきっかけである[Triggered by] のところに 「Welcome」 とインプットして [Welcome (create new condition)] を選択してください。この箱は最初に呼ばれるので「Welcome」としました。ここでは名称(Name this node)はあまり重要ではないので、入力を省略します。

その下の [response] (返答) のところにこの箱が呼ばれた結果何を表示するかを入力します。ここでは「Watsonについて聞いてください」とインプットしました。

Welcomeの箱(Node)を定義したら、その下に自動的に [anything_else] の箱ができたと思います。これは、質問の意図を理解できなかった時のその他(else)の回答を用意するためのもの。返答(response)に 「わかりません」 と入力しました。

最初に作った 「Welcome」 の右の「⊕ (Continue conversation)」をクリックして、その後のWatsonの対応を作成します。

追加されたWelcomeの右の箱のTriggerに 「what」 などを入力すると候補が出てくるので先ほどIntentsで意図を定義した [#what_is_watson] を選択します。これはユーザーが何か質問してきた時に、「Watonって何?」という意図であるとWatsonが理解した時に呼び出されます。その時に表示したい返答を [Add response] のところに入力しまが、ここでは 「WatsonはAI技術を応用したサービスです。何について知りたいですか?」 と入力しました。

その [#what_is_watson] の箱の右の 「⊕」 をクリックし、次にWatsonのサービスが入力された時の対話を定義します。以下のようにTriggerのところで [@watson_services] をインプットしてください。

その下の返答(rensponses)のところに 「<? @watson_services ?> は提供されています」 と入力します。この 「<? @w…. ?>」 のところは、ユーザーが入力してきた単語を復唱してWatsonが画面に表示するための変数部分になります。

次に、Watsonがこの返答をした後にWatsonの質問に戻るために、今作成した [@watson_services] の箱の下の、四角に右矢印の付いた [Jump to] ボタンをクリックします。

[#what_is_watson] の箱に緑の行き先が出てくるので [Go to condition] をクリックします。

では、Watsonにトレーニングした対話を使って、実際に会話をしてみましょう。
画面右上の噴出しマーク  「Ask Watson」 をクリックして会話モードを右に表示してください。最初のWelcomeの 「Watsonについて聞いてください」 が表示されたら、右下に 「Watsonって何?」 とインプットします。

するとWatsonは、以下で緑の四角で表示されているように 「#what_is_watson」 で定義した例文に合致すると認識し、意図(Intent)を理解します。 そこでその意図で定義した返答 「WatsonはAI技術を応用したサービスです。何について知りたいですか?」 を返します。そこで右下に 「音声認識」 と入力しましょう。

「音声認識」 は @watson_services の要素として登録してありますので、対象(Entity)はWatsonサービスであると認識し、「音声認識 は提供されています」 とWatsonが返答します。「音声認識」の部分は、「<? @…. ?>」 で定義した変数部分で、ちゃんと入力が復唱されていますね。

ここで上のように 「深層学習」 と入力してみると、Watsonのサービスの要素としてはトレーニングしていなかったので、Watsonは対象として認識できず、「わかりません」  と返答しました。

このようにWatson Conversationは、会話における質問の意図や、認識した対象に対して決められた返答をする際に使えるサービスです。賢い人工知能というよりは、自然言語解析機能を活用し、ある程度決められた会話をしっかりこなしたい場合に有効です。

他のWatsonサービスと組み合わせながらチャットボットのようなアプリを作ってみましょう!

 

FacebookTwitterGoogle+LinkedIn

Watsonとは何か?まとめてみました

下の渡辺謙さんとの対話CMですっかり有名になったIBMのWatson。触ってみる前にちょっと、Watsonとは何かを自分なりにまとめてみました。

⇒Watsonと渡辺謙さんの対話について

上のリンク先にも書いてありますが、こういったWatsonとの対話は、Watsonの複数の機能を組み合わせています。Watsonって一つではなく様々な機能の集合体なのですね。

まずは「音声認識機能 (Speech to Text)」で話した事を文字に変換してWatsonに渡し、「音声合成機能 (Text to Speech)」でWatsonの文字の回答を音声に変換します。WatsonのCMは、英語のWatson (以下のリドリー・スコットとの対話など) はやや男性的な声なのですが、日本語のWatsonはやや女性的な声ですね。何か深い意図があるのでしょうか(笑)

ここまではSiriとか従来もある技術なのですが、その普通の自然言語の質問に対して回答を用意する「自然言語分類機能 (NLC: Natural Language Classifier)」が、現在最も良く使われているWatsonの機能です。以下のペッパー君とWatsonの会話にも使われる機能ですね。

このNLCは、聞かれた日本語がどういう意図かを解釈し、回答を用意する際に使われます。下のネスレさんの事例が有名ですが、聞かれた質問に対して何を回答として提示すべきかをWatsonが素早く判断してくれます。Watsonにあらかじめ知識として質問と解答例を教えておくと、様々な質問に対して、その意図を解釈し最も適切と思われる回答を提示してくれます。

⇒ここから「チャットで質問」

チャットでWatsonに聞いてチャットでWatsonが答えるような、いわゆるチャットボットを実現するために、会話の流れを実現してくれるのが「 Watson Conversation」です。人間と対話しているかのような会話ができるようになります。以前は Dialog という機能でしたが、その後継となります。

Watsonが一躍有名になったのは、2011年に以下の「ジョパディ」というアメリカの有名なクイズ番組で、Watsonが歴代のクイズ王の人達に勝ってからですが、このWatsonは膨大な文章を覚えて、そこから質問に対して最も関連性の高い内容を提示するという「機械学習 (Machine Learning)」の技術を応用したものでした。

このジョパディのWatsonに近い機能が「検索および
ランク付け機能 (Retrieve and Rank)」です。

また、これらのWatsonの機能は、一からWatsonに情報をインプットして覚えさせるというよりは、既存の何らかの文書をWatsonに渡すことでWatonが学習することができるようになります。これを「文書変換機能 (Document Conversion)」などで実現します。

Watsonはこういった機能を組み合わせることで、人間との会話や、膨大な情報からの情報の抽出が可能になります。

ところで、冒頭の渡辺謙さんとWatsonの対話CMは、現時点で我々も容易に実現できるのでしょうか?実際にWatsonエキスパートに聞いてみたところ、ある程度は実現できるものの、あそこまでは難しいとのことでした。なぜなら、一般のPCに付属するマイクなどは性能はあまり良くなく、対話環境もノイズが大きい場合が多いため、Watsonが正確にヒアリングすることが難しいからです。

またWatsonは、覚えた膨大な情報の中から最も関連性の高い回答を用意してくれますが、100%必ず正解を提示するようなものでは無いとのこと。確かに100%正しい回答を提示したければ、そういうプログラムを作成すれば良いですよね。Watsonは100%の回答は難しいにしても、既存の膨大な情報を与えれば、プログラムを書かなくても様々な質問に対しかなりの確率で答えてくれるようになるところが素晴らしいのです。

それでは次に実際にWatsonを動かしてみましょう。
⇒Watsonと会話する チャットボットの作り方

 

FacebookTwitterGoogle+LinkedIn

Bluemixのクラウド・アプリ開発環境「継続的デリバリー」とは何か

Bluemixのクラウド・アプリ開発環境は、Agile的に継続的に開発・提供(デリバリ)していくため、「継続的デリバリー(Continuous Delivery)」と呼ばれます。これまでのDevOpsの 「継続的インテグレーション」 の拡張版で、コード開発からビルド、サーバーへのリリースの繰り返しを効率的に行うための環境です。

これを実現するためには、Bluemixのアプリケーションの「概要」画面下の「継続的デリバリー」の「有効化」ボタンをクリックします。

bluemix2017_5-ci_enable

すると継続的デリバリー用のツールの流れ「ツールチェーン」が表示されるため、右下の「Create」ボタンで作成します。

bluemix2017_5-cd_toolchain

これは、ダッシュボードのメニューの「カタログ」や「サービスの作成⊕」をクリックしても以下のようなDevOpsのメニューが出てくるため、そこでContinuous Deliveryを選択しても同じです。 続きを読む Bluemixのクラウド・アプリ開発環境「継続的デリバリー」とは何か

FacebookTwitterGoogle+LinkedIn

Bluemix – 使い方手順

Bluemixは、IBM が提供するソフトウェア込みの クラウド環境 (PaaS) です。ローカル環境無しで アプリ開発できる使い方手順を、以下にご紹介します。(ID登録以外の以下の流れは、30分もあったら完了します!)

こちらは少し古い画面になっているため、新しいBluemix画面の使い方は以下をご覧ください。
⇒最新のBluemix使い方手順はこちら 続きを読む Bluemix – 使い方手順

FacebookTwitterGoogle+LinkedIn

FinTech Summit – FinTech企業の方々とのパネル・ディスカッション

9月に開催された 「FinTechサミット」 での FinTech企業の方々とのパネル・ディスカッションを、日経電子版さんに記事にしていただきました!

⇒日経電子版さん 「FinTechを加速する共通APIというアプローチ」

テーマは「APIバンキングによる FinTech共創戦略」 で、FinTech企業の方々(Zaim, freee, Moneytree)、我々金融機関さんのシステムを預かる立場とそれぞれの観点で、今後のFinTechの方向性についてディスカッションしました。

それぞれの観点はいろいろあるものの、今後のFinTechの方向性としては、振込みなどの更新系や、FinTech企業間での取引などにますます発展するでしょうという話ができました。その中でもやはり、API (Web API)とそのセキュリティの確保が今後もFinTechのキーになるというのが共通認識でしたね。

このような日本をリードする素晴らしいFinTech企業の方々と協業し、今後も日本の新しい金融サービスの実現を開拓していきたいと思います!

 

FacebookTwitterGoogle+LinkedIn

FinTech Summit – FinSumパネルディスカッションで感動

9/21に丸ビルで、金融庁・日経新聞さん主催の FinSum: FinTech Summit でパネル・ディスカッションをしてきました。かなりのセッションが英語で実施されており、インターナショナルなシンポジウムでしたね。

fintechsummit%e4%bc%9a%e5%a0%b4b

我々のセッションは日本語でしたが、マネーツリーさん、freeeさん、Zaimさんと一緒に、FinTechのAPIバンキングについて、各社の考えるFinTechのポイントや、APIのこれからの課題についてディスカッションしました。

パネル・ディスカッションを実施して感動したことが一つ。会場で何かせっせと作業している人がいるなぁと思っていたら、終了した瞬間に、ディスカッションした内容がきれいにまとめられた以下のイラストが出来上がっていました。

fintechsummit%e3%82%a4%e3%83%a9%e3%82%b9%e3%83%88%e3%83%bb%e3%83%91%e3%83%8d%e3%83%ab

似顔絵も似てるし、何よりほとんどチャートも使わないパネル・ディスカッションだったのに、要点がイラストで分かりやすくまとめてありました。感動!こういったディスカッションの可視化の方法、あるんですねー。

驚いたことに、以下のようにほとんどの主要セッションで、このイラストパネルが作成されていました。

fintechsummit%e3%82%a4%e3%83%a9%e3%82%b9%e3%83%88%e3%83%bb%e3%83%91%e3%83%8d%e3%83%ab%e9%9b%861a

fintechsummit%e3%82%a4%e3%83%a9%e3%82%b9%e3%83%88%e3%83%bb%e3%83%91%e3%83%8d%e3%83%ab%e9%9b%862b

これは分かりやすくで良いですねー。うちのイベントでも作って欲しいです!

 

FacebookTwitterGoogle+LinkedIn

FinTech – イノベート九州のハッカソンで、お手伝い預金が最優秀賞!

INNOVATE HACK 九州で行われた ハッカソン のコンテストで、お手伝い預金アプリが最優秀賞!スマホで子供の口座に気軽におこずかいをあげるなんで、楽しくなるアイデアですね!

子供が欲しい おもちゃなどの金額を目標に、お手伝いをしておこずかいを貯めるという ユースケース。子供がお手伝いして自分でそのおこずかい額を入れると、Watson がAIでその相場観を見てくれるというおまけ付き。

お手伝い預金

親がオッケーすると、スマホから、我々が提供した FinTech共通API 経由で子供のお小遣いが振り込まれます。(FinTech共通APIも記事にしていただき、ありがとうございます~) ただし、同じ支店内の口座であれば、振り込み手数料はかからないので、安心!

ハッカソンはこれまで何となくプログラマーの祭典ってイメージがありましたが、こんな子供にも嬉しいアプリが世の中に出て行くなんて、楽しいですね。ハッカソンや受賞の様子はネットでライブ中継されて、その熱気が伝わってきたのも良かったです。

イノベート九州ハッカソン

しかも今回は、高校生のチームによる受賞もあって、びっくりしました。しかも、VRで九州 福岡の街に仮想広告を表示するという本格的なもの。若者がここまでやってくれると、ITのここまでの浸透にびっくりすると同時に、今後がとっても楽しみですね。

高校生チームもハッカソンで受賞

これからも金融機関や様々な企業にサービスを外部提供するAPIをたくさん作っていただき、多くの人にこういった新しい体験ができるアプリをたくさん作ってもらえるようがんばります!

これこそまさに APIエコノミー!

⇒お手伝い預金に最優秀賞! 凄すぎる高校生も登壇!「INNOVATE HACK KYUSHU」決勝戦

 

FacebookTwitterGoogle+LinkedIn

ionic – スマホ・アプリの簡単な作り方は、これで決まり!

iPhone、Android の両方で動く、ハイブリッド な スマホ・アプリ が簡単に作れるという 「ionic」。使ってみましたが、コレは本当に良くできてます。特にクイックに スマホ らしい アプリ を作りたい時には最適でしょう。

⇒ ionicフレームワーク

ionic はモバイル・アプリを開発するためのフレームワークですが、イチから作られたモノではなく、既にポピュラーなオープンソースである AngularJSと、 Cordova (Phonegap) をベースにより簡単にアプリを開発できるようにしたものです。文字やボタンの画面部品が良くできていて、いわゆる iPhone っぽいアプリ画面を簡単に作ることができます。

ionicの、Windows で Androidアプリを作る際のセットアップ方法を、まず以下に共有します。(iOSアプリを作りたい時はMacでのセットアップが必要になるので、別途)

まずは今どきのオープンソース利用の基本、Node.jsのnpmを利用してパッケージをインストールします。また、Android SDKの導入も必要になります。これらの取得がまだの方は以下のリンクの最初の 「ダウンロードと環境準備」 を見て、それらのインストールを行ってください。

⇒ionic に含まれる Cordova 用環境設定

ionicのセットアップ

続きを読む ionic – スマホ・アプリの簡単な作り方は、これで決まり!

FacebookTwitterGoogle+LinkedIn

self-driving – 自動運転車に初めて乗ってみました!

幕張で自動運転車に乗れるとのこと。無人運転バス「ロボットシャトル」です。早速夏休みを利用して行ってみました。混んでるかと思って平日に訪れたのですが・・・何と、私一人でした。若干閑散感。

自動運転 幕張全景

やや世間の関心薄いのかな?と思って係りの人に聞いてみたところ、「そんなことありません、一日200名は来てくれます」 とのことでちょっと安心。というわけで、貸切り自動運転バスを堪能することになりました。

200円払って、WAONカードをもらったら(さずがイオンさん主催)、待ち構えている自動運転バスへ。トップのフォトにもあるようになかなかカワイイ。

自動運転 バス乗り込み

貸切であることをいいコトに、まず前方に向いてカシャ。

自動運転バス前

そして、後方に向いて、カシャ。

自動運転バス後ろ

全然変わり映えしません。なるほど、完全自動運転車ってこうなるのね。ハンドルがいらないので、前方も後方も同じ椅子。前も後ろも座席で向かい合って座れます。そして、前方にも後方にも走れます。 続きを読む self-driving – 自動運転車に初めて乗ってみました!

FacebookTwitterGoogle+LinkedIn

Pokemon GO – ポケモンGO ついに凱旋!遊び方はこちら

世界的に 「ポケモノミクス」 とまで呼ばれる ブームを巻き起こしている 「ポケモンGO」 がついに日本に凱旋!ということで、早速ダウンロード。と思ったのですが AppStore で見つかりません。

Pokemon go AppStore

試したら 「pokemon go」 と英語で検索すれば見つかりました。そういえばこの ポケモンGO、任天堂さんではなく、旧Google傘下の Niantic社の提供。それもあっての英語名称ですかね。

Pokemon go 設定W

早速インストールして立ち上げたら、上のキャラ設定画面。肌の色や服の色が選べます。後はニックネームの登録。これがなかなか使えるニックネームが無く何度か入れ直しましたが、結局Ingressと同じにしたらOKでした。(Ingressと連携してる?) が、設定はこれくらいですぐ楽しめます。しばらく歩いていると、ブルっとしてトップのフォトのように近くにポケモンが出現。このポケモンをタップするとGET画面になります。
おっと、駅に ニャース 出現!(以下の背景は実写モード)

Pokemon go ニャース

続きを読む Pokemon GO – ポケモンGO ついに凱旋!遊び方はこちら

FacebookTwitterGoogle+LinkedIn

FinTech共通APIの接続検証を完了しました!

FinTech共通API の、FinTech企業さんとの接続検証が完了したので以下にアナウンスしました!

⇒「FinTech共通API」、FinTech企業との接続検証を実施

また、日経BPさんのIT Proに、インタビュー記事も記載いただきました。

⇒日本IBMが銀行API提供サービスで5社と接続検証完了(日経IT Pro)

接続検証を実施いただいたのは、マネーフォワードさん、マネーツリーさん、Zaimさん、freeeさん、オービックさん。いずれもあまりサポートしなくても、サクっとつなげていただいたのは、さすが名だたるFinTech企業の技術者の方々ですね。

実はこれまでも、FinTech企業の家計簿アプリ等は既に銀行と接続できていて、いろんな口座を一つの画面で見られて便利でした。

⇒FinTechアプリを使ってみて分かった

が、裏の仕組みは 「スクリーンスクレイピング」 と呼ばれる、裏で画面をシミュレーションしてデータを取得するような方法が多かったようです。その場合、銀行が少し インターネット・バンキング の画面を変更するとしばらく接続できなくなってクレームが来たり、パスワードをFinTech企業に預けないといけないのに不安を感じる人がいたりといった課題がありました。

FinTech Screen

そこで、銀行さんに API (アプリケーション・プログラミング・インターフェース。Web API とも呼ばれる)を公開いただき、画面ではなくプログラム間通信にすることで解決するのがこの取り組みです。このような形態を 「APIバンキング」 (API Banking) と呼びます。

FinTech API Banking

そのAPIを共通的なものとすることで、FinTech企業的にも一つのインターフェースの仕様に合わせて開発すれば済むし、銀行的にも多数のFinTech企業といちいち折衝しなくても済むようになるということで、多くの銀行さんにこの 「FinTech共通API」 をご検討いただいています。

FinTech共通API

技術的には、REST/JSON といった最新の汎用的な技術を使ったAPIを構築して接続いただいていますが、認証のところを OAuth 2.0 という仕組みで銀行でログイン認証してから FinTech企業に銀行が接続を許可(認可)するというのが、ポイントになっています。

この FinTech共通API で、さらに便利なスマホ・アプリが世の中にたくさん出てくることを願っております!

⇒FinTechシリーズ全記事


FacebookTwitterGoogle+LinkedIn

Virtual Reality – 千円でVR体験!Googleカードボード

千円で VR (Virtual Reality) 体験ができると聞いて、試してみました。まず以下のGoogleカードボード (Google Cardboard) を Amazon で購入。

Google カードボード

正確には本体代1080円 と、送料 350円の、計1430円でした。家に帰ったら郵便受けに入っていたので、そのコンパクトさに驚きつつ早速開封。以下の袋入りの段ボール風のモノでした。(まさに「ボード」)

Google Cardboard Package2

その段ボールをベロンと展開すると、以下に。この縦長の上2/3は組み立て手順で、下1/3が本体のため下をミシン目で切り取ります。後は上の組み立てて順どおりに組み立て。

Google Cardboard 展開

・・・と思いきや、その組み立て手順が全然手順になってない!ということで一瞬悩みましたが、しばらくやってみると理解。要するに、①と①の部分、②と②の部分など、丸数字のところを合わせていくということなのね。以下がその①、②、③、④を合わせようとしているところ。こんな感じで組み立てていきます。

Google Cardboard 組み立て2

すると、トップのフォトのように組み立て完成!その後以下のようにスマホを組み込みます。が、その前にアプリのダウンロードが必要。あれ?アプリは?・・・と思って見たら、上の上の展開図の真ん中辺にQRコードを発見。あやうく捨てるところだった・・・と思いながらそのQRコードでアプリにジャンプ。・・・しようと思ったけどなんかうまく飛ばなかったので、結局書いてあった g.co/cardboard を入力して以下からアプリをダウンロード。

Google Cardboard アプリ

すると簡単にインストールできて、そのまま立ち上げられました。が、そこで何やらカメラが立ち上がり、何かを写させろって雰囲気が。そこで再度先ほどのQRコード(以下の左)をかざすと、無事動くようになりました。ちゃんとこの段ボールのQRコードが無いと立ち上げられないようになっているのね。 続きを読む Virtual Reality – 千円でVR体験!Googleカードボード

FacebookTwitterGoogle+LinkedIn

nikami.org – デジタル時代の自分デジタル化の軌跡