用途:把 cohort 数据中的 cancel_reason_raw 字段转换为规范的 cancel_reason_bucket(如 price、feature_gap、temporary、quality、business_end、duplicate_account、unknown),依据 config/retention-matrix.yaml 中的 reason_taxonomy 做关键词匹配。
主要能力:确定性、无需 LLM token、可重复运行。每行新增 cancel_reason_bucket(来自 YAML 分类表的规范分桶)和 cancel_reason_match(触发匹配的关键词,unknown 时为 null)。输出 cohort-<type>-classified.json,写入输入文件同目录。
使用方式:运行分类脚本。
python <skill-path>/scripts/classify_reason.py
--cohort <workspace>/retention-runs/<DATE>/cohort-<type>.json
--matrix <workspace>/config/retention-matrix.yaml
--output <workspace>/retention-runs/<DATE>/cohort-<type>-classified.json
脚本逻辑:将 cancel_reason_raw 转为小写,自顶向下遍历 YAML 分桶,首个命中的关键词生效;打印各分桶计数及最多 10 条 unknown 示例。
处理 unknown:≤5% 可接受,保留 unknown(策略引擎有兜底规则);约 10% 时优先向 YAML 分类表补充关键词后重跑,若原因过于多样可改用内联 LLM 分类,并将 cancel_reason_match 设为 "llm_fallback" 以便审计。随后向用户报告各分桶计数并确认输出路径。
边界情况:缺少 cancel_reason_raw 视为 unknown;非英文原因关键词匹配会失败,建议在 YAML 中补充本地化关键词;空 cohort 则干净退出并输出一行说明。
限制:仅基于关键词匹配,不处理语义相似或非英文文本;本地化与未知原因需人工维护 YAML 或额外流程。收费、平台、价格等资料暂未提供。