文本相似度相关工作调研(二)
《Short Text Similarity With Word Embeddings》论文解释
一、概要
本文主要介绍基于词嵌入的短文本相似度计算方法。相比较于其他方法,这种方法的特点在于:
- 几乎不需要任何外部知识(例如不需要语法分析等)
- 不需要手工构造特征
- 此方法计算的是语义相似度,并不是语法或者词型相似度(另一篇文章中提高到LCS、编辑距离等)
- 能够利用多种方式、多种语料获得的词向量(多种方式:word2vec, GLOVE. 多种语料:Wiki等)
二、主要思想
本文的主要思想是利用获得的词向量提取特征,输入到支持向量机中进行分类。因此,文章的重点也集中在如何根据已有的词向量来获取句子的特征。
-
算法伪代码
-
伪代码中的词向量
论文中提到可以选择word2vec、GLOVE等已经训练好的词向量,也可以选择这些方法在自己的数据上重新训练。
-
伪代码中的特征提取器
从代码中可以看出,整个算法的难点在于特征提取器()的构造之上。文章给出了三种特征提取器的构造方法,下面分别介绍。我们应该明确的一点是,特征提取器的目的是从句子对和词向量中提取出句子对的特征,然后用于后续的分类模型之中。
-
Saliency-weighted semantic network
文章首先提到有的论文将词向量的均值代表整个句子,既是,并且取得了不错的效果。但是这个方法显然并一定是符合真实情况的,以下图为例:
黑色圈代表一个句子的三个词向量,白色圈代表另一个句子的三个词向量。两个句子中,有一对词语的差别较大(最左边的白圈和最右边的黑圈)。但是两个句子的均值却非常相近,也就是说均值的作用忽略了句子中个别词向量的极大差异。因此文章提出了一种考虑词语分布的计算方法:在这种方法中,常见词的贡献较少,稀有词的贡献较多(和tfidf方法类似)。具体的计算公式如下:
这个参考自BM25公式,可以类比一下。关于公式的解释-
为什么遍历长句子,而不是短句子
主要是出于下面考虑。(1)为了保证计算的对称性。计算的对称性,是指句子对中无论第一个是长句子还是短句子,我们都选择以长句子为基准进行遍历,这样和计算得到的特征就会是相同的。(2)不想有的单词被忽略。以短句为基准进行遍历,有些词语可能不会被遍历到。
-
和BM25的不同
BM25的tfidf矩阵主要考虑的是query中词语和document中词语的匹配,而我们则考虑的是语义之间的匹配。采用的是w和s的最大相似度,而不仅仅是词语的匹配。
可以看出,最后的结果是各个值的和。但实际应用的时候,我们并不是选择和值,而是选择向量形式如下:
假设长句子有n个单词,那么就是一个长度为n的向量。得到这个向量之后,我们再进行bin操作。所谓bin操作,就是划分一个区间,比如[a,b,c],然后统计中位于负无穷到a、a到b、b到c、c到正无穷的数量。例如
这样起到了减少特征数目的作用,区间是超参数,需要事先指定。 -
-
Unweighted semantic network
这是第二种提取特征的方法,对于句子对,我们计算句子对中每个词语之间的cos相似度,这样就会得到一个的矩阵(其中)。得到这个矩阵之后,我们又构造出两种方法:
- 考虑所有的个元素,然后bin操作,操作方法同上,区间不同而已
- 矩阵的每一行取最大值,然后得到的最大值进行bin操作
以上就是算法的全部内容,难点在于特征提取器的构造上。得到特征之后,输入SVM进行分类训练就可以了。
-
三、实验结果