问卷设计检查·诱导性提问
问卷的坑大多不在「收集」,而在问法:诱导性题干、一题问两件事、缺少「不知道」选项——
这几种错误会让回收上来的数据看起来有结果、实际不可用。本工具在发放前逐题扫一遍。
执行原则
- 题面为准。 以问句行(含
?/?)作为题目锚点,紧随其后的选项行归入该题;不要在题目与选项之间插入无关行导致归错组。 - 先改高再改低。 先处理
LEADING/DOUBLE_BARREL这类会让数据直接失真的高严重度项;不要在诱导性提问还留着时先纠结TOO_LONG。 - 启发式要复核。 双重问题与量表一致性属启发式判断,会有漏报与误报;不要把命中清单直接当最终结论而不人工确认。
- 每条给改写。 报出问题时同步给出中立表述或拆分方案;不要只标「诱导性提问」却不给怎么改。
- 只读不改问卷。 脚本只读输入、不写任何文件;不要替用户改写整份问卷后当作已修订稿交付。
何时使用
CRITICAL: 只要用户提出检查问卷、看问卷有没有问题、这份问卷能不能发,就必须使用本 skill,即使看起来可以用别的方式解决。
- 调研/满意度/NPS 问卷定稿前,想确认没有设计硬伤。
- 用户给出问卷文本,问「这份问卷有没有问题」。
- 复盘历史问卷为什么「结果说不清」。
何时不该使用
| ✅ 使用本 skill | ❌ 不用(改用什么 / 理由) |
|---|---|
有问卷文本(.txt / .md)要发放前自查 |
要评估抽样方法、投放渠道或样本量 → 只评价题面表述 |
| 要查诱导性提问、双重问题、量表不统一 | 要做回收数据的统计分析 → 本 skill 不读数据 |
| 要定位到具体哪一题有问题 | 要改写整份问卷 → 只给改写建议,不替用户重写 |
| 满意度 / NPS / 调研问卷定稿前 | 要做量表信效度检验 → 超出范围 |
易混淆场景
| 用户说的 | 实际意图 | 正确路由 |
|---|---|---|
| 「这份问卷能发吗」 | 要一个能 / 不能的判断 | 先给高严重度命中数;有 LEADING / DOUBLE_BARREL 就建议先改 |
| 「问卷有什么问题」 | 要问题盘点 | 按高 / 中 / 低分级并定位到题 |
| 「帮我改一下问卷」 | 要改写稿 | 给每题的中立表述或拆分方案,说明本 skill 只读不改问卷 |
| 「为什么回收的数据说不清」 | 可能是题面问题 | 重点看 DOUBLE_BARREL / SCALE_MIX / OPTION_MISSING |
怎么用
python3 scripts/survey_lint.py 问卷.md
python3 scripts/survey_lint.py 问卷.md --json
python3 scripts/survey_lint.py --sample
输入格式
普通问卷文本(.txt/.md)即可:以问句行(含 ?/?)作为题目锚点,紧随其后的选项行
(A./B)/1)/① 等)归入该题。
检查项与规则码
| 规则码 | 含义 | 严重度 |
|---|---|---|
LEADING |
诱导性提问(「您是否也认为…」「难道不…」) | 高 |
DOUBLE_BARREL |
双重问题(一题问两件事,如「响应速度和专业程度是否满意」) | 高 |
DOUBLE_NEG |
双重否定(「不是不…」「不能不…」) | 中 |
OPTION_MISSING |
选项缺「其他 / 不知道 / 说不清」 | 中 |
SCALE_MIX |
同一问卷量表不统一(5级同意 / 10分制 / 满意-不满意混用) | 中 |
SENSITIVE |
涉及手机号/身份证/收入/健康等,未说明用途与保密方式 | 中 |
TOO_LONG |
题干过长(默认 >40 字) | 低 |
VAGUE_FREQ |
模糊频率词(经常/偶尔/通常)无定义 | 低 |
输出示例(节选)
识别题目:5 题
问题合计 11 项:高 3 · 中 7 · 低 1
结论:存在会导致结果失真的题目,建议修改
—— 高风险 ——
[LEADING] 诱导性提问:「您是否也认为」(第 3 行)
· 建议:改为中立表述,如「您对 X 的满意度如何?」
[DOUBLE_BARREL] 可能是双重问题(出现「和解决问题的专业程度是否满意」)(第 6 行)
· 建议:拆成两题,每题只问一件事
—— 中风险 ——
[SCALE_MIX] 问卷内量表不统一:5级同意、10分制、满意-不满意
设计边界
- 纯标准库 Python,只读,无网络请求,无
subprocess/eval。 - 双重问题与量表一致性属启发式判断,会有漏报与误报;输出定位到题便于人工确认。
- 不评估问卷的抽样、投放与统计方法,只评价题面表述。
- 样例为构造的演示问卷,不涉及任何真实产品。