Word2Vec 怎么将得到的词向量变成句子向量,以及怎么衡量得到词向量的好坏

昨天电话面试问到了这两个问题,感觉回答的不是很好,来此总结一下:

1.Word2Vec 怎么将得到的词向量变成句子向量

1)平均词向量:

平均词向量就是将句子中所有词的word embedding相加取平均,得到的向量就当做最终的sentence embedding。这种方法的缺点是认为句子中的所有词对于表达句子含义同样重要。

2)TF-IDF加权平均词向量:

TFIDF加权平均词向量就是对每个词按照 TF-IDF 进行打分,然后进行加权平均,得到最终的句子表示。

3)SIF加权平均词向量:

在2016年的论文 A simple but tough-to-beat baseline for sentence embeddings 提出了一种非常简单但是具有一定竞争力的句子向量表示算法。

算法包括两步,第一步是对句子中所有的词向量进行加权平均,得到平均向量V_s;第二步是移出(减去)V_s 在所有句子向量组成的矩阵的第一个主成分(principal component / singular vector)上的投影,因此该算法被简记为WR(W:weighting, R: removing)。

第一步主要是对TF-IDF加权平均词向量表示句子的方法进行改进。论文提出了一种平滑倒词频 (smooth inverse frequency, SIF)方法用于计算每个词的加权系数,具体地,词 w的权重为 a/(a+p(w)),其中 a 为平滑参数,p(w)为(估计的)词频。直观理解SIF,就是说频率越低的词在当前句子出现了,说明它在句子中的重要性更大,也就是加权系数更大。事实上,如果把一个句子认为是一篇文档并且假设该句中不出现重复的词(TF=1),那么TF-IDF将演变成IF,即未平滑的倒词频。但是相较于TF-IDF这种经验式公式,论文通过理论证明为SIF提供理论依据。

对于第二步,个人的直观理解是移出所有句子的共有信息,因此保留下来的句子向量更能够表示本身并与其它句子向量产生差距。算法描述如下(其中V_s, u 的shape 均为[d, 1],uu^T为 [d,d] 的矩阵,d为词向量维度):

Word2Vec 怎么将得到的词向量变成句子向量,以及怎么衡量得到词向量的好坏_第1张图片

2. Word2Vec怎么衡量得到词向量的好坏

1)analogy task:

看看空间距离近的词,跟人的直觉是否一致,经典的例子:king-queen=man-woman

2)对实际NLP任务的贡献:

对于一些传统方法做的任务,可以直接当作特征加进去,看看提升的效果。
对于用神经网络做的,可以用词向量作为词那一层的初始值,初始值选得好,就当做词向量好。

 

参考:

https://www.cnblogs.com/llhthinker/p/10335164.html#autoid-4-0-0

word2vec算出的词向量怎么衡量好坏? - Siwei Lai的回答 - 知乎 https://www.zhihu.com/question/37489735/answer/73027936

 

你可能感兴趣的:(自然语言处理)