知识卡片
短文本场景下TF/IDF失效:用预置权重的词根树结构替代
内容
传统全文检索里判断词语相关度、计算权重的经典方法是基于语料库统计的TF/IDF(词频-逆文档频率),但这套方法依赖的前提是文本要有一定长度、某个词要在语料中反复出现,才能统计出有意义的频率分布。电商商品名称这类文本恰恰相反:文字很短,一个关键词在同一条商品名称里基本只会出现一次,名称之间也没有足够的相似度基础可供参考,TF/IDF在这种场景下统计不出有意义的信号。团队的解法是放弃依赖语料统计,转而人工预置权重:通过对商品的分类、品类做梳理,建立起一套词干、词根的树形结构,为树的每一层单独设定权重,用户搜索匹配时从树的根部开始逐层比对,从而避免搜索结果被树的边缘分支(相关性较低的匹配)干扰。这个案例说明:一个统计类算法(这里是TF/IDF)在通用场景下有效,不代表它在所有子场景下都适用,当业务数据本身的统计特征(如文本长度、重复频率)不满足算法赖以生效的前提时,需要判断是否要用领域知识人工构建的结构化方案(这里是词根树+分层权重)来替代,而不是强行套用不适用的统计模型。
参考来源
- 位置:《高可用架构(第1卷)》第6章《大数据与数据库》"6.12 基于Xapian的垂直搜索引擎的构建分析"节,"6.12.4 垂直搜索技术和业务细节","1.如何提高垂直检索质量和语义识别"(源文件:_epub-src/OEBPS/Text/Chapter6_12_5.xhtml)
- 结论依据:原文说明"传统的相关度、权重的模型是基于语料库TF/IDF做的。但是商品的名称文字是很短的,基本上只会出现一次,名称相似度也没有可以参考的,那该怎么办呢?在这种情况下就需要预置权重,我们编写了一套学习的工具。通过分类、品类,建立了词干、词根的树形结构;同时设定每层的权重,那么用户在搜索的时候,匹配从根部开始,这样就避免搜出树枝部分",直接支撑本卡片结论。
- 原始内容:传统的相关度、权重的模型是基于语料库TF/IDF做的。但是商品的名称文字是很短的,基本上只会出现一次,名称相似度也没有可以参考的……在这种情况下就需要预置权重……通过分类、品类,建立了词干、词根的树形结构;同时设定每层的权重,那么用户在搜索的时候,匹配从根部开始,这样就避免搜出树枝部分。