TermWeight 词权重算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TermWeight 词权重算法相关的知识,希望对你有一定的参考价值。
参考技术A 在用户的搜索Query中,有些词在用户的核心语义诉求中占据主导地位,在召回排序时需要重点关注,而有些词则重要性较低,即使丢掉也不影响用户的核心语义表达。
TermWeight是自动计算用户查询query中各term之间相对重要性关系的模块。通过区分用户查询query中不同term的重要程度并赋予相应的得分,从而召回与用户意图最为相关的结果,继而提高搜索的用户体验。
方法:利用query和doc的文档集合计算tf-idf并归一化,作为term的词权重
优势:简单,易实现
劣势:每个term的词权重是静态的,无法根据上下文变化,效果差
term weight训练,方法主要分为两种:(1) 基于点击词共现 和 (2) 基于偏序关系 。
基于点击词共现法将term weight看做是回归任务来解,标注数据计算时采用term recall得分来表示query中各term的重要性关系。
词共现 :基于uclog的query-title点击数据构建训练集,即通过计算 指标 term recall 作为词权重。
term recall 计算公式如下:
如果是冷启动阶段或词共现计算的 term recall 准确率低,可通过分层回归得分做人工数据标注,示例如下:
注: 分层数和得分可根据具体业务场景来调整
基于偏序关系的方法将term weight看做是排序任务来解,标注数据时采用偏序关系来表示query中各term的重要性关系,如:
该方法适用于 用户query短,多数点击doc都会包含query中所有term ,从而使得 词共现 方法失效。
应用场景的不同,会对应不同的模型选型方案:
(1) DeepCT/DeepRT
基于深度上下文语义的词权重。(a) 通过深度模型生成上下文化的词embedding + (b) 线性回归预测词权重。
优势:利用上下文语义,效果好。
劣势:模型略复杂,需要控制模型复杂程度,满足实时推理。
(2) Feature+ML
基于特征设计+机器学习回归模型预测词权重得分。
优势:计算高效,满足实时推理。
劣势:需要人工精细化设计特征。
下面就两类模型选型详细展开介绍。
DeepCT/DeepRT框架中整体使用的是:(a) 通过深度模型生成上下文化的词embedding + (b) 线性回归预测词权重。
如果数据集是基于词共现的得分,则可直接用MSE等损失函数,如果是基于偏序关系构建的训练集,则可以使用Pairwise Hinge Loss。
论文中使用的是BERT做上下文语义提取,我自己的实践中用的是BiLSTM+Attention,无论哪种方法,其核心本质是希望利用NMT结合上下文语义来动态判断term在当前语境的重要程度。
国际惯例,一图以蔽之
如果系统RT要求较高,则推荐使用BiLSTM,如果追求效果,预训练语言模型的更有优势,需要结合自己的业务场景做选型。
Feature+ML的整体思路是:通过人工设计有效特征,再利用机器学习中的GBDT/LR等模型来做回归预测或排序。常用的模型有Xgboost,LightGBM等。
很明显,该类方法的效果取决于特征设计的好坏,不同业务场景具体特征会有差别,下面总结一些常用特征。
term静态特征 :idf值、词频、term长度、term词性、词位置、是否停用词、是否语气词、是否专有名词(人名/地名)等等。
term交互特征 :term长度占query长度比值、text-rank值、term在query中相对位置、term对query的ppl贡献度等等。
ngram特征 :包含该term的ngram统计特征、以该term开始的ngram统计特征、以该term结尾的ngram统计特征等等(通常用bigram和trigram)。
特征设计后,再用ML模型做回归预测或排序即可,比较简单,不再赘述。
word2vec----huffman编码
一、目的
词频越高的词,希望编码长度越短。
在huffman树中,叶子节点是各个词,叶子节点的权重是词频。每个词都有权重×距离根节点的长度,即词频*编码长度。Huffman树保证了上述所有词的上述乘积的和是最小的,即该编码方式的总代价是最小的。
二、huffman树的构造算法:这里略去,总之有确定的算法可以构造
三、编码示例
如图,编码为:
我:0
喜欢:111
观看:110
巴西:101
足球:1001
世界杯:1000
以上是关于TermWeight 词权重算法的主要内容,如果未能解决你的问题,请参考以下文章