mcpField
S
synthetic-data-generator

synthetic-data-generator

github.com/lensetekデータ・データベース52 回インストール
リポジトリ

synthetic-data-generator について

指定した人口統計・心理特性のプロフィールに基づいて、調査回答者をシミュレートするスキルです。CSV や JSON のオフライン生成に加え、chrome-devtools MCP を使ってブラウザーからオンラインアンケートにも回答できます。

主な機能

  1. 01プロフィールに沿った合成回答の生成
  2. 02CSV または JSON へのオフライン出力
  3. 03Python によるオフライン一括生成
  4. 04オンラインアンケートの解析と入力
  5. 05データ検証と送信画面の撮影

活用シーン

  1. 01研究用の多様なアンケートデータセット作成
  2. 02リッカート尺度やインタビュー回答の模擬
  3. 03合成参加者によるオンラインフォーム送信

MCP 対応

オンラインアンケートへの回答時に、chrome-devtools MCP サーバーへ接続してフォームを調べ、ブラウザーから回答を入力します。ブラウザーツールで移動、操作、スクリーンショット撮影を行います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lensetek/research-agent-skills-collection --skill synthetic-data-generator

インストール後、Claude Code で/synthetic-data-generatorを入力して読み込まれたか確認します。

詳細

合成データジェネレーター(デジタルツインシミュレーター)

概要

このスキルにより、エージェントは研究において 回答者シミュレーター(デジタルツインシミュレーター) として動作できます。エージェントは指定されたプロフィールパラメーターに基づくペルソナ(デジタルツイン)を採用し、実際の人間の回答者のように研究用の調査票(アンケート、リッカート尺度、自由回答形式のインタビュー質問)に回答します。

データをオフラインで CSV/JSON ファイルに生成するだけでなく、このスキルは アクティブ参加者シミュレーター にも対応しています。これは、chrome-devtools MCP サーバーとの統合を通じて、ブラウザーから実際の オンライン アンケート(Google Forms、Typeform など)への入力を自動化する機能です。

依存関係

  • 標準 Python モジュール(大規模なオフラインデータ生成用)。
  • MCP サーバー chrome-devtools(ブラウザー経由でのオンラインアンケート入力用)。
  • ゼロ失敗の自動プロビジョニングルール:オンラインアンケート入力時に chrome-devtools が未起動または未インストールの場合、エージェントは「not installed」と回答してはなりません。エージェントは、オンデマンドで以下を直ちに実行して起動する必要があります:npx -y chrome-devtools-mcp@latest または py bin/mcp_auto_updater.py。

クイックスタート

使用例:

  1. オフライン:「synthetic-data-generator スキルを使って、オンライン指導サービスへの満足度に対する回答を含む、大学最終学年の学生の人口統計プロフィールに基づいた回答者 100 人分の合成アンケートデータセットを作成してください。」
  2. オンライン:「synthetic-data-generator スキルを使って、URL https://forms.gle/xxxxx の Google Form に、デジタル MSME 事業者のプロフィールを持つデジタルツイン 5 体が回答するようシミュレーションしてください。」

ワークフロー

1. 調査票とプロフィールの初期化
  • 調査票: 使用する研究用調査票の構造を把握します。定量的(1~5 の尺度)か、定性的(自由記述の回答)かを確認します。
  • 人口統計/心理統計プロフィール: 対象サンプルの分布を把握します。例:「18~35 歳、男性 60%、女性 40%、テクノロジーへの懐疑心が高~中程度の人を 300 人分作成します。」
2. ペルソナプロンプト戦略(LLM の採用)

データの均一化を避け、現実的なばらつきを持たせるには、以下の方法を使用します。

  • 動的な System Prompt を使用し、回答者ごとの反復処理でランダムな特性(traits)を注入します。
  • 回答が決定論的にならないよう、十分な Temperature(例:0.7~0.9)を適用します。
  • 論理的な一貫性: 質問項目間(特に相関のある項目や 逆転項目)の回答が、採用しているペルソナと一貫していることを確認します。
  • 注意力チェック: 指示された場合は、現実世界の ノイズ をシミュレートするため、「ひっかけ」回答や妥当な異常値(例:いい加減に回答する回答者)を少ない確率(例:5%)で含めます。
3. Python によるバッチ実行(大規模なオフライン処理では必須)

数百人分の回答者について LLM を 1 人ずつ呼び出すのは、トークンと時間の面で非常に非効率です。N > 10 でオフライン実行する場合、バッチプロンプティングを活用する Python スクリプトを必ず作成してください。

Python スクリプトの手順:

  1. 指示プロンプトを一元化します:「CSV 形式のデータを 50 行生成してください。各行は固有の回答者 1 人を表します。列は、人口統計、Q1、Q2、Q3(1~5 の尺度)、意見(テキスト/定性的回答)で構成します。次の分布に従って多様性を確保してください:[PROFILE_TARGET]。有効な CSV 形式のみで出力し、Markdown は含めないでください。」
  2. Python のループを使用し、LLM(google-genai や適切な LLM エンドポイントなど)を N/50 回呼び出します。
  3. 生成した CSV 文字列を解析し、データ構造(pandas.DataFrame など)に格納します。
  4. すべての バッチ を結合し、エラーまたは形式不正の 行を削除します。
  5. 最終的な DataFrame を synthetic_dataset.csv に保存します。
4. オンラインアンケートへの回答(Active Participant Simulator)

ユーザーから Google Forms などのオンラインアンケートへの回答を依頼された場合:

  1. ページの分析(フォームのマッピング):chrome-devtools サーバーに接続し、puppeteer_navigate を使用してブラウザーをアンケートの URL に移動します。puppeteer_evaluate を使用して質問の種類(テキスト入力、ラジオボタン、チェックボックス)を特定します。
  2. 回答者のバッチ処理:各デジタルツイン(例:N 人の回答者)について:
    • 回答者の回答プロフィールを内部で生成します(JSON/キーと値の形式)。
    • 質問に合致する入力要素を特定します。
    • 人間による入力のシミュレーション:
      • 複数選択式/リッカート尺度では、該当するラジオボタンを puppeteer_click でクリックします。
      • テキスト入力では、puppeteer_type を使用して自然な形で回答を入力します。
      • 人間の行動を模倣し、ボット対策の検知を回避するため、送信/次へボタンをクリックする前に 1.5~3 秒のランダムな遅延を挿入します。
    • puppeteer_click を使用して「送信」/「Submit」ボタンをクリックします。
    • 入力完了を検証する証拠として、成功ページのスクリーンショット(puppeteer_screenshot)を取得します。
    • 次の回答者の回答を続ける場合は、「別の回答を送信」/「Submit another response」のリンクをクリックして、新しいフォームを読み込みます。
5. 最終検証と引き渡し
  • オフライン:スクリプトで簡単な describe() を実行し、リッカート尺度の値が有効な範囲(例:最小 1、最大 5)内にあり、不自然な missing value がないことを確認します。
  • オンライン:各回答者の送信証拠となるスクリーンショットファイルとともに、入力成功のログを要約して提示します(例:「3/3 人の回答者が Google Form への回答に成功しました」)。

よくある間違いと重要なルール

  • データが均一すぎる(分散なし):LLM の温度(temperature)を 0 に設定したり、指示システムを厳格にしすぎたりしたために、単調で変化のない回答データが生成されること。
  • ペルソナの不整合:回答者の内面的な論理を無視すること(たとえば、「技術に疎い/テクノロジーに懐疑的」というプロフィールの回答者が、AI の導入に非常に精通し、意欲的な回答をするなど)。
  • ファイル形式の破損(不正な CSV):有効な CSV 形式で出力を保存できず、データ処理エージェントが読み込めなくなること。
  • オンラインフォームでのボット検知:遅延なしでフォームに素早く回答し、CAPTCHA が表示されること。人間の入力を模倣する際は、常に動的な遅延(ランダムな遅延)を使用してください。

コメント