一种基于词序加权的句子相似度计算方法与流程

文档序号:15385513发布日期:2018-09-08 00:31阅读:265来源:国知局
本发明涉及计算机
技术领域
下的自然语言处理
技术领域
。尤其涉及一种文本中时间信息识别与理解的方法。
背景技术
:句子相似度计算是自然语言处理领域中非常重要的基本问题,在自然语言处理领域的很多方面都有着广泛的应用。例如,在基于机器翻译中,使用文本相似度衡量文本中的词语的替换程度;在问答系统(faq)中,使用相似度进行问句检索,计算问题用户问题与知识库中知识的匹配程度。在相关领域中,相似度计算一直都是研究者们关注的重要课题。在对统计语言模型进行研究的背景下,google公司在2013年开放了word2vec这一款用于训练词向量的软件工具。word2vec可以根据给定的语料库,通过优化后的训练模型快速有效地将一个词语表达成向量形式,为自然语言处理领域的应用研究提供了新的工具。技术实现要素:本发明的目的旨在克服现有技术存在的问题,从而提供了一种基于词序加权的句子相似度的计算方法。为实现上述目的,本发明提供了。该方法包括以下步骤:1)利用网络爬虫获取语料集a,根据语义对语料集a中的所有语句添加分类标签,得到型如<label1i,sen1i>语料,其中sen1i为语料集a中的单句语句,label1i为sen1i对应的类别标签,然后利用word2vec算法,训练得出语料a中所有词语的词向量模型;2)利用步骤1)中获取的语料集a,构建测试语料集b,测试语料集b中形式为<label2j,sen2j>,其中label2j为语料集a中的一类别,sen2j属于label2j类别且与label2j类别在语料集a中所对应的语句语义相似,然后结合步骤1)中获取的词向量模型采用增量训练方式,利用word2vec算法获得语料集b中所有词语的词向量模型;3)从步骤1)中语料集a中取得一对<label11,sen11>,对sen11进行分词处理,并利用步骤2)中所获取的词向量模型取得每个对应分词结果的词向量v1k,k表示词语位于语句sen11中的位置;4)根据步骤3)中获取的语句sen11中每个词语对应的词向量v1k,以及每个词语位于sen11中的位置,计算每个词语的词序权重值weight,并根据词向量v1k和对应的词序权重值weight获取新的带权重的词向量v1k’;5)根据步骤4)中获得的带权重的词向量v1k’获取语句sen11的句向量senvec11;6)重复步骤3)至5),计算语料集a中所有句子的句向量senvec1i;7)重复步骤3)至5),计算语料集b中所有句子的句向量senvec2j;8)根据步骤6)和步骤7)获取的句向量,依次选取测试语料集b中的语句sen2j及其对应的句向量senvec2j,分别计算其与语料集a中每个语句sen1i的相似度,选取相似度排序最高的语句sen1i对应的label1i与label2j比较,若一致则表示正确,否则则将结果以<sen1i,sen2j>存储至训练语料集c;9)将步骤8)中获得的训练语料集c按照semeval-2017的相似度标注,然后采用lstm回归模型训练获取新的词向量,利用新训练的词向量更新步骤2)中的词向量模型,然后执行步骤3),进行下一次语句的相似度计算。优选地,所述步骤1)中在添加分类标签前还包括:采用正则匹配方式进行语料集a中多余的标点及网页标签去除,只保留单句语句。优选地,所述步骤3)中采用hanlp开源的分词器对sen11进行分词处理。优选地,所述步骤4)中词序权重值weight通过下列公式计算获得:其中k表示词语位于语句中的位置;loc表示加权起始位置,λ为常量,其数值范围为1-3。优选地,所述步骤5)通过下列公式计算获得:其中,n表示语句中词语的总数,v′ik表示第i个语句中第k个词语加权后的词向量。优选地,所述步骤6)中的相似度通过如下公式计算而得:其中,senvec1i表示语句sen1i的句向量,senvec2j表示语句sen2j的句向量。本发明提供的基于词序加权的句子相似度的计算方法,利用词序加权的方式,提高了计算句子相似度任务的准确率;同时,利用有监督的方式,增量训练词向量,对句子相似度任务的准确率进一步增高。附图说明图1为本发明实施例提供了基于词序加权的句子相似度计算方法方法流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,下面将结合发明实施例中的附图,对发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是发明一部分实施例,而非全部的实施例。基于发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于发明保护的范围。目前,语句的相似度计算的方法中,采用句向量的加权方式较为复杂,效果参差不齐,本发明提出一种基于词序加权的句子相似度的计算方法,能够有效地提高语句间的相似度计算任务的准确率。图1为本发明实施例提供了基于词序加权的句子相似度计算方法的流程图。在步骤101中,通过网络爬虫获取规模为8000的语料集a,采用正则匹配方式进行语料集a中多余的标点及网页标签去除,只保留单句语句。然后对8000单句语句进行分类,得到如下表所示的语料集a:label1i单句语句sen1i退还运费如何申请退运费退款申请如何申请退款退款申请我要退款换货申请如何申请换货......利用word2vec算法,训练得到语料集a中所有词语的词向量模型。在步骤102中,构建规模为30000的语料集b,其中语料集b中语料形式为<label2j,sen2j>,其中label2j来源于语料集a中包涵的类别,sen2j属于label2j类别且与label2j类别在语料集a中所对应的语句语义相似。结合步骤101中获取的词向量模型采用增量训练方式,利用word2vec算法得到语料集b中所有词语的词向量模型。语料集b中的语句型如下表所示:label2jsen2j退还运费怎么退运费退款申请衣服不合适,可以退了吗换货申请这件衣服麻烦帮我换了吧......通过训练可以得到格式为:词语w词向量vword1v11,v12...v1d......wordnvn1,vn2...vnd其中n表示词语总数,d表示词向量总维度。在步骤103中,选取语料集a中的一对语句<label11,sen11>,如本实施例中一对语句<退还运费,如何申请退运费>,对语句sen11“如何申请退运费”进行分词,分词结果为(如何,申请,退,运费),从步骤102中训练的词向量模型中获取对应的词向量,在本实施例中的词向量模型的维度为200,部分结果如下表:词语w词向量v1k如何-0.15166749,0.10850359...-0.097950申请0.099820456,0.11322714...0.06855157退0.04588356,0.08467035...-0.15038626运费-0.010142227,-0.02377942...-0.09789387在步骤104中,根据每个词语的位置,利用如下公式计算每个词语的词序权重值weight:其中,k表示词语位于语句中的位置,且从1开始计数;loc表示加权起始位置,通常当语句较短(该条语句中包涵的词语数目小于6)时可以设为1-3之间,λ为一个常量,通常可以设为1-3之间。本实施例中测试语句sen1i“如何申请退运费”,loc此时设为1,λ设为1.5,针对上述语句词序权重值如下表所示:词语w词序权重weight如何0.8123090300973813申请1.0退1.3004891818915623运费1.6149794589701247根据步骤103所获取的词向量与上述计算得到的词权重相乘获得新的词向量,如下表所示:词语w词向量v1k’如何0.123200872,0.088138446...0.079565669申请0.099820456,0.11322714...0.06855157退0.059671073,0.110112874...-0.195575704运费-0.016379488,-0.038403275...-0.158096589在步骤105中,将步骤104中所获得的更新后的词向量v1k’相加并求其均值,得到语句“如何申请退运费”的句向量senvec11,具体公式为:其中,n表示语句中词语的总数,v′ik表示第i个语句中第k个词语加权后的词向量。利用上述公式,可以得到结果:语句sen11senvec11如何申请退运费0.066578228,0.068268796...-0.051388763在步骤106中,重复上述步骤103至步骤105,依次计算得出所有语料集a中所有8000个语句的句向量。在步骤107中,重复上述步骤103至步骤105,依次计算得出所有语料集b中所有30000个语句的句向量。在步骤108中,结合步骤106中获取的语料集a中所有语句的句向量以及步骤107中获取的语料集b中所有语句的句向量。依次选取语料集b中的一个语句sen2j及其句向量senvec2j,并利用公式:依次计算语句sen2j与语料集a中的每一条语句sen1i间的相似度。其中,senvec1i表示每一个语料集a中的语句对应的句向量,senvec2j表示语句语料集b中一条语句sen2j的句向量。例如,计算语料集b中一条语句sen2j“怎么退运费”与语料集a中的每一条语句sen1i之间的相似度,利用上述公式,在采用词序加权按照相似度排序可以得到如下表所示的结果:相似语句sen1所属类别label1采用词序加权相似度如何申请退运费退还运费0.9334955如何申请退款退款申请0.8528203如何申请换货换货申请0.7556491如何购买运费险购买运费险0.6946413上表中,相似度最高的语句为“如何申请退运费”,且对应的类别为“退还运费”与“怎么退运费”对应的类别标签“退还运费”一致。在不采用词序加权时相似度较高的语句如下表所示:相似语句sen1所属类别label1不采用词序加权相似度如何申请退款退款申请0.8910549如何申请退运费退还运费0.8341876如何申请换货换货申请0.7948803如何购买运费险购买运费险0.7148501相似度最高的语句为“如何申请退款”,对应的类别标签为“退款申请”与“怎么退运费”对应的类别标签“退还运费”不一致。说明在采用词序加权计算相似度时,对该任务有效果。又例如:针对语料集b中语句<订单信息填写错误怎么办,电话填写错误>中“电话填写错误”,与语料集a中相关语句计算结果如下表所示:相似语句sen1所属类别label1采用词序加权相似度退货电话填写错了退货信息填写错误0.91249734信息填写错误订单信息填写错误怎么办0.8882772订单号码写错了订单信息填写错误怎么办0.78467226地址写错了订单信息填写错误怎么办0.7377515语句sen2“电话填写错误”的label2为“订单信息填写错误怎么办”,与最终计算结果中相似度最高的语句“退货电话填写错了”的类别标签label1“退货信息填写错误”不一致,则将<退货电话填写错了,电话填写错误>存入语料集c中。根据上述获得的相似度,在测试语料集b的整体效果如下表所示:根据上述实验,采用词序加权的方式,对计算相似度的准确性有所提升。步骤109中,根据步骤108中获得的训练语料集c,采用danielcer等人在《semeval-2017task1:semantictextualsimilaritymultilingualandcross-lingualfocusedevaluation》中的相似度值标注方法,相似度值标准可以按照下表所示:语句一语句二相似度值他正在洗澡他在沐浴5那两个人在路上散步那两个人拉着手在散步4他对她深信不疑他对她几乎没有怀疑3它俩一起搭了个窝它俩一起走进窝里2这个女生喜欢听音乐他正在弹钢琴1一只狗从我身边跑过他正在高速上飞驰0如步骤108中获得的语句将<退货电话填写错了,电话填写错误>,可将其标注为将<退货电话填写错了,电话填写错误,4>。对训练语料c进一步进行处理标注后,利用lstm回归模型训练得到新的词向量,利用新训练的词向量更新步骤102中的词向量模型,然后执行步骤103,在执行步骤103时按照更新后的词向量模型,进行下一次句子相似度的计算,在测试语料集b的整体效果如下表所示:根据上述实验结果,利用上述方式训练新的词向量,对于句子相似度计算的任务有较大的帮助。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1