Watson – 無料 で使える APIの 使い方

IBMの AI、ワトソンが無料で使えるようになったと新聞にあったので使ってみました。実際、一定の容量までは本当に無料で使えました。IBMのWatsonは、IBM Cloudの上でAPIという形で使えるので、用意するのはWebブラウザだけで大丈夫です。まだの人はまず、以下で IBM Cloudに登録してください。

➡IBM Cloud – 無料で クラウドにサーバーを立ち上げる方法

IBM Cloudにログインし、IBM Cloudで上のメニューのカタログをクリックすると、以下のようなWatsonメニューが表示されます。無料のライト・アカウントだと以下の APIが利用可能です。

このように ワトソンは様々なAPIが提供されています。Conversationは自然言語による応答をチャットボットで作るためのWatson APIで、一から学習させるタイプです。最初は知識の無いまっさらな状態です(NLCも)。一方で音声認識の Speech to Text, Text to Speech, 翻訳機能のLanguage Translator, 最適解を探し出すディスカバリー は最初からすぐにある程度の事ができ、さらに自分で賢くできるエンジンになります(VRも)。性格判断のPersonality Insigths,と自然言語から感情を判断するTone Analyzerは、最初から教育が完了しているエンジンで自分で教育する必要はありません。

事前言語解析のNLC (Natural Language Classifier)と画像認識のVR (Visual Recognition) は有料アカウントのみ利用可能となります。

ちなみに無料のライト・アカウントでなく、通常の有料のWatsonを使った場合には、VRでは画像一枚あたり0.21円とかになります。1000回画像認識しても、210円なので高くはないですよね!

上のカタログ画面の中から「Conversation」を選んでチャットボットを作ってみましょう。以下の画面に表示されるように、Conversasionは月1万 API呼び出しまで無料です。また、5つのWorkspace(作業領域)で25のIntent(意図)、25のEntity(対象)までが無料です。下の「作成」をクリックして自分で作ってみましょう。

以下の「Launch Tool」ボタンをクリックし、再びIDでログインしてから「Create」ボタンをクリックしてください。自分のWatson Conversationの作業領域が作られます。

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

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

 

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

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

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

以下のような会話の流れの最初の箱(Node)が表示されますので [ようこそ]をクリックして、下の[Add a variation to this response] のところに「Watsonについて聞いてください」とインプットして上の[X]をクリックして戻ります。

最初の[ようこそ] の右のオプションをクリックすると[Add child node]が出てくるのでクリックして、その後のWatsonの対応を作成します。

[Name this node]のところは「Watsonって何?」などと入力します。[Enter an intent, entity …] のところには、[# intent] をクリックしたら表示される、先ほどIntentsで意図を定義した [#what_is_watson] を選択します。これはユーザーが何か質問してきた時に、「Watonって何?」という意図であるとWatsonが解釈した時に呼び出されます。その時に表示したい返答を [Enter response] のところに入力しまが、ここでは 「WatsonはAI技術を応用したサービスです。何について知りたいですか?」 と入力しました。[いらっしゃいませ。ご用件を入力してください。]は右の [-] をクリックして削除しておきましょう。そのまま上の [X] をクリックすると保存されて元に戻ります。

戻った時に表示されている [Watsonって何?] のボックスの右のオプションで [Add child node] をクリックし、次にWatsonのサービス名が入力された時の対話を定義します。[Name this node]のところは「Watsonサービス」などと入力します。[Enter an intent, entity …] のところには、[@ entities] をクリックしたら表示される、先ほどEntityで対象を定義した [@watson_services] を選択します。次に表示される[operators]は [: is] を選択すると[@watson_services:会話]となります。右の[⊕]をクリックして[and]を[or]に変更し、同様に [Enter an intent, entity …] のところにentityの登録を繰り返してください。

その下の返答[Enter a response]のところに 「<? @watson_services ?> は提供されています」 と入力します。この 「<? @w…. ?>」 のところは、ユーザーが入力してきた単語を復唱してWatsonが画面に表示するための変数部分になります。結果以下のような画面になります。[X] で元の会話画面に戻ります。

次に、Watsonがこの返答をした後に前のWatsonの質問に戻るために、今作成した [Watsonサービス] の箱の右のオプションから、 [Jump to] ボタンをクリックします。そして[Watsonって何?]のノードのBOXを選ぶと[Jump to and … ] が表示されるのでその中の[wait for user input]を選んで次のインプットを待つようにします。

これでまず一通りの会話のパターンが完成しました!

では、Watsonにトレーニングした対話を使って、実際に会話をしてみましょう。
画面右上の噴出しマーク 「Ask Watson」 をクリックして会話モードを右に表示してください。最初のようこその「Watsonについて聞いてください」 が表示されたら、右下に 「Watsonって何?」 とインプットしてEnterを押します。するとWatsonは、以下で緑の四角で表示されているように 「#what_is_watson」 で定義した例文に合致すると認識し、意図(Intent)を理解します。 そこでその意図で定義した返答 「WatsonはAI技術を応用したサービスです。何について知りたいですか?」 を返します。

そこで右下に 「音声認識」 と入力してみましょう。

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

「深層学習」と入力してみると、最初のメニューに返ります。これは先ほどWatsonサービスの中に、深層学習はまだ登録していなかったためです。以下のように、[Watsonって何?] に [Add child node]して、@entityを選ぶのでは無く [anything_else] を選択すると、登録していない要素の場合に「分かりません」などと表示することも可能です。

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

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