误报归零的秘密yomiyasu 如何用160篇语料打磨正则表达式【免费下载链接】yomiyasuAI生成の日本語を自然な日本語へ推敲するAgent Skill / Agent Skill for Refining AI-Generated Japanese into Natural Japanese项目地址: https://gitcode.com/gh_mirrors/yo/yomiyasuyomiyasu 是一个把 AI 生成的日语推敲成自然可读日语的 Agent Skill随附一个用正则表达式量化AI 味的 linter。这套 linter 最难的地方不是揪出 AI 腔而是不冤枉人——一个朴素的壊れる坏了关键词就能把胃坏了、饭团、闹钟坏了全部扫进黑名单。本文拆解 yomiyasu 如何靠 160 篇分层语料把正则误报一路打磨到零。为什么误报是日语正则 linter 的第一敌人AI 腔恰好集中在几个高频动词上壊れる坏了、倒す压倒、溶かす溶解、効く见效、握る握住……可日语动词多义性极强这些词同时承载着大量完全正当的日常含义。只要做正则 linter就绕不开这些词。yomiyasu 的基准脚本里内置了一组朴素正则作为对照组见 benchmark_corpus.py#L22-L35壊れる → 壊(?:れる|れ|れず) 握る → 握(?:る|り|っ|ら) 倒す → 倒(?:す|し|さ)问题立刻暴露壊(?:れる…)命中お腹を壊してしまいました吃坏了肚子握(?:…)命中お握り饭团倒(?:…)命中卒倒过劳晕倒——这些全是人写的、完全正常的日语。对新手写正则来说这正是一个经典的陷阱关键词匹配在脏语料上越多越好在干净语料上一次都不能多。160 篇语料5 个分组各有分工误报能不能归零取决于你有没有一套标准答案来反复验证。yomiyasu 在 tests/corpus/ 下组织了一套 160 篇的分层语料分组篇数职责human人类写作16护栏真人文章不能被冤枉edge_cases边界用例48回归测试每条单句对应一个高危误伤场景raw_ai原始 AI 输出24真阳性对照8 类题材 × 3 种语气blacklist_ai禁词版 AI 输出24验证禁词法的局限检测残余 AI 味yomiyasu_rewritten推敲后文本48目标输出应得到满分或极少警告语料由两个脚本生成build_corpus.py 批量产出 96 篇 AI 文章原始、禁词版与推敲版setup_corpus_static.py 生成 16 篇人类文章与 48 篇边界用例。边界用例48 句最容易被冤枉的日语边界用例是误报归零的核心武器。每一条都是单句专门命中一个朴素正则最容易误伤的语境例如边界句节选朴素正则真实含义edge_nigiru_01.md「お昼休みにコンビニでお握りを買って」握(?:る|り|っ|ら)饭团edge_taosu_11.md「同僚が過労で卒倒してしまいました」倒(?:す|し|さ)过劳晕倒edge_tokasu_21.md「ぬるま湯をかけて氷を溶かしました」溶(?:かす|かし|かさ)物理融化冰块edge_kowareru_39.md「暴飲暴食で胃を壊してしまい」壊(?:れる|れ|れず)吃坏了胃每次修改正则后重跑基准只要这 48 篇里出现一次命中就视为回归失败。正则打磨三板斧从关键词匹配到上下文约束最终的正则规则集中在 yomiyasu_lint.py#L48-L65。对比朴素版打磨主要做了三件事1. 上下文锚定只认AI 腔的搭配壊れる本身无罪AI 腔的标志是抽象名词 壊れる的组合。于是规则从出现壊れる就报警变成只在数据、设计、系统这类抽象主语后报警朴素版: 壊(?:れる|れ|れず) 打磨版: (データ|仕様|設計|環境|ビルド|システム|秩序)が(静かに)?壊れ这样一来時計が壊れた闹钟坏了、胃を壊す吃坏胃全部自动豁免而データが静かに壊れる数据被悄悄搞坏依然命中。2. 防重复上报同一个词只扣一次分静かに壊れる悄悄坏了既是壊れる规则又是静かに规则的目标朴素写法会对同一处扣两次分。yomiyasu_lint.py#L473-L489 用区间记录去重保证每条命中只计一次。3. 限定扫描范围代码与引用不算正文语料里大量出现反例引用引用块中的 AI 坏例子、代码块、表格。如果把这些都扫进来误报必然爆表。yomiyasu_lint.py#L92-L130 的extract_plain_sentences会先剔除代码块、引用、表格、frontmatter 与行内代码只对真正的正文句子做模式匹配。基准测试结果误报归零真报不丢benchmark_corpus.py 对 160 篇语料同时运行朴素正则与打磨后的 linter完整结果存档在 benchmark_results.json分组篇数朴素正则命中linter 命中说明edge_cases48460✅ 误报抑制率 100%误报归零human161410剩余为轻微警告平均分 97.4raw_ai24712真阳性比朴素版多抓 5 处blacklist_ai24113禁词挡不住的 AI 腔被持续检出yomiyasu_rewritten48222推敲后仅剩轻微格式提示平均分 97.7这张表讲了一个完整的故事️干净语料人类 边界用例共 64 篇朴素正则命中 60 次打磨后只剩 10 处轻微提示边界组实现46 → 0的归零AI 语料朴素正则 48 篇只命中 8 次它只会数关键词打磨后的 linter 因为覆盖了比喩动词、前置废话、过度加粗、文末重复等更多维度命中 25 次——误报少了真报反而更多。三步上手跑一遍 linter 与基准测试不需要改任何代码三条命令就能复现全部流程python3 scripts/yomiyasu_lint.py your_article.md # 输出 AI 味评分报告 python3 scripts/yomiyasu_lint.py your_article.md --strict # CI 严格模式有警告即失败 python3 scripts/benchmark_corpus.py # 重跑 160 篇语料基准新手写正则规则时建议照抄这套工作流先写一组脏样本该报警的再手写 40~50 条干净单句不该报警的让基准脚本双向把关——误报归零之前真阳性再高也不可信。写在最后对任何文本检查工具而言抓得多只是及格线不误伤才是生命线。yomiyasu 用 160 篇分层语料证明正则表达式不需要更激进它需要的是上下文约束 成体系的回归语料。这套方法不限于日语脱臭写任何语言的 linter 都适用。更多规则背景可参考 SKILL.md 与 comparison_benchmark.md 中的三方对比数据。【免费下载链接】yomiyasuAI生成の日本語を自然な日本語へ推敲するAgent Skill / Agent Skill for Refining AI-Generated Japanese into Natural Japanese项目地址: https://gitcode.com/gh_mirrors/yo/yomiyasu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?