基于相似度分析的组件聚类
本文最初发布于KFive Team公众号,原始链接:https://mp.weixin.qq.com/s/mNfsPxdwsiHMkb65AcS8dA 在开始本文的论述之前,先讲一些背景知识。 百度搜索结果由一个个卡片构成,所有卡片都是独立开发维护的代码模块。由于历史积累导致这些卡片数量庞大(2000+),存在很多重复或者相似的卡片。这些卡片会严重拖累搜索整体的迭代效率,并且给卡片管理和维护增加了很多成本。所以我们想要对所有卡片统一梳理,希望能做到卡片的收敛和归一,减轻历史包袱,轻装上阵。 由于卡片数量庞大,一个一个人工确认显然是不现实的,怎么才能更高效地开展这项工作是一个棘手的问题。 目前搜索卡片都采用了组件化的开发方式,那么每个卡片的结构其实可以用一个组件树的结构来表示。我们的思路就是对这些组件树进行相似度分析,最后将相似度高的组件树归为一类,那么这一类相似度高的模板就是可以复用和归一化的。接下来具体介绍一下实现方法。 卡片相似度计算 卡片解析成组件树 借助编译工具或者框架本身提供的 compiler 方法,可以很容易的将卡片template代码转化为 AST 数据,AST 本身就...