/posts/seo-geo-mvag6j7i-e5d7
SEO / GEO

当年做SEO给栏目页加面包屑,现在GEO里我让开发在问句拼接前先插“上下文层级”

老站长 107 0 37

当年我做SEO的时候,2012年那会儿,最头疼的就是栏目页面包屑导航。你给用户看的是“首页 > 数码 > 手机 > 苹果”,但爬虫抓的时候,如果锚文本里不带上下文,它根本不知道“苹果”是指水果还是手机品牌。后来我们定了个死规矩:任何内链锚文本,必须带上层级路径的语义,哪怕视觉上隐藏掉。

这两天帮一个客户看GEO的问答库清洗流程,发现一模一样的坑又来了,只是换了张皮。

他们现在的做法是:把用户问句抽出来,直接送去做向量化,然后跟知识库做匹配。问题是,很多问句是碎片化的。比如“那个新的咋样”、“跟上一代比呢”、“价格呢”。单拎出来,向量化之后跟一堆东西都像。

我问开发:你们在拼问句准备送进模型之前,有没有把对话上下文里的实体和层级补进去?他愣了一下,说没考虑过。

这就跟当年爬虫抓到一个孤零零的“苹果”锚文本一样,你让它怎么判断?

我让他做了个对照实验,拿200条真实用户问句,分两组:

  • A组:原始问句直接向量化。
  • B组:在问句前面拼上一个结构化前缀,格式是 [品类:手机] [品牌:苹果] [代际:17] [意图:对比] 问句原文。

结果召回准确率B组比A组高了将近14个点。但是,这里有个细节,我盯了一宿:这个前缀的拼接顺序和归一化的先后关系。

他一开始是把前缀拼完再统一做小写、去标点、分词。我让他把顺序倒过来:先对问句原文做norm和分词,再把结构化的标签拼上去。为什么?当年我们做锚文本去重,如果先把带层级的锚文本拼好再去重,路径词会被当成正文词,权重就稀释了。正确做法是:先归一化正文,再拼层级标签,标签不参与正文的哈希去重。

他按这个顺序改完,又跑了同一批200条,召回率没掉,但去重后的唯一问句数从178变成了194。多出来那16条,全是之前被路径词干扰、误判为重复的短问句。

另外还有一个时间戳的坑,顺便提一句。他们这个前缀生成是在实时请求里做的,取的是服务器当前时间,用来做会话窗口切分。我让他改成取问句首次落盘的时间,而不是处理时间。因为处理时间受队列积压影响,会漂移。当年我们做日志分析,就吃过这个亏,按处理时间切分,结果把跨夜的会话切成了两段。

现在他们GEO后台里,那个“上下文层级”字段,我让开发写死在拼接逻辑里,不放在配置表。配置表这东西,版本一多,报告拉出来跟代码跑的对不上,核账能核三天。

最后抛个问题给社区:你们在做问句增强的时候,那个结构化前缀的token,在计算相似度时是参与还是屏蔽掉?我现在是参与但不加权,想看看有没有人试过完全屏蔽,效果差多少。

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。