[Watson] Dialogの利用開始手順と日本語化の設定


# 追記（2016.09.10）

[Watson] Dialog Serviceの廃止について
http://qiita.com/y_some/items/de4cdea1b60d36243c0d

# はじめに

今年に入って日本語化されたWatsonサービスの一つ、Dialog。

Dialogで何ができるかというと、以下の画像で一目瞭然。
Watsonと連続的に対話ができるサービスです。

![image](https://qiita-image-store.s3.amazonaws.com/0/122917/5e924365-ea26-08f9-eda8-5db324b17137.png)

これの元は公式の[quick demo](http://dialog-demo.mybluemix.net/?cm_mc_uid=01998166246914649063647&cm_mc_sid_50200000=1465015575)というもので、Dialogを体験することができますが、残念ながら英語での対話しかできません（2016年6月5日現在）。

Dialogを使うには対話シナリオが定義されたDialogXMLファイル（Dialog XML files）の作成が必要になります。
Watsonと日本語で対話しようと思ったら、当たり前ですが、日本語のDialogXMLファイルが必要です。

上記quick demoのDialogXMLファイルがGithubにリポジトリが公開されていましたので、その一部を自力で日本語化して動作させたのが上記画像です。（動作させているアプリについては後述）

[Dialogの公式ドキュメント](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/dialog/overview.shtml)はすべて英語で、ネットに出ている情報も多くありません。
私も取っ掛かりに苦労していますが、ここまでの作業を「初めの一歩」として公開します。

# 作業手順

## 概要

DialogサービスはAPIで提供されており、UIを持ちません。
UIで動作させるには、何らかのアプリが必要です。

公式のアプリとして「Dialog tool」というものが公開されています。

Dialog toolを使うと、DialogXMLファイルをブラウザから簡単にアップロードでき、さらにブラウザ上で対話のテストができます。

上記は私が作成した対話シナリオをDialog toolによって動作させた画像です。（自作のアプリではありません）

Dialog toolのリポジトリはGithubに公開されており、Bluemix上に簡単にデプロイすることができます。

本稿では、Dialog toolをBluemixにデプロイし、日本語化したquick demoのDialogXMLファイルをアップロードし、対話テストするところまでの手順をご紹介します。

## 手順１．Bluemixのアカウント取得

まだアカウントを持っていない方は、[こちらの記事](http://qiita.com/KenichiSekine/items/6ad49b25167b3f4cdb63)を参考に取得してください。

## 手順２．Dialog toolをBluemixにデプロイ

２－１） [こちら](https://github.com/watson-developer-cloud/dialog-tool?cm_mc_uid=01998166246914649063647&cm_mc_sid_50200000=1465015575)からDialog toolのGithubリポジトリにアクセス 

２－２）「Deploy to Bluemix」をクリック

２－３）以下のような画面に遷移するので「LOG IN」をクリック
![image](https://qiita-image-store.s3.amazonaws.com/0/122917/856d8aaa-2aa5-60d8-7831-ccbfe6024c13.png)

２－４）以下のようにデプロイ先が表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/122917/6e508fbb-0397-9a85-7d0a-4f782571d260.png)
ここで注意すべきは「REGION」です。
[こちらの記事](http://qiita.com/KenichiSekine/items/6ad49b25167b3f4cdb63)にもある通り、Bluemixは３か所のREGION（地域）が選択でき、一つのアカウントでどの地域のデータセンターも利用可能です（2016年6月現在）。
どのREGIONにデプロイしたのか覚えておかないと、「あれ？どこいっちゃった？」となりますので注意してください。
地域の切り替えはBluemixダッシュボードのアカウント設定で行います。
![image](https://qiita-image-store.s3.amazonaws.com/0/122917/dcfeba50-809b-f6a2-b033-c22cd1694a7d.png)

２－５）「DEPLOY」をクリックするとデプロイが開始されます。しばらく時間がかかります。

２－６）成功すると以下のような画面になりますので、「VIEW YOUR APP」をクリックすると、Dialog toolが起動します。
![image](https://qiita-image-store.s3.amazonaws.com/0/122917/837e4fd2-fd30-2880-6ca2-297148f3e5c0.png)

以下がDialog toolの実行画面です。
![image](https://qiita-image-store.s3.amazonaws.com/0/122917/2c98ea21-99d3-3002-8168-7571207a96f5.png)
上段の「Work with Dialogs」でXMLファイルをアップロードします。
下段の「Have a conversation」で対話のテストを行います。

Bluemixダッシュボードを見ると、今回の操作によってDialogサービスとDialog toolアプリケーションが同時に登録されたことがわかります。
![image](https://qiita-image-store.s3.amazonaws.com/0/122917/05b9f8e0-e54e-36d2-d29e-6b85a471d0df.png)


## 手順３．DialogXMLファイルのアップロードとテスト

３－１）[quick demo](http://dialog-demo.mybluemix.net/?cm_mc_uid=01998166246914649063647&cm_mc_sid_50200000=1465015575)にアクセス

３－２）「Fork on Github」をクリック　→Githubのリポジトリへ

３－３）「Clone or Download」－「DownloadZIP」を選択し、PCにリポジトリをダウンロード

３－４）ZIPを解凍すると「Dialogs」フォルダに「pizza_sample.xml」というファイルがあります。これがデモのDialogXMLファイルです。

３－５）XMLファイルの"LANGUAGE"エントリを"ja-JP"に修正します。
![image](https://qiita-image-store.s3.amazonaws.com/0/122917/42f7a72c-92be-f7b1-0385-1b6ea6eedf69.png)

３－６）今回はその他、何か所か適当に和訳しただけです。（笑）

３－７）あとは、Dialog toolの実行画面で、以下のような流れでシナリオのテストを行います。
（１）「Name」欄にDialogのシナリオを一意にする名前を入力します。
（２）「ファイルを選択」をクリックし、当該XMLファイルを指定します。
（３）「Upload」ボタンをクリックします。
（４）少々待つとDialogが生成され、以下のようなボックスが現れます。
![image](https://qiita-image-store.s3.amazonaws.com/0/122917/02445bbd-ff20-f776-2987-041304dedb23.png)
これをクリックするとWatsonとの対話が始まり「Type a respolse」欄でレスポンスを入力します。
（５）うまく動作しなかったら、XMLを修正し、「delete」ボタンでボックスを削除して（１）からやり直します。

# 次のステップ

quick demoのDialogXMLファイルを見ると、いろいろなXMLタグがあります。
DialogXMLファイルはコーパス（文例データ）やコーチングデータ（教師データ）というよりは、むしろスクリプトに近いものです。

各種XMLタグを理解する方法は、今のところ[公式ドキュメントのElement index](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/dialog/reference_nodes.shtml)（英語）を読み解くしかないようです。
quick demoの動作と対比しながら読むとよさそうです。

DialogAPIの呼び出し方法は、[API Reference](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/dialog/api/v1/#get-dialogs)で確認することができます。

APIの呼び出しはそれほど難しくなさそうですので、自分なりのDialogシナリオが自由に書けるようになったら、

- [Natural Language Classifier](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/nl-classifier.html)や[Retrieve and Rank](http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/retrieve-rank.html)と組み合わせてみる
- iOSのチャットアプリを作って連携させてみる
- WebAPIを作って[LINEのBOT APIと連携させてみる](http://qiita.com/betchi/items/8e5417dbf20a62f2239d)

など、いろいろ面白そうなことができそうですが、まずはここまでということで…