文本相似度相关工作调研(二)

《Short Text Similarity With Word Embeddings》论文解释

一、概要

​ 本文主要介绍基于词嵌入的短文本相似度计算方法。相比较于其他方法,这种方法的特点在于:

  • 几乎不需要任何外部知识(例如不需要语法分析等)
  • 不需要手工构造特征
  • 此方法计算的是语义相似度,并不是语法或者词型相似度(另一篇文章中提高到LCS、编辑距离等)
  • 能够利用多种方式、多种语料获得的词向量(多种方式:word2vec, GLOVE. 多种语料:Wiki等)

二、主要思想

​ 本文的主要思想是利用获得的词向量提取特征,输入到支持向量机中进行分类。因此,文章的重点也集中在如何根据已有的词向量来获取句子的特征。

  1. 算法伪代码
    在这里插入图片描述
    算法解释:输入:句子对集合,(s1,s2)代表句子1和句子2输入:标签集合,li代表第i个句子对的相关程度(可以是离散的)输入:wordembeddings集合:WEi可以表示为一种词向量,例如通过word2vec在wikipidea数据上得到的向量输入:特征提取器,fei可以理解为一个函数,这个函数的输入是句子对及相应的词向量,输出提取的特征1−10行,对于每一种词向量(第四行),用所有的特征提取器提取特征(第五行),将得到的结果连接在一起。因此我们假设如果有m种词向量,n个特征提取器,那么每个句子对就会提取出m∗n个特征,然后连接在一起,放在F矩阵中。最后一行代表一个分类器,可以选择SVM等。 \begin{aligned} &算法解释:\\ &输入:句子对集合,(s_1,s_2)代表句子1和句子2\\ &输入:标签集合,l_i代表第i个句子对的相关程度(可以是离散的)\\ &输入:word embeddings集合:WE_i可以表示为一种词向量,例如通过word2vec在wikipidea数据上得到的向量\\ &输入:特征提取器,f_{ei}可以理解为一个函数,这个函数的输入是句子对及相应的词向量,输出提取的特征\\ &\quad\quad1-10行,对于每一种词向量(第四行),用所有的特征提取器提取特征(第五行),将得到的结果连接在一起。\\ &因此我们假设如果有m种词向量,n个特征提取器,那么每个句子对就会提取出m*n个特征,然后连接在一起,\\ &放在F矩阵中。\\ &\quad\quad最后一行代表一个分类器,可以选择SVM等。 \end{aligned} :s1,s212liiwordembeddingsWEiword2vecwikipideafei110mnmnFSVM

  2. 伪代码中的词向量

    论文中提到可以选择word2vec、GLOVE等已经训练好的词向量,也可以选择这些方法在自己的数据上重新训练。

  3. 伪代码中的特征提取器

    从代码中可以看出,整个算法的难点在于特征提取器(feif_{ei}fei)的构造之上。文章给出了三种特征提取器的构造方法,下面分别介绍。我们应该明确的一点是,特征提取器的目的是从句子对和词向量中提取出句子对的特征,然后用于后续的分类模型之中。

    1. Saliency-weighted semantic network

      文章首先提到有的论文将词向量的均值代表整个句子,既是Svector=1n∑word∈SwordembeddingS_{vector}=\frac{1}{n}\sum_{word\in S}word_{embedding}Svector=n1wordSwordembedding,并且取得了不错的效果。但是这个方法显然并一定是符合真实情况的,以下图为例:
      在这里插入图片描述
      黑色圈代表一个句子的三个词向量,白色圈代表另一个句子的三个词向量。两个句子中,有一对词语的差别较大(最左边的白圈和最右边的黑圈)。但是两个句子的均值却非常相近,也就是说均值的作用忽略了句子中个别词向量的极大差异。因此文章提出了一种考虑词语分布的计算方法:在这种方法中,常见词的贡献较少,稀有词的贡献较多(和tfidf方法类似)。具体的计算公式如下:
      fsts=∑w∈slIDF(w)sem(w,ss)(k1+1)sem(w,ss)+k1(1−b+b∣ss∣avgsl)sem(w,s)=max⁡w′∈sfsem(w,w′)符号介绍fsts:句子对的相似度,也就是提取到的特征w:词语sl:句子对中比较长的句子ss:句子对中比较短的句子IDF(w):w的文档频率的倒数(参考tfidf的计算方法)sem(w,ss):w词语和ss句子的相似度,采用的计算公式是取w和ss中各个词语相似度的最大值,至于词语和词语之间的相似度,可以利用cos相似度计算(既是fsem)k1,b:超参数 \begin{aligned} &f_{sts}=\sum_{w\in s_l}IDF(w)\frac{sem(w,s_s)(k_1+1)}{sem(w,s_s)+k_1(1-b+b\frac{|s_s|}{avgsl})}\\ &sem(w,s)=\max_{w^{'}\in s}f_{sem}(w,w^{'})\\ &符号介绍\\ &f_{sts}:句子对的相似度,也就是提取到的特征\\ &w: 词语\\ &s_l:句子对中比较长的句子\\ &s_s:句子对中比较短的句子\\ &IDF(w):w的文档频率的倒数(参考tfidf的计算方法)\\ &sem(w,s_s):w词语和s_s句子的相似度,采用的计算公式\\&是取w和s_s中各个词语相似度的最大值,至于词语和词语之间的\\&相似度,可以利用cos相似度计算(既是f_{sem})\\ &k_1,b:超参数 \end{aligned} fsts=wslIDF(w)sem(w,ss)+k1(1b+bavgslss)sem(w,ss)(k1+1)sem(w,s)=wsmaxfsem(w,w)fsts:w:sl:ss:IDF(w):wtfidfsem(w,ss):wss,wsscosfsemk1,b:
      这个参考自BM25公式,可以类比一下。关于公式的解释

      • 为什么遍历长句子,而不是短句子

        主要是出于下面考虑。(1)为了保证计算的对称性。计算的对称性,是指句子对中无论第一个是长句子还是短句子,我们都选择以长句子为基准进行遍历,这样(s1,s2)(s_1,s_2)(s1,s2)(s2,s1)(s_2,s_1)(s2,s1)计算得到的特征就会是相同的。(2)不想有的单词被忽略。以短句为基准进行遍历,有些词语可能不会被遍历到。

      • 和BM25的不同

        BM25的tfidf矩阵主要考虑的是query中词语和document中词语的匹配,而我们则考虑的是语义之间的匹配。sem(w,s)sem(w,s)sem(w,s)采用的是w和s的最大相似度,而不仅仅是词语的匹配。

      可以看出,最后的结果是各个值的和。但实际应用的时候,我们并不是选择和值,而是选择向量形式如下:
      fsts[i]=IDF(wi)sem(wi,ss)(k1+1)sem(wi,ss)+k1(1−b+b∣ss∣avgsl) f_{sts}\left[i\right]=IDF(w_i)\frac{sem(w_i,s_s)(k_1+1)}{sem(w_i,s_s)+k_1(1-b+b\frac{|s_s|}{avgsl})} fsts[i]=IDF(wi)sem(wi,ss)+k1(1b+bavgslss)sem(wi,ss)(k1+1)
      假设长句子有n个单词,那么fstsf_{sts}fsts就是一个长度为n的向量。得到这个向量之后,我们再进行bin操作。所谓bin操作,就是划分一个区间,比如[a,b,c],然后统计fstsf_{sts}fsts中位于负无穷到a、a到b、b到c、c到正无穷的数量。例如
      fsts=[2,3,1,4,6,3],区间为[2,4]。则位于负无穷到2(包括2)之间的数有2,1,总共有2个。位于2到4之间(包括4)的数有3,3,4,总共有3个位于4到正无穷之间的数有6,总共有1个.因此最后返回[2,3,1] \begin{aligned} &f_{sts}=[2,3,1,4,6,3],区间为[2,4]。\\ &则位于负无穷到2(包括2)之间的数有2,1,总共有2个。\\ &位于2到4之间(包括4)的数有3,3,4,总共有3个\\ &位于4到正无穷之间的数有6,总共有1个.\\ &因此最后返回[2,3,1] \end{aligned} fsts=[2,3,1,4,6,3],[2,4]222122443343461.[2,3,1]
      这样起到了减少特征数目的作用,区间是超参数,需要事先指定。

    2. Unweighted semantic network

      这是第二种提取特征的方法,对于句子对(s1,s2)(s_1,s_2)(s1,s2),我们计算句子对中每个词语之间的cos相似度,这样就会得到一个n∗mn*mnm的矩阵(其中n=∣s1∣,m=∣s2∣n=|s_1|,m=|s_2|n=s1,m=s2)。得到这个矩阵之后,我们又构造出两种方法:

      • 考虑所有的n∗mn*mnm个元素,然后bin操作,操作方法同上,区间不同而已
      • 矩阵的每一行取最大值,然后得到的最大值进行bin操作

    以上就是算法的全部内容,难点在于特征提取器的构造上。得到特征之后,输入SVM进行分类训练就可以了。

三、实验结果

在这里插入图片描述
数据集:MSROoB:指的是out−of−the−box−set,也就是训练好的两个word2vec和两个Glove向量。 \begin{aligned}&数据集:MSR\\&OoB:指的是out-of-the-box-set ,也就是训练好的两个word2vec和两个Glove向量。\\\end{aligned} MSROoB:outoftheboxset,word2vecGlove

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值