SIF编码
Smooth Inverse Frequency是一种基于向量的检索。在介绍SIF之前,需要先理解平均词向量和基于TFIDF的加权平均词向量。
- 平均词向量就是将句子中的所有词的word embedding相加权取平均,得到的向量就当作最终的sentence embedding。这种方法的缺点是认为句子中的所有词对于表达句子含义同样重要。
- TFIDF平均加权词向量就是对每个词按照tfidf进行打分,将每个词的tfidf值作为权重,最后基于这些权重进行加权平均。
SIF加权平均词向量主要是对上述两种方法进行了改进,SIF算法包括两步:第一步是对句子种的所有词向量进行加权平均,得到平均向量 v s v_s vs;第二步是移出(减去) v s v_s vs在所有句子向量组成的矩阵的第一个主成分(principal component/singular vector)上的投影。
-
第一步主要是对TFIDF加权平均词向量表示句子的方法进行改进。论文提出了一种平滑倒词频(smooth inverse frequency)的方法用于计算每个词的加权稀疏,具体得,词 w w w的权重为
w = a a + p ( w ) 其 中 , a 为 平 滑 系 数 , p ( w ) 为 ( 估 计 的 ) 词 频 。 w = \frac{a}{a+p(w)}\\其中,a为平滑系数,p(w)为(估计的)词频。 w=a+p(w)a其中,a为平滑系数,p(w)为(估计的)词频。直观理解SIF,就是说频率越低的词在当前句子出现了,说明它在句子种的重要性更大,也就是加权系数更大。事实上,如果把一个句子认为是一篇文档并且假设该句子中不出现重复的词(TF=1),那么TFIDF将会演变为SIF,即未平滑的倒词频。但是相较于TFIDF这种经验式公式,论文通过理论证明未SIF提供理论依据。 -
第二步,个人的直观理解是移出所有句子的共有信息,因此保留下来的句子向量更能够表示本身并与其他句子向量产生差距。
算法伪代码如下: