一种基于句向量编码的信息搜索方法转让专利

申请号 : CN201910621000.6

文献号 : CN110516145B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄震王馨怡刘锋彭宇行王聪睿徐诗怡

申请人 : 中国人民解放军国防科技大学

摘要 :

本发明公开了一种基于句向量编码的信息搜索方法,目的是解决搜索信息准确率低的问题。技术方案是先构建由信息搜索数据库、语义搜索排序模块和段落排序模块构成的基于句向量编码的信息搜索系统,语义搜索排序模块由段落编码表示模块和相关性得分计算模块组成。段落编码表示模块利用现有句向量编码方法,将语句转化为固定长度的句向量表示,以语句层级的信息融合为起点,生成段落编码与问题编码;相关性得分计算模块对段落编码与问题编码进行语义相关性得分计算,段落排序模块据此对文本段落排序,获得最相关的文本段落,得到最准确的搜索结果。采用本发明可提高信息搜索的精确度,且复杂性低,易于工程实现。

权利要求 :

1.一种基于句向量编码的信息搜索方法,其特征在于包括以下步骤:第一步,构建基于句向量编码的信息搜索系统,基于句向量编码的信息搜索系统由信息搜索数据库、语义搜索排序模块和段落排序模块构成;语义搜索排序模块是由段落编码表示模块和相关性得分计算模块组成的卷积神经网络;构建方法是:

1.1搭建信息搜索数据库,方法为:

1.1.1构建信息搜索数据库结构:

信息搜索数据库是一张问题信息列表,用D表示;问题信息列表D共包含N个表项,以每个问题或关键词的相关信息作为一个表项进行存储;

问题信息列表D的每个表项以字典的格式存储,包含4个域,分别为:问题或关键词、候选段落集合、候选段落得分列表以及问题的正确答案;候选段落集合中包含M个候选段落,问题的正确答案中包含T个正确答案,M为正整数,T为正整数;

问题信息列表D用集合表示为{{Q1,P1,SS1,A1},{Q2,P2,SS2,A2}…{Qi,Pu,SSi,Ai}...{QN,PN,SSN,AN}},其中{Qi,Pi,SSi,Ai}表示问题信息列表的第i个表项,1≤i≤N,Qi为第i个问题或关键词;Pi为第i个问题的候选段落集合,Pi用{S1,S2…Sm…SM}表示,Sm为第m个候选段落,

1≤m≤M,Sm为包含R个元素的语句列表,Sm为集合{s1,s2…sr…sR},R为正整数,sr表示pj的第r个语句,1≤r≤R;候选段落得分列表SSi为:{Score(Qi,S1),Score(Qi,S2),…,Score(Qi,Sm),…,Score(Qi,SM)},Score(Qi,Sm)为浮点数,表示第m个候选段落Sm与Qi的相关性得分;Ai为Qi的答案集合,用{a1,a2…at…aT}表示,at为Qi的第t个答案,1≤t≤T,T为正整数;

1.1.2选择Quasar或SQuAD或SearchQA或TriviaQA这四种数据集中的任意一种作为原始数据集,原始数据集中共有N个数据,N为正整数;令Q′i为原始数据集中第i个问题或关键词,令Ai’为原始数据集中Q′i对应的答案集合,令Pi′为原始数据集中Q′i对应的候选段落集合;

1.1.3预处理原始数据集,将预处理后的原始数据集存放到信息搜索数据库D中:

1.1.3.1若原始数据集为Quasar、SearchQA或TriviaQA,则原始数据集属于多段落问答数据类型,转步骤1.1.3.3;若原始数据集为SQuAD,则原始数据集属于单段落问答数据类型,转步骤1.1.3.2;

1.1.3.2针对原始数据集的问题或关键词,将原始数据集中提供的原始候选文章拆分处理成段落列表,得到N个原始候选段落集合即 转步骤1.1.3.3;

1.1.3.3针对问题或关键词,将N个原始候选段落集合即 进行分句处理,具体步骤为:

1.1.3.3.1初始化变量i=1;

1.1.3.3.2初始化分句处理后的Qi′的候选段落集合Pi为空;初始化变量j=1;

1.1.3.3.3初始化 中第j个原始候选段落pj的语句集合Sj为空,

1.1.3.3.3遍历 中第j个原始候选段落pj,遇到句末标点,则进行分句处理,将句末标点之前的语句增加到Sj中,共包含R(i,j)个语句,得到第j个原始候选段落pj的语句列表sr表示pj的第r个语句,1≤r≤R(i,j),将Sj放到分句处理后的Qi′的候选段落集合Pi中;1≤R(i,j)≤R;

1.1.3.3.4令j=j+1,如果j≤Mi,转步骤1.1.3.3.3,否则,说明Qi′的原始候选段落集合已经完成分句处理,得到分句处理后的Qi′的候选段落集合令问题信息列表D中的Qi=Qi′,令D中的Ai=原始数据集中Q'i对应的答案集合Ai’,令D中的Pi=原始数据集中Q′i对应的候选段落集合Pi′,转步骤1.1.3.3.5;

1.1.3.3.5令i=i+1,如果i≤N,转步骤1.1.3.3.2,否则,说明原始数据集中N个数据均已完成候选段落集合的分句处理,得到了N个候选段落集合,即P′1,…,P′i,…,PN′,且已将D中的问题Q1,…,Qi,…,QN、候选段落集合P1,…,Pi,…,PN、答案集合A1,…,Ai,…,AN分别更新为原始数据集中的Q′1,…,Q′i,…,Q′N、P′1,…,P′i,…,P′N、A′1,…,A′i,…,A′N,转1.1.3.4;

1.1.3.4针对问题或关键词,初始化候选段落得分列表,具体步骤为:

1.1.3.4.1初始化变量i=1;

1.1.3.4.2初始化变量j=1;

1.1.3.4.3初始化D中的Qi的第j个原始候选段落pj的语句列表Sj的得分Score(Qi,Sj)为最小得分MIN,MIN为一个负数,即令Score(Qi,Sj)=MIN;

1.1.3.4.4令j=j+1,如果j≤Mi,转步骤1.1.3.4.3;否则,Qi的得分列表SSi完成赋值,即获得了步骤1.1.3.4.5;

1.1.3.4.5令i=i+1,如果i≤N,转步骤1.1.3.4.2;否则,说明已得到SS1~SSN,D的候选段落得分列表初始化完毕,转步骤1.2;

1.2构建语义搜索排序模块,语义搜索排序模块与信息搜索数据库相连,由段落编码表示模块和相关性得分计算模块两个模块组成,方法是:段落编码表示模块是由句向量编码子模块、段落编码子模块、融合函数子模块连接而成的神经网络模块;

句向量编码子模块与信息搜索数据库、段落编码子模块、相关性得分计算模块相连;段落编码子模块与句向量编码子模块、融合函数子模块相连;融合函数子模块与段落编码子模块、相关性得分计算模块相连;

相关性得分计算模块与句向量编码子模块、融合函数子模块相连;

句向量编码子模块从信息搜索数据库读入D中的数据{Qi,Pi,SSi,Ai},将Qi转换为句向量编码Eiq,将Pi中的候选段落集合Sj转换为句向量编码R(i,j)表示Qi的候选段落Pi语句列表Sj元素个数,即Pi语句个数,1≤R(i,j)≤R;1≤r≤R(i,j),表示Qi的候选段落语句列表Sj中第r个语句sr的句向量编码; 是长度为d的一维向量,由d个浮点数构成;Eis是大小为R(i,j)*d的二维向量,其构成元素均为浮点数;d为句向量维度,是一个固定的数值;句向量编码子模块将Eiq和Eis发送给段落编码子模块,同时将Eiq发送给相关性得分计算模块;

q s s s

段落编码子模块从句向量编码子模块接收Ei 和Ei ,完善补充Ei 所包含的信息,将Ei 转化为整合了Qi以及Sj上下文信息的向量编码Hip,将Hip发送给融合函数子模块;Hip是大小为R(i,j)*d的二维向量,其构成元素均为浮点数;

融合函数子模块是包含1个池化层的神经网络,将向量编码Hip池化成段落编码Eip,将Eip发送给相关性得分计算模块,Eip是长度为d的一维向量,向量元素为浮点数;

相关性得分计算模块是一个包含两个全连接层和一个激活函数的分类器神经网络模块;相关性得分计算模块从段落编码表示模块接收Eiq和Eip,将Qi的句向量编码Eiq和Eip作为输入,计算两者的相关性,得到Sj对于Qi的相关性得分Score(Qi,Sj),并将Qi的得分列表SSi传入段落排序模块;

1.3构建段落排序模块,段落排序模块与信息搜索数据库模块和语义搜索排序模块相连,根据语义搜索排序模块计算的SSi对Qi的候选段落Pi排序,返回相关性得分最高的候选段落;

第二步,对语义搜索排序模块进行训练,得到网络权重参数集合:

2.1初始化权重参数,方法是:

2.1.1使用随机函数将参数初始化为随机数;需要初始化的参数包含段落编码表示模块中段落编码子模块采用的BiLSTM的参数{Wl0,Wl1,Wl0_r,Wl1_r,bl0,bl1,bl0_r,bl1_r}以及相关性得分计算模块中全连接层参数{W(1),W(2),b(1),b(2)};

2.1.2网络模型学习率设置为正数,将批尺寸batchsize设置为正整数;

2.2对语义搜索排序模块进行训练,得到语义搜索排序模块权重参数集合,方法是:

2.2.1使用Pytorch深度学习框架实现语义搜索排序模块;

2.2.2通过最小化边缘排序损失函数即margin ranking loss训练语义搜索排序模块;

2.2.3将训练结束后得到的{Wl0,Wl1,Wl0_r,Wl1_r,bl0,bl1,bl0_r,bl1_r}和{W(1),W(2),b(1),b(2)}作为网络权重参数集合;

第三步,段落编码表示模块对信息搜索数据库中的问题或关键词和候选段落编码,相关性得分计算模块计算问题或关键词与候选段落的相关性得分,方法如下:

3.1初始化变量i=1;

3.2段落编码表示模块的句向量编码子模块从信息搜索数据库D读取数据{Qi,Pi,SSi,Ai};

3.3句向量编码子模块采用句向量编码工具,将Qi转换为句向量编码Eiq;

3.4初始化变量j=1;

3.5段落编码子模块采用句向量编码工具,将Pi中的候选段落语句列表Sj转换为句向量表示Sj中第r个语句的句向量编码;

s q

3.6段落编码子模块采用拼接的方式将段落句向量Ei 中的每项分别与Ei 拼接到一起,得到包含问题信息的句向量编码是一个大小为R(i,j)*2d的

二维向量, 表示将Eiq与 拼接后形成的向量;段落编码子模块采用BiLSTM神经网络将 转换为融合了上下文信息的编码Hip,将Hip发送给融合函数子模块;

3.7融合函数子模块采用池化层将向量编码Hip池化成Sj的段落编码Eip,即从R(i,j)个d维向量中选择数值最大的1个向量,将R(i,j)*d维转化为1*d维;将Eip发送给相关性得分计算模块;

3.8相关性得分计算模块从句向量编码子模块接收Qi的句向量编码Eiq,从融合函数子模块接收Sj的段落编码Eiq,按照Eiq、Eip、Eiq-EiP、Eiq·EiP的顺序拼接得到匹配矩阵MMi,MMi是一个长度为4d的一维向量,MMi用公式(1)表示为:

3.9相关性得分计算模块通过全连接层和LeakyRelu激活函数计算Sj与Qi的相关性得分Score(Qi,Sj),计算公式如下:Score(Qi,Sj)=W(2)LeakyReLU(W(1)MMi+b(1))+b(2)公式(2)LeakyReLU(W(1)M+b(1))是将(W(1)MMi+b(1))作为激活函数的参数进行计算,得到浮点数结果;

3.10j=j+1,如果j≤M,转步骤3.5,否则,说明Qi的所有候选段落已经完成相关性打分,得到相关性得分列表 转步骤3.11;

3.11i=i+1,如果i≤N,转步骤3.2,否则,说明信息搜索数据库中所有需要处理的问题或关键词均已完成相关性打分,得到整体得分列表SS=[SS1,SS2,…,SSi,…,SSN],转第四步;

第四步,段落排序模块根据得分列表对候选段落进行排序筛选,方法是:

4.1设定问题或关键词返回的最相关段落个数K,K为正整数;

4.2初始化变量i=1;

4.3针对Qi,按照SSi中的分值,记录SSi中最高的K个得分对应的序号Index=[I1,I2,…Ik…IK],Ik为排名第k个相似性得分的序号,1≤k≤K;

4.4输出Index对应的段落为得分最高的K个段落,即输出 为第Ik个候选段落;

4.4令i=i+1,如果i≤N,转步骤4.3,否则,数据集中所有问题或关键词已经输出最相关的段落信息,结束。

2.如权利要求1所述的一种基于句向量编码的信息搜索方法,其特征在于1.1.3.2步所述将原始数据集中提供的原始候选文章拆分处理成段落列表的方法为:

1.1.3.2.1初始化变量i=1,i表示正在处理的原始数据集问题或关键词Qi′的编号;

1.1.3.2.2遍历Qi′的候选原始候选文章Doci,遇到Doci中的换行符则进行分段处理,将Doci划分为Mi个候选段落,得到Qi′的原始候选段落集合 Mi为正整数,1≤Mi≤M;

1.1.3.2.3令i=i+1,如果i≤N,转步骤1.1.3.2.2,否则,原始数据集中所有N个数据均已完成原始候选文章的分段处理,得到N个原始候选段落集合即

3.如权利要求1所述的一种基于句向量编码的信息搜索方法,其特征在于1.1.3.3.3步所述句末标点指“.”或“!”或“?”。

4.如权利要求1所述的一种基于句向量编码的信息搜索方法,其特征在于1.1.3.4.3步所述MIN为-1*103。

5.如权利要求1所述的一种基于句向量编码的信息搜索方法,其特征在于2.1.2步所述网络模型学习率设置为0.001,所述batchsize设置为64。

6.如权利要求1所述的一种基于句向量编码的信息搜索方法,其特征在于第三步所述句向量编码工具指InferSent。

7.如权利要求1所述的一种基于句向量编码的信息搜索方法,其特征在于第四步所述K的取值为1或3或5。

说明书 :

一种基于句向量编码的信息搜索方法

技术领域

[0001] 本发明属于开放域条件下的搜索引擎技术领域,尤其涉及一种基于句向量编码的信息搜索方法。

背景技术

[0002] 当前,搜索引擎技术已成为信息资源获取的重要手段之一。尽管该技术已取得大量优秀成果,在一定程度上满足了信息获取需求,但以关键词为输入并返回大量相关文档的方式存在很多不足,例如返回的冗余信息过多,关键词匹配排序的策略缺乏对语义层面更深层次的理解和处理,搜索效果难以进一步提高。
[0003] 传统的搜索方法,通过词频-逆文档频度(英语:term frequency–inverse document frequency,简称TF-IDF)、最佳匹配-25(英语:Best Match 25,简称BM25)等技术进行关键词查询与文档之间的相关性的评估。然而,这些方法忽略了上下文、句子级的语义关系,从而导致搜索的准确率偏低。
[0004] 因此,近年来学者采用语义匹配技术来解决这类搜索准确率问题(BhaskarMitra,Nick Craswell 2017年在arXiv发表的论文“Neural Models for Information Retrieval”,即“信息抽取的神经网络模型”)。语义匹配是基于查询和文档的特征表示开展的相关性匹配评估。近年来,深度学习在自然语言处理领域取得了重大突破,其适用效果得到了广泛的认可。作为机器学习的研究分支,深度学习利用其多层的神经网络结构形成了强大的特征自动提取能力,可完成许多传统机器学习算法难以完成的任务。因而,近期有学者提出采用深度学习技术来解决搜索中语义匹配问题。然而,大量研究集中在基于词级别的语义匹配,这类匹配难以应用于文档中长文本(例如篇章/段落级)的整体语义信息匹配。
因为长文本情况下,干扰语义信息较多,特别地,以词向量为基础的深度学习模型易于捕获局部特征,难以建模整体语义信息。
[0005] 由于深度学习模型的数据信息以数值向量形式在神经网络中传递,因此在基于深度学习的文档处理中,词或句子首先应转化为向量表示。良好的向量表征是完成很多自然语言处理(NLP)任务的重要前提,其中针对单词的一种最简单向量表示形式采用热独码表征(one-hot representation),它最直观也最常用,其做法是将用户所处理的语句或段落中所有单词构建为一个词典(重复单词只记录1次),记录每个单词首次出现的位置,字典包含的条目个数为语句或段落中所有单词的个数。将每个单词表示成为一个向量,向量长度值为字典包含的条目个数,并给单词首次出现的位置赋值为1,其余赋值为0,即可用值1位置代表单词唯一的标识。例如,针对语句“Iloveworking”,构建词典为{‘I’:0,’love’:1,’working’:2},单词“love”一词的向量表示为“010”(此句话三个单词,所以是三位,love在第二位,所以第二位为1,其余为0)。
[0006] 但是这种表示方式存在很多弊端,首先其形式极其稀疏,因而占据存储量很大。假设语句共包含L个单词,则需要开辟一个规模为L*L的矩阵表示语句的L个单词,运算效率低。其次,由于所有向量全部正交,其任意两个词都是孤立存在的,因此热独码无法用来表达语义相近的词汇之间的关系。
[0007] 为此,分布式向量表征方式(distributed representation)被提出,它采用固定、低维度的向量来对词进行向量表征。分布式表征即为将单词的表示分散到不同维度上表达,这样有效减小了存储空间开销。针对搜索排序问题,绝大多数现有工作是以词嵌入为基础构建的。词嵌入利用分布式词向量之间的距离计算(如欧式距离)衡量词汇之间的相似关系,一般距离比较小的向量在语义或词性上都比较相近,例如word2vec(见Tomas Mikolov,Ilya Sutskever等人2013年发表在NIPS会议上的论文”Distributed Representations of Words and Phrases and their Compositionality”,即“单词和词组的分布式向量表征及其构建”)、GloVe(见PenningtonJeffrey,SocherRichard和ManningChristopher2014年发表在EMNLP会议1532-1543页的论文“GloVe:Global vectors for word representation”,即“GloVe:单词的全面向量表示”)等均公布了可以应用到多种自然语言处理任务中的词嵌入表示方法。但基于词嵌入的搜索排序模型缺乏高层级(例如语句层级、段落层级)的信息融合,在文本较长的数据集上准确性较差。
[0008] 此外,近期诸如InferSent(见Connea等人2017年发表在EMNLP会议670-680页的论文“Supervised Learning of Universal Sentence Representations from Natural Language Inference Data”,即“自然语言推断数据集通用句向量表示的监督学习”)等模型致力于构建句嵌入表示,将语句转化为分布式向量表示,捕获整个语句的语义特征。而HtutPhu Mon,BowmanSamuel R和ChoKyunghyun2018年发表在NAACL会议120-127页的论文“Training a Ranking Function for Open-Domain Question Answering.”即“一种开放域问答的排序方法”中尝试基于句嵌入构建排序网络模型,但在如何由句嵌入生成融合段落语义信息时采用简单加和的方式,忽略了不同语句在段落语义表达上的权重差异,导致语义融合和信息集成不够准确,排序准确性较低。

发明内容

[0009] 本发明要解决的技术问题是:针对词向量难以建模长文本段落导致搜索准确率低的问题,或由句嵌入生成融合段落语义信息时采用简单加和的方式导致信息融合提取不够准确的问题,提出一种基于句向量编码的信息搜索方法,计算问题与候选段落之间的相关性,然后对文本段落进行语义排序,获得最相关的文本段落,得到最准确的搜索结果。
[0010] 本发明的技术方案是:先构建由信息搜索数据库、语义搜索排序模块和段落排序模块构成的基于句向量编码的信息搜索系统,语义搜索排序模块由段落编码表示模块和相关性得分计算模块组成。段落编码表示模块利用现有句向量编码方法,将语句转化为固定长度的句向量表示,以语句层级的信息融合为起点,生成段落编码与问题编码;相关性得分计算模块对段落编码与问题编码进行语义相关性匹配,计算出文本段落的相关性得分,并据此对文本段落排序,获得最相关的文本段落,得到最准确的搜索结果。
[0011] 具体技术方案是:
[0012] 第一步,构建基于句向量编码的信息搜索系统,基于句向量编码的信息搜索系统由信息搜索数据库、语义搜索排序模块和段落排序模块构成。其中,语义搜索排序模块是由段落编码表示模块和相关性得分计算模块组成的卷积神经网络。构建方法是:
[0013] 1.1搭建信息搜索数据库,其方法为:
[0014] 1.1.1构建信息搜索数据库结构:
[0015] 信息搜索数据库是一张问题信息列表。
[0016] 问题信息列表共包含N个表项,以每个问题(或关键词)的相关信息作为一个表项进行存储。
[0017] 问题信息列表的每个表项以字典的格式存储,包含4个域,分别为:问题或关键词、候选段落集合、候选段落得分列表以及问题的正确答案。候选段落集合中包含M(M为正整数)个候选段落,问题的正确答案中包含T(T为正整数)个正确答案。
[0018] 以问题信息列表第i(1≤i≤N)个表项为例,其构成形式为{Qi,Pi,SSi,Ai},Qi为第i个问题(或关键词):’xxxx....’(字符串表示问题语句);Pi为第i个问题的候选段落集合,Pi:用{S1,S2...Sm...SM}表示,Sm为第m个候选段落,1≤m≤M,Sm为包含R(R为正整数)个元素的语句列表,Sm为集合{s1,s2...sr...sR},sr表示pj的第r个语句,1≤r≤R;候选段落得分列表SSi为:{Score(Qi,S1),Score(Qi,S2),...,Score(Qi,Sm),...,Score(Qi,SM)},Score(Qi,Sm)为浮点数,表示第m个候选段落Sm与Qi的相关性得分;Ai为Qi的答案集合,用{a1,a2...at...aT}表示,at为Qi的第t个答案,1≤t≤T,T为正整数)}。(此时是构建数据库结构,N个元素的M、T是相同的)
[0019] 问题信息列表(令为D)用集合表示为{{Q1,P1,SS1,A1},{Q2,P2,SS2,A2}...{Qi,Pi,SSi,Ai}...{QN,PN,SSN,AN}},其中{Qi,Pi,SSi,Ai}表示问题信息列表的第i个表项,1≤i≤N,此时{Qi,Pi,SSi,Ai}中的Qi,Pi,SSi,Ai均为空。
[0020] 1.1.2选择SQuAD(见P.Rajpurkar,J.Zhang,K.Lopyrev和P.Liang 2016年发表在EMNLP会议2383-2392页的论文“Squad:100,000+questions for machine comprehension of text”即“SQuAD:阅读理解任务的100,000个问题对”)或Quasar(见B.Dhingra,K.Mazaitis和W.W.Cohen 2017年发表在arXiv:1707.03904的论文“Quasar:Datasets for question answering by search and reading”,即“Quasar:通过搜索和阅读构成的问答数据集”)或SearchQA(见M.Dunn,L.Sagun,M.Higgins,V.U.Guney,V.Cirik,和K.Cho 2017年发表在arXiv:1704.05179的论文“SearchQA:Anew q&a dataset augmented with context from a search engine”,即“SearchQA:从搜索引擎增加段落的全新问答数据集”)或TriviaQA(见M.Joshi,E.Choi,D.Weld和L.Zettlemoyer 2017年发表在ACL1601-1611页的论文“Triviaqa:A large scale distantly supervised challenge dataset for reading comprehension”,即“TriviaQA:针对阅读理解任务的一个大规模远距离监督数据集”)这四种数据集中的任意一种作为原始数据集,原始数据集中共有N个数据,N为正整数。
[0021] 1.1.3预处理原始数据集,将预处理后的原始数据集存放到信息搜索数据库中:
[0022] 根据候选段落的个数,原始数据集可分为两类,一类为多段落问答数据类型,即原始数据集中的一个问题(假设为Qi′)提供包含M个原始候选段落的原始候选段落集合pj表示Qi′提供的第j个原始候选段落(1≤j≤Mi);另一类为单段落问答数据类型,即原始数据集中的一个问题(假设为Qi′)提供一篇原始候选文章Doci,Doci包含M个段落。
[0023] 1.1.3.1若原始数据集为Quasar、SearchQA或TriviaQA,则原始数据集属于多段落问答数据类型,转步骤1.1.3.3;若原始数据集为SQuAD,则原始数据集属于单段落问答数据类型,转步骤1.1.3.2;
[0024] 1.1.3.2针对原始数据集的问题或关键词,将原始数据集中提供的原始候选文章拆分处理成段落列表,具体步骤为:
[0025] 1.1.3.2.1初始化变量i=1,i表示正在处理的原始数据集问题(或关键词)Qi′的编号;
[0026] 1.1.3.2.2遍历Qi′的候选原始候选文章Doci,遇到Doci中的换行符则进行分段处理 ,将 Do c i 划 分 为 M i 个 候 选 段 落 ,得 到 Q i ′的 原 始 候 选 段 落 集 合Mi为正整数,1≤Mi≤M;
[0027] 1.1.3.2.3令i=i+1,如果i≤N,转步骤1.1.3.2.2,否则,说明原始数据集中所有N个数据均已完成原始候选文章的分段处理,得到了N个原始候选段落集合即转步骤1.1.3.3;
[0028] 1.1.3.3针对问题或关键词,将 进行分句处理,具体步骤为:
[0029] 1.1.3.3.1初始化变量i=1;
[0030] 1.1.3.3.2初始化分句处理后的Qi′的候选段落集合Pi为空;初始化变量j=1;
[0031] 1.1.3.3.3初始化 中第j个原始候选段落pj的语句集合Sj为空,
[0032] 1.1.3.3.3遍历 中第j个原始候选段落pj,遇到句末标点(“.”或“!”或“?”),则进行分句处理,将句末标点之前的语句增加到Sj中,共包含R(i,j)个语句(1≤R(i,j)≤R)得到第j个原始候选段落pj的语句列表 (sr表示pj的第r个语句,1≤r≤R(i,j)),将Sj放到分句处理后的Qi′的候选段落集合Pi中;
[0033] 1.1.3.3.4令j=j+1,如果j≤Mi,转步骤1.1.3.3.3,否则,说明Qi′的原始候选段落集合 已 经完 成分 句处 理 ,得到 分句处 理 后的Q i ′的候 选段 落集 合令问题信息列表D中的Qi=Qi′,令D中的Ai=原始数据集中Q′i
对应的答案集合Ai’,令D中的Pi=原始数据集中Q′i对应的候选段落集合Pi′,转步骤
1.1.3.3.5;
[0034] 1.1.3.3.5令i=i+1,如果i≤N,转步骤1.1.3.3.2,否则,说明原始数据集中N个数据均已完成候选段落集合的分句处理,得到了N个候选段落集合,即P′1,...,P′i,...,PN′,且已将D中的问题Q1,...,Qi,...,QN、候选段落集合P1,...,Pi,...,PN、答案集合A1,...,Ai,...,AN分别更新为原始数据集中的Q′1,...,Q′i,...,Q′N、P′1,...,P′i,...,P′N、A′1,...,A′i,...,A′N,转1.1.3.4。
[0035] 1.1.3.4针对问题或关键词,初始化候选段落得分列表,具体步骤为:
[0036] 1.1.3.4.1初始化变量i=1:
[0037] 1.1.3.4.2初始化变量j=1;
[0038] 1.1.3.4.3初始化D中的Qi的第j个原始候选段落pj的语句列表Sj的得分Score(Qi,Sj)为最小得分MIN(MIN为一个负数,通常取-1*103),即令Score(Qi,Sj)=MIN;
[0039] 1.1.3.4.4令j=j+1,如果j≤Mi,转步骤1.1.3.4.3;否则,Qi的得分列表SSi完成赋值,即获得了步骤1.1.3.4.5;
[0040] 1.1.3.4.5令i=i+1,如果i≤N,转步骤1.1.3.4.2;否则,说明已得到SS1~SSN,D的候选段落得分列表初始化完毕,转步骤1.2;
[0041] 1.2构建语义搜索排序模块,语义搜索排序模块与信息搜索数据库相连,由段落编码表示模块和相关性得分计算模块两个模块组成。方法是:
[0042] 段落编码表示模块是由句向量编码子模块、段落编码子模块、融合函数子模块连接而成的神经网络模块。
[0043] 其中,句向量编码子模块与信息搜索数据库、段落编码子模块、相关性得分计算模块相连;段落编码子模块与句向量编码子模块、融合函数子模块相连;融合函数子模块与段落编码子模块、相关性得分计算模块相连。
[0044] 相关性得分计算模块与句向量编码子模块、融合函数子模块相连。
[0045] 句向量编码子模块从信息搜索数据库读入D中的数据{Qi,Pi,SSi,Ai},将Qi转换为句向量编码Eiq,将Pi中的语句列表Sj转换为句向量编码(R(i,j)表示Qi的候选段落Pi语句列表Sj元素个数,即Pi
语句个数,1≤R(i,j)≤R;1≤r≤R(i,j),表示Qi的候选段落语句列表Sj中第r个语句sr的句向量编码)。 是长度为d的一维向量,由d个浮点数构成。Eis是大小为R(i,j)*d的二维向量,其构成元素均为浮点数。d为句向量维度,是一个固定的数值(见Connea等人2017年发表在EMNLP会议670-680页的论文“Supervised Learning of Universal  Sentence 
Representations from Natural Language Inference Data”,即“自然语言推断数据集通用句向量表示的监督学习”)。句向量编码子模块将Eiq和Eis发送给段落编码子模块,同时将q
Ei发送给相关性得分计算模块;
[0046] 段落编码子模块从句向量编码子模块接收Eiq和Eis,完善补充Eis所包含的信息,使用BiLSTM神经网络(见Graves A,Schmidhuber J等人2005年发表在IJCNN会议602-610页的论文”Framewise phoneme classification with bidirectional LSTM and other neural network architectures”,即“基于双向LSTM及其他神经网络的帧态因素分类”)将Eis转化为整合了Qi以及Sj上下文信息的向量编码Hip。将Hip发送给融合函数子模块。其中,Hip是大小为R(i,j)*d的二维向量,其构成元素均为浮点数。
[0047] 融合函数子模块是包含1个池化层的神经网络,将向量编码Hip池化成段落编码Eip,将Eip发送给相关性得分计算模块(Eip是长度为d的一维向量,向量元素为浮点数)。
[0048] 相关性得分计算模块是一个包含两个全连接层和一个激活函数的分类器神经网络模块。相关性得分计算模块从段落编码表示模块接收Eiq和Eip,将Qi的句向量编码Eiq和Eip作为输入,计算两者的相关性,得到Sj对于Qi的相关性得分Score(Qi,Sj),并将Qi的得分列表SSi传入段落排序模块;
[0049] 1.3构建段落排序模块,段落排序模块与信息搜索数据库模块和语义搜索排序模块相连,根据语义搜索排序模块计算的SSi对Qi的候选段落Pi排序,返回相关性得分最高的候选段落。
[0050] 第二步,对语义搜索排序模块进行训练,得到网络权重参数集合:
[0051] 2.1初始化权重参数,方法是:
[0052] 2.1.1使用随机函数将参数初始化为随机数。需要初始化的参数包含段落编码表示模块中段落编码子模块采用的BiLSTM的参数(参数定义见Graves A,Schmidhuber J等人2005年发表在IJCNN会议602-610页的论文”Framewise phoneme classification With bidirectional LSTM and other neural network architectures”,即“基于双向LSTM及其他神经网络的帧态因素分类”)
[0053] {Wl0,Wl1,Wl0_r,Wl1_r,bl0,bl1,bl0_r,bl1_r}以及相关性得分计算模块中全连接层参数{W(1),W(2),b(1),b(2)};
[0054] 2.1.2设置训练过程中所需的参数,包括网络模型学习率和批尺寸(batchsize),一般将网络模型学习率设置为一个正数,将batchsize设置为正整数;实验证明,将网络模型学习率设置为0.001,将batchsize设置为64时,相关性排序准确率最高;
[0055] 2.2对语义搜索排序模块进行训练,得到语义搜索排序模块权重参数集合。方法是:
[0056] 2.2.1使用Pytorch深度学习框架(见Adam Paszke等人2017年发表在NIPS会议的论文“Automatic differentiation in PyTorch”,即“PyTorch中的自动微分”)实现语义搜索排序模块。
[0057] 2.2.2通过最小化边缘排序损失函数(margin ranking loss)(见Bai Bing,Weston Jason,Grangier David等人2010年在InformationRetrieval291-314页发表的论文“Learning to rank with(a lot of)word features”,即“使用单词特征学习排序”)训练语义搜索排序模块。
[0058] 2.2.3将训练结束后得到的{Wl0,Wl1,Wl0_r,Wl1_r,bl0,bl1,bl0_r,bl1_r}和{W(1),W(2),b(1),b(2)}作为网络权重参数集合。
[0059] 第三步,段落编码表示模块对信息搜索数据库中的问题(或关键词)和候选段落编码,相关性得分计算模块计算问题(或关键词)与候选段落的相关性得分,方法如下:
[0060] 3.1初始化变量i=1;
[0061] 3.2段落编码表示模块的句向量编码子模块从信息搜索数据库D读取数据{Qi,Pi,SSi,Ai};
[0062] 3.3句向量编码子模块采用句向量编码工具(如InferSent等),将Qi转换为句向量编码Eiq;
[0063] 3.4初始化变量j=1;
[0064] 3.5段落编码子模块采用句向量编码工具(如InferSent等),将Pi中的候选段落语句列表Sj转换为句向量 (1≤r≤R(i,j), 表示Sj中第r个语句的句向量编码);
[0065] 3.6段落编码子模块采用拼接的方式将段落句向量Eis中的每项分别与Eiq拼接到一起,拼接后得到包含问题信息的句向量编码是一个大小为R(i,j)*2d的二
q
维向量, 表示将Ei 与 拼接后形成的向量;采用
BiLSTM神经网络将 转换为融合了上下文信息的编码Hip。将Hip发送给融合函数子模块。
[0066] 3.7融合函数子模块采用池化层将向量编码Hip池化成Sj的段落编码Eip,即从R(i,j)个d维向量中选择数值最大的1个向量,将R(i,j)*d维转化为1*d维;将Eip发送给相关性得分计算模块;
[0067] 3.8相关性得分计算模块从句向量编码子模块接收Qi的句向量编码Eiq,从融合函数子模块接收Sj的段落编码Eip,构建匹配矩阵,方法是:
[0068] 按照Eiq、Eip、Eiq-EiP(Eiq、Eip两个向量对应位置的数值相减)、Eiq·EiP(Eiq、Eip两个向量对应位置的数值相乘)的顺序拼接得到匹配矩阵MMi,是一个长度为4d的一维向量,表示为公式(1)
[0069]
[0070] 3.9相关性得分计算模块通过全连接层和LeakyRelu激活函数(见Steffen Eger,Paul Youssef和lrynaGurevych 2018年发表在EMNLP会议4415-4424页的论文”Is it Time to Swish?Comparing Deep Learning Activation Functions Across NLP tasks”,即“是时候快速转变了吗?基于自然语言处理任务的不同深度学习激活函数的性能比较”)计算Sj与Qi的相关性得分Score(Qi,Sj),计算公式如下:
[0071] Score(Qi,Sj)=W(2)LeakyReLU(W(1)MMi+b(1))+b(2)公式(2)
[0072] LeakyReLU(W(1)M+b(1))是将(W(1)MMi+b(1))作为激活函数的参数进行计算,得到浮点数结果。
[0073] 3.10j=j+1,如果j≤M,转步骤3.5,否则,说明Qi的所有候选段落已经完成相关性打分,得到相关性得分列表表示Qi与所有候选段落的相关性得分,转步骤3.11;
[0074] 3.11i=i+1,如果i≤N,转步骤3.2,否则,说明信息搜索数据库中所有需要处理的问题(或关键词)均已完成相关性打分,得到整体得分列表SS=[SS1,SS2,...,SSi,...,SSN],,转第四步;
[0075] 第四步,段落排序模块根据得分列表对候选段落进行排序筛选,方法是:
[0076] 4.1设定问题(或关键词)返回的最相关段落个数K,K为正整数,通常K的取值为1或3或5;
[0077] 4.2初始化变量i=1;
[0078] 4.3针对Qi,按照SSi中的分值,记录SSi中最高的K个得分对应的序号Index=[I1,I2,...Ik...IK],Ik(1≤k≤K)为排名第k个相似性得分的序号;
[0079] 4.4输出Index对应的段落为得分最高的K个段落,即输出为第Ik个候选段落;
[0080] 4.4令i=i+1,如果i≤N,转步骤4.3,否则,说明数据集中所有问题(或关键词)已经输出最相关的段落信息,结束。
[0081] 本发明与现有技术相比具有以下技术效果:
[0082] (1)步骤3.3和3.5使用了句向量编码工具,将输入的语句转化为固定长度的句向量编码,在句子层级整合了句内语义信息,每一个句向量的维度固定,与语句包含的单词个数无关,便于不同长度的语句之间信息融合,有利于提高搜索准确性;
[0083] (2)获取句向量编码后,步骤3.6将代表问题的句向量拼接到段落的每一个句向量后,将问题(或关键词)的信息与候选段落的信息进行了融合,融合方法较为简单,复杂性低;
[0084] (3)步骤3.6完成了语句级别的信息融合后,步骤3.7通过池化层选取最大值形成文本段落的段落级代表向量,加深段落中上下文语义信息的融合,进一步提高了准确性。
[0085] 总之,本发明基于句向量编码的信息搜索方法,分层级多次融合了上下文语义信息,提高了信息相关性打分的准确性,有效提升了信息搜索的精确度,且方法简单,复杂性低,易于工程实现。

附图说明

[0086] 图1为本发明中信息搜索方法的流程图;
[0087] 图2为本发明第一步构建的基于句向量编码的信息搜索系统逻辑结构图;

具体实施方式

[0088] 图1为本发明中信息搜索方法的流程图;如图1所示,本发明包括以下步骤:
[0089] 第一步,构建如图2所示的基于句向量编码的信息搜索系统,基于句向量编码的信息搜索系统由信息搜索数据库、语义搜索排序模块和段落排序模块构成;语义搜索排序模块是由段落编码表示模块和相关性得分计算模块组成的卷积神经网络;构建方法是:
[0090] 1.1搭建信息搜索数据库,方法为:
[0091] 1.1.1构建信息搜索数据库结构:
[0092] 信息搜索数据库是一张问题信息列表,用D表示;问题信息列表D共包含N个表项,以每个问题或关键词的相关信息作为一个表项进行存储;
[0093] 问题信息列表D的每个表项以字典的格式存储,包含4个域,分别为:问题或关键词、候选段落集合、候选段落得分列表以及问题的正确答案;候选段落集合中包含M个候选段落,问题的正确答案中包含T个正确答案,M为正整数,T为正整数;
[0094] 问题信息列表D用集合表示为{{Q1,P1,SS1,A1},{Q2,P2,SS2,A2}...{Qi,Pi,SSi,Ai}...{QN,PN,SSN,AN}},其中{Qi,Pi,SSi,Ai}表示问题信息列表的第i个表项,1≤i≤N,Qi为第i个问题或关键词;Pi为第i个问题的候选段落集合,Pi用{S1,S2...Sm...SM}表示,Sm为第m个候选段落,1≤m≤M,Sm为包含R个元素的语句列表,Sm为集合{s1,s2...sr...sR},R为正整数,sr表示pj的第r个语句,1≤r≤R;候选段落得分列表SSi为:{Score(Qi,S1),Score(Qi,S2),...,Score(Qi,Sm),...,Score(Qi,SM)},Score(Qi,Sm)为浮点数,表示第m个候选段落Sm与Qi的相关性得分;Ai为Qi的答案集合,用{a1,a2...at...aT}表示,at为Qi的第t个答案,1≤t≤T,T为正整数;
[0095] 1.1.2选择Quasar或SQuAD或SearchQA或TriviaQA这四种数据集中的任意一种作为原始数据集,原始数据集中共有N个数据,N为正整数;令Q′i为原始数据集中第i个问题或关键词,令Ai’为原始数据集中Q′i对应的答案集合,令Pi′为原始数据集中Q′i对应的候选段落集合;
[0096] 1.1.3预处理原始数据集,将预处理后的原始数据集存放到信息搜索数据库D中:
[0097] 1.1.3.1若原始数据集为Quasar、SearchQA或TriviaQA,则原始数据集属于多段落问答数据类型,转步骤1.1.3.3;若原始数据集为SQuAD,则原始数据集属于单段落问答数据类型,转步骤1.1.3.2;
[0098] 1.1.3.2针对原始数据集的问题或关键词,将原始数据集中提供的原始候选文章拆分处理成段落列表,得到N个原始候选段落集合即 转步骤1.1.3.3;
[0099] 1.1.3.3针对问题或关键词,将 进行分句处理,具体步骤为:
[0100] 1.1.3.3.1初始化变量i=1;
[0101] 1.1.3.3.2初始化分句处理后的Qi′的候选段落集合Pi为空;初始化变量j=1;
[0102] 1.1.3.3.3初始化 中第j个原始候选段落pj的语句集合Sj为空,
[0103] 1.1.3.3.3遍历 中第j个原始候选段落pj,遇到句末标点,则进行分句处理,将句末标点之前的语句增加到Sj中,共包含R(i,j)个语句,得到第j个原始候选段落pj的语句列表sr表示pj的第r个语句,1≤r≤R(i,j),将Sj放到分句处理后的Qi′的候选段落集合Pi中;
[0104] 1.1.3.3.4令j=j+1,如果j≤Mi,转步骤1.1.3.3.3,否则,说明Qi′的原始候选段落集合 已 经完 成分 句处 理 ,得到 分句处 理 后的Q i ′的候 选段 落集 合令问题信息列表D中的Qi=Qi′,令D中的Ai=原始数据集中
Q′i对应的答案集合Ai’,令D中的Pi=原始数据集中Q′i对应的候选段落集合Pi′,转步骤
1.1.3.3.5;
[0105] 1.1.3.3.5令i=i+1,如果i≤N,转步骤1.1.3.3.2,否则,说明原始数据集中N个数据均已完成候选段落集合的分句处理,得到了N个候选段落集合,即P′1,...,P′i,...,PN′,且已将D中的问题Q1,...,Qi,...,QN、候选段落集合P1,...,Pi,...,PN、答案集合A1,...,Ai,...,AN分别更新为原始数据集中的Q′1,...,Q′i,...,Q′N、P′1,...,P′i,...,P′N、A′1,...,A′i,...,A′N,转1.1.3.4;
[0106] 1.1.3.4针对问题或关键词,初始化候选段落得分列表,具体步骤为:
[0107] 1.1.3.4.1初始化变量i=1;
[0108] 1.1.3.4.2初始化变量j=1;
[0109] 1.1.3.4.3初始化D中的Qi的第j个原始候选段落pj的语句列表Sj的得分Score(Qi,Sj)为最小得分MIN,令MIN为-1*103;
[0110] 1.1.3.4.4令j=j+1,如果j≤Mi,转步骤1.1.3.4.3;否则,Qi的得分列表SSi完成赋值,即获得了 步骤1.1.3.4.5;
[0111] 1.1.3.4.5令i=i+1,如果i≤N,转步骤1.1.3.4.2;否则,说明已得到SS1~SSN,D的候选段落得分列表初始化完毕,转步骤1.2;
[0112] 1.2构建语义搜索排序模块,语义搜索排序模块与信息搜索数据库相连,由段落编码表示模块和相关性得分计算模块两个模块组成,方法是:
[0113] 段落编码表示模块是由句向量编码子模块、段落编码子模块、融合函数子模块连接而成的神经网络模块;
[0114] 句向量编码子模块与信息搜索数据库、段落编码子模块、相关性得分计算模块相连;段落编码子模块与句向量编码子模块、融合函数子模块相连;融合函数子模块与段落编码子模块、相关性得分计算模块相连;
[0115] 相关性得分计算模块与句向量编码子模块、融合函数子模块相连;
[0116] 句向量编码子模块从信息搜索数据库读入D中的数据{Qi,Pi,SSi,Ai},将Qi转换为句向量编码Eiq,将Pi中的候选段落集合Sj转换为句向量编码R(i,j)表示Qi的候选段落Pi语句列表Sj元素个数,即Pi语句个数,1≤R(i,j)≤R;1≤r≤R(i,j),表示Qi的候选段落语句列表Sj中第r个语句sr的句向量编码; 是长度为d的一维向量,由d个浮点数构成;Eis是大小为R(i,j)*d的二维向量,其构成元素均为浮点数;d为句向量维度,是一个固定的数值;句向量编码子模块将Eiq和Eis发送给段落编码子模块,同时将Eiq发送给相关性得分计算模块;
[0117] 段落编码子模块从句向量编码子模块接收Eiq和Eis,完善补充Eis所包含的信息,将Eis转化为整合了Qi以及Sj上下文信息的向量编码Hip,将Hip发送给融合函数子模块;Hip是大小为R(i,j)*d的二维向量,其构成元素均为浮点数;
[0118] 融合函数子模块是包含1个池化层的神经网络,将向量编码Hip池化成段落编码Eip,将Eip发送给相关性得分计算模块,Eip是长度为d的一维向量,向量元素为浮点数;
[0119] 相关性得分计算模块是一个包含两个全连接层和一个激活函数的分类器神经网络模块;相关性得分计算模块从段落编码表示模块接收Eiq和Eip,将Qi的句向量编码Eiq和Eip作为输入,计算两者的相关性,得到Sj对于Qi的相关性得分Score(Qi,Sj),并将Qi的得分列表SSi传入段落排序模块;
[0120] 1.3构建段落排序模块,段落排序模块与信息搜索数据库模块和语义搜索排序模块相连,根据语义搜索排序模块计算的SSi对Qi的候选段落Pi排序,返回相关性得分最高的候选段落;
[0121] 第二步,对语义搜索排序模块进行训练,得到网络权重参数集合:
[0122] 2.1初始化权重参数,方法是:
[0123] 2.1.1使用随机函数将参数初始化为随机数;需要初始化的参数包含段落编码表示模块中段落编码子模块采用的BiLSTM神经网络的参数
[0124] {Wl0,Wl1,Wl0_r,Wl1_r,bl0,bl1,bl0_r,bl1_r}以及相关性得分计算模块中全连接层参数{W(1),W(2),b(1),b(2)};
[0125] 2.1.2将网络模型学习率设置为0.001,将batchsize设置为64;
[0126] 2.2对语义搜索排序模块进行训练,得到语义搜索排序模块权重参数集合,方法是:
[0127] 2.2.1使用Pytorch深度学习框架实现语义搜索排序模块;
[0128] 2.2.2通过最小化边缘排序损失函数即margin ranking loss训练语义搜索排序模块;
[0129] 2.2.3将训练结束后得到的{Wl0,Wl1,Wl0_r,Wl1_r,bl0,bl1,bl0_r,bl1_r}和{W(1),W(2),b(1),b(2)}作为网络权重参数集合;
[0130] 第三步,段落编码表示模块对信息搜索数据库中的问题或关键词和候选段落编码,相关性得分计算模块计算问题或关键词与候选段落的相关性得分,方法如下:
[0131] 3.1初始化变量i=1;
[0132] 3.2段落编码表示模块的句向量编码子模块从信息搜索数据库D读取数据{Qi,Pi,SSi,Ai};
[0133] 3.3句向量编码子模块采用句向量编码工具,将Qi转换为句向量编码Eiq;
[0134] 3.4初始化变量j=1;
[0135] 3.5段落编码子模块采用句向量编码工具,将Pi中的候选段落语句列表Sj转换为句向量 1≤r≤R(i,j), 表示Sj中第r个语句的句向量编码;
[0136] 3.6段落编码子模块采用拼接的方式将段落句向量Eis中的每项分别与Eiq拼接到一起,得到包含问题信息的句向量编码是一个大小为R(i,j)*2d的二
维向量, 表示将Eiq与 拼接后形成的向量;段落编码子模块将 转
换为融合了上下文信息的编码Hip,将Hip发送给融合函数子模块;
[0137] 3.7融合函数子模块采用池化层将向量编码Hip池化成Sj的段落编码Eip,即从R(i,j)个d维向量中选择数值最大的1个向量,将R(i,j)*d维转化为1*d维;将Eip发送给相关性得分计算模块;
[0138] 3.8相关性得分计算模块从句向量编码子模块接收Qi的句向量编码Eiq,从融合函数子模块接收Sj的段落编码Eip,按照Eiq、Eip、Eiq-EiP、Eiq·EiP的顺序拼接得到匹配矩阵MMi,MMi是一个长度为4d的一维向量,MMi用公式(1)表示为:
[0139]
[0140] 3.9相关性得分计算模块通过全连接层和LeakyRelu激活函数计算Sj与Qi的相关性得分Score(Qi,Sj),计算公式如下:
[0141] Score(Qi,Sj)=W(2)LeakyReLU(W(1)MMi+b(1))+b(2)   公式(2)
[0142] LeakyReLU(W(1)M+b(1))是将(W(1)MMi+b(1))作为激活函数的参数进行计算,得到浮点数结果;
[0143] 3.10j=j+1,如果j≤M,转步骤3.5,否则,说明Qi的所有候选段落已经完成相关性打分,得到相关性得分列表转步骤3.11;
[0144] 3.11i=i+1,如果i≤N,转步骤3.2,否则,说明信息搜索数据库中所有需要处理的问题或关键词均已完成相关性打分,得到整体得分列表SS=[SS1,SS2,...,SSi,...,SSN],转第四步;
[0145] 第四步,段落排序模块根据得分列表对候选段落进行排序筛选,方法是:
[0146] 4.1设定问题或关键词返回的最相关段落个数K,K为1或3或5;
[0147] 4.2初始化变量i=1;
[0148] 4.3针对Qi,按照SSi中的分值,记录SSi中最高的K个得分对应的序号Index=[I1,I2,...Ik...IK],Ik为排名第k个相似性得分的序号,1≤k≤K;
[0149] 4.4输出Index对应的段落为得分最高的K个段落,即输出为第Ik个候选段落;
[0150] 4.4令i=i+1,如果i≤N,转步骤4.3,否则,数据集中所有问题或关键词已经输出最相关的段落信息,结束。