场景
用户在进行搜索时,假设搜索出来的结果有B1,B2,B3…Bn类业务,每类业务分别有S1,S2,S3…Sn条推荐内容。在把各个业务展示给用户时,需要把和用户搜索关键词“相关性”最高的业务放在前面。
原理
词频因子(Tf)
Tf计算因子代表了词频,即一个单词在文档中出现的次数。一般来说在某个文档中反复出现的单词,往往能够表征文档的主题信息。即Tf值越大,越能代表文档所反映的内容,那么应该给予这个单词更大的权值。为了抑制长文档在词频数量上存在优势,词频因子Tf的计算公式:
Tf=1+log(n)
n表示特征单词在该文档中出现的次数
逆文档词频(IDF)
IDF代表的是文档集合范围的一种全局因子。表示在文档集合(业务)中,特征单词之间的相对重要性。逆文频率因子IDF计算公式:
IDF=log(N/n)
N代表文档集合中总共有多少个文档
n表示特征单词在文档集合中出现的文档个数
IDF反映了一个特征词在整个文档集合中的分布情况。IDF值越低,这个词区分不同文档的能力越差。
Tf*IDF框架
Tf*IDF框架结合了词频因子和逆文档词频因子的计算框架,将两者相乘做为特征权值。特征权值越大,则越可能说明词和文档的相关性越高。
算法
假设用户搜索关键词进行分词后的结果为特征单词w1,w2,w3…wk。对于业务Bi的Si条内容(设为c1,c2,c3…cj),对于一条内容cu(1<=u<=j),其中特征单词wv(1<=j<=k)对应的词频因子为Tfv。
基于Tf*IDF框架计算出来的业务权值为:
weight(Bi)=max(sum(Tfv*IDF))
即取业务Bi中所有内容中最大权值的当做业务的权值。
业务推荐时按照业务权值从大到小的顺序推荐给用户,这样用户就能最先看到和自己搜索最匹配的业务内容。