Watson Retrieve and Rankの公式ツールを利用して質問応答システムを作る (2)

# 2017年11月1日追記

[[Watson] Retrieve and Rankのサービス終了について](https://qiita.com/y-some/items/fc0937e031a3ab52d459)

# 概要

本稿では、Retrieve and Rank Web interfaceという公式ツールを利用してRetrieve and Rank（以下R&R）のトレーニングを行い、簡単な質問応答システムを作るまでの手順をシリーズ化して解説します。

(1) R&Rおよび公式ツール利用開始〜回答データ投入
**(2) 質問データ投入〜Rankerトレーニング　※この記事で説明する部分**
(3) Node-REDアプリケーションとR&Rの連携

まだ[前回の記事](http://qiita.com/y-some/items/3dc83f9d8c3c3513ecc7)をお読みでない方は、そちらを先にお読みください。

前回は公式ツールを利用して回答データを投入し、Solrによる検索結果までを確認しました。
この記事では質問データを準備・アップロードして、回答との関連付け、そしてRankerのトレーニングを行っていきます。

# 免責事項

本稿におけるWatsonサービスに関する解説は執筆者の個人的な見解であり、公式資料に基づいていない内容を含みます。
また本稿の情報は2017年4月現在のものです。
必ず[Watson Developer Cloud](https://www.ibm.com/watson/developercloud/doc/retrieve-rank/index.html)などの公式資料も併せて確認してください。

# 質問データの準備

公式ツールにアップロードできる質問データの形式は、UTF-8のテキストファイルです。
レイアウトは単純で、改行をレコード区切りとする質問文の羅列です。

Rankerのトレーニングを開始するには、後述する「質問と回答の関連付け」を150件以上行う必要があります。（結構大変ですね…）

今回は、「歴史のある観光スポットを教えてください」「家族で楽しめる観光スポットを教えてください」といった感じの質問文を150個ほど用意しました。

# 質問データのアップロード

質問データができたら、公式ツールの「Content」タブ「Questions」タブの「Upload questions」ボタンをクリックします。
<img width="1231" alt="スクリーンショット 2017-04-29 17.49.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/a289f0e6-830e-1fcc-c687-37697f04726c.png">

以下のダイアログにて質問データファイルを指定し、アップロードします。
<img width="634" alt="スクリーンショット 2017-04-29 17.51.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/b4f0ad40-29ad-9cca-e549-2967778adc6a.png">

アップロードが完了すると以下のような画面に遷移します。
<img width="1226" alt="スクリーンショット 2017-04-29 17.52.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/c2206103-48f0-60c6-2201-4bf033022924.png">

# 質問と回答の関連付け

公式ツールの「Tasks」タブに移動します。「Priority training」の「Start」ボタンをクリックします。
以下のように、先ほどアップロードした質問文と、Solr検索による回答候補が表示されます。
この回答候補に対して、★マークで関連度を評価します。
<img width="1230" alt="スクリーンショット 2017-04-29 18.20.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/3e34b06f-ce3b-bc82-034b-a8d7075a559c.png">

| 評価 | 説明 |
|:-------|:-------|
| ★      | 関連なし |
| ★★     | 関連性はあるが回答としては不適 |
| ★★★    | 部分的には良い回答だが改善の余地あり |
| ★★★★   | 期待通りの回答 |

Solr検索による回答候補が不足な場合は、「See More Answers」または「Search and Find Answer」ボタンで別の回答候補を表示できます。

候補として表示された全回答に対して、★マークを1つ以上付けたら「Submit Rating」ボタンをクリックします。
（注）★マークを付けていない回答候補があるとボタンが押せません。

この作業をひたすら繰り返し、150件に達するまで続けます。
何件まで進んでいるかは「Performance」タブで確認することができます。

# Rankerのトレーニング

質問と回答との関連付けが150個に達すると、「Tasks」タブに「Train a ranker」というタスクが現れます。

ここまでの作業でトレーニングデータ（教師データ）が作成できました。
これでいよいよ**Rankerのトレーニング＝機械学習**が可能となります。

「Train」をクリックすると、Rankerのトレーニングが始まります。
<img width="406" alt="スクリーンショット 2017-04-30 20.02.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/48b02b03-c105-bc35-8fce-89bc86a20b75.png">

トレーニングが完了すると「Train a ranker」が消えて代わりに「Review」というタスクが現れます。
<img width="414" alt="スクリーンショット 2017-04-30 19.06.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/78e6f504-872b-50a6-e3bd-b52fdd7e0818.png">

「Start」をクリックし、上で行った関連付けの要領で、Rankerのレビューを行っていきます。

レビューが完了すると再度「Train a ranker」が有効になり、再トレーニングを行うことができます。

こうして、質問文の追加 → 回答との関連付け → Rankerのトレーニング → レビュー → 再トレーニングのサイクルを回すことで、Rankerの精度を高めていきます。

# Rankerの精度を試す

「Content」－「Try Out Watson」タブで、プルダウンの切り替えにより、Solrのみ、あるいはSolr + Rankerの検索を試すことができます。
<img width="1228" alt="スクリーンショット 2017-04-30 20.33.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/487cab3b-faa1-3009-55ae-5679292b40dd.png">


## Solrのみによる検索結果

<img width="1133" alt="スクリーンショット 2017-04-30 20.10.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/35543a79-77ee-f0a8-03c2-f8f3a574e20f.png">

## Solr + Rankerの検索結果

<img width="1169" alt="スクリーンショット 2017-04-30 20.09.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/787b6463-0983-6324-8871-d2d9a402c36a.png">

Rankerにより順位が変わっていることがわかります。

これで、Retrieve and Rankが使えるようになりました！

次回はRetrieve and Rankと連携する質問応答システムを、Node-REDを使って作成していきます。