12 ポイント 投稿者 calmlake79 2026-04-27 | まだコメントはありません。 | WhatsAppで共有
  • 統計庁MDISマイクロデータを基に、韓国社会の人口統計、世帯形態、所得、資産、負債、職業群の分布を反映したAIペルソナ世論シミュレーションサービス

  • ユーザーが気になる質問を入力すると、条件に合うAI市民を選んで応答を生成し、その結果を賛否/選択肢/年齢層/性別/所得分位/職業群などで分析

  • 2025年家計金融福祉調査のMDIS生CSVを、世帯マスター34,880件、世帯員69,929件単位でパースして結合し、サービス用の韓国ペルソナ約4.1万人を構成

  • Geminiを活用し、統計庁コードだけでは不足する職業名、性格、趣味、出身地、一人称の自己紹介を生成しつつ、年収・資産・負債と職業・語りに矛盾が生じないよう制約条件を入れて補正

  • 単に「韓国人100人に聞いたら?」をLLMに一度尋ねる方式ではなく、実際の分布に基づくペルソナがそれぞれ異なる背景と話し方で回答し、統計ウェイトを適用して結果を集計

既存のLLM世論シミュレーションの問題点

LLMに直接「韓国市民100人の意見をシミュレーションして」と尋ねると、結果が過度に平均的になったり、モデルが慣れているいくつかの職業・地域・傾向に偏る問題がある

  • 韓国社会の実際の世帯構造、所得分位、職業群、首都圏/非首都圏の差、無職/引退/学生/専業主婦といった状態が十分に反映されない

  • 特に世論・政策・商品反応のように集団ごとの差が重要な質問では、「もっともらしい単一回答」よりも「誰がなぜ違って考えるのか」の方が重要

  • 例えば同じ不動産政策の質問でも、20代の非首都圏の無住宅者、首都圏で持ち家を持つ50代、引退後に賃貸収入がある70代では、まったく異なる根拠で判断し得る

  • ManyPersonはこうした差をまずペルソナの背景データとして作り、その上で応答を生成する方式でアプローチ

データソースと制作方式

  • 統計庁MDISの2025年家計金融福祉調査データを基にペルソナ生成パイプラインを構成

  • 世帯マスターCSVと世帯員CSVを世帯固有番号基準で結合し、個人単位のペルソナを生成

  • 性別、年齢、世帯内関係、婚姻状態、最終学歴、従業上の地位、職業大分類、産業大分類、首都圏かどうか、住居形態、世帯員数、所得五分位などをコードブックに基づいて人が読める値に変換

  • 世帯総所得、可処分所得、消費支出、食料品費、住居費、教育費、医療費、総資産、負債、純資産もペルソナ属性として保持

  • 世帯単位の所得をそのまま個人所得として使わず、世帯主/配偶者/子ども/無職/引退かどうかに応じて個人推定年収をヒューリスティックに配分

  • 統計庁の重み値をweightとして保存し、単純な回答数だけでなく人口比例の加重統計も計算可能

ペルソナ詳細の生成

  • MDIS元データだけでは「その人らしく話す理由」を作るには不十分なため、Geminiを使ってサービス用の詳細を追加生成

  • 生成フィールドには、具体的な職業名、MBTI、性格、趣味、出身地、短い自己紹介が含まれる

  • 職業名と自己紹介は、年収、世帯総所得、純資産、負債、職業大分類、従業上の地位とあわせて生成し、現実味を補正

  • 年収1億ウォン以上なら役員、高所得専門職、成功した自営業者などが出るようにし、年収0ウォンまたは無職/引退/子どもの場合は無理に会社員を作らないよう制約

  • 世帯所得・資産は高いが個人所得が低い場合は、高所得の配偶者を持つ専業主婦、資産家の親を持つ大学生、賃貸収入で生活する引退者のような文脈を自然に反映

  • 負債が大きい場合は、自己紹介や性格に経済的圧迫が表れるよう設計

  • 初期生成過程では「低所得層なのに法律事務所の課長」「高所得層なのにアルバイト生」のように財務データと物語が食い違う問題があったため、別途Phase 2再生成パイプラインで約4.1万人のoccupation/bioを再補正

  • 生成結果は一度にメモリへ載せて保存するのではなく、ペルソナごとの生成直後にPostgreSQL JSONBへ個別更新するストリーミング構造で処理

  • 途中でPodが停止しても、すでに反映されたデータは残り、migrationPhase2マーカーで続きから実行可能

サービス利用の流れ

  • ユーザーは自然言語で質問を入力

  • Gemini + 検索Groundingで質問を整理し、必要に応じて背景状況の要約やフィルター条件を提案

  • 性別、年齢層、地域、所得分位、学歴、職業群、世帯員数、婚姻状態などで対象ペルソナをフィルタリング

  • 最終的に選ばれたAI市民が、それぞれのペルソナスナップショットを基に応答

  • 応答は即座にDBへ保存され、進行画面でリアルタイムに一部回答を見られる

  • 完了後は、肯定/中立/否定または選択式の選択肢分布を計算し、統計庁の重み値を適用した加重結果もあわせて表示

  • 年齢層、性別、所得分位、学歴、職業群など人口統計軸ごとのクロス分析を提供

  • 最終結果は共有可能なページとして生成され、個別ペルソナの回答カードと全体統計チャートをあわせて確認可能

活用例

  • 新規サービスや商品アイデアについて「20〜30代の首都圏会社員はどう反応するか?」を素早く見積もる

  • 政策・社会問題について、年齢層、所得分位、職業群ごとにどんな根拠で意見が分かれるかを探索

  • 広告コピー、価格政策、アプリ機能の優先順位、採用公告、自己紹介文などについて、多様な背景を持つAI市民の評価を受けてみる

  • 実際にアンケートを実施する前に、どの質問が曖昧か、またはどの集団で反応が分かれるかを事前探索

Nemotron-Personas-Koreaとの違い

  • Nemotron-Personas-Koreaが大規模な韓国語合成ペルソナデータセットだとすれば、ManyPersonはそのアイデアを「すぐに質問して結果を見るウェブサービス」にしたものに近い

  • ManyPersonは現時点で公開データセット配布よりも、統計ベースのペルソナプールを内部的に構成し、ユーザーの質問に合わせてサンプリング・応答生成・統計分析までつながるプロダクト体験に重点

  • データ構成も単純な人口プロフィールを超え、家計金融福祉調査の所得・資産・負債・消費支出情報をペルソナ生成と結果解釈に積極活用

技術スタック

  • Node.js、Express、EJSベースのウェブサーバー(迅速な開発のため、一部モジュールは簡単にGoで作成)

  • PostgreSQL/Cloud SQLにペルソナ、シミュレーション、応答、決済/クレジットデータを保存

  • ペルソナの拡張属性はPostgreSQL JSONBで保存し、職業、学歴、所得分位、出身地、性格、自己紹介などを柔軟に管理

  • Valkeyを使ってキューとキャッシュを処理

  • GKE Autopilot上でサーバー/ワーカーを分離運用

  • Gemini 3系モデルとVertex AI Flex APIを使用して、ペルソナ詳細生成およびシミュレーション応答生成を実施

  • SSEでシミュレーション進行率と最新応答をリアルタイムストリーミング

限界と注意点

  • ManyPersonの結果は実際の世論調査ではなく、AIペルソナに基づく仮想シミュレーション

  • 統計庁MDISの公開範囲とコード水準に依存するため、詳細地域・政治的傾向・リアルタイムな話題認知のような変数は別途推定または入力が必要

  • LLM生成の詳細は現実味を高めるための合成情報であり、実在人物との類似性は意図していない

  • 標本数が小さい、またはフィルターが狭いほど、結果は探索的な参考資料として見るのが適切

  • それでも「LLM一つに韓国人の平均的意見を想像させる方式」よりは、実際の人口統計と家計データに基づく多様なAI市民を先に作り、その応答を集める方が、より有用な出発点だと考える

まだコメントはありません。

まだコメントはありません。