Dialogue Actを骨子とした商談対話合成
サイバーエージェント AI シフトチームは、B2B 商談データの機密性とコスト課題を解決するため、Phase と Act の 2 層構造を持つ Dialogue Act スキーマを用いた高品質合成データ生成手法を提案し、実データ分析に基づきその設計方針を示した。
キーポイント
B2B 商談データの活用課題と解決策
顧客情報や機密を含む実データを外部で活用できないことや、長期・多ターンな商談のアノテーションコストの高さが課題であり、これを合成データで解決するアプローチが示された。
Phase と Act の 2 層 Dialogue Act スキーマ
商談の進行段階(Opening, Situation など)を定義する Phase 層と、発話機能(Question, Respond など)を定義する Act 層を階層的に紐付けるスキーマにより、対話構造を明示的に制御可能とした。
実データ分析に基づく生成設計
実際のロールプレイ商談データを分析し、発話長の分布やフェーズごとの振る舞いの特徴を抽出することで、単なる文の自然さだけでなく商談構造としてのリアリティある合成データの生成方針を確立した。
非対称性と相槌の重要性
B2B 商談特有の営業と顧客の役割非対称性や、短い相槌の頻繁な発生といった特性をモデルに反映させることで、現実的な振る舞いを学習させる必要性が強調された。
重要な引用
合成できれば何でもよい」わけではないという点です
Phase 層は商談の進行段階(Opening → Situation → Proposal → Objection → Closing の 5 段階)、Act 層は個々の発話の機能(Question、Respond、Acknowledge などの 9 種類)です
学習や評価に使う以上、実際の商談とかけ離れたデータを大量に作ってしまうと、モデルは現実にはあまり現れない振る舞いを学習してしまったりします
影響分析・編集コメントを表示
影響分析
このアプローチは、機密性の高い B2B ドメインにおいて、高品質な学習データを安全かつ効率的に生成する現実的な解決策を提供します。特に、ドメイン固有の対話構造を数値化・構造化して制御可能にする点は、垂直領域 AI の実用化における重要な技術的マイルストーンとなり得ます。
編集コメント
機密データを活用できないという実務的な課題に対し、ドメイン知識を構造化したスキーマで合成データを生成する手法は、業界全体にとって非常に示唆に富むアプローチです。特に B2B 商談のような複雑な文脈を持つ領域での AI 実用化への道筋を示しています。
こんにちは
AIチームの戸田です。
先日開催されたNLP2026で、「B2B商談対話における階層的Dialogue Actスキーマの提案」という題目で発表させていただきました(P3-3)。ざっくり説明すると、商談対話の構造をPhase層(商談の進行段階)とAct層(個々の発話の機能)の2層のスキーマで捉えよう、という提案です。
Phaseの遷移確率やActの出現パターンを明示的に制御することで、高品質な合成データの生成を目指すことが目的なのですが、本記事では、その実践に向けて、まず実データを分析して見えてきた商談対話の構造的な特徴と、そこから得た生成設計の方針を紹介します。
背景
AI ShiftではB2B商談を支援するAI Agentを開発しています。プロダクトを改善・評価するために、溜まった商談データを活用したいところですが、商談データは顧客情報や企業機密を含むため外に持ち出すことができず、活用できていないのが現状です。また、人工的に作るにしても、1商談は30〜50分・300ターンを超える長丁場となっており、アノテーションやマスキングにコストがかかってしまうため、スケールしにくいという課題があります。このデータ不足を合成データで解決できないか、というのが今回の取り組みの出発点です。
ただし、ここで重要なのは「合成できれば何でもよい」わけではないという点です。学習や評価に使う以上、実際の商談とかけ離れたデータを大量に作ってしまうと、モデルは現実にはあまり現れない振る舞いを学習してしまったり、評価でも不自然なデータにだけ強い“見かけ上の高性能”を示したりします。特にB2B商談では、短い相槌が頻繁に挟まること、Phaseごとに会話の進み方が異なること、営業と顧客の役割が非対称であることなどが対話全体の性質を大きく左右します。だからこそ、単に文として自然なだけでなく、商談としての構造まで含めてリアルであることが重要になります。
Dialogue Actスキーマの2層構造
詳細は論文を参照していただきたいのですが、本記事を読むにあたり、必要になる範囲で簡単に紹介します。
このスキーマは商談の対話をPhase層とAct層の2層で捉えます。Phase層は商談の進行段階(Opening → Situation → Proposal → Objection → Closing の5段階)、Act層は個々の発話の機能(Question、Respond、Acknowledgeなどの9種類)です。
ポイントは、Phase層とAct層が階層的に紐づいている点です。たとえばPresent(製品説明)はProposal Phaseに、Raise(懸念提起)はObjection Phaseに集中する一方、Acknowledge(相槌)やQuestion(質問)はどのPhaseでも出現します。この制約構造が、後述する合成データ生成で重要な役割を果たします。
以下に論文で定義したDialogue Actスキーマの定義を転記しておきます。
表1 Phase層の定義
表2 Act層の定義


実データの分析
分析対象は論文で使われていない新しい3件のロールプレイ商談(ロールプレイによる模擬営業会話)で、いずれもAI Shift社内で行われたものです。
商談
商談ターン数
時間
A
1301
約50分
B
2393
約50分
C
395
約20分
まず印象的だったのは、発話長(utterance length)の分布です。商談における各発話の文字数を集計すると、以下のような分布になりました。
- 短文(〜9文字): 37%
「はい」「なるほど」「ええ」「そうですね」などの相槌、フィラー(間投詞)
- 中文(10〜59文字): 34%
質問、短い回答
- 長文(60文字〜): 31%
製品説明、状況説明(最長7,361文字)
発話の約4割が、たった数文字の相槌だったんですね。
実際の対話イメージはこちらになります。
営業: 弊社のAIエージェントはですね、まず貴社のCRMデータを分析して、
お客様ごとの最適なアプローチ方法を自動で提案するんですね。
導入企業様では商談化率が1.5倍に向上しておりまして… (約200字)
顧客: はい。 (2字)
営業: お客様ごとの最適なアプローチを自動で提案するんですね。 (約30字)
顧客: ああ、なるほど。 (6字)
営業が200字の説明をしても、顧客は「はい。」の2文字で応じています。こうしたやり取りが何十回と繰り返されることで、商談は300ターンを超える長さになります。この「2文字の相槌」と「200字超の長い説明」の共存こそが、後述するLLM(大規模言語モデル)による合成を難しくしている主因だと考えました。
もうひとつの重要な発見は、各Phase(フェーズ)に固有の「リズム」があることです。たとえばSituation(状況把握フェーズ)では、営業が質問し、顧客が答え、営業が「なるほど」と相槌を打ってから次の質問に移る、というキャッチボール型の進行が多く見られました。他のPhaseにも同様のパターンがありました。以下に典型的な遷移パターンを図示します。

B2B営業の経験がある方なら、直感的にも「そうだよな」と感じるパターンなのかもしれません。重要なのは、こうしたパターンが統計的に再現可能だということです。
分析から設計へ
ここまでの分析から、B2B商談には少なくとも次の2つの特徴があると分かりました。
- 発話長に極端なばらつきがある(2文字の相槌〜7,000字超の長文説明が共存する)
- Phase内のAct(発話行為)遷移に統計的に再現可能なリズムがある
これらの特徴を持つ商談データをLLMで合成することは容易ではありません。シンプルに「300ターンのB2B商談を生成して」と頼んでも、LLMはある程度の長さの発話を好む傾向があり、「はい。」だけの2文字ターンなどが入ることはほとんどありません。逆に500文字超の長い説明も出にくいです。
そこで、Dialogue Actを生成の制御をするための骨子として使えないか、と考えました。
設計原則はシンプルで、構造を作る部分と、テキストを書く部分を分離します。
- 構造(誰が・何のActで・何文字で話すか) → プログラム的に決定する。LLMは使わない
- テキスト(具体的にどう話すか) → LLMに生成させる
こうすることで、LLMは「何を話すべきか」を考える必要がなくなり、「決められた制約の中で自然な日本語を書く」ことに集中できるはずです。
この方針に基づいて、構造側では以下の3つの工夫を入れることを考えています。
① マルコフ連鎖によるAct列サンプリング
実データの遷移確率を直接使って、Phase内のAct列(営業:Question → 顧客:Respond → 営業:Acknowledge → …)を確率的に生成します。ルールベースのように多様性が失われることもなく、LLM生成のように実データのパターンから乖離することもない、ちょうどいいバランスになるのではないか、と期待しています。
② 動的計画法による発話長バケットの最適配分
生成した各Actに対して、short(〜9文字)/ medium(10〜59文字)/ long(60文字〜)の発話長バケットを割り当てます。実データを分析すると、Act種別ごとに「どの長さになりやすいか」の分布が大きく異なります。
Act
short
medium
long
Acknowledge(相槌・確認)
78%
19%
3%
Present(提示・説明)
6%
22%
72%
Handle(対応・処理)
7%
25%
68%
Question(質問)
5%
54%
41%
Respond(回答・応答)
8%
50%
42%
この分布と全体の比率制約(short 37%、medium 34%、long 31%)を同時に満たす割り当てを動的計画法で求めます。
③ Phase別逐次生成とコンテキスト要約
300ターンを一度に生成するのではなく、Phase単位で逐次的に生成します。Phase間の文脈断裂を防ぐため、完了したPhaseの内容をLLMで要約し、次のPhase生成時にコンテキストとして引き渡します。
ここまでの設計を一言でいうと、商談対話を最初から最後まで一気に生成させるのではなく、まず「どのような流れで、どのような長さの発話が並ぶか」という骨格を先に作り、そのうえで各発話を自然な日本語として肉付けしていく、という方針です。
実データの分析で見えてきたのは、商談らしさが単なる文の自然さだけでは決まらず、相槌の多さやPhaseごとの遷移パターンのような構造にも強く支えられている、ということだったので、合成でもまず構造を押さえにいく必要があると考えています。
まとめ
本記事では、B2B商談の合成データ生成に向けた問題分析と設計方針を解説しました。
実データの分析からは、「発話の4割が相槌」のような発話長分布の偏りと、Phase固有のAct遷移リズムの存在が明らかになりました。これらはLLMが単純なプロンプトで再現するのが難しい一方、統計モデルで忠実にモデル化できる性質のものです。
この知見に基づき、Dialogue Act を「生成の骨子」として捉え直し、構造の決定(マルコフ連鎖+動的計画法)とテキストの生成を分離するアプローチを設計しました。
今回は分析と設計までの紹介でしたが、今後はこのアプローチを使った商談対話の合成にも取り組む予定です。実際の生成結果や評価についても、機会があればあらためて共有したいと思います。
最後までお読みいただきありがとうございました!
原文を表示
こんにちは
AIチームの戸田です
先日開催されたNLP2026で、「B2B商談対話における階層的Dialogue Actスキーマの提案」という題目で発表させていただきました(P3-3)。ざっくり説明すると商談対話の構造をPhase層(商談の進行段階)とAct層(個々の発話の機能)の2層のスキーマで捉えよう、という提案です。
Phaseの遷移確率やActの出現パターンを明示的に制御することで、高品質な合成データの生成を目指すことが目的なのですが、本記事では、その実践に向けて、まず実データを分析して見えてきた商談対話の構造的な特徴と、そこから得た生成設計の方針を紹介します。
背景
AI ShiftではB2B商談を支援するAI Agentを開発しています。プロダクトを改善・評価するために、溜まった商談データを活用したいところですが、商談データは顧客情報や企業機密を含むため外に持ち出すことができず、活用できていないのが現状です。また、人工的に作るにしても、1商談は30〜50分・300ターンを超える長丁場となっており、アノテーションやマスキングにコストがかかってしまうため、スケールしにくいという課題があります。このデータ不足を合成データで解決できないか、というのが今回の取り組みの出発点です。
ただし、ここで重要なのは「合成できれば何でもよい」わけではないという点です。学習や評価に使う以上、実際の商談とかけ離れたデータを大量に作ってしまうと、モデルは現実にはあまり現れない振る舞いを学習してしまったり、評価でも不自然なデータにだけ強い“見かけ上の高性能”を示したりします。特にB2B商談では、短い相槌が頻繁に挟まること、Phaseごとに会話の進み方が異なること、営業と顧客の役割が非対称であることなどが対話全体の性質を大きく左右します。だからこそ、単に文として自然なだけでなく、商談としての構造まで含めてリアルであることが重要になります。
Dialogue Actスキーマの2層構造
詳細は論文を参照していただきたいのですが、本記事を読むにあたり、必要になる範囲で簡単に紹介します。
このスキーマは商談の対話をPhase層とAct層の2層で捉えます。Phase層は商談の進行段階(Opening → Situation → Proposal → Objection → Closing の5段階)、Act層は個々の発話の機能(Question、Respond、Acknowledgeなどの9種類)です。
ポイントは、Phase層とAct層が階層的に紐づいている点です。たとえばPresent(製品説明)はProposal Phaseに、Raise(懸念提起)はObjection Phaseに集中する一方、Acknowledge(相槌)やQuestion(質問)はどのPhaseでも出現します。この制約構造が、後述する合成データ生成で重要な役割を果たします。
以下に論文で定義したDialogue Actスキーマの定義を転記しておきます。
表1 Phase層の定義
表2 Act層の定義


実データの分析
分析対象は論文で使っていない新しい3件のロールプレイ商談で、いずれもAI Shift社内で行われたものになります。
商談
商談ターン数
時間
A
1301
約50分
B
2393
約50分
C
395
約20分
まず印象的だったのは、発話長の分布です。商談における各発話の文字数を集計すると、以下のような分布になりました。
- 短文(〜9文字): 37%
「はい」「なるほど」「ええ」「そうですね」などの相槌、フィラー
- 中文(10〜59文字): 34%
質問、短い回答
- 長文(60文字〜): 31%
製品説明、状況説明(最長7,361文字)
発話の約4割が、たった数文字の相槌だったんですね。
実際の対話イメージはこちらになります。
営業: 弊社のAIエージェントはですね、まず貴社のCRMデータを分析して、
お客様ごとの最適なアプローチ方法を自動で提案するんですね。
導入企業様では商談化率が1.5倍に向上しておりまして… (約200字)
顧客: はい。 (2字)
営業: お客様ごとの最適なアプローチを自動で提案するんですね。 (約30字)
顧客: ああ、なるほど。 (6字)
営業が200字の説明をしても、顧客は「はい。」の2文字で応じています。こうしたやり取りが何十回と繰り返されることで、商談は300ターンを超える長さになります。この「2文字の相槌」と「200字超の長い説明」の共存こそが、後述するLLMによる合成を難しくしている主因だと考えました。
もうひとつの重要な発見は、各Phaseに固有の「リズム」があることです。たとえばSituationでは、営業が質問し、顧客が答え、営業が「なるほど」と相槌を打ってから次の質問に移る、というキャッチボール型の進行が多く見られました。他のPhaseにも同様のパターンがありました。以下に典型的な遷移パターンを図示します。

B2B営業の経験がある方なら、直感的にも「そうだよな」と感じるパターンなのかもしれません。重要なのは、こうしたパターンが統計的に再現可能だということです。
分析から設計へ
ここまでの分析から、B2B商談には少なくとも次の2つの特徴があると分かりました。
- 発話長に極端なばらつきがある(2文字の相槌〜7,000字超の長文説明が共存する)
- Phase内のAct遷移に統計的に再現可能なリズムがある
これらの特徴を持つ商談データをLLMで合成することは容易ではありません。シンプルに「300ターンのB2B商談を生成して」と頼んでも、LLMはある程度の長さの発話を好む傾向があり、「はい。」だけの2文字ターンをなどが入ることはほとんどありません。逆に500文字超の長い説明も出にくいです。
そこで、Dialogue Actを生成の制御をするための骨子として使えないか、と考えました。
設計原則はシンプルで、構造を作る部分と、テキストを書く部分を分離します。
- 構造(誰が・何のActで・何文字で話すか) → プログラム的に決定する。LLMは使わない
- テキスト(具体的にどう話すか) → LLMに生成させる
こうすることで、LLMは「何を話すべきか」を考える必要がなくなり、「決められた制約の中で自然な日本語を書く」ことに集中できるはずです。
この方針に基づいて、構造側では以下の3つの工夫を入れることを考えています。
① マルコフ連鎖によるAct列サンプリング
実データの遷移確率を直接使って、Phase内のAct列(営業:Question → 顧客:Respond → 営業:Acknowledge → …)を確率的に生成します。ルールベースのように多様性が失われることもなく、LLM生成のように実データのパターンから乖離することもない、ちょうどいいバランスになるのではないか、と期待しています。
② 動的計画法による発話長バケットの最適配分
生成した各Actに対して、short(〜9文字)/ medium(10〜59文字)/ long(60文字〜)の発話長バケットを割り当てます。実データを分析すると、Act種別ごとに「どの長さになりやすいか」の分布が大きく異なります。
Act
short
medium
long
Acknowledge
78%
19%
3%
Present
6%
22%
72%
Handle
7%
25%
68%
Question
5%
54%
41%
Respond
8%
50%
42%
この分布と全体の比率制約(short 37%、medium 34%、long 31%)を同時に満たす割り当てを動的計画法で求めます。
③ Phase別逐次生成とコンテキスト要約
300ターンを一度に生成するのではなく、Phase単位で逐次的に生成します。Phase間の文脈断裂を防ぐため、完了したPhaseの内容をLLMで要約し、次のPhase生成時にコンテキストとして引き渡します。
ここまでの設計を一言でいうと、商談対話を最初から最後まで一気に生成させるのではなく、まず「どのような流れで、どのような長さの発話が並ぶか」という骨格を先に作り、そのうえで各発話を自然な日本語として肉付けしていく、という方針です。
実データの分析で見えてきたのは、商談らしさが単なる文の自然さだけでは決まらず、相槌の多さやPhaseごとの遷移パターンのような構造にも強く支えられている、ということだったので、合成でもまず構造を押さえにいく必要があると考えています。
まとめ
本記事では、B2B商談の合成データ生成に向けた問題分析と設計方針を解説しました。
実データの分析からは、「発話の4割が相槌」のような発話長分布の偏りと、Phase固有のAct遷移リズムの存在が明らかになりました。これらはLLMが単純なプロンプトで再現するのが難しい一方、統計モデルで忠実にモデル化できる性質のものです。
この知見に基づき、Dialogue Actを「生成の骨子」として捉え直し、構造の決定(マルコフ連鎖+動的計画法)とテキストの生成を分離するアプローチを設計しました。
今回は分析と設計までの紹介でしたが、今後はこのアプローチを使った商談対話の合成にも取り組む予定です。実際の生成結果や評価についても、機会があればあらためて共有したいと思います。
最後までお読みいただきありがとうございました!
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み