前回、チャットボットとの対話には「タスク指向」と「非タスク指向」の2種類があることを説明しました。今回は、その対話を可能とする対話システムの種類を機能別に細分化してみましょう。
対話システムの分類
対話システムにはさまざまな分け方がありますが、ここではまず、機能に応じて下記の3つに分類したいと思います。
- 質問応答
- シナリオ対話
- 自由対話
以下、それぞれについて概要を説明します。
質問応答
「質問応答」とは、文字どおり、ユーザーの質問に応答する機能です。質問以外の「いい天気ですね」といった呼びかけなどには応答できません。通常、入力される質問内容はある程度限定されていて、多くの場合「富士山の高さは?」というような、回答が一意に決まるものが対象です。したがって、「男性が好きなものは?」のように回答が一意に決まらないものや、「あなたの年齢は?」のようにシステム自身のプロフィールや好みなどを尋ねる質問は、対象としていない場合もあります。
質問応答を実現するにはさまざまな方法がありますが、代表的なものとしては質問文から「回答タイプ」を推定する方法です。この方法は、「入力された質問文が何に関する質問で、それに関する何を回答すれば良いかがわかれば応答できる」という考え方に基づいています。
言葉だけだとイメージしづらいかもしれないので、もう少し具体的に見ていきましょう。
以下のように、富士山の標高や所在地などの情報(回答タイプ)がインプットされた質問応答システムに、「富士山の高さは?」と質問したとします。
回答タイプ | 回答 |
---|---|
標高 | 3,776m |
所在地 | 静岡および山梨 |
山系 | 独立峰 |
初登頂 | 663年 |
するとシステムは、まず「この質問文は何に関する質問なのか」を考え、何らかの手法によって「富士山」に関する質問だということを導き出します。
次に、システムはユーザーが富士山の何について知りたいのかを特定します。つまり、「富士山の高さは?」という質問が、インプットされている情報(回答タイプ)のうちのどれについて質問しているのかを推定するわけです。
「高さ」という言葉を基に、質問が「標高」を問うものだと推定されれば、自身にインプットされた情報のなかから「3,776mです」のように回答します。このとき「富士山」や「標高」を推定するための手法としては機械学習を用いることが多いのですが、ここでは詳細は割愛します。
ちなみに、もし質問文と応答のペアを大量に保持しているのであれば、回答タイプを特定する方法ではなく、その組み合わせデータ自体をディープラーニングで学習してしまう方法もあります。