BluemixのWatson Conversation(beta)を触ってみた

  • 25
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

【注】Conversationは2016/07/11にDialogなどの機能が追加されて本番になりました。(これに伴いDialogはリタイアとなります)当記事はベータ時点のものなので古くなっています。既に日本語対応も済んだので2016年10月時点で新しい記事をこちらに投稿しました。以下は保存目的でそのまま残します

まだ現時点(2016/06)ではベータで一部の機能しか実装されていませんが、Watsonの対話式サービスを簡単に作れるConversationというサービスが公開されていたので、少し触ってみました。
image

Conversationとは

要はチャットボットのようなコグニティブなエージェントをサクッと作れる、とのこと。現在でもDialogやNLC、R&R等を組合わせて作ることはできますが、既存のサービス群をラップして、もっと簡単に作れるようにしよう!ってことかな?と理解しました。現在はベータ版のため以下のような制限がありますが、徐々に機能追加されるのでしょう。
* 英語のみ
* NLC( National Language Classifier)相当の機能のみ
* 今はAPIでトレーニングできない。基本UIで行う

このQAによると近々EntityやDialogが使えるようになるよ、このQAではAPIのトレーニングも夏遅くには、とのこと。

やってみる前の前提知識(用語)

ワークスペース

Conversationのサービスのインスタンスの中に複数のワークスペースを定義できます。(定義はUIにて) QA的な用途を想定すると、サービスの中の個々のワークスペースが個々のQA領域に相当するものと思っておけばよいでしょう。(「トピック」的な感じ?たとえば商品特性の問い合わせ用のワークスペースと製品の操作方法の問い合わせのワークスペースを別々に用意するようなイメージです)

IntentとExample

現時点ではNLC限定なので、要はIntent = 質問 Example=回答(分類結果)と思っておけばいいでしょう。トレーニングのイメージですが、IntentとExampleが対(ペア)になったCSVファイルを用意してアップロード、その後ブラウザーのUIで個別にトレーニングしていくような感じです(後述)

やってみる

入門編のチュートリアルがあるのでやってみます。いくつかハマった点があるので都度書いておきますね。

1.BluemixのIDでログインします(割愛)
2.まだベータなのでBluemix Catalogの一番下のlabsを選択します
image

ここでWatsonの箇所に「会話」があります。(Conversationじゃなくて「会話」かよ!まあ間違ってはいないが、、)
image

3.インスタンスを作ります
image

4.以下のような管理パネルになりますが、なぜか管理ツールを起動する方法が表示されません。
image

ここでブラウザーの言語設定を英語に変えてから改めて画面をリロードすると出てきます。以下はchromeの場合の例です。
image

今度は「Launch Tooling」のボタンが出てきましたね。押します。
image

5.ワークスペースを作ります(Create+のボタン→適当な名前を付ける)

image

image

できました。
image

6.ここまでできたら、初期投入するデータを準備しましょう。github上のサンプルアプリここにcar_intents.csvとしてIntentとExampleのペアが400個くらい準備してあります。ただ、これ、そのままブラウザーでダウンロードするとHTMLタグが付いているので使えないんですよね。。仕方がないのでコピペしてExcelに貼り付けてCSVで保存します。結果は以下のような感じになります。

image

様々なIntent(質問)に対してExample(分類結果)を割り当てている感じですね。(分類しますので Intent:ExampleはM:1の関係)

7.CSVデータが準備できたらGet Startedを押してファイルをアップロードします。

image

image

8.インポートが終わると一覧画面が表示されますので、10秒くらい待ってブラウザーで画面をリロードすると以下のように入力ファイルがExample毎に分類されています。
image

右上の矢印で展開すると、そのExampleに紐付いたIntentが表示されます。
image

9.対話をテストしてみます。右上の下記ボタンをクリック
image
一番下の入力欄に質問や指示を入力すると対応するExampleが戻ってきます。
image

Intentのテキストそのまま(I need more lights)が正しく#turn_onに割り当てられるのは当然として、別の表現(Would you please turn the lights on ? )でも#turn_onに割りあてられていますね。でも「light, please」という言い方は#off_topic(わからん)になってしまいました。

10.では「light, please」という言い方でも#turn_onが返ってくるようにトレーニングしましょう。#off_topicの青い部分をクリックすると期待するExampleを入力できます。
image
ここを#turn_onに変更すると早速学習が開始されるのでボックス右上の→を押してリロードします。
image

turn_onのIntentに「light,please」が追加されていますね。
image

もう一度「Light,please」と入力すると、今度は#turn_onが返ってきました。ちゃんと学習してますね!めでたしめでたし。
image

11.左上のAdd intentでIntentとExampleを手で入力することもできます。
image
たとえばこんな感じで年齢に関するものを手で登録しました。(Intentは最低5つは必要だそうです)
image

すると新しく#AgeのExampleが登録されます。ご覧のとおり、パネルで編集や削除もできます。
image

質問を入力すると、末尾にSIRがついてる、など多少の表現の「ゆらぎ」があっても、ちゃんと#Ageにわりあてられていますね!
image

サンプルアプリについて

以上、サービスのみで進めてきましたが、github上のサンプルアプリがあります。下記の「Deploy to Bluemix」ボタンを使うとNode.jsのインスタンスとConversationのインスタンスを一発で準備してくれるのでとっても便利です。
image

アプリの使い方は上記githubのサイトに書いてあるのですが、(このアプリのお約束にすぎませんが)一点だけセットアップの注意点。node.jsのアプリが使うべきワークスペースを識別するためにユーザー環境変数 WORKSPACE_IDをセットする必要があります。

サービス上に作ったワークスペースのView Detailsをクリックした結果表示されるIDを
image

image

Node.jsの環境変数の ユーザー変数 として設定してからアプリ再起動してください。(VCAP_SERVICESではないですよ~)
image

以下は先ほど「やってみる」で使ったcsvをインポートした結果の画面です
image

おわりに

ということで、まだNLC的な機能しか使えませんが、かなり簡単に対話アプリが作れそうな予感。今後の機能追加に期待してます~。

参考文献

Conversationのドキュメント
github上のサンプルアプリ