Watson DiscoveryのPremiumプランで提供されている機能を使ってみました。
今回はAnswer findingというβ機能(as of 2021/06/14)です。
#Answer findingとは
マニュアルの記述によると
https://cloud.ibm.com/docs/discovery-data?topic=discovery-data-query-parameters#answer-finding
- 照会に対する**「短い答え」**とその確信度を返す
「答え検索に関する注記」として以下のようなことが書かれていました(詳細はマニュアルを参照してください)
- 複数の文が互いに近ければ、文を跨って答えを探す
- 例えば、“When did IBM purchase Red Hat?”という質問に対して、“IBM acquired Red Hat for $34 billion. The deal closed in July of 2019." と書かれていても July of 2019 と回答してくれる
- 暗黙的な質問にも対応している
- 例えば:”What company developed the AS/400?”と質問しても“company that developed the AS/400”と質問しても回答を提示してくれる。
- 場合によっては長い文で答えを提示する時もある
- 例えば、「どのように」「どうして」などの質問
- 一方、短い答えが期待される質問に対しては短く答える
- 例えば、人や場所、日付を問う質問
ちょっと面白い注記としては以下のようなことも書かれていました(詳細はマニュアルを参照してください)
- 答えを見つけることはできますが、答えを作成することはできない。
- 例えば、"2020年の売り上げは?"という質問に対して、データの中に各四半期の売上が記されていたとしても、合計額を計算して提示することはできない。
- → さすがにこれができたらすごいですね
- 例えば、"2020年の売り上げは?"という質問に対して、データの中に各四半期の売上が記されていたとしても、合計額を計算して提示することはできない。
- 長い文で答える場合、要約はしない
- 意見を尋ねる質問もできるが、その意見の妥当性を評価するようなことはしない
- 例えば、"アイシャドゥは青がいいかな"と質問した場合、文章内から"今年のアイシャドゥの流行色は青です。"というテキストを回答として提示するだけで、それが良いかどうかはあなた次第という感じ。
でも、なんだか凄そう!
#やってみた
##前提
DiscoveryのDocument Retrievalというタイプのプロジェクトを作り、ここからダウンロードできるlivedoorニュースコーパスのデータを投入済みです。
- Sports Watch
- ITライフハック
- 家電チャンネル
- MOVIE ENTER
- 独女通信
それぞれ300件ずつ合計1500件のデータを投入。
##まずは、Answer findingを使わない場合
「リアル・スティールの主人公は誰?」と質問すると
以下が回答して返ってきました。
Discoveryは全文検索なのでヒットしている文書として間違っているわけではないです。
「リアル・スティールの主人公は誰?」という質問をリアル
スティール
主人公
などに分割して検索をしているので、キーワードがヒットした文書が回答して返ってくるのは自然だと思います。
##いよいよ、Answer finding!
では、Answer findingの機能を使うとどういう結果が返ってくるのでしょう。
Answer findingはβ機能なので現在はAPIのみ提供とのことで以下のように実行してみました。
curl -X POST -u "apikey:u2l*****4oP" -d @answerfindings.json -H "Content-Type: application/json" "https://api.us-south.discovery.watson.cloud.ibm.com/instances/9a****b09/v2/projects/26*****54/query?version=2019-11-29" | jq '.results[].document_passages[].answers[] | {answer_text:.answer_text, confidence:.confidence}'
注意:便宜上 Answer finding の「短い答え」が記載されているデータのみに出力を絞っています。
curlで指定している answerfindings.json
の中身はこんな感じ。
ポイントはpassages
の各設定項目。
{
"collection_ids" : [
"6bb*****85"
],
"natural_language_query" : "リアル・スティールの主人公は誰?",
"return" : [
"document_id"
],
"passages" : {
"enabled" : true,
"per_document" : true,
"find_answers" : true
}
}
結果(上位3件)
{
"answer_text": "ヒュー・ジャックマン",
"confidence": 0.82901204
}
{
"answer_text": "息子マックス",
"confidence": 0.6774776
}
{
"answer_text": "父と息子",
"confidence": 0.17049855
}
{
"answer_text": "チャーリー",
"confidence": 0.14173211
}
お〜! ヒュー・ジャックマン
大正解!! すごいですねぇ〜!
#まとめ
今はβ機能ですが早く本機能として搭載して欲しいですね!
#お断り
このサイトの掲載内容は私自身の見解であり、必ずしも所属会社の立場、戦略、意見を代表するものではありません。 記事は執筆時点の情報を元に書いているため、必ずしも最新情報であるとはかぎりません。 記事の内容の正確性には責任を負いません。自己責任で実行してください。