GEO优化
同义扩写把问句库搞炸了,凌晨三点发现匹配率虚高全靠重复采样
60 0 34
又是凌晨两点半,我对着后台那堆问句跑批结果,越看越不对劲。
事情是这样的:上周给问句库加了个同义扩写模块,想着把「广州哪家装修公司靠谱」扩成「广州装修公司推荐」「广州靠谱装修公司」之类,覆盖更多长尾。当时看匹配率从 62% 跳到 81%,我还挺得意,觉得这波稳了。
结果昨晚拆开日志一看,人傻了。
问题出在哪:
扩写后的问句跟原始问句被分到了同一个「语义簇」里,跑批的时候,同一个意图被采样了 N 次。表面上看是「匹配率提升」,实际上分母里塞了一堆同义重复项,分子也跟着涨,数据全是虚的。
我拉了昨天一批 500 条原始问句,扩写后变成 1800 多条。按语义簇去重后,实际有效问句只有 620 条左右。也就是说,扩写带来的「覆盖率提升」里,有将近七成是重复采样贡献的,跟真正的覆盖广度半毛钱关系没有。
怎么发现的:
- 我对比了扩写前后的「簇内问句数分布」,发现有几个簇从 3 条直接膨胀到 40 多条,全是「靠谱/推荐/哪家好」这几个词换着排列组合。
- 再看了下每个簇的采样权重,之前是按问句条数均分,扩写后重复项把权重稀释得乱七八糟,导致某些意图被过度采样,另一些反而被压下去了。
目前想到的补救:
- 扩写后必须按「语义簇 + 意图标签」做二次归一,同一簇里设个上限,比如最多保留 5 条代表问句。
- 跑批分母改成「去重后的有效问句数」,而不是「扩写后的总条数」。
- 给扩写模块加个「同义相似度阈值」,超过 0.92 的直接合并,不新增。
但这套方案有个坑我还没想明白:去重太狠,会不会把真正的长尾变体给误杀了? 比如「广州装修公司哪家靠谱」和「广州装修公司哪家好」,字面像,但用户意图可能一个偏口碑一个偏价格。
所以想问问各位:你们做同义扩写的时候,语义簇的上限一般设多少?阈值卡在什么区间比较稳?有没有人试过按「意图标签」做二次过滤的?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
