Watson ConversationのTutorialを日本語でやってみた （前編）

#はじめに

[Watson Conversation](http://ibm.biz/BdsrJ6)(以下、Conversation)は[IBM Watson](https://www.ibm.com/smarterplanet/jp/ja/ibmwatson/)で自動応答を実現する対話アプリケーションプラットフォームであり、サービス提供終了が発表された[Watson Dialog](https://www.ibm.com/watson/developercloud/dialog.html)の後継にあたります。豊富なGUIにより初心者でもすばやくかんたんに応答システムを作成することができることが特徴です。

すでに[Watson Developer Cloud](http://www.ibm.com/watson/developercloud/)には[Conversationのチュートリアル](http://www.ibm.com/watson/developercloud/doc/conversation/tutorial_basic.shtml#tutorial_login)が用意されており、[IBM Bluemix](https://www.ibm.com/cloud-computing/jp/ja/bluemix/)からConversationを使用する手順を順を追って体験することができます。
ただし、このチュートリアルは英語なので、本記事ではこれを日本のユーザーにもわかりやすく日本語で実施してみました。

#チュートリアルの前に

実際にチュートリアルを実施する前に必要最低限の事項を説明します。

##自動車チュートリアル

本チュートリアルで作成するのは、自動車に搭載する応答システムをごく単純化したものです。運転手や同乗者をユーザーと想定して、ユーザーとの会話の中からユーザーの目的を認識して、適切な応答を返すという動作をします。

自動車向けということで、たとえば次のような会話をさせることが目標です。

- 会話例(1)
>ユーザー：こんにちは。
>Watson：こんにちは！ご用件はなんでしょうか？

- 会話例(2)
>ユーザー：ヘッドライトをつけて。
>Watson：わかりました。ヘッドライトを起動します。

- 会話例(3)
>ユーザー：音楽を流して。
>Watson：わかりました。どんな音楽が聞きたいですか？
>ユーザー：クラシックにして。
>Watson：わかりました。クラシックを流します。

##intent, entity, dialog

Conversationで応答システムを作成する上で理解しておく必要があるのは、次のintent, entity, dialogの3つの要素です。
Conversationではこの3つを定義していくことで応答システムを作成します。チュートリアルでもその流れを追っていきます。

- **intent**:
ユーザーからの呼びかけに含まれる目的です。
Conversationはユーザーからの呼びかけを分類し、ユーザーが求めている目的を理解します。
intentを定義するときは、Conversationがそのintentを識別できるようにするための発言例をあわせて追加します。

- **entity**:
ユーザーからの呼びかけに含まれるキーワードです。
目的(intent)の対象物を指定するなどして目的を補足し、Conversationのユーザー目的の理解を助けます。
entityを定義するときは、Conversationがそのentityを識別できるようにするためのentity値とその類義語（同じ意味で異なる表現）を追加します。

- **dialog**:
ユーザーからの呼びかけとそれに対するWatsonからの応答の組み合わせです。
ユーザーからの呼びかけを受け取るとそのintentとentityが識別され、dialogの中でそれらに対応する正しい応答が選択されます。
一度のやりとりに対応する単一のdialogであることもあれば、何回かのやりとりに対応する木構造のdialogであることもあります。

##自動車チュートリアルのintent, entity, dialog

本チュートリアルで自動車チュートリアルを作成するために定義するintent, entityを示します。
dialogに関しては[後編（次回）](http://qiita.com/sukusuku_watson_editorial_room/items/e3111d2ccce996db7feb)で示しますが、上述の会話例は本チュートリアルで定義するdialogの一部です。

- **intent**

| intent | intentの用途 | 発言例 | 
|:--|:--|:--|
| #起動  | 車載機器（ラジオ、ワイパー、ヘッドライトなど）を起動させる| 明かりをつけて、音楽を流して、ラジオを流して、エアコンをつけて、ヘッドライトをつけて |
| #あいさつ |Watsonに向かって話しかける| やあ、どうも、おはようございます、こんにちは、こんばんは |

- **entity**

| entity | entityの用途 | 値　（※（　）は類義語） | 
|:--|:--|:--|
| @機器  | 起動可能な車載機器 | 音楽（ラジオ）、ヘッドライト（ライト）、エアコン（空調） |
| @ジャンル | 選択可能な音楽のジャンル | クラシック（交響楽）、リズム・アンド・ブルース（R&B）、ロック（ポップ）|

- **dialog**

[後編（次回）](http://qiita.com/sukusuku_watson_editorial_room/items/e3111d2ccce996db7feb)で説明します。

#チュートリアル

いよいよ、チュートリアルを実施します。

チュートリアルは下記のような構成となっています。
- Stage 1: サービス作成
- Stage 2: ワークスペース作成
- Stage 3: intent作成
- Stage 5: entity作成
- Stage 6: dialog作成
本シリーズではこのチュートリアルを前後編に分けて実施します。
- 前編（今回）：Stage 1～Stage 5
- [後編（次回）](http://qiita.com/sukusuku_watson_editorial_room/items/e3111d2ccce996db7feb)：Stage 6

（※リンク先のチュートリアルでは、番号付けにミスがあるようでStage4が抜けています。本記事でもそのままこの番号に準拠します）

##Stage 1: サービス作成

チュートリアルを開始するには、まずConversationサービスのインスタンスを作成してツールを起動します。

>1. Bluemixにログインします。
>2. `カタログ`をクリックし、`Watson`の`Conversation`をクリックします。
![WS000006.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/8a4768b6-2e44-88c3-1a93-7ccb09c0205a.jpeg)

>3. `サービス名：`欄に`conversation-tutorial`と入力し、`作成`をクリックします。
![WS000007.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/c84b4469-4275-1523-e75b-c56bccddb460.jpeg)

>4. ダッシュボードページにて`Launch Tool`をクリックします。
![WS000008.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/b3431fc6-2f92-7ab9-3701-fe36d045a62a.jpeg)
>5. `Log in with IBM ID`をクリックします。
>![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/46364db5-a5c5-2459-9f4b-fa46135cb888.jpeg)
>`Create workspace`ページが開きます。
>![WS000001.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/9185be61-315b-a27c-d76c-5b25d0b5ae07.jpeg) 

##Stage 2: ワークスペース作成

ワークスペースとは、サービスの動作を定義した情報を格納するためのものです。
ワークスペース内のツールを使用してConvesationサービスの設定を行います。サービスインスタンスに対応するタイルをクリックしたとき、ワークスペースがまだ存在しない場合には作成するように要求されます。ワークスペースは複数作ることができ、ワークスペースページにそれぞれタイルとして表示されます。

>1. `Create workspace`ページにて`Create`をクリックします。
>![WS000001.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/9185be61-315b-a27c-d76c-5b25d0b5ae07.jpeg) 
>2. `Name`欄に`自動車チュートリアル`と入力し、`Create`をクリックします。
>![WS000002.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/71798cf4-b9e2-b66f-2582-635d4f3963ca.jpeg)
新しいワークスペースが作成されダッシュボードのタイルとして表示されます。
>![WS000003.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/bd5f0437-48b2-656c-d92c-45f4fd516a26.jpeg)


##Stage 3: intent作成
`Intents`タブにて下記手順により前述の2つのintentを定義します。
以下は、`#起動`intentを作成する場合の例です。

>1.ワークスペースページにて`自動車チュートリアル`ワークスペースタイルをクリックします。`Intents`タブにワークスペースが開きます。
>![WS000004.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/f59debb9-4908-2e50-5331-ff279affdcb5.jpeg)
>2.`Intents`タブにて`Create new`をクリックします。
>![WS000005.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/f4855f75-9680-a06b-9693-6570ec4186f8.jpeg)
>3.`Intent name`欄に`起動`と入力します。
>![WS000009.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/3a6bb096-2d21-b243-bc84-a95ba213fdfc.jpeg)
>4. `#起動`intentの発言例を追加します。たとえば、`User Example`欄に`明かりをつけて`と入力してEnterキーを押すと、発言例`明かりをつけて`がintentに追加されます。
>![WS000012.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/ac39efec-4b90-99c9-ffd5-02f6f4791de2.jpeg)
>5. 同様の手順を繰り返して残りの発言例も追加し、`Create`をクリックします。
>![WS000014.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/4dd69831-0565-4903-18de-a024f020b0e6.jpeg)
>`#起動`intentが作成され`Intents`タブに表示されます。
>![WS000015.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/5797a734-657e-7c10-2972-37f99dca0703.jpeg)

同様の手順を繰り返して`#あいさつ`intentも作成します。
![WS000016.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/3a2b8467-2926-54d2-8f60-44c5da358d1a.jpeg)
![WS000017.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/6602738f-b14e-742b-70e7-3a698db9a4ae.jpeg)

##Stage 5: entity作成

`Entities`タブにて下記手順により前述の2つのentityを定義します。
以下は、`@機器`entityを作成する場合の例です。

>1. `自動車チュートリアル`ワークスペースページにて`Entities`タブをクリックします。
>![WS000018.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/ace9d2e1-120c-25bf-6fa9-c7c440890a7a.jpeg)
>2. `Entities`タブにて`Create`をクリックします。
>![WS000020.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/6009dae4-3628-cedb-b61c-635ffd548671.jpeg)
>3. `Entity`欄に`機器`と入力します。
![WS000021.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/85ad9d77-b278-c3ea-f5f3-6482ad86dd43.jpeg)
>4. `@機器`entityの値と類義語を定義します。たとえば、`Value`欄に`音楽`と入力して、さらに`Synonyms`欄に`ラジオ`と入力してEnterを押すと、`ラジオ`は`音楽`を別の表現で言い換えることができることを意味します。
>![WS000022.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/71950f05-3775-d13c-604d-f7e1dbda61c5.jpeg)
>5. 同様の手順を繰り返して残りの値と類義語も追加し、`Create`をクリックします。
>![WS000023.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/f146c236-70c8-52d8-ac23-8c1975127fa7.jpeg)
>`@機器`entityが作成され`Entities`タブに表示されます。
>![WS000024.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/2bba4844-f46c-8836-d13c-ee73298e271a.jpeg)

同様の手順を繰り返して`@ジャンル`entityも作成します。
![WS000026.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/d1d5a875-57ea-5bad-7cb3-b84003344c32.jpeg)
![WS000027.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/6e240cfa-3df2-6e15-1ce5-fa18b91edefb.jpeg)

#おわりに（後編に向けて）

今回（前編）はStage1～Stage5を通して、サービスとワークスペースを作成した後、intentとentityを作成しました。

この状態ですでに、作成したintentとentityをWatsonとの会話において使用することができるようになっています。下記手順で確かめてみましょう。

>1.`Dialog`タブにて右上のマークをクリックします。
![WS000028.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/98b93241-4d31-e352-c12f-4831848db653.jpeg)
>2. `Enter some thing to test your bot`に`明かりをつけて`と入力しEnterを押します。続けて、`音楽`と入力してEnterを押します。
![WS000029.JPG](https://qiita-image-store.s3.amazonaws.com/0/146022/735bac6a-4e24-3049-4064-08b9c8007194.jpeg)

以上の結果からわかるように、すでにWatsonは作成されたintentとentityを識別しています。「明かりをつけて」が機器の「起動」を要求している発言であるということ、「音楽」が起動可能な「機器」であることを理解しているのです。
ただし、現段階ではまだユーザーからの呼びかけを識別できるだけで、応答を返すことはできません。応答を返せるようになるには、dialogを作成してあげる必要があります。

[次回（後編）](http://qiita.com/sukusuku_watson_editorial_room/items/e3111d2ccce996db7feb)はStage6を通して、いよいよdialogを作成します。

#お問い合わせ
ご質問がございましたら、こちらにもお問い合わせいただけます。

すくすくワトソン編集室: eb17685@jp.ibm.com