第3回 『質問応答』

皆様こんにちは,同志社大学の土屋誠司です.対話システムの第3回目の今回は,対話を盛り上げる機能の一つである質問応答について書いてみたいと思います.

質問応答は,その名の通り,ユーザからの質問に対して,対話システムがその回答をするというものになります.一般的なスマートスピーカーの機能をイメージしていただければ良いかと思います.

まず,対話システムがしなければならないことは,どんな質問をユーザがしているのか,質問のタイプを推定する必要があります.これにより,ユーザがどのような回答を求めているかを判断することができます.例えば「〇〇は,誰ですか?」と問われているのであれば,その回答は人名ということになります.「どこ」は場所か組織の名前,「いつ」は時間,「いくら」は値段か数値,「いくつ」は個数か年齢,そして「なぜ」は原因か理由が回答になります.

これらのように,いわゆる『疑問詞』がズバリそのままユーザの発話の中に入っていれば,その『疑問詞』から回答を絞り込むことができますが,もちろん『疑問詞』が入らないケースもあります.例えば,「あなたの年齢は?」と最後の「いくつですか?」が省略されることも往々にしてあります.このような場合には,前後にある単語から『疑問詞』を推定する必要が出てきます.

ちなみに,最も難しい質問タイプは「なぜ?」,「どうして?」などの質問です.それは,その答えが一言では言い表すことができず,長い文や文章にせざるを得ないこともあり,適切に回答しづらい質問ということになります.また,答えが一つに定まりづらく,人によって,出した回答に対する納得感,満足感に揺らぎが生じることからも,なかなか難しい質問ということになります.

質問の種類が分かれば,その回答が含まれていそうな情報源を検索し,絞り込んでいく作業になります.検索する際の処理は,いわゆる情報検索システムと基本的には同じということになりますが,違いは,その質問の回答となり得るものがその情報源に含まれている必要があるということです.また,検索して終わりとはならず,検索してきた多くの回答候補を基に,回答になり得るものを絞り込んでいく必要があります.一気に回答を調べれば良いような気もしますが,大量に情報がありますので,まずはざっくりと回答候補となり得るものを検索したのちに,しっかりと処理を掛けて回答まで辿り着くというのが一般的な手法になります.この辺りは,時間やコストとの兼ね合いになります.

回答候補から真の回答まで絞り込む際には,例えば,キーワードと近い位置関係にある回答候補は正解である可能性が高いという考え方から,質問文に含まれるキーワードとの位置関係として単語間の物理的な距離を使ったり,質問文と回答候補との構文解析結果(文法構造)が近いものは正解である可能性が高いという考え方から,構文的な類似性として単語間の構文的な距離を使ったりします.また,意味的な類似性である単語間の意味的な距離を用いることもあります.

例えば,「夏に売れる果物は?」という質問では,質問タイプは「なに?」ということになり,果物の名称が回答ということになります.質問中の「夏」と「果物」との関連性から「スイカ」が導き出せたとすると,「それはスイカだと思います」と対話システムはユーザに応答することができます.

次回は,対話システムに社会性を持たせるための挨拶応答について書いてみたいと思います.