Anwer Finding(Watson Discovery)のできること/できないこと

### Answer Findingとは
自然言語検索を行うときに使用できるベータ機能で、質問を解釈して単語や短文でのピンポイント回答を行います。
Watson DiscoveryのWebコンソール上で直接使うことはできず、Watson AssistantのSearch Skillと組み合わせるかAPIによって実行します。
(ご参考)[製品マニュアル](https://cloud.ibm.com/docs/discovery-data?topic=discovery-data-query-parameters#answer-finding)

以下に実行例で使用したデータを記載します。
[データ1] livedoor ニュースコーパス 
(https://www.rondhuit.com/download.html#ldcc)
    トピックニュース
    Sports Watch
    IT ライフハック

[データ2] IBM OpenPages 製品資料 
(https://www.ibm.com/support/pages/openpages-watson-documentation-version-82#opv8r2m0ja)

##### Answer Finding有効化 (Watson Assistant Search Skill)
Search Skill作成時に以下のキャプチャーのように"Emphasize the answer"をOnにします。
[Watson Assistant Webコンソール]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/3ac33f83-c9c0-dcd3-6fbf-f0d0ebc5568b.png)

##### Answer Finding有効化 (API)
Pythonでの実行例を記載します。
※queryの実行例のみ記載します。Pythonパッケージのインストールや認証情報の記載などAPI実行全体については以下の記事を参照してください。
[自然言語処理が楽になるDiscovery Query Language](https://qiita.com/har0yama/items/fbae8a275fe6d257434d)
Answer Findingは自然言語検索のオプションですので、"natural_language_query"の値として質問文を定義します。
自然言語検索の回答には、passageという本文の一部が含まれます。そしてAnswer Findingの回答は、passageという本文の一部から作成されます。つまり、文書全体からpassageとして一部が取り出されそこからAnswer Findingの回答が作られているのです。
passages以下の"enabled"と"find_answers"を'true'にすることでAnswer Findingが有効化されます。passageを元文書のどのフィールドから作成するか指定するのが"fields"です。"characters"はpassageの字数を定義します。

```
response = discovery.query(
  project_id = project_id,
  natural_language_query=\
  '2011年に生まれた男の子の名前の1位は’,
  passages={
  "enabled": 'true’, 
  "find_answers":'true’,
  "fields":['body’],
  “characters”:100
  }
).get_result()

```

#### Answer Finding 実行例

##### Search Skill連携 [データ1]
左側がAnswer Findingが有効化されていない検索、右側が有効化されている検索です。取得されている文書は同じですが、情報の見やすさに差があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/429eea62-9252-7d42-cffd-77a9c3fc32a5.png)

##### API(抜粋) [データ1]
```
"document_passages": [
        {
          "passage_text": “……",
          "start_offset": 0,
          "end_offset": 200,
          "field": "body",
          "answers": [
            {
              "answer_text": "大翔",
              "start_offset": 95,
              "end_offset": 97,
              "confidence": 0.98137116

```

### Answer Finding 5番勝負! ~答えを発見できるか!?~
Watson AssistantのSearch Skillと連携させて照会への回答を確認してみましょう。

#### 1. 質問文全体を理解できるか検証 [データ1]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/404cc105-cfa1-1eb0-473e-464750e86a18.png)
Answer FindinsがOffの場合は2011年の大河ドラマが検出されていますが、Onにすると2012年の大河ドラマが回答されました。

#### 2. はい/いいえで答えられる質問にどう対応するか検証 [データ1]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/5398d312-7b49-b925-a81a-3d1f82a1dcda.png)
Answer FindingがOffの場合はThinkPadに関する文書へのリンクがあるものの生産には関連しない文書を検出しました。一方Answer FindingをOnにするとNECで生産と書かれた文書を検出して回答できました。

#### 3. 適切な長さで回答できるか検証 [データ2]
単語や単文での回答ができることはわかりました。では、手順のようにある程度の長さが必要になる回答はできるでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/2e253abc-ad48-404d-2ada-ca9e9342db7e.png)
文書内の手順が記載された部分を抽出して回答しています。単語、単文以外の回答もできました。

#### 4. 複数の意味を持つ質問への回答を検証 [データ2]
意味があいまいな質問への対応を見てみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/6fa9d596-4683-9acc-edf4-7ac280be77cf.png)
「どのように」と聞かれたら人間でも回答に迷いますが、Answer Findingによって2つの意味で解釈した回答が返されました。

#### 5. 同義語や表現のバリエーションに対応できるか検証 [データ1]
同義語辞書を登録せずにAnswer Findingの機能でどこまで同義語に対応できるか検証します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/dcf25afc-102e-d047-ad7b-e128c11a03fd.png)
左側の2つの例では、ロンドンオリンピックをロンドン五輪に、金メダリストを優勝に変えてみましたが同じ回答が得られました。一番右の例では、オリンピックを示す語句を削ってみましたがやはり同じ回答が得られています。
バリエーションの対応範囲は検索対象のデータによって異なるようで、製品マニュアルのように同じような内容の文書が多い場合は語句や表現によって結果が変わりやすいです。

### Answer Findingができないこと

#### 1. 関連性トレーニング
Watson Discoveryには関連性トレーニング機能がありますが、Answer Findingにはその結果が反映されないため注意が必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/f02d9588-1840-bdd5-f1e1-a0ba92a92591.png)

#### 2. 複数の文書を集計もしくは要約した回答
検索対象は複数の文書やコレクションであり、同一文書内の複数の文を結合して回答することも可能ですが、回答は単独の文書から抽出して作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/27566fbc-1c68-a40f-b19f-5e33e81d71e7.png)
上記の例のほかに、分割された複数の文書を参照して要約し1つの回答にすることもできないため注意が必要です。

#### 3. 回答の正しさの評価
Watson Discoveryは文書検索による意思決定を支援しますが、結果は常にユーザーが判断する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/b2e4c88e-65d2-bd65-7cdc-b50d41804360.png)

#### 4. 予測
回答は投入されたデータから抽出されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159010/de649e94-d39f-1be6-4c59-d798684cf2f3.png)
投入されたデータセットに存在しない内容や、データセットの情報を基にした分析や予測は回答できないため注意が必要です。

### まとめ
##### Answer Findingができること
- 単語や短文での回答
- 照会文の文脈を理解した回答
- はい/いいえ形式の質問への対応(回答は単語あるいは短文)
- あいまいな(複数の意味を持つ)照会文への回答

##### 要注意事項
- 関連性トレーニングの結果への反映
- 複数の文書の要約や集計による回答
- 取り込んだデータの範囲を超える回答や予測



## お断り
このサイトの掲載内容は私自身の見解であり、必ずしも所属会社の立場、戦略、意見を代表するものではありません。 記事は執筆時点の情報を元に書いているため、必ずしも最新情報であるとはかぎりません。 記事の内容の正確性には責任を負いません。自己責任で実行してください。