关于 humanize
humanize 用于扫描学术文本中的 AI 写作模式,并在不改变原意的前提下改写标记段落,面向论文作者和审阅者。它还明确检查引文、数字及句式变化是否保真。
主要功能
- 01扫描 27 种 AI 写作模式
- 02报告模式次数与所在位置
- 03按需改写标记段落
- 04检查引文与数字保留情况
- 05验证句式变化及模式
适用场景
- 01检查学术论文中的 AI 写作模式
- 02修改审稿回复信
- 03检查改写是否造成引文或数字偏差
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aperivue/ medsci-skills --skill humanize安装后在 Claude Code 中输入/humanize确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
skill.ymlreferences/ai_patterns.mdscripts/check_rewrite_fidelity.pycheck_sentence_variety.pytests/test_rewrite_fidelity.shtests/fixtures/fidelity_assign_after_ineq.mdfidelity_assign_after_same.mdfidelity_assign_after_swap.mdfidelity_assign_before.mdfidelity_cite_after_keyswap.mdfidelity_cite_after_locator.mdfidelity_cite_after_moved.mdfidelity_cite_after_same.mdfidelity_cite_before.mdfidelity_reorder_after.mdfidelity_reorder_before.mdfidelity_swap_after.mdfidelity_swap_before.mdrewrite_after_bounded.mdrewrite_after_numdrift.mdrewrite_after_wholesale.mdrewrite_before.mdrewrite_direction_after_flip.mdrewrite_direction_after_minus.mdrewrite_direction_after_same.mdrewrite_direction_before.mdvariety_long_within_bound.mdvariety_mixed.mdvariety_overlong.mdvariety_uniform.md详细介绍
Humanize Skill
此技能仅用于移除 AI 写作模式;不进行通用文字编辑、评估科学质量、检查期刊格式或翻译。
每次会话开始时,在扫描之前读取 ${CLAUDE_SKILL_DIR}/references/ai_patterns.md:全部 27 种模式的定义、注意词汇、示例、检测 grep、各模式的修正方法,以及按章节划分的优先级,都只在该文件中。
工作流
阶段 1:扫描
扫描用户提供的章节,检查全部 27 种模式。对于审稿意见回复信和投稿附信,优先检查模式 22–24。对于完整稿件,遵循 ai_patterns.md(章节专用应用指南)中的章节优先级。对于发现的每种模式,记录其编号和名称、出现次数、确切原文,以及所在位置(段落编号或行范围)。
输出:模式频率表
## AI Pattern Scan Report
Section: {section name}
Word count: {N}
| # | Pattern | Count | Severity | Example from text |
|---|---------|-------|----------|-------------------|
| 1 | Significance inflation | 3 | HIGH | "...pivotal role in diagnostic imaging..." |
| ... | ... | ... | ... | ... |
Patterns not detected: 2, 4, 9, 14, 15
Total AI pattern instances: {N}
AI pattern density: {N per 1000 words}
阶段 2:报告
- 每种模式的严重程度:高(>3 次)、中(1–3 次)、低(0 次,未发现)。
- 密度:全部 27 种模式的总实例数除以每 1000 词。目标:< 2.0。
**关卡:**提交报告,并询问用户要修正哪些模式。默认修正所有高和中等级别的模式。
阶段 3:修正
根据 ai_patterns.md 中针对每种模式的修正方法,重写标记的段落,并遵循以下规则:
- 保持技术准确性。 所有数字、统计量、p 值、置信区间和临床事实必须保持不变。
- 保留引文。 不得添加、删除或移动任何引文。
- 保持资深放射科医生为同行顶级期刊撰稿时所用的正式学术语体。 不得让文字变得随意或口语化。
- 保留领域专用术语。 “Convolutional neural network”、“apparent diffusion coefficient”、“Fleiss' kappa”等术语保持原样。
- 不得引入新论断、删除现有论断或改变句意——只改写,不重新阐释。如果无法在不改变句意的情况下修正某段内容,则保留原文并标记出来供用户处理。
- 自然时使用主动语态:“We analyzed”优于“Analysis was performed.”
- 变换句式。 将简短的陈述句(8–12 词)与较长的句子(25–35 词)交替使用。去 AI 化处理往往会拉平节奏——缩短长句,并扩充短句,使其趋于中等长度,这本身就是一种特征。
scripts/check_sentence_variety.py会在阶段 4 检查此规则。 - 减少对照和分裂句结构(模式 27,M2 启发式)。 对每个“X,而非 Y”、“不是 X,而是 Y”或“X,而非 Y”句式,应用否定形式测试:删去否定部分,并将分句改写为肯定形式。如果有事实因此消失,说明对比具有实际作用——予以保留;如果没有事实消失,说明对比只是修饰——删去。应根据稿件整体的使用频率作判断,而非逐句判断,并保留两三处以作强调。将分裂句(“What … is …”“It is … that …”)改写为普通的主谓语序(“What matters is X” → “X matters”)。
scripts/check_rhetorical_density.py(位于/self-review)会在阶段 4 测量这一点。
**输出:**以差异格式或修订模式显示修改,并呈现重写后的文本。
阶段 4:验证
保留改写前的文本。 在原地编辑之前,将原文复制到保真度检查可以读取的位置(cp manuscript.md /tmp/pre_humanize.md)。没有这份文本,阶段 4 只能重新扫描模式,无法判断改写是否保留了数字和引文。
运行两项确定性检查,然后使用同一组 27 个模式重新扫描改写后的文本。
python3 "${CLAUDE_SKILL_DIR}/scripts/check_rewrite_fidelity.py" \
--before /tmp/pre_humanize.md --after manuscript.md \
--out qc/rewrite_fidelity.json --strict
python3 "${CLAUDE_SKILL_DIR}/scripts/check_sentence_variety.py" \
--manuscript manuscript.md --out qc/sentence_variety.json
NUMBER_DRIFT、NUMBER_REASSIGNED、CITATION_DROP 或 CITATION_MOVED 表示改写破坏了某项不变量——还原该段,重新改写,并告知用户。EDIT_FOOTPRINT_HIGH 仅供参考:模式 6 和 18 按设计会替换整个段落,因此,对内容扩充后的草稿进行正确处理,也可能导致超过 60% 的词语发生变化。阅读差异,确认作者的论点仍然保留,不要仅凭百分比就认定存在问题。
已知限制: 保真度检查不会检查新增或删除的否定词、以文字形式写出的数字、变更的单位,或与非百分比数字相邻的方向词。检查正常通过并不代表这些内容没有问题;请阅读差异加以核实。
输出:验证报告
## Verification Report
| Metric | Before | After |
|--------|--------|-------|
| Total instances | 23 | 4 |
| Density (per 1000 words) | 8.2 | 1.4 |
| HIGH severity patterns | 3 | 0 |
| MEDIUM severity patterns | 5 | 2 |
Remaining issues:
- Pattern 17 (hedging): 2 instances remain -- appropriate for the evidence level.
Verdict: PASS (density < 2.0)
如果密度仍高于 2.0,则再运行一轮修复与验证(最多 3 轮)。由其他技能调用时,返回验证报告,以便调用方检查通过或失败状态。
27 个检测模式
全部 27 个模式均定义在 references/ai_patterns.md 中。以下两项须严格按所述规则处理:
| # | 模式 | 检查内容 | 修复方法 |
|---|---|---|---|
| 13 | 过度使用 em dash | 每 1000 个词中超过 2 个 em dash(/self-review 的古典风格检查会在稿件正文中 em dash 超过 25 个时判定失败) | 使用括号或重组句子。将 — X — 插入语转换为 (X) 后,运行括号范围安全扫描(python3 "${CLAUDE_SKILL_DIR}/../self-review/scripts/check_paren_spans.py"):批量转换可能会将句子边界两侧的两个无关破折号配成一对,把整句话(或“第六,……”这样的限制说明)括在一对括号内——括号配对完整但内容有误,因此平衡检查无法发现。逐句处理;切勿跨越 . 进行匹配 |
| 21 | AI 使用披露套话(正文) | 稿件正文中的“## 人工智能使用披露”、“未使用生成式 AI 创作……” | 按目标期刊的要求(期刊配置文件中的 Disclosure location)放置:某些期刊要求放在方法或致谢部分,其他期刊则只要求放在投稿信、标题页或投稿表格中。不要删除期刊要求放在正文中的披露内容 |
模式 22–24 仅适用于审稿意见回复信和致编辑的投稿信,不适用于稿件正文。这些模式在 ai_patterns.md 中统一定义(回复信模式);撰写指南请参阅 revise 技能的 references/r2r_voice.md。
检查门槛
| 闸门 | 严重程度 | 触发条件 | 失败时的操作 |
|---|---|---|---|
| AI 模式密度目标 | ADVISORY | 扫描后密度 > 2.0 个模式 / 1000 词 | 发出警告;显示仍被标记的段落,供人工审核 |
| 模式 13 — 转换破折号后括号跨度损坏 | ENFORCED | 执行 — X — → (X) 扫描后 | 运行 python3 "${CLAUDE_SKILL_DIR}/../self-review/scripts/check_paren_spans.py" --strict;PAREN_SPAN_ORDINAL / PAREN_SPAN_SENTENCE 表示转换将句子或序数包进了括号——定稿前修复 |
模式 19 — § 符号 | ENFORCED(资深 MA 审稿人准备) | grep -c "§" manuscript.md > 0 | 自动移除;验证改写后的计数 == 0 |
模式 20 — (see Methods §X) 自我引用 | ENFORCED | 找到匹配项 | 改写为直接引用章节名称 |
| 模式 21 — AI 使用披露位置不当 | ENFORCED | 在要求将 AI 使用披露放在其他位置的期刊正文中出现披露,或在多个位置重复披露 | 将其移到目标期刊要求的位置(期刊配置);不得为了隐瞒工具而改写必须披露的内容 |
| 模式 26 — 警句密度 | ENFORCED | 否定式定义率和简短陈述句占比均超过阈值 | 运行 python3 "${CLAUDE_SKILL_DIR}/../self-review/scripts/check_aphorism_density.py" --manuscript manuscript.md;APHORISM_DENSITY(Minor)表示散文堆满警句,解释性句子被压缩掉了——将大多数警句融入相邻句子,并补回解释,保留两三处以作强调;切勿直接删掉它们,否则会进一步缩短正文 |
| 模式 27 — 对偶/分裂句密度 | ENFORCED | “rather than” / “not X but Y” / “X, not Y” 或 “What … is …” / “It is … that …” 超过每 1000 词阈值且达到原始计数下限 | 运行 python3 "${CLAUDE_SKILL_DIR}/../self-review/scripts/check_rhetorical_density.py" --manuscript manuscript.md;ANTITHESIS_DENSITY / CLEFT_DENSITY(均为 Minor)——应用修正规则 8(M2 测试)。单独使用具有实际功能的 “rather than” 或 “instead of” 永远不会触发 |
| 模式 25 — 过度使用行内强调 | ENFORCED | 应用白名单后,斜体强调密度超过阈值 | 运行 python3 "${CLAUDE_SKILL_DIR}/../self-review/scripts/check_emphasis_density.py" --manuscript manuscript.md;EMPHASIS_OVERUSE(Minor)表示应去除行内斜体(仅保留统计符号 / 拉丁文 / 基因-物种名);整句使用斜体是最明显的信号 |
| 模式 22-24 — R2R 编辑机制/草稿行号/工具泄露 | TRIAGE(回复信);§ = 0 为硬性要求 | ai_patterns.md 的 R2R 部分中的检测 grep 命令显示候选项 | 审核每个命中项(分析叙述、引用的新增内容、修订稿页码/行号都不是判断信号);将确认的问题改写为实质性正文 |
| 引文保留不变量 | ENFORCED | 删除或更改一条引文项(多键或定位符 Pandoc 引文中的每个键,或数字标记),或将其移出所依附词语所在的句子,而该词语仍保留原位 | scripts/check_rewrite_fidelity.py --before <pre> --after <post> --strict → CITATION_DROP / CITATION_MOVED(Major);还原该处单独的改写并标记给用户 |
| 数值保留不变量 | ENFORCED | 数字标记的计数发生变化(符号、不等号和百分比方向均属于标记;将符号改写为文字也会触发),或数值互换位置而其周围词语未变 | 同一脚本 → NUMBER_DRIFT / NUMBER_REASSIGNED(Major);还原并标记。已知限制:否定词、用文字写出的数字、单位,或紧邻非百分比数值的方向词不会被检查——请阅读差异 |
| 改写幅度 | ADVISORY | 更改的词元比例超过 --warn-pct(默认值 70) | EDIT_FOOTPRINT_HIGH(Minor)——不会阻止流程;阅读差异(阶段 4) |
| 修正规则 7 — 句长均匀度 | ADVISORY | 正文中没有短句(≤12 词)或没有长句(≥25 词) | scripts/check_sentence_variety.py --manuscript <file> → SENTENCE_UNIFORM(Minor);拆分或合并句子,直到两个长度区间都出现。句子少于 15 个时不提示 |