您好, 访客   登录/注册

相似问句判别研究

来源:用户上传      作者:

  摘要:对于搜索引擎而言,如何能够正确理解用户提出的问题十分重要。而在识别问句的过程中,如何能够对形式不同而语义相似的问句进行相似性识别后,归一化处理,则会对整个搜索引擎的效果有一个明显的提升。对此,本文提出了一种基于机器学习的问句相似性判别模型,从数据集的构建到特征的提取,探究了相应的解决方案。本文创新性地从5个方面提取了不同类型的特征,并将其应用到整个分类器的建模过程中。实验结果表明,该方法能够在现有的语料上取得令人满意的结果,F值达到了83%。
  关键词:相似度:问句;机器学习
  0引言
  搜索引擎正确理解用户输入的查询是十分必要的。在实际应用中对于同一个问题,不同用户的提问形式往往不同。比如用户想得到一个U盘格式化的方法,那么有些人会问:“如何对U盘格式化”,还有些人可能会问:“怎么对U盘格式化”,或者“U盘格式化的方法?”等等。如果一个搜索引擎能够将这些相似问题理解为同一个意思,就能够正确返回给用户结果。但是,有些问题虽然形式上比较接近,用户问的却是完全不同的意思。比如用户提问“姚明是谁的爸爸”和“姚明的爸爸是谁”,如果搜索引擎将这2个问题视为同一个,返回的结果之一就是错误的,因此,搜索引擎应该能够将这些问题很好地区分开。
  本文将相似问句判别视为一个二元分类问题,即对于两个问句,或者二者可以归一化,或者不可以。现有的判别方法主要分为两种:基于规则的和基于统计机器学习的。基于规则的方法是根据数据的特点抽出一些模板,然后利用模板去匹配句子,如果句子匹配的模板为相似模板,那么二者为相似的句子,反之则不是。基于统计机器學习的方法是利用一些标注好的数据,抽取特征,选取一个适当的机器学习方法训练一个分类器,然后利用这个分类器对新数据进行二元分类。基于规则的方法受模板所限覆盖面不是很大,但是相对来说比较准确。模板的抽取方式可以采取人工方式或者从标注好的数据中自动抽取。基于统计机器学习方法的优点是适用面比较广,即便是对于数据集中没有出现过的形式,如果抽取的特征恰当,仍能够正确地对其进行分类。
  1研究方法
  主要研究内容分以下几点。首先是数据问题,即如何获取数据,以及对于获取的数据应该做何处理。然后是具体的实现方法,这也是本课题的核心内容。最后是评价问题,即如何评价系统的判别结果的好坏。本文将对上述问题分别进行说明。
  1.1数据获取及处理
  首先,需要获取到若干问题对,然后才能对这些问题对进行分类处理(可归一化,不可归一化)。在中文领域,没有公开的问题对语料,因此,选取了百度知道这个平台,从网上抓取需要的问题对。
  爬虫算法的流程如图1所示。其基本流程为:从一系列种子(Seed)网页开始,使用这些种子网页中的URL链接去获取其它页面,把这些网页中的URL链接依次提取出来,访问URL链接对应的页面。在网络爬虫中,使用哈希表记录一个页面是否被访问过,未被访问的URL链接则放入队列。由调度算法,每次从队列中取出一个URl.然后通过HTTP协议爬取对应页面,保存到网页库。整个过程不断重复,直到有足够的网页被访问过,或者已达到其它的既定目标。
  由百度知道上爬取了若干网页原始数据后,需要从中抽取有用的信息,即问题对。由此可知在一个问题的页面中,存在有如下两部分内容一类似问题和相关知识,这两部分内容恰好可以构成所需要的问题对,如图2所示。问题是:iphone好用么(http://zhidao.baidu.com/question/542432940.html)。人们抽取了其中的“类似问题”块同原始问题组成问题对,作为正例(可归一化的问题对),抽取其中“相关知识”块同原始问题组成负例(不可归一化的问题对)。这样,就获取了充足的问题对。
  1.2一致性判别方法
  研究中采用机器学习的方法来处理两个问句的一致性问题。采用逻辑斯蒂回归算法进行分类。为了能够更好地对问题进行判别,除一些基本特征外,人们还从5个方面抽取了问句的相似度信息。表1中列出了抽取的特征,下边将分别介绍在计算相似度上所使用的方法。
  HowNet(即知网)是一部详尽的中文语义知识词典,被广泛应用于计算词和句子的相似度任务上。虽然和其它的语义词典一样,也有一个反映知识结构的树状层次体系,但实际上有着本质的不同。在WordNet中,概念是描述词义的最小单位,所以,每一个概念都是这个层次体系中的一个结点。而在知网中,每一个概念由多个义原组成,概念本身不是这个层次体系中的结点,而义原才是。
  对于2个词W1和W2,如果W1有n个概念[S11,S12…,Sln],W2有m个概念:[S21,S22…,S2m],W1和W2的相似度Sim(W1,W2)为各个概念的相似度的最大值,如公式(1)。
  因为所有的概念都最终归结于用义原来表示,所以义原的相似度计算是概念相似度的基础。由于所有的义原根据上下位关系构成树状的义原层次体系,可以简单的通过语义距离计算相似度。义原的语义距离如公式(2)。
  其中,S1,S2表示2个义原,d是S1,S2在义原层次体系中的路径长度。α是一个可调节的参数,在本课题实现的基于HowNet的词汇语义相似度计算方法中α=0.5。2个词的相似度计算方法如公式(3)。
  树核(String kernel)算法是通过字符串结构上的特征来计算字符串之间的相似度。Stringkernel计算预处理后的问题对之间的相似度数值,主要是基于字符串核函数的方法。即首先将给定的字符串(问题对)拆分成子串集合(子串的长度可通过参数调节),然后通过核函数计算子串集合之间的相似度,从而通过线性合并得出问题对之间的相似度。   利用Term Weight来计算相似度的方法也是基于向量空间模型(VSM)文本相似度量的一种方法。与用tfidf计算相似度的方法不同之处在于给词项赋权的方法。本文没有直接用词频等统计信息来给词项赋权,而是利用了搜索引擎,通过搜索结果的重合率来为句子中的词项赋权。为词项赋权所用具体方法如下:
  (1)将整个句子放进baidu中检索,记录前20个检索结果。
  (2)去掉一个词,再将句子放人baidu中检索,记录前20个检索结果。
  (3)计算第二次的检索结果占第一次的检索结果的百分比,然后用1减,得到的数值即可认为是这个词在句子中的重要性分数。词的分数越大,说明越重要,其权重就越大。
  通过这个方法可以得到一个句子中每个词项的权重。但是,考虑到如果对每个句子都要放人搜索引擎中检索多次,时间消耗比较大,所以采用机器学习中的SVM-RANK算法,通过学习来达到自动对句子中的词项赋权的目的。
  对于句子,首先要做预处理,预处理包括分词,词性标注,句法依存分析等,以获得词语本身的词性特点以及词语之间的句法上的关系。对于句子中的每个词项选取以下特征:
  (1)NOUN:该词是否是名词。
  (2)S&C:该词是否是主语或者宾语。
  (3)TermFreq(词频):词语在整个文档中出现的次数。
  (4)DocFreq(文档频率):整个文档中出现该词的文档的个数,
  通过这种方式,可以得到一个句子中每个词项的权重,同tfidf方法一样,为每个文本(问句)建立向量空间模型,通过余弦计算得到2个句对之间的相似度,
  在网页排序算法中,一般认为,如果一个网页被很多其它网页链接,那么这个网页相对来说是比较重要的网页。模仿这种思想,从一个句子的依存树中,通过各个词项的依存关系,也对各个词的权重做出了衡量。
  利用这个方法得到的权重,也能够从一定方面反应词项在句子中的重要性。利用这样的方法,通过人度给一个句子中的词赋权。对于词w.其权重公式为W=In/Norm。這里的In表示词W的依存链人度。Norm为这个句子中所有词的人度和。赋权后,利用权重为问句建立向量空间模型,然后通过余弦计算得到2个句对之间的相似度。
  其它特征的提取包括了一些比较常规的特征,如2个句对的词数差、句对的长度差、句对的包含关系等。上文所述的种种特征都能够从某些方面来得到2个问句的相似信息,但是并没有对句子中的词序做出区分。比如对于这样两个问句:“谢霆锋爸爸是谁”,“谢霆锋是谁爸爸”。已经提取的特征没有办法区分这种关系,因此引入了另外一类特征一句法结构特征。
  在这类体征中,人们借助了二元组的思想,对于每个问句构建了一个“二元组”。构建方式如下:通过依存句法树,然后在这颗树上获取HED、SBV、VOb.3个节点的信息作为句子的二元组,然后通过比较2个句子的二元组成分是否一致作为特征加入分类器。对于句子“谢霆锋是谁儿子”,其二元组抽取为“谢霆锋”,“是”,“谁”。而句子“谢霆锋儿子是谁”的二元组则会被抽取为“儿子”,“是”,“谁”。通过这类特征的提取,能够很好地从词序的关系上获取问句的相似信息。
  1.3 评价规则
  本系统中采用在自然语言处理领域常用的3个评价指标,对实验结果进行评价。即准确率(precision)、召回率(recall)和F值(Fl Score)。
  2实验结果
  实验中共计标注了4000个问题对。采用测试和训练的语料比例为1:4.即80%的数据用来训练,余下20%的数据用来测试。在测试的过程中,采用5轮迭代取平均的测试方法,得到最终的准确率p.召回率R和F值见表2。
  从结果中不难看出,在提问类句子归一化问题上,基本达到了实用的水平,能够从一定程度上对问句是否能归一化做出判断。
  3结束语
  随着大数据时代的到来,人们被海量的信息淹没。如何从海量的信息中找到所需要的信息是目前的一大挑战。对于同一个问题,不同用户的提问形式往往不同,因此如何判断用户输入查询的语义是否一致对改善搜索性能具有重要意义。本研究将这一问题定义成了一个二元分类问题,即查询的语义是否一致。然后,在百度知道上面爬取了大量的语义查询对,并对其进行了人工标注。为了能够覆盖查询的语义信息,人们对问句从不同方面提取了几十个特征,如HowNet相似度、String Kernel相似度、tf-idf相似度、Term Weight、依存句法分析等特征。选择了二项逻辑斯蒂回归方法构建分类器,该方法在标注的数据集上F值达到了0.83。本文在问句一致性的研究上提出了相对有效的语义一致性判断算法。为提问类句子归一化研究做出了一些探索。虽然,本文取得了不错的实验结果,但是还存在很多问题:例如训练数据稀疏问题:自然语言处理工具的分析错误等问题,这些问题将有待进一步研究解决。
转载注明来源:https://www.xzbu.com/8/view-15125611.htm