Skip to content

基于社会心理学画像建模的高拟真自动化问卷填写引擎(目标:问卷星)。集成对数正态时间分布模型与 8 种认知行为剧本,支持多维因子解耦生成,旨在提供具备高统计学信效度(SPSS)的合成样本采集方案。支持动态隧道代理与 WebDriver 特征对抗。

License

Notifications You must be signed in to change notification settings

beforeugone520/Cognitive-Behavioral-Survey-Engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Cognitive Behavioral Survey Engine (CBSE)

基于认知行为模拟的高信度问卷仿真引擎 > High-Fidelity Survey Simulation Engine based on Cognitive Behavioral Models

Python Selenium Streamlit License

CBSE 是一个强大的自动化问卷填写工具。不同于简单的随机脚本,它通过构建人格画像 (User Persona) 来模拟真实人类的认知行为,支持李克特量表 (Likert Scale) 的反向计分 (Reverse Scoring) 逻辑,确保生成的数据具有极高的信度 (Cronbach's Alpha) 和效度。


📅 更新日志 (Changelog)

  • v7.0 (Current) 目前支持问卷星单选、多选和5分量表题
    • [NEW] 原生多线程 (Multi-Threading):引入线程池,支持 UI 动态调整并发数,填写效率提升 500%。
    • [NEW] 设备指纹模拟:支持自定义 微信(MicroMessenger)手机浏览器 的填写比例 (0-100%)。
    • [FEAT] 智能多选逻辑:多选题不再是纯随机,而是根据人格维度分值决定勾选数量(分高选多,分低选少)。
    • [UX] 交互优化:日志面板改为倒序刷新(最新在最前),增加 SSL 错误智能重试机制。
  • v6.0- 逻辑代码增加 8种人格
    • [FIX] 修复了谷歌浏览器报错问题。
    • [FIX] 修复了脚本找不到config的bug
  • v5.1- 界面支持 中英文双语切换 🌐。
    • [FIX] 重构文件结构,完全修复了 config.json 读写的缩进报错问题。
  • v5.0
    • [FEAT] 引入 反向计分 (Reverse Scoring) 逻辑,大幅提升 Cronbach's Alpha 信度指标。
    • [FEAT] 降低随机噪声 (Noise Reduction),使 KMO 值表现更佳。
  • v4.5
    • [FEAT] 增加 无头模式 (Headless Mode) 开关,支持后台静默运行。
    • [UI] 增加实时日志气泡通知 (Toast)。
  • v1.0 - v4.0
    • 核心仿真引擎开发,实现基于正态分布的人格分值算法。
    • 从纯 CMD 环境迁移至 Streamlit 可视化面板。

📂 项目演进 (Project Evolution)

本项目包含两个版本的引擎,满足不同场景的需求:

  • 定位:核心算法验证版 / 极客版。
  • 特点:纯命令行交互,轻量级,适合理解底层逻辑或在服务器无界面环境下运行。
  • 启动python v1-cmd-core/src/run.py
  • 缺点:需要用AI将代码基本重构,不能客制化

为了解决这个痛点,于是有了:

📁 v2-web-dashboard (推荐 🌟)

  • 定位:全功能可视化版。
  • 特点
    • 可视化控制台:基于 Streamlit 的交互界面。
    • 实时监控:实时查看人格维度分布图表。
    • 高级控制:支持动态速度调整、无头模式 (Headless)、声音/弹窗反馈。
    • 极速并发:支持 1-10 线程并行工作。
    • 配置管理:内置 JSON 配置编辑器,支持热修改。
  • 启动python -m streamlit run v2-web-dashboard/app.py

🚀 核心功能 (Key Features)

  • 🎭 多维度人格模拟:内置 Tech(技术痴)、Risk(风险厌恶)、Price(价格敏感) 等多种人格剧本,自动根据题目维度生成倾向性答案。
  • 📉 高信效度保障
    • 一致性逻辑:同一维度下的题目,回答保持高度一致。
    • 反向题支持:自动识别反向计分题(如“我觉得很不安全”测安全感),进行分数翻转,防止信度崩塌。
  • 🖥️ 无头模式 (Headless):支持后台静默运行,不打扰前台工作。
  • ⚡ 拟人化操作
    • 随机延迟:模拟人类阅读思考时间 (0.6s - 1.2s)。
    • 固定极速:支持高并发下的快速填充模式。
  • 🛡️ 智能防爬:集成 Chrome CDP 协议绕过 WebDriver 检测,模拟移动端 User-Agent。
  • 🛡️ 稳定性保障:内置智能重试机制 (Auto-Retry),自动处理网络波动和 SSL 握手失败。
  • ⚡ 高并发多线程:单机支持多线程并行刷题,配合无头模式 (Headless),速度极快。

🛠️ 快速开始 (Quick Start)

1. 环境准备

确保已安装 Python 3.8+ 和 Chrome 浏览器。

克隆仓库

git clone https://github.com/beforeugone520/Cognitive-Behavioral-Survey-Engine.git

cd Cognitive-Behavioral-Survey-Engine

安装依赖

pip install -r v2-web-dashboard/requirements.txt

2. 配置驱动

下载与您 Chrome 版本匹配的 chromedriver.exe (下载地址),并将其放置在 v2-web-dashboard 文件夹下。

3. 运行可视化引擎

python -m streamlit run v2-web-dashboard/app.py

浏览器将自动打开控制台(默认地址 http://localhost:8501)。


📝 配置指南 (Configuration)

在可视化界面的 "🛠️ Config Editor" 标签页中,您可以针对不同问卷定制逻辑。

策略类型 (Strategy)

策略代码 适用场景 说明
persona_score 量表题 (核心) 根据人格画像打分。例如 dimension="risk",风险厌恶型人格会在此类题目选高分。
fixed 测谎/陷阱题 强制选择固定选项。例如 index=0 (选第一个)。
random 人口学题目 随机选择,但支持排除特定词汇(如"其他")。
persona_mapping 收入/学历 将虚拟人格的收入等级映射到问卷选项。

反向题设置 (Reverse Scoring)

对于意思相反的题目,务必勾选 Reverse

  • 正向题:"我很担心隐私泄露" (Risk维度) -> 选 5分 (非常同意)
  • 反向题:"我觉得互联网非常安全" (Risk维度) -> 选 1分 (非常不同意) -> 勾选 Reverse

🤖 AI 辅助配置 (AI Copilot)

不想手动写配置?您可以复制以下 Prompt 发送给 ChatGPT/DeepSeek,让 AI 帮您生成 config.json

👉 点击展开 AI 配置生成指令
# Role
你现在是一位资深的社会科学量表设计专家和 Python 数据结构工程师。你的任务是根据我提供的【问卷内容】,生成一份符合特定 JSON 格式的自动化答题配置代码。

# Goal
生成一个 `config.json` 结构,用于 Selenium 自动化脚本。该脚本会根据关键词匹配题目,并根据预设的“人格维度”进行有倾向性的答题,以确保生成的数据具有较高的信度(Cronbach's Alpha)和效度(KMO)。

# Output Format (JSON)
请严格遵守以下 JSON 结构,不要包含任何注释,只输出纯 JSON 代码:

{
  "comment": "自动生成的问卷配置",
  "global_settings": {
    "run_times": 100
  },
  "questions": [
    {
      "description": "题目简述(如:Q1-性别)",
      "keywords": ["题干中的独特关键词1", "关键词2"], 
      "strategy": "策略类型", 
      "index": 0, 
      "dimension": "维度代码",
      "reverse": false,
      "exclude": ["排除词1"]
    }
  ]
}

# Strategy Rules (策略说明)
对于每一道题,请根据题目类型选择以下 `strategy` 之一:

1. **fixed** (固定选择):
   - 适用场景:测谎题、陷阱题、或者是人口学题目中你想固定样本属性的。
   - 必须字段:`"index": 0` (0代表选第一个选项)。

2. **random** (随机选择):
   - 适用场景:无关紧要的人口学题目(如性别、年级),或者非量表类题目。
   - 可选字段:`"exclude": ["其他"]`。

3. **persona_score** (核心智能策略 - 重点):
   - 适用场景:**李克特量表题** (1-5分) 和 **倾向性多选题** (Checkbox)。
   - 原理:脚本会根据设定的人格维度分值来答题。
   - 必须字段:`"dimension": "xxx"`。请归纳出 3-5 个核心维度(如 tech, risk, price, ease, social)。
   - 必须字段:`"reverse": true/false`。
     - **单选题逻辑**:
       - `reverse: false`: 维度分越高,选的选项分值越高(如非常同意)。
       - `reverse: true`: 维度分越高,选的选项分值越低(如非常不同意)。
     - **多选题逻辑**:
       - `reverse: false`: 维度分越高,勾选的选项**数量越多**(表现为对该领域越熟悉/越感兴趣)。
       - `reverse: true`: 维度分越高,勾选的选项**数量越少**。

# Workflow
1. 分析问卷文本。
2. 提取所有题目,判断它是人口学题目还是量表题目。
3. 对量表题目进行维度归类(Dimension Grouping)。
4. 识别量表题目中的反向题(Reverse Coding)。
5. 提取每道题的独特关键词(Keywords),确保最短且唯一。
6. 输出最终的 JSON。

# User Input
(请在下面粘贴你的问卷题目文本,可以是直接复制的文字)


⚠️ 免责声明 (Disclaimer)

本项目仅供学术研究、软件测试及算法验证使用。

  • 请勿用于恶意刷票、破坏性攻击或任何违反目标平台服务条款的行为。
  • 开发者不对使用本工具产生的任何后果负责。

📄 License

此项目遵循 MIT License 开源协议。


国内用户安装建议

如果你在国内网络环境下运行本项目,请参考以下优化建议:

  1. 使用镜像源安装依赖: 由于官方 PyPI 源访问较慢,建议使用清华大学镜像源:
pip install -r v2-web-dashboard/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
  1. ChromeDriver 下载提示: 如果无法访问 Google 官方驱动下载地址,推荐使用 淘宝 NPM 镜像 (现为华为云代管) 下载与你 Chrome 版本一致的驱动文件 。

  2. Streamlit 运行优化: 首次运行 streamlit 时,如果卡在 Checking for updates 或加载白屏,可以尝试在项目根目录创建 .streamlit/config.toml 并添加以下配置:

[browser]
gatherUsageStats = false

Windows 用户可以直接运行bat文件,里面已经整理镜像下载链接,可直接使用

About

基于社会心理学画像建模的高拟真自动化问卷填写引擎(目标:问卷星)。集成对数正态时间分布模型与 8 种认知行为剧本,支持多维因子解耦生成,旨在提供具备高统计学信效度(SPSS)的合成样本采集方案。支持动态隧道代理与 WebDriver 特征对抗。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published