引言
Siamese CBOW,来自Tom Kenter等的于2016年发的论文:Siamese CBOW: Optimizing Word Embeddings for Sentence Representations
作者提到,当前的很多句向量的表示方法都是简单的用词向量的加和平均,这种方法表现出一定的有效性,但是并没有针对特定任务的句向量进行优化的方法。
因此本文提出一种训练句向量的方法,借鉴于CBOW模型,采用目标句子的上下文句来预测当前句子。
数据源
采用Toronto Book Corpus,包括了七千多万句已经预处理好的句子,从前到后为连贯的句子。需要考虑的是不同的段落间,句子可能存在一定的不连贯,但在这种规模的数据量下,也可以忽略。
模型
模型结构如下:
Input
对于每个目标句子,考虑其前后两个句子作为正例,同时随机抽取一定量的样本,比如2个,作为负例。这里的token粒度为word级别,处理成相应形式输入,即[sentence,pre-sentence,post-sentence,neg-sentence,neg-sentence]
Embedding Layer
对于输入句子,通过初始化的Embeding层查找,分别得到其相应的Embeding Matrix W,将相应的Matrxi进行加和平均得到句子的句向量。
Cosine Layer
分别计算sentence与其余句子之前的cosine相似度作为句子间的相似度。
Prediction Layer
直接将上述相似度作为输入,通过softmax计算最终的输出,如下:
其中 s x θ s_x ^\theta s