name: test-data-cleaner description: | 测试集 Query 数据清洗工具。自动清洗 Excel/CSV 中评测 query 数据。 支持两层清洗:结构层(去重/空值/脱敏/标准化);语义层(语气词/上下文片段/语义不明过滤)。 输出清洗后文件+清洗报告。 触发词:清洗数据、query清洗、测试集清洗、无效query、去重、脱敏、语义清洗。
两层架构:结构层处理格式/语法问题,语义层处理含义层面的无效数据。
用户说"帮我把这个 query 数据洗一下"时:
scripts/clean_query.py# ========== 语义层清洗(核心能力) ==========
# 语义层全清:语气词 + 上下文片段 + 语义不明
python clean_query.py 数据.xlsx --semantic --report
# 单独过滤语气词(嗯/好的/知道了/哈哈哈)
python clean_query.py 数据.xlsx --filler --report
# 单独过滤上下文片段(但是/所以/你刚才说的)
python clean_query.py 数据.xlsx --fragment --report
# 单独过滤语义不明(测试/随便/你好/在吗/这个)
python clean_query.py 数据.xlsx --vague --report
# ========== 结构层清洗 ==========
# 推荐组合:基础清洗 + 语义清洗
python clean_query.py 数据.xlsx --empty --dedup --trim --semantic --report
# 全量清洗(结构层 + 语义层全部)
python clean_query.py 数据.xlsx --all
# 敏感信息脱敏
python clean_query.py 数据.xlsx --mask --dedup --trim --report
不要直接全量跑,先确认:
query,但可能是"问题"、"用户输入"等语义清洗的效果最直观,先让用户看看哪些会被筛掉:
python clean_query.py 文件.xlsx --semantic --report
根据 Step 1 和 Step 2 的反馈,选择合适的清洗组合。常见组合见 references/cleaning-rules.md。
返回给用户时,报告三个关键信息: 1. 输入 → 输出 行数变化(X 条 → Y 条) 2. 移除了什么 — 特别要用语义层的分类告诉用户:语气词 N 条、上下文片段 M 条、语义不明 K 条 3. 文件在哪(路径)
必选: input 输入文件路径
--column TEXT 默认 "query" 指定清洗列
--sheet TEXT 指定 Excel sheet(默认第一个)
--output PATH 输出文件路径
--report 生成清洗报告 .txt
结构层清洗:
--empty 移除空值
--dedup 精确去重
--fuzzy-dedup 模糊去重(字符集相似度 ≥85%)
--short [N=2] 过滤少于 N 字
--long [N=500] 过滤超过 N 字
--gibberish 过滤纯数字/纯标点/重复单字符
--normalize 全角→半角 + 合并空格
--punctuation 中文标点→英文标点
--html 去 HTML 标签
--emoji 去 Emoji
--mask 敏感信息脱敏
--trim 去首尾空白
语义层清洗 ⭐:
--filler 过滤语气词/无效应答(嗯/好的/知道了/然后呢/哈哈哈)
--fragment 过滤上下文片段(但是/然而/你刚才说的/所以这个)
--vague 过滤语义不明(测试/随便/你好/在吗/这个/666)
--semantic 语义层全清(= filler + fragment + vague)
--all 执行全部(结构层 + 语义层)
语义清洗是启发式规则,不是 AI 判断,可能会有误杀/漏网:
--filler 最安全,几乎不会误杀正常 query--fragment 对 ≤15 字且以连词开头的 query 特别敏感,长 query 不受影响--vague 过滤"测试"、"你好"、"随便"等常见无意义 query,注意这些也可能是某种场景下的合法 query--semantic --report 输出清洗报告,确认无误后再全量清洗--mask 脱敏不可逆,确认用户需要再执行openpyxl(已安装),无其他外部依赖详细清洗规则说明和常见组合:见 references/cleaning-rules.md
这个 Skill 的文档看起来很专业很完整,但实际上用不了——它只告诉你怎么用,却没给你能用的工具。文档本身写得很清楚,流程说明也详细,但缺少最关键的东西:一个能真正运行的清洗程序。建议等作者补充完整代码后再使用。