チャットボット・会話AI

ダイアログ状態追跡

Dialogue State Tracking

会話の進行状況を「誰が、何をしたい」という形で追跡する技術。複数ターンの対話を管理するための中核機能です。

ダイアログ状態追跡 Dialogue State Tracking DST 会話フロー チャットボット
作成日: 2025年12月19日 更新日: 2026年4月2日

ダイアログ状態追跡とは?

ダイアログ状態追跡(Dialogue State Tracking、DST)は、会話型AIが会話を進める中で「現在どのステップか」「ユーザーは何をしたいのか」「どの情報が集まったか」を追跡する技術です。 スロット(情報単位)という概念を使い、「駅名:成田」「目的地:ニューヨーク」「出発日:来週月曜日」といった複数の情報を整理し、ユーザーの目的達成に必要な情報がすべて揃ったかを判定します。

ひとことで言うと: 医者の診察で、カルテに「症状は?」「いつから?」「既往歴は?」と問診内容を順番に記入していくようなものです。記録されていない項目が「確認が必要な情報」であり、すべての項目が埋まったら「診断ができる」という状態になります。

ポイントまとめ:

  • 何をするものか: 会話の進行状況を構造化して追跡するシステム
  • なぜ必要か: 複数ターンの対話で、どの情報が揃っているかを把握するため
  • 誰が使うか: チャットボット開発者、会話AI研究者

なぜ重要か

ダイアログ状態追跡がないと、AIは毎ターン、ユーザーの発話から「何が言いたいのか」をゼロから判断する必要があります。これでは誤認識のリスクが高まり、また、「さっき聞いたのに、もう一度聞く」というような不自然な会話になります。

ダイアログ状態追跡により、これまでに集めた情報を把握でき、「出発地はもう聞いたから、次は目的地を聞こう」といった会話の進行を管理できます。また、ユーザーが「さっき言った○○について」と前のターンを参照する発話をした場合、その文脈を検索して正確に応答できます。

仕組みをわかりやすく解説

ダイアログ状態追跡の実装には、複数の要素が必要です。第1はユーザーの目的抽出(goal tracking)で、「航空券予約」「レストラン検索」など、ユーザーが何をしたいのかを認識します。第2はスロット追跡(slot tracking)で、タスク完了に必要な情報(出発地、目的地、日時など)を記録します。

第3は会話状況の判定で、「どのスロットが埋まっているか」「どのスロットが不明確か」を判定します。例えば「ニューヨークに行きたい」という発話から「目的地=ニューヨーク」は確定しますが、「いつ?」「どこから?」という情報が不足していることを認識します。

実装では、各スロットを1~5段階の信頼度で管理することが一般的です。ユーザーが「成田から」と明確に述べた場合は信頼度100%、「東京のどこかの空港」と曖昧な場合は信頼度50%、というように、AIの確実性をスコア化します。信頼度が低い場合は、確認質問「東京成田空港でよろしいですか?」を挿入することで、精度を高めます。

実際の活用シーン

ホテル予約チャットボット

ユーザーが「来週、できれば窓側で、喫煙可能な部屋をください」と言った場合、DST は以下のように追跡します:「チェックイン日:来週(信頼度80%、具体日が必要)」「窓側:Yes(信頼度95%)」「喫煙可:Yes(信頼度95%)」「チェックアウト日:未収集」。そこで「チェックインはいつですか?」「チェックアウトはいつですか?」と必要な情報を優先的に聞きます。

金融商品相談チャットボット

顧客が「60歳になるまでに貯金を増やしたい」と相談した場合、DST は「目的:資産形成(信頼度100%)」「期間:今から60歳まで(信頼度95%)」「現在の貯金額:未収集」「リスク許容度:未収集」と追跡します。不足する情報を確認する質問に優先度をつけ、最も重要な「現在の資産状況」から聞きます。

医療相談チャットボット

患者が「頭痛と発熱がある」と述べた場合、DST は「症状:頭痛、発熱」「発症日:未確認」「程度:未確認」「その他症状:未確認」と整理します。医学的に重要な情報から順に確認し、「発症日からどのくらい続いていますか?」「熱は何度ですか?」と聞いていきます。

メリットと注意点

ダイアログ状態追跡のメリットは、会話の効率性と精度の向上です。必要な情報を体系的に追跡することで、不要な重複質問がなくなり、ユーザーストレスが減ります。また、スロット値の信頼度を管理することで、曖昧な情報に対する確認質問を挿入でき、最終的な精度が向上します。

注意点としては、スロット定義の難しさがあります。すべてのタスクに統一的なスロット構造を適用することは困難で、業務ごとに異なるスロット設計が必要になります。また、複数のスロット値が相互に依存する場合(「大人2人、子ども2人」という依存関係など)の管理は複雑になります。

さらに、ユーザーが予想外の情報を提供した場合の処理が課題になります。例えば「新幹線で移動します」という移動手段を突然述べた場合、スロット構造にそれが含まれていなければ、情報を活用できません。

関連用語

よくある質問

Q: スロット値の信頼度をどのように判定すればいいですか?

A: 複数の方法があります。1つは「ユーザーが明示的に述べたか」(「明日9時」なら信頼度100%)、2つは「AIが言葉から推測したか」(「朝一番」なら信頼度70%)、3つは「複数の情報源から確認したか」(AIが抽出した値とユーザー確認が一致なら信頼度95%)といった判定ルールを設定します。

Q: スロット値が後で変更される場合、どう対応しますか?

A: 確認フェーズを設定することが大切です。タスク完了前に「では、出発日は来週月曜日、目的地はニューヨーク、喫煙ルーム…で確認してよろしいですか?」と全スロット値を提示し、修正の機会を与えます。

Q: 複数のスロット値が依存関係にある場合は?

A: スロット間の依存関係をルール化します。例えば「子ども同伴の場合、ベビーベッド有無を確認」といったif-thenルールを定義し、依存するスロットが自動的に確認されるようにします。ただし、複雑な依存関係は管理が難しくなるため、シンプルなタスク設計が重要です。

関連用語

NLU信頼度閾値

チャットボットがユーザーの発話を理解したと判定するための最小信頼度スコア。コンバージョンと精度のバランスを取る重要なパラメータです。...

チャットボット

チャットボットは、テキストまたは音声で人間の会話をシミュレートしながら、顧客サポート、営業支援、自動化を24時間365日で実現するソフトウェアです。...

×
お問い合わせ Contact