Watson Discovery へFAQデータを取り込んでみる

#はじめに
昨年（2018年）の10月から11月にかけて、[FAQ集をWatson 使ってどのように活用できるか試行錯誤](https://qiita.com/strysd/items/9415d52948fb55a462b3) しました。その時は Watson Discovery を FAQ 集活用のために使うことは難しい、と判断しました。2019年2月に Smart Document Understanding (SDU) が実装されたため、再度試すことにしました。

- 注意：将来的に何らかのアプリケーションをリリースすることをお約束する記事ではありません。

#使用する素材
[Zend Server for IBM i](http://www.zend.co.jp/products/server/v9/index.html) という、IBM i 上で PHP 実行環境を構築・運用するための製品があります。前回試した時と同様に、その製品の [FAQ](http://www.zend.co.jp/support/server/index.html)を用いることにしました。緑色の四角で囲んだページを使用しました。みなさんが試すときは、ご自分の会社、組織、団体で著作権をお持ちの FAQ データで試してみてくださいね。 
<img width="830" alt="32a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/bea5d8bc-99c8-a3dd-7c5c-9df51e0eff08.png">

Web Crowl (beta) 機能では、SDU が使用できません。そのため、Excel に FAQ のテキストをコピーし、縦長の同一ページ内に質問と回答が横に並んでいるように整え、PDF 形式へエクスポートしてから取り込むことにしました。
Excel 形式のまま取り込むこともできますが、質問と回答が別のページに分かれてしまうことがあります。（セル内のテキストが多いため？）
扱いづらいため、PDF 形式にすることにしました。
FAQのカテゴリーを分けていましたが、そのカテゴリー名も取り込み対象にしました。この画像の例では、50行目のように質問の列に記載があって回答の列に記載がない場合に該当します。試してみた結果からいうと、ラベル付け作業のしやすさの点ではカテゴリー名を別の列に分けたり、書式を変えたほうが良かったですね。
<img width="528" alt="33a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/49cc8579-ce11-dbac-bc88-34261761363b.png">

#取り込み作業
FAQ 集を取り込むためのコレクションを作ります。[情報通信白書を題材に Smart Document Understanding を使ってみた](https://qiita.com/strysd/items/42789b2475415fae6798) と同じ作業なので、軽く流していきます。
<img width="464" alt="30a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/c5ea1888-a4c8-4573-82a2-5bb48ec302a0.png">

名前は、zendfaq としました。 
<img width="239" alt="31a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/32909073-37ad-feb8-3ec2-8f77e5df6de7.png">

雲の画像が出てきたので
<img width="251" alt="35a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/7d92be7d-a50d-ee22-9a43-bb3a2beb1e12.png">

PDF 形式にエクスポートしたファイルを指定します。
<img width="369" alt="36a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/84f0e050-6362-d077-da3e-f51b0f054259.png">

#ラベル付け
取り込みが完了したら、Overview タブで上向き矢印で示した Add fields リンクをクリックします。
<img width="687" alt="37a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/f2fdca50-4b49-d726-4eae-a4820c7e50b2.png">

ラベル付けする画面が表示されます。この記事で使用するラベルは、右向き矢印（丸１）で示した3種類です。FAQ 集なので、質問および回答をそれぞれ1件ごとに範囲指定してanswer および question ラベルを付けていきます。FAQ のカテゴリーのラベル付けには subtitle を使用しました。
最初のページは手間がかかりますが、2ページ目以降からは自動でラベル付けされた箇所が多くなっていきます。そのため、作業を進めるごとにラベル付けの手間は減っていきます。各ページのラベル付けができたら下向き矢印で示した Submit page（丸２）ボタンを押して次のページへ移ります。最後のページまで来たら、左上の Enrich fields タブ（丸３）を選択します。
<img width="897" alt="38a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/741dc576-9a93-7559-645d-5fb4c15a1a4f.png">

この記事では、text は使いませんので、text に対するエンリッチメントの定義は削除してしまいましょう。代わりに左向き矢印で示した入力欄で answer と question を追加します。それぞれ、Keywords extraction（キーワード抽出）および Entities extraction（エンティティ抽出）を追加しましょう。
<img width="402" alt="40a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/0ad708d0-30f8-2418-b476-d9b6226a88b2.png">

下向き矢印（丸１）で示したようにエンリッチメントを追加しました。次に上向き矢印（丸２）で示した Manage fields タブを選択します。
<img width="400" alt="41a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/c6814022-be20-2bb4-f7b9-aad57e0f444b.png">

FAQ のカテゴリーをラベル付けするために使用した subtitle で文書を分割することにします。右向き矢印（丸１）の入力欄で指定します。最後に右上の右向き矢印（丸２）で示した Apply change to collection ボタンを押します。
<img width="898" alt="42a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/ef2b24a3-ad14-0120-aa48-31351c433c5d.png">

処理が完了すると、subtitle を８か所で使用したので、文書が９件に分割されます（丸１）。fields が４種類と表示されます（丸２）。スキーマを確認してみましょう（丸３）
<img width="727" alt="45a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/b77c8902-7ca0-3048-3e81-0009b39f5600.png">

#スキーマおよびクエリー確認
分割されたそれぞれの文書に含まれる field を View data scheama の画面で確認できます。左向き矢印で Build Query の画面も確認してみましょう。
<img width="898" alt="46a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/18b321eb-3287-541b-a340-fab24db5fbb3.png">

Build Query では、answer、question および subtitle を使用して問い合わせができるようになりました。前回試した時は、キーワード一致した前後が表示される全文検索のようなものだったのですが、条件指定して絞り込みできるようになりました（丸１）。結果の表示も、ラベル付けの時に範囲指定しながら指定した answer および question １件単位で表示されるようになり、見やすくなりましたね（丸２）。
この記事の画像の入力画面および結果画面であれば、データベースのカラムにデータを突っ込んで SQL 検索することでも実現できそうですが、前回試した時に比べて SDU による恩恵を実感できました。
<img width="919" alt="47a.png" src="https://qiita-image-store.s3.amazonaws.com/0/27855/d6c031a6-9aa5-227d-d6b7-c7ea8753ad34.png">

#まとめ
前回 FAQ 集の活用を考えた時は、各質問のカテゴリー分けを NLC に覚えさせて、「ここに目的の質問の答え載ってますよ」と掲載ページを案内する使い方が現実的かな、Watson Discovery はまだ使いにくいな、と考えていました。
SDU 実装による機能改善が実感できたので、考えを見直す機会にしたいと思います。