8
6

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.

IBM Watson Conversationサービスの初心者向け講座 (1) 環境設定とDialogの基本

Last updated at Posted at 2017-10-08

IBM Watson ConversationはチャットボットのようなUIサービスを簡単に作成できるサービスです。

サービス内容も興味深いのですが、実は、プログラミング環境としても面白いものです。また変更がすぐにチャットに反映されわかりやすいので、実はプログラミング初心者にも良い入門教材かもしれません。

私も初心者ですが、情報を整理してまとめつつ学んでいきますので、一緒に慣れていきましょう。まず第一回は環境のセットアップとDialog の理解から始めます。

Conversationサービスの作成と利用

IBM Watson Conversationの利用には、Bluemixアカウントが必要です。お持ちでない方は無料アカウントを作成してください。

Bluemixのカタログで「Watson」カテゴリにある「Conversation」をクリックします。

image.png

サービス名を入力し「作成」でConversationサービスが作成されます。

image.png

作成されたサービスの「管理」メニューにある「Lunch tool」アイコンからIBM Watson Conversationツールを起動します。

image.png

ワークスペースの新規作成

IBM Watson Conversationツールが起動したら上部にある「Create」ボタンでワークスペースを新規作成します。

image.png

ワークスペース名を入力して「Create」ボタンでワークスペースが新規作成されます。

image.png

Dialogの新規作成

新規作成したワークスペースをクリックして開き、Dialog のタブを選択すると以下のように表示されます。

image.png

ここの文章は翻訳されていないので、簡単に訳しておきます。

Dialog がまだ作成されていません
Dialog は intents(意図)、entities(要素,エンティティ)、あなたのアプリケーションからのcontext(文脈)を使用して、それぞれのユーザーの入力にresponse(応答)を返します。あなたのユーザーが何を入力すれば、あなたのbot(ボット,自動応答プログラム)がどのように返答するのか、Dialogを作成して定義してください。

「Create」で新しい Dialog の作成を開始すると、以下の画面になります。

image.png

初期状態の確認

Dialog は空ではなく、既に2つのノードが定義されていますね。作業を始める前に、この2つのノードを確認しておきましょう。

ようこそ(welcome)ノード

Dialog も他の多くの開発環境と同様に、処理は上から下に、そして左から右へと流れていきます。なので会話が開始されると、最初に実行されるノードはいちばん上にある「ようこそ」と表示されたノードになります。

ノードをクリックしてノードの詳細画面を表示してみます。

image.png

condition(実行条件)

最初のセクションは「If bot recognizes:」で、これはノードの前提条件を設定するところです。

上にある赤枠、"welcome" をみてみましょう。これがこのノードのconditionで、このノードの実行条件を設定しています。ここに記載された条件が成立していればこのノードは実行されますし、条件が成立していなければノードはスキップされます。

condition(実行条件)とは何でしょう?より理解を深めるため、右側にある+アイコンをクリックしてみます。

image.png

+アイコンで追加の入力欄が表示されますが、その下に簡単なヘルプもあります。welcome についても記載がありますので、全体を訳しておきましょう。

以下による選択:
# intents (意図)
@ entities (要素,エンティティ)
$ context variables (文脈における変数)
共通の条件:
welcome システムによって会話が開始された時に条件が成立する
anything_else 利用者の入力が全く条件にあわなかった時に成立する

"welcome" が指定されたこのノードの実行条件は「会話が開始した時」のようです。

respond(実行内容)

そして条件が成立した時、実行される内容が二番目の「Then respond with:」のセクションで定義されています。

今回は「いらっしゃいませ。ご用件を入力してください。」という文が指定されていますので、これがそのまま利用者に表示されます。

右側にあるアイコンから「Open JSON editor」を選択すると、実行内容の定義が JSON 形式で編集できます。より高度な処理を記載したい場合に利用する、感じでしょうか。

image.png

finally(実行後の対応)

最後のセクション「And finally」は、ノードの実行後にどうするか、を設定するところです。

選択肢はシンプルで、以下の2つしかありません。

image.png

今回、選択されている "Wait for user input" は、そのままの意味で「利用者の入力を待つ」ことを示しています。

それに対して "Jump to..." は、他のノードへの移動を指定します。これはもう少し先で説明します。

その他(anything_else)ノード

では、もうひとつ定義されているノードに移動しましょう。さきほどのノードと違うところを中心に見ていきます。

image.png

condition(実行条件)

condition(実行条件)は "anything_else" が指定されており、これは先ほどのヘルプにありましたね。「利用者の入力が全く条件にあわなかった時に成立する」でした。

最後にこの "anything_else" ノードがあるのは、Dialog 定義では必須のことのようです。

respond(実行内容)

respond(実行内容)ですが、今回は文章が二種類登録されているのが注目点です。複数の返答文が登録されている場合、これらのなかのひとつが選択され、ユーザーに表示されるようです。

複数の返答がある場合、その下にその選択条件が示されています。このノードでは "sequential(連続的な)" つまり用意された文書を順に選択して表示してくれるようです。

これは "random(無作為の)" に変更することができ、この場合は順番ではなく、ランダム(無作為)に返答が選ばれるようです。ただ無作為でも、同じ返答が連続することはないそうです。

finally(実行後の対応)

このセクションは同じ "Wait for user input" なので説明を省略します。

会話の実行例

さて、この初期状態のままで、まず会話を試してみましょう。右上のチャットアイコンをクリックします。

image.png

チャット用の領域(Try it out)が表示されますが、ここで左側に注目です。会話を実行していくなかで、現在、選択されているノードがわかるようになっています。

image.png

いまこの状態は最初の「ようこそ」ノードのfinallyで指定された "Wait for user input" で入力待ちしている状態ですね。

では、適当に何か入力してみましょう。処理が先に進みます。

image.png

特に他の処理もないので、anything_else 条件が成立し、最後の「その他」ノードの実行になりました。"sequential"の設定どおり、最初の返答文が表示されています。

そして finallyで指定された "Wait for user input" でまたもや入力待ちをしています。

では、また適当に何か入力してみましょう。処理が先に進みます。といってもこの先に処理は無いので、最初(一番上)に戻ります。

image.png

処理が進みました… が、また「その他」ノードに戻ってきていますね。これはどうしてでしょうか?

勘の良い方は予想通り!だと思いますが、私は最初、ここで驚かされました… 処理は最初に戻ったのに、「ようこそ」ノードではなく、「その他」ノードにまた戻っているのはどうして?かと。

これ、実はconditionによる結果なんですね。処理は確かに最初に戻り、一番上にある「ようこそ」ノードから実行されそうになりました。しかし「ようこそ」ノードのconditionは "welcome" でした。これは会話の最初にしか成立しない条件なのです。

つまり処理は最初に戻ったのですが、「ようこそ」ノードは条件があわずスキップされたわけです。だから二番目の「その他」ノードが実行の対象になったのです。

というわけで実行された「その他」ノードですが、二度目の実行なので "sequential"の設定どおり、二番目の返答文が表示されています。

そして finallyで指定された "Wait for user input" でまたもや入力待ちになります。

以降は同じ流れで、入力するたびに「その他」ノードの返答文が順に表示されていくだけ、になります。

image.png

これで初期ノード2つをだいたい理解できましたね。

まとめ

以上、今回は Dialog の初期ノード2つの説明だけで終わってしまいました。

しかしノードの3つの構成要素、condition(実行条件)、respond(実行内容)、finally(実行後の対応)は説明できましたし、実行の様子を観察する方法も紹介できました。スタート地点としては必要十分でないかとおもいます。

次回 からはDialogの実際の設定をいろいろ試していきましょう!

8
6
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
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?