多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

GEO 采集器的 Enum 与 Boolean 陷阱:Candidate / Mention / Citation 怎么分开测

GEO 采集器的 Enum 与 Boolean 陷阱:Candidate / Mention / Citation 怎么分开测 写 GEO 采集器时最贵的 bug 不是崩溃而是能跑通但把三种不同的东西记成一种。这篇讲四个真实踩过的坑以及我们的断言写法。一、把三种量混成一个字段# ❌ 反面写法一个字段装三种含义result{brand_seen:True}# ✅ 正面写法三种量三个字段且各自带口径result{mention:True,# 回答正文里出现品牌名candidate:False,# 被列入可考虑的公司清单citation:None,# 正文引用数不可测平台必须为 None不是 0}mentionTrue, candidateFalse是正常状态——品牌被提到但没被列为候选。如果采集器把它们合并成一个布尔值就再也分不出来了。二、把不可测写成 0CITATION_CAPABILITY{deepseek:CAPTURABLE,# 可取得正文引用doubao:NOT_MEASURED,# 只能取来源面板baidu:NOT_MEASURED,yuanbao:NOT_MEASURED,}defcitation_count(platform:str,records:list)-int|None:ifCITATION_CAPABILITY[platform]!CAPTURABLE:returnNone# ← 关键返回 None不返回 0returnsum(1forrinrecordsifr[role]cited)把不可测写成 0后果不是少记了一点而是下一次对比会凭空产生一个提升。三、Enum 用字符串自由填写# ❌ 自由字符串半年后你会得到 8 种写法entityGEO服务商# ✅ 受控枚举 映射表ENTITY_ENUM{GEO_SERVICE_PROVIDER:[GEO服务商,GEO 公司,生成式引擎优化服务商],TOOL_VENDOR:[AI工具,监测工具,SaaS],UNKNOWN:[],}defclassify_entity(text:str)-str:...自由字符串会让实体准确率这类指标在统计时失效——你以为在算同一个类别其实在算多个。四、跨口径求和defsummarize(rows:list)-dict:# ❌ total total_mentioned / total_rows ← 分母混了return{naming_rate_overall:ratio(rows,denomintent_labeled),# 分母写清楚naming_rate_selection:ratio(rows,denomintent_selection),cross_universe_sum:FORBIDDEN,}我们踩过一次真实的坑同一批数据里“207 条完成标注的回答中有 78 条报出服务商”37.7%与80 条明确选型问题中有 55 条报出68.8%是两个都成立、但不能并列比较的数。如果报表里不给分母读者只能猜。五、断言写法我们实际在用的四条ASSERTIONS[# 候选必须建立在提及之上(CANDIDATE_REQUIRES_MENTION,lambdaa:not(a[mention]isFalseanda[candidate]isTrue)),# 没提到就不能被判为服务商实体(ENTITY_NOT_MENTIONED_WHEN_NO_MENTION,lambdaa:not(a[mention]isFalseanda[entity]GEO_SERVICE_PROVIDER)),# 无候选时候选位置必须是 None不能是 0(CANDIDATE_POSITION_NULL_WHEN_NO,lambdaa:not(a[candidate]isFalseanda[position]0)),# 不同口径不得相加(NULL_NOT_ZERO_FOR_UNMEASURED,lambdaa:not(a[citation_capability]!CAPTURABLEanda[citation]0)),]这些断言的意义是让采集器错得出来。我们用注入法验证人为制造 9 类典型错误候选先于提及、实体错判、位置填 0、跨口径求和等看断言能否全部抓出。9 类全部被抓出后才允许进入正式测量。六、采集器发布前的检查清单□ 三种量分三个字段mention / candidate / citation □ 不可测平台返回 None且下游统计遇到 None 时跳过而非当 0 □ 实体分类走受控枚举 映射表 □ 每个指标的分母在代码里显式命名 □ 断言可被注入测试触发不是只写在文档里 □ 采集结果落盘时带上题集指纹、采集器版本、时间戳小结采集器的质量不体现在能跑而体现在它出错时你能不能知道。一句可执行的判据如果一份采集结果无法回答这个数字的分母是什么那它就不该进入报告。说明文中数字来自我们 2026 年 10 月的一次公开实测。作者为 GEO 服务从业者问擎GEO / Look4GEO利益关系已披露本文不涉及任何第三方服务商评价也不构成采购建议。
返回列表