博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【NLP】文献翻译1——基于结构和词嵌入的文本相似性测量方法
阅读量:3916 次
发布时间:2019-05-23

本文共 14523 字,大约阅读时间需要 48 分钟。

Measuring text similarity based on structure and word embedding

信息:

  • 标题:基于结构和词语嵌入的文本相似性测量方法
  • 作者:Farouk, Mamdouh(14篇文献)
  • 机构:Assiut University(艾斯尤特大学,埃及)
  • 期刊简介:Cognitive Systems Research(认知系统研究)影响因子:1-1.2,分区:4区(感觉有点低,不过也是SCI收录的)

摘要

寻找自然语言句子之间的相似性问题对于自然语言处理(NLP)中的许多应用至关重要。准确计算句子之间的相似度是非常必要的。许多方法依靠词与词之间的相似性来衡量句子的相似性。本文提出了一种提高句子相似度计算精度的新方法。所提出的方法在计算句子相似度时结合了不同的相似度测量方法。除了传统的词与词之间的相似度测量,所提出的方法还利用了句子的语义结构。生成自然句子的语义表示结构(Discourse representation structure,DRS),并用于计算结构相似度。此外,为了考虑句子中的词序,计算词序相似度。实验表明,利用结构信息可以达到良好的效果。此外,所提出的方法在标准基准数据集上的表现优于目前的方法,实现了与人类相似性的0.8813皮尔逊相关。

1. 简介

大数据时代,由于人们使用自然语言表达,自然语言处理得到了很大关注。此外,社交媒体的广泛使用和对这些社交数据的分析需求使得自然语言任务变得至关重要。测量自然语言句子之间的相似性

是许多自动处理自然语言文本的任务的核心。例如:文本分类、总结、答题、抄袭检查等许多方法都依赖于句子的相似性。句子间相似度的准确计算影响着自然语言处理的许多应用。因此,寻找句子间相似性的问题得到了人们的关注。

衡量句子之间的相似性是指估计这些句子之间意义的接近程度。目前已经提出了不同的方法来计算句子的相似性。基于字符串的方法将句子视为一个字符序列,它使用q-gram和Levenshte距离等方法找到相似度。

此外,一些测量句子相似性的方法取决于词之间的相似性。这些方法将句子视为一组词。Word-Net(Miller,1995)是一个捕捉人类知识的词汇数据库,被广泛用于寻找词之间的相似性(Liu & Wang,2013)。然而,许多方法依赖于分析大的语料库来测量单词之间的相似性(Gomaa & Fahmy,2013)。其背后的理念是

语料库分析依赖于观察到语料库中具有相似共现的词具有相似的含义。潜在语义分析(Latent Semantic Analysis,LSA)是统计分析大语料库的方法之一,以数字向量来表示一个词。这些向量之间的余弦相似度代表了单词之间的语义相似度。有些方法将两种方法(WordNet和语料库分析)结合起来,以寻找句子之间的相似性。(Li,McLean,Bandar,O’Shea,& Crockett,2006;Pawar & Mago,2018;Farouk,2018)

另一方面,使用深度学习来寻找单词向量表示,在测量单词之间的相似性方面表现出了可喜的结果(Mikolov, Chen, & Corrado, 2013)。通过一个训练模型来学习单词表示,该模型试图从上下文单词中预测单词。这个过程的输出是一个向量(通常大小为300),它捕获了单词的语义。语义相关的词有封闭的向量。许多方法使用生成的向量(词嵌入)来衡量句子的相似性(Kenter & de Rijke,2015;Farouk,2018)

本文提出了一种基于不同相似度方法的句子相似度测量方法。在提出的方法中结合了结构相似性和基于词的相似性。句子中词与词之间的语义关系被提取出来,并根据提取的关系计算结构相似性。此外,根据词嵌入,测量word-to-word之间的相似度。此外,所提出的方法还利用词序相似度来提高最终计算出的相似度。本文提出的方法结合这些措施来计算句子的相似度。

本研究旨在通过结合句法和语义(syntactic and semantic)相似性来改进测量句子相似性。本文证明,除了word-to-word的方法外,考虑结构信息可以改善句子相似性计算。此外,将所提出的方法应用于不同的数据集,表明了该方法对一般NLP任务的适用性。

本文其余部分的结构如下。第2节提到了相关工作。第3节解释了所提出的方法及其主要组成部分的细节。在第4节中,详细介绍了计算两个给定句子之间相似度的例子。第5节描述了实验并讨论了所提出的方法的结果。最后,第6节对所提出的工作进行了总结。

2. 相关工作

为了解决短文之间相似度的测量问题,已经提出了许多方法(Farouk,2019)。这些方法根据工作方法可以分为基于word-to-word的方法、基于向量的方法和基于结构的方法。word-to-word方法是基于两个句子的词之间的相似性来测量句子之间的相似性。测量词相似度的技术有很多(Navigli & Martelli,2019)。另一方面,基于向量的方法将句子表示成向量,并得到这些向量之间的相似度。不同的是,基于结构的方法在计算句子相似度时考虑了句子的结构。

Li等人提出了一种基于word-to-word之间相似性来衡量句子相似性的方法(Li et al., 2006)。除了WordNet,他们还使用LSA(Latent Semantic Analysis)来寻找词与词之间的相似性。此外,Atish和Mago提出了一种类似的方法,结合WordNet和语料库分析措施来评估句子之间的相似性(Pawar & Mago,2018)。

另一方面,一些方法利用词嵌入来衡量词之间的相似性(Kenter & de Rijke,2015)。词嵌入是词的向量表示。这些捕捉词的语义特征的向量是通过深度学习模型获得的。Kenter和de Rijke(2015)中提出了其中一种利用词嵌入来测量词之间相似性的方法。使用不同的预训练词向量来测量句子的相似性。此外,除了词嵌入,也可使用TF-IDF加权模式来考虑词的重要性。然而,这种方法将句子视为一组单词,忽略了句子的结构。

word-to-word之间的句子相似度方法完全依赖于词的相似度方法。最近,Qu等人提出了一种基于维基百科计算语义相似度的新方法(Qu,Fang,Bai,& Jiang,2018)。他们利用维基百科来计算概念的信息内容(Information Content,IC),并对概念进行语义表示。概念的属性,如邻居和类别,被用来丰富概念的语义表示。虽然这种方法的结果很有前景,但维基百科概念的高模糊性是一个需要解决的问题。

另一方面,一些方法结合不同的单词相似度方法来计算句子相似度(Farouk,2018)。虽然这些方法取得了很好的结果,但它们忽略了句子的结构,而句子的结构捕捉了对计算相似度有帮助的重要信息。

不同的是,基于向量的方法试图将句子的特征捕捉到一个数字向量表示中。向量之间的相似度代表句子的相似度。这种方法取决于向量表示方法。表示方法越丰富,句子之间的相似度测量越准确。Ryan等人提出了一种基于深度学习的句子向量表示法(Ryan等人,2015)。他们的方法,称为Skipthought,训练模型从重点句子中预测周围句子。这种向量表示法在句子相似性任务中取得了良好的效果。

Lee,Chang和Hsieh(2014)引入了一种基于结构的方法来计算句子相似度。他们从句子中提取语法链接(grammar links),构建一个语法矩阵,其中行代表小句的链接,列代表其他句子的链接。此外,还使用WordNet来测量单词之间的相似度。最后根据构建的语法矩阵计算出相似度。虽然他们使用了反映句子结构的语法链接,但他们忽略了反映句子结构和语义的语义关系。

另一方面,释义(用更容易理解的文字解释)检测(paraphrase detection)是与句子相似度非常相关的一项任务。最近,Ferreira等人提出了一种识别释义的方法(Ferreira等人,2018)。他们的方法依赖于提取特征,并根据提取的特征对一对句子进行分类。提取的特征基于词法(lexical)相似性、句法(syntactic)相似性和语义(semantic)相似性计算。这种方法与提出的结合结构和word-to-word相似性的方法相似。然而,他们的方法并没有为句子对分配一个相似度值。此外,所提出的方法不需要标注数据。

与以往的方法不同,本文提出的方法在测量句子相似性时同时考虑了句法和语义的相似性。此外,本文还提出了一种新的方法,将基于话语表征结构(Discourse Representation Structure, DRS)计算的结构相似性和使用词嵌入的词对词相似性结合起来。据我所知,以前还没有人用DRS来计算句子之间的结构相似性。本系统不需要标签数据进行训练。

3. 句子相似性

很多NLP应用,如问题回答、社交媒体分析、抄袭检测等都依赖于句子的相似性。因此,在测量句子之间的相似性时,进行高精度的测量是一项至关重要的任务。本文提出的方法利用句子的结构信息来提高句子间相似度的测量精度。如图1所示,所提出的系统主要由三个部分组成。第一部分测量结构相似性,第二部分计算基于句子的词的相似性,第三部分计算词序相似性。本系统的输入为两个句子,输出为0~1之间的相似度值,0表示不相关,1表示完全相似。下面分节详细解释这三个组件。

在这里插入图片描述

3.1 基于结构的相似性

句子结构的信息有助于评估两个句子之间的相似度(Ma & Suel,2016)。如上图所示,计算结构相似性包含三个步骤。第一步,对每个句子进行解析,并将输出结果传递给语义分析器,语义分析器输出与句子等价的语义图表示。第二步,基于句子的语义图表示,构建关系相似度矩阵。第三步根据相似度矩阵计算结构相似度。下面分节解释这些步骤的细节。

3.1.1 关系提取

为了得到一个句子的结构,应用了一个解析过程。此外,提取词之间的语义关系,并根据提取的关系构建句子语义图。在这个图中,节点代表单词,边代表单词之间的语义关系。根据构建的图谱计算句子之间的结构相似度。此外,生成一个句子的语义图主要有两个步骤。第一步是解析,输出句子的语法树。第二步是提取语义关系,构建句子图。

在本研究中,C&C解析器(Clark & Curran,2007)被用来解析句子。C&C解析器是一种先进的统计解析器,广泛用于NLP任务中(Augenstein,Pad,& Rudolph,2012;Clark等人,2009;Baroni,Bernardi,& Zamparelli,2014)。C&C解析器支持的一些功能正是本研究中所需要的。C&C解析器包含了许多标记器,如语音部分(Part Of Speech, POS)标记器和组合分类语法(Combinatorial Categorial Grammar, CCG)超标记器。这些标记器效率很高(Curran, Clark, & Bos, 2007)。此外,C&C还包含名称实体识别器(Name Entity Recognizer, NER),它可以确定十种不同类型的实体(组织、位置、个人、电子邮件、URL、名字、姓氏、标题、引号和未知名称)。使用C&C解析器,将句子中的单词与来自Penn树库(treebank)的POS进行标记(Marcus, Marcinkiewicz, & Santorini, 1993)。解析过程的输出是一棵语法树,在这棵树中,每个节点都有POS标签、词素(lemma)和名称实体标签。

作为生成句子图的第二步,Boxer系统被用来获取词之间的语义关系。Boxer系统是一个语义构造工具包(Augenstein等,2012)。此外,Boxer是一个开放领域的英语文本语义分析软件。它是由Curran等人(2007)开发的。基于C&C解析器的输出,Boxer系统为句子建立语义表示。它依靠CCG和C&C解析器为句子生成语篇表示结构(Discourse Representation Structure, DRS)。DRS是一种对应于自然语言文本的表征。此外,DRS抓住了文本的语义,并将其建模为相关实体。DRS可以转换为其他语义格式,如一阶逻辑。Boxer系统的性能是非常有前途的(Bos,2008)。所提出的方法使用使用Boxer系统提取的语义关系来改进测量句子相似性。

根据Boxer系统的输出,生成该句子的语义图表示。下图显示了 "A hill is an area of land that is higher than the land that surrounds it "这个句子生成的图表示。这个图抓住了句子的结构信息。如下图所示,两个词之间的关系,有一个内部节点(源词)和外部节点(目的词)。例如,下图中theme关系的内部节点是surround,外部节点是thing。如前所述,图中的每个节点代表句子中的一个词,所以外部词和外部节点这两个词可以互换使用。根据生成的图来衡量句子之间的语义相似度。

Fig.2

3.1.2 基于图的相似性

图匹配被广泛应用于计算机科学的许多领域(Farouk等人,2018)。此外,图匹配还用于测量文档之间的相似性(Hammouda & Kamel,2002)。在本文中,利用句子的图来测量句子之间的结构相似性。根据生成的句子的图谱,构建了一个关系矩阵。该矩阵的行代表第一个图的关系,列代表第二个图的关系。矩阵中的每个单元格填入行关系和列关系的相似度值。矩阵中的单元格 i i i j j j填充的是第一句话中第 i t h i^{th} ith个关系和第二句话中第 j t h j^{th} jth个关系之间的相似度值。两种关系之间的相似度值计算分三步进行:

  1. 测量关系名称之间的相似性
  2. 测量内部节点之间的相似性
  3. 测量外部节点之间的相似性

为了计算两个关系的内部词之间的相似度,采用词嵌入的方法。词向量之间的余弦相似度被计算为这些词之间的相似度。下面的公式用于计算两个关系之间的相似度:

Rel ⁡ Sim ⁡ ( R 1 , R 2 ) = Sim ⁡ ( I R 1 , I R 2 ) + Sim ⁡ ( E R 1 , E R 2 ) 2 ∗  Name  Sim ⁡ ( R 1 , R 2 ) (1) \begin{aligned} \operatorname{Rel} \operatorname{Sim}\left(R_{1}, R_{2}\right)=& \frac{\operatorname{Sim}\left(I_{R 1}, I_{R 2}\right)+\operatorname{Sim}\left(E_{R 1}, E_{R 2}\right)}{2} * \text { Name } \operatorname{Sim}\left(R_{1}, R_{2}\right) \end{aligned} \tag{1} RelSim(R1,R2)=2Sim(IR1,IR2)+Sim(ER1,ER2) Name Sim(R1,R2)(1)
其中, Sim ⁡ ( I R 1 , I R 2 ) \operatorname{Sim}\left(I_{R 1}, I_{R 2}\right) Sim(IR1,IR2)是内部词 R 1 R_1 R1和内部词 R 2 R_2 R2的相似性。 Sim ⁡ ( E R 1 , E R 2 ) \operatorname{Sim}\left(E_{R 1}, E_{R 2}\right) Sim(ER1,ER2)是外部词 R 1 R_1 R1和外部词 R 2 R_2 R2的相似性。  Name  Sim ⁡ ( R 1 , R 2 ) \text { Name } \operatorname{Sim}\left(R_{1}, R_{2}\right)  Name Sim(R1,R2)是关系名称之间的相似性。这个相似度取决于关系的意义。如果名称相同,相似度将为1。如果关系是相关的,那么这个值就会比不相关的高。

此外,所提出的方法通过猜测第一句话的关系在多大程度上被其他句子覆盖来计算结构相似性。这可以根据构建的矩阵来计算。为了衡量一个关系在另一个句子中的覆盖率,选择这个关系和第二个句子中所有关系之间的最大相似度。最后,计算两个句子 S 1 S_1 S1 S 2 S_2 S2之间的结构相似度如下:

Sim ⁡ s t ( S 1 , S 2 ) = ∑ i n max ⁡ sim ⁡ ( R i , S 2 ) ∗ W R i ∑ i n W R i (2) \operatorname{Sim}_{s t}\left(S_{1}, S_{2}\right)=\frac{\sum_{i}^{n} \max \operatorname{sim}\left(R i, S_{2}\right) * W_{R i}}{\sum_{i}^{n} W_{R i}} \tag{2} Simst(S1,S2)=inWRiinmaxsim(Ri,S2)WRi(2)
其中n为 S 1 S_1 S1中的关系数, W R i W_{Ri} WRi为关系 R i R_i Ri的权重。根据不同关系对句意的影响,用关系权重来反映不同关系的重要性。下表显示了所用的关系权重。对于语义关系有不同的分类(Jaworski & Przepirkowski,2014;Gildea & Jurafsky,2002)。然而,这些分类在一些标准的语义关系上达成了一致,这些关系包括agent、theme、experiencer(Jaworski & Przepirkowski,2014)。根据这个标准和实验,对下表中的这些数值进行了分配。例如,agent和theme关系在句子中最重要,所以它们的权重最高。
在这里插入图片描述

3.2 基于词嵌入的相似性

除了测量结构相似性外,所提出的方法还计算了句子之间的词对词相似性。在测量词与词之间的相似性时使用词嵌入可以改善句子之间的相似性测量(Kenter & de Rijke,2015)。在所提出的方法中,基于词的相似性是通过以下公式计算的

sim ⁡ w ( S 1 , S 2 ) = ( ∑ i = 1 n sim ⁡ ( w i , S 2 ) ) / n (3) \operatorname{sim}_{w}\left(S_{1}, S_{2}\right)=\left(\sum_{i=1}^{n} \operatorname{sim}\left(w_{i}, S_{2}\right)\right) / n \tag{3} simw(S1,S2)=(i=1nsim(wi,S2))/n(3)
其中, n n n S 1 S_1 S1中的词数, sim ⁡ ( w i , S 2 ) \operatorname{sim}\left(w_{i}, S_{2}\right) sim(wi,S2)为句子 S 1 S_1 S1中的词 w i w_i wi与句子 S 2 S_2 S2之间的相似度。根据下面的公式,选择 w w w与句子 S S S中每个词的最大相似度来衡量一个词 w w w与句子 S S S之间的相似度。
sim ⁡ ( w , S ) = max ⁡ j = 1 m sim ⁡ ( w , w j ) (4) \operatorname{sim}(w, S)=\max _{j=1}^{m} \operatorname{sim}\left(w, w_{j}\right) \tag{4} sim(w,S)=j=1maxmsim(w,wj)(4)
其中 sim ⁡ ( w , w j ) \operatorname{sim}\left(w, w_{j}\right) sim(w,wj)是句子 S S S中词 w w w和词 w j w_j wj之间的相似度,这种词与词之间的相似度是用词的向量之间的余弦相似度来衡量的。本研究采用Google预先训练好的词嵌入向量,该向量公开于https://code.google.com/archive/p/word2vec/,用于衡量词与词之间的相似度。

3.3 词序相似性

有时候,两句话有同一组词,却有不同的意思。例如,考虑这些句子。"The young man killed the old woman. "和 “The young woman killed the old man”。词序相似度的计算就是为了解决这个问题(Li, Bandar, McLean, & O’Shea, 2004)。词序相似度的思想是衡量相似词的词序相似度。换句话说,如果相似词有相似的顺序,这比相似词有不同的顺序要好。除了结构相似性和词与词之间的相似性之外,计算词序相似性是为了提高最终的相似性测量。

为了计算词序相似度,我们构建了两个句子的词的联盟集(union set)。然后为每一个句子构造一个向量来代表这个句子的词相对于联盟集的词序相似度。下面的公式用于根据构造的顺序向量得到词序相似度。

Sim ⁡ o r ( S 1 , S 2 ) = 1 − ∥ V 1 − V 2 ∥ ∥ V 1 + V 2 ∥ (5) \operatorname{Sim}_{o r}\left(S_{1}, S_{2}\right)=1-\frac{\left\|V_{1}-V_{2}\right\|}{\left\|V_{1}+V_{2}\right\|} \tag{5} Simor(S1,S2)=1V1+V2V1V2(5)
其中 V 1 V_1 V1 S 1 S_1 S1的阶向量(order vector), V 2 V_2 V2 S 2 S_2 S2的阶向量。

最后,结合结构相似度、词与词之间的相似度和词序相似度来计算两个句子之间的相似度。以下公式用于衡量相似度。

Sim ⁡ ( S 1 , S 2 ) = 0.5 ∗ sim ⁡ s t ( S 1 , S 2 ) + 0.3 ∗ sim ⁡ w ( S 1 , S 2 ) + 0.2 ∗ sim ⁡ o r ( S 1 , S 2 ) (6) \begin{aligned} \operatorname{Sim}\left(S_{1}, S_{2}\right)=& 0.5 * \operatorname{sim}_{s t}\left(S_{1}, S_{2}\right)+0.3 * \operatorname{sim}_{w}\left(S_{1}, S_{2}\right)+0.2 * \operatorname{sim}_{o r}\left(S_{1}, S_{2}\right) \end{aligned} \tag{6} Sim(S1,S2)=0.5simst(S1,S2)+0.3simw(S1,S2)+0.2simor(S1,S2)(6)
上式中的这些权值是根据相似度量的重要性来分配的。结构相似性比词与词之间的相似性可以揭示更多的信息。这是因为结构相似性考虑了关系和这些关系的词(源词和目的词)。然而,词对词的相似性只取决于句子的词。因此,结构相似性被赋予较高的权重。此外,词序相似度的权重较低,因为它只在同一组词有不同词序时用于降低相似度。

4. 句子相似度计算实例

为了明确所提出的方法的思想,本节用一个例子来解释计算句子相似度。考虑以下两个句子:

S 1 S_1 S1 = ‘‘A hill is an area of land that is higher than the land that surrounds it.”.
(小山是一块高于周围土地的土地)
S 2 S_2 S2 = ‘‘A mound of something is a large rounded pile of it.”.
(一堆东西就是一大堆圆形的东西? )
(土墩 (小丘、小山岗)是一大堆圆形的东西)

在这个例子中,应用提出的计算句子相似度的步骤计算给定的句子。如前文所述,计算句子相似度主要有三个步骤。计算结构相似性,计算基于词嵌入的词对词相似性,计算词序相似性。

4.1 计算结构相似性

为了计算给定句子之间的结构相似性,生成每个句子的图表示。生成该图的第一步是使用C&C解析器对句子进行解析。解析过程的结果将作为输入到Boxer系统,Boxer系统为句子生成语义图表示。这一步的结果如下表所示。

在这里插入图片描述
如上表所示,每一行代表一个词或一个关系。例如,第9行

c0:hill:0 instance k3:x1 2 [hill]

表示 S 1 S_1 S1中的单词hill。在这一行中,k3:x1是单词hill的引用。词与词之间的语义关系表示为词与词之间的链接。在生成的表示中,每个关系都有两个链接。例如,第1行

c11:theme:1 ext k3:p1:x7

表示theme关系的外部链接,其中c11是关系id,theme是关系名,ext是指外部,也就是关系的目的词,k3 : p1 : x7是外部词的引用。此外,第31行

c11:theme:1 int k3:p1:e1

表示theme关系的内部词的链接,其中k3:p1:e1是动词 surrounds的引用。这两行(1和31)代表了单词surroundit之间的主题关系。根据这个抓住句子结构的语义表示,计算出句子的相似度。

下一步是根据提取的关系构建关系相似度矩阵。首先,确定属于每个句子的关系。下表是 S 1 S_1 S1 S 2 S_2 S2中的关系列表。下表中的每个关系都附有其内部和外部词。

在这里插入图片描述
显示了句子 S 1 S_1 S1的图表示。该图中的每个节点代表句子中的一个词,边代表实体之间的关系。在确定了属于每个句子的关系列表后,通过计算关系之间的相似度公式(1)来构建关系矩阵。下表显示了我们示例句子的构建矩阵。
在这里插入图片描述
如关系相似度矩阵所示,行代表第一句话 S 1 S_1 S1的关系,列代表第二句话 S 2 S_2 S2的关系。该矩阵中的每一个单元格都由行关系和列关系的相似度来填充。例如,矩阵中第一个单元格填入的数值为0.112836,表示 S 1 S_1 S1中的theme关系和 S 2 S_2 S2中的关系之间的相似度。为了计算这些关系(themeis)之间的相似度,计算内部词之间的相似度。主题关系的内部词是动词 surroundis关系的内部词是 mound。这两个词是根据每个句子的语境来展开的。equalityis等关系用于扩词。例如, S 2 S_2 S2中的mound这个词被扩充为pile。这些词(surroundmound)之间的相似度被测量为两个扩展词列表之间的最大相似度。词嵌入用于计算词与词之间的相似度。

由于本例中mound字可以扩展到pile字,我们同时测量 Sim ⁡ ( s u r r o u n d , m o u n d ) = 0.0350571 \operatorname{Sim}(surround,mound)=0.0350571 Sim(surround,mound)=0.0350571 Sim ⁡ ( s u r r o u n d , p i l e ) = 0.173464 \operatorname{Sim}(surround, pile)=0.173464 Sim(surround,pile)=0.173464,并选择最大值。这些关系 Sim ⁡ ( t h i n g , p i l e ) \operatorname{Sim}(thing, pile) Sim(thing,pile)的外部词相似度为0.135674。根据公式(1)计算这些关系(themeis)的总相似度: ( 0.173464 + 0.135674 ) / 2 ∗ 0.73 = 0.112836 (0.173464+0.135674)/2 * 0.73=0.112836 (0.173464+0.135674)/20.73=0.112836。值0.73为关系名之间的相似度。下表是提出的关系名之间的相似度值。在现阶段的研究中,这些值是根据实验结果人工分配的。

在这里插入图片描述
为了得到基于构建的矩阵的结构相似度,采用公式(2)。 S 1 S_1 S1 S 2 S_2 S2之间的结构相似度为0.325996。

4.2 计算word-to-word相似度

为了计算例句的词与词之间的相似度,通过测量 S 1 S_1 S1 S 2 S_2 S2中每一对词之间的相似度来构建词相似度矩阵。下表显示了单词相似度矩阵。利用公式(4)计算出的S1和S2的最终相似度为0.4605。

在这里插入图片描述

4.3 计算词序相似度

另一方面,对每个句子构建语序向量,计算 S 1 S_1 S1 S 2 S_2 S2的词序相似度。这两个句子的联合向量是[hill, area, land, higher, than, surrounds, it, mound, something, large, rounded, pile]。根据这个联合向量,将联合向量中的词的顺序而不是词本身,构建出每个句子的顺序向量。S1的顺序向量为[1,2,3,4,5,7,8,0,0,0,0,0],S2的顺序向量为[0,0,0,0,0,6,1,2,3,4,5]。根据式(5),S1和S2的词序相似度值为0.32239。

根据公式(6)结合三个计算量计算出S1和S2的最终相似度。 sim ⁡ ( S 1 , S 2 ) = 0.365626 \operatorname{sim}(S_1,S_2)=0.365626 sim(S1,S2)=0.365626

5. 实验

所提出的方法已被实现,并使用标准数据集进行测试,以证明其有效性。在本实验中,所实现的系统以两个句子作为输入,并测量它们之间的相似度,所实现的系统的输出值在0和1之间。为了显示使用结构信息的影响,对同一数据集进行了有结构信息和无结构信息的测试。此外,本系统还与其他系统进行了比较,以显示所提出的方法的有效性。

5.1 数据集

为了证明所提出的方法的适用性和有效性,我们选择了两个数据集来应用所实现的方法。选择Pilot短文语义相似性基准数据集来评价所提出的系统。它是句子相似性评价中应用最广泛的数据集之一(Li等,2006;Lee等,2014;Islam & Inkpen,2008)。最初这个数据集是由Rubenstein和Goodenough创建的,用于测量单词相似度(Rubenstein & John,1965)。它包含65对单词。Li等(2006)使用Collins Cobuild词典添加了每个词的定义,将这个数据集用于句子相似性。这65对句子由32位英语母语者根据相似度进行人工评分。32个分数的平均值被认为是每对句子之间的相似度值。这个数据集和人工评估的完整列表见O’Shea, Bandar, Crockett, and McLean (2008b)。此外,这个基准的一个子集包含30对句子是经过仔细挑选的,以覆盖不同的相似度范围(Lee et al., 2014)。这个被称为Li2006数据集的子集被广泛用于评估句子相似性方法(Lee et al., 2014)。

此外,Microsoft Research Paraphrase(MSRP)数据集(Dolan,Quirk,& Brockett,2004)也被广泛用于评估句子相似性技术。它包含5100多对句子。它被分割成两组。第一组包含3400对句子,用作训练数据集。另一组包含约1700对句子,用于测试。每对句子都用1(转述)或0(不转述)来标记。在这个实验中,由于我们的方法是一种无监督的方法,不需要训练数据,所以只使用测试集。

5.2 结果和讨论

在所选的Li2006数据集中,每对句子的相似性都由建议的系统来评估。下表显示了所提出的系统与其他先前提出的方法的结果。下表中包含了Li方法(Li等人,2006)、依赖于LSA的O’Shea方法(O’Shea,Bandar,& Crockett,2008a)、STS Meth(Islam & Inkpen,2008)、Omiotis系统(Tsatsaronis,Varlamis,& Vazirgiannis,2010)和基于语法的相似性(Lee等人,2014)的结果。此外,Pawar和Mago(2018)提出的最新方法也被列入比较表中。此外,计算了每个系统结果和人类评级之间的皮尔逊相关系数。与其他系统相比,所提出的方法取得了最好的相关性。下表 所示的系统与人类相似度的皮尔逊相关系数为0.8813。

在这里插入图片描述

在这里插入图片描述

此外,计算Spearman相关性以显示不同系统的结果与人类测量相似性之间的关系。如上表所示,所提出的系统在其他所有系统中也取得了最好的Spearman相关性。

另一方面,使用MSRP数据集的效果也不错。本方法计算MSRP数据集中每对句子之间的相似度,并在0和1之间赋值,用阈值(0.45)将计算出的相似度值转换为0或1。所提出的方法达到了0.72的精度。下表显示了实现的结果和其他无监督方法的结果。所提出的方法的结果与其他系统的结果相比较,所实现的精度优于Omiotis系统(Tsatsaronis等人,2010)和基于语法的方法的精度。然而,所提出的方法的准确度略低于Islam的方法(Islam & Inkpen,2008),后者的准确度最好。

在这里插入图片描述

为了显示结构相似性和基于词的相似性相结合的效果,将所提出的系统结果与词对词的相似性测量进行比较。此外,本系统的结果也与仅使用结构相似性的结果进行了比较。下图为Pilot数据集的结果与其他结果的比较。如下图所示,结合基于词和基于结构的相似性的方法给出了最好的结果,并且优于每一种方法。

在这里插入图片描述

所提出的方法比其他方法表现得更好,因为它考虑了词之间的语义关系。如果两个句子有一组相似的单词,而单词之间的关系不同,那么相似度值应该小于它们有相似的单词和相似的关系。例如,考虑以下句子。

S1 = The lion quickly hunts the big giraffe.

S2 = The giraffe was killed by a lion.
S3 = The giraffe kills a lion.

这些句子虽然有相似的词语,但它们的关系却不同。S1和S2之间的相似度值应该大于S1和S3之间的相似度。考虑词之间的语义关系将提高这类句子之间的测量相似度。实验表明,利用句子的结构信息可以提高句子间相似度的计算。

6. 结论

本文提出了一种测量句子相似度的方法。所提出的方法结合了结构相似性、词对词相似性和词序相似性方法。结构相似性是基于句子的图表示来测量的。C&C解析器和Boxer系统被用来生成句子的语义结构表示。此外,词嵌入被用来计算词与词之间的相似性。此外,在相似词在句子中的位置不同的情况下,考虑词序相似性来改善相似性测量。所提出的方法已经在标准基准数据集上进行了测试。实验表明,所提出的方法提供的相似度测量方法与人类直觉有显著的相关性。此外,结合结构相似性和基于词的相似性,可以提高句子之间的评估相似性。

转载地址:http://agvrn.baihongyu.com/

你可能感兴趣的文章
DotNetCore Web应用程序中的Session管理
查看>>
从业务需求抽象成模型解决方案
查看>>
Kafka
查看>>
Magicodes.IE 2.2发布
查看>>
应用交付老兵眼中的Envoy, 云原生时代下的思考
查看>>
.NET 开源项目 StreamJsonRpc 介绍[上篇]
查看>>
.NET Core微服务开发选项
查看>>
探讨NET Core数据进行3DES加密或解密弱密钥问题
查看>>
Vue 3拖更,尤雨溪介绍最新进展
查看>>
如何利用.NETCore向Azure EventHubs准实时批量发送数据?
查看>>
WPF 框架全构建环境虚拟机硬盘分享
查看>>
ABP框架 v3.0 已发布!
查看>>
使用.Net Core实现的一个图形验证码
查看>>
.NET 开源项目 StreamJsonRpc 介绍[中篇]
查看>>
Blazor带我重玩前端(三)
查看>>
基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (下篇)
查看>>
实现业务数据的同步迁移 · 思路一
查看>>
龙芯开源社区上线.NET主页
查看>>
eShopOnContainers 知多少[11]:服务间通信之gRPC
查看>>
闲谈设计模式
查看>>