stanfordnlp 语义相似度 语义相似度算法_stanfordnlp 语义相似度


本文《Siamese Recurrent Architectures for Learning Sentence Similarity》提出了一种使用孪生递归网络来计算句子语义相似度的方法。首先,使用LSTM将不定长的两个句子编码为固定尺寸的特征,再通过manhattan距离来衡量特征之间距离。


stanfordnlp 语义相似度 语义相似度算法_相似度_02


论文地址:https://dl.acm.org/citation.cfm?id=3016291

引言

句子相似度的计算的准确与否,很大程度上依赖于文本理解和信息抽取这两个任务。句子相似度计算是一个难度很高的任务,首先,表达同样语义的句子可以有许多不同的组成方式,同时又存在大量的同义词;其次,语义相近的句子对(标注数据)十分有限。

数据集

使用SICK数据集,包含5000个训练样本对,4927个测试样本对。相关程度为[1, 5], 5代表语义最相似,1代表最不相似,标注的分数是10个人为评分的平均值。

Manhattan LSTM模型

总体框架如下图所示,模型由LSTM_a和LSTM_b组成,它们的权重是共享的,即LSTM_a=LSTM_b。LSTM的作用是将不同输入长度的句子编码到定长的特征空间。本文将LSTM最后的一个隐状态作为整个句子的表达。


stanfordnlp 语义相似度 语义相似度算法_word2vec相似度计算_03


得到两个句子的特征表达之后,需要计算特征之间的相似度,本文将句子特征的相似度认为是句子语义的相似度。特征的相似度计算公式如下,在训练时,样本的标签需要从[1,5]归一化到[0,1]:


stanfordnlp 语义相似度 语义相似度算法_相似度_04


实验结果

在SICK数据集上,使用MSE作为loss函数,LSTM的隐层节点数为50,使用Adadelta优化算法,同时抽取30%的训练集作为验证集。模型在测试集上的表现如下图所示。


stanfordnlp 语义相似度 语义相似度算法_word2vec相似度计算_05


同时MaLSTM也可以作为句子的特征提取模块,将提取后的特征进行分类。为了让SICK数据能够被分类模型使用,本文将SICK数据分为了3类,“语义相似”、“语义相反”、“语义中立”。

在使用MaLSTM对句子进行编码后,使用SVM对特征进行分类。实验结果如下:


stanfordnlp 语义相似度 语义相似度算法_stanfordnlp 语义相似度_06