24
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【古い記事です】BluemixのWatson Conversation(beta)を触ってみた

Last updated at Posted at 2016-06-15

:warning: 当記事は2016/6月に投稿しましたが、現時点(【2019/2月】)では既に古くなっています。記事自体はアーカイブの目的でこのまま残しますが、当記事の内容を参考になさらないようにお願いいたします。代替の記事としては下記などがございます。


まだ現時点(2016/06)ではベータで一部の機能しか実装されていませんが、Watsonの対話式サービスを簡単に作れるConversationというサービスが公開されていたので、少し触ってみました。 ![image](https://qiita-image-store.s3.amazonaws.com/0/108535/3a1491ba-5ed7-c096-6416-ea2282000687.png)

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上のサンプルアプリ

24
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?