文档检索方法、装置及计算机可读存储介质
技术领域
本发明实施例涉及自然语言处理领域,特别涉及一种文档检索方法、装置及计算机可读存储介质。
背景技术
文档检索是指从检索库中检索与查询(query)最相关的前几个文档作为文档候选集;文档阅读是指通过机器阅读query和文档得到query的答案。其中文档候选集主要通过计算query和文本库中每个文档间的相似度再根据相似度排序得到。
发明人发现现有技术中至少存在如下问题:文档通常由多个句子或者多段文本组成,如果直接将检索到的候选文档输入到阅读理解模型,由于阅读理解模型的阅读长度有限制(即只能对预设字数以内的文档进行阅读理解),使得文本字数较多的候选文档不仅会增加机器阅读的难度,还有可能会因为阅读长度限制损失一部分语义信息,从而直接影响阅读理解的整体性能,导致文档检索的准确性不高。
发明内容
本发明实施方式的目的在于提供一种文档检索方法、装置及计算机可读存储介质,其能够在降低机器阅读模型阅读难度的同时,提高文档检索的准确性。
为解决上述技术问题,本发明的实施方式提供了一种文档检索方法,包括:
获取候选文档,其中,所述候选文档由用户输入的查询语句确定;判断所述候选文档的文本字数是否小于或等于预设字数;若不是,将所述候选文档切分为多个句子;计算多个所述句子中的每个句子与所述查询语句的相似度;根据所述相似度删除所述多个句子中的部分句子,直至剩余句子的总字数小于或等于所述预设字数;将所述剩余句子和所述查询语句输入预设机器阅读模型中,得到所述查询语句的答案。
本发明的实施方式还提供了一种文档检索装置,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的文档检索方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的文档检索方法。
本发明的实施方式相对于现有技术而言,通过由用户输入的查询语句确定候选文档,能够初步缩小对查询语句答案的查询范围,在确保候选文档中能够存在查询语句的答案的同时,减小预设机器阅读模型的工作量;通过在判断候选文档的文本字数大于预设字数时,将候选文档切分为多个句子,并计算多个句子中的每个句子与查询语句的相似度,从而能够根据相似度得知多个句子中的每个句子能够找到查询语句的答案的概率(句子与查询语句相似度越高,该句子能够找到查阅语句的答案的概率越大);再根据相似度删除多个句子中的部分句子,直至剩余句子的总字数小于或等于所述预设字数,在确保剩余句子中能够找到查询语句的答案的同时,将剩余句子的总字数控制在预设机器阅读模型能够阅读的字数范围内,使得预设机器阅读模型能够直接根据剩余句子和查询语句得到查询语句的答案,从而在降低机器阅读模型阅读难度的同时,提高文档检索的准确性。
另外,在判断所述候选文档的文本字数是否小于或等于预设字数之前,还包括:对所述候选文档进行指代消解;所述判断所述候选文档的文本字数是否小于或等于预设字数,具体包括:判断进行所述指代消解后的所述候选文档的文本字数是否小于或等于预设字数。
另外,在对所述对所述候选文档进行指代消解之前,还包括:获取所述候选文档中的多个指代词;所述对所述候选文档进行指代消解,具体包括:对所述候选文档进行实体识别,将识别出来的多个实体词作为候选先行词;将一个所述指代词与多个所述候选先行词中的每一个进行替换,计算每个所述候选先行词的匹配概率,将所述匹配概率最高的所述候选先行词作为所述指代词对应的先行词;重复上述步骤,直至候选文档中的多个指代词均被替换为先行词。
另外,所述根据所述相似度删除所述多个句子中的部分句子,直至剩余句子的总字数小于或等于所述预设字数,具体包括:按照所述相似度由低到高的顺序依次删除所述句子,直至剩余句子的总字数小于或等于所述预设字数。
另外,在所述计算多个所述句子中的每个句子与所述查询语句的相似度之后,还包括:对所述查询语句进行问句分析,得到所述查询语句所属的类别,其中,所述类别包括询问地址、询问时间和询问人名中的至少一者;根据所述查询语句所属的类别得到与所述类别对应的关键词;所述根据所述相似度删除所述多个句子中的部分句子,具体包括:根据所述相似度和所述关键词删除所述多个句子中的部分句子。
另外,所述根据所述相似度和所述关键词删除所述多个句子中的部分句子,具体包括:根据所述相似度由高到低的顺序对L个句子进行排序;删除前N个句子中相似度最低的句子,删除后M个句子中不包括所述关键词的句子,其中,L=M+N,M、N均为大于1的整数。
另外,所述计算多个所述句子中的每个句子与所述查询语句的相似度,具体包括:对多个所述句子中的每个句子进行向量转换,得到多个第一向量,其中,一个句子对应一个第一向量;对所述查询语句进行向量转换,得到第二向量;计算所述多个第一向量中的每个第一向量与所述第二向量的余弦距离,并将所述余弦距离作为所述相似度。
另外,所述余弦相似度通过以下公式计算得到:
其中,similarity为所述余弦相似度;Cemb为所述第一向量,具体为{c
1,c
2,...,c
d};Qemb为所述第二向量,具体为{q
1,q
2,...,q
d}。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式提供的文档检索方法的流程图;
图2是根据本发明第二实施方式提供的文档检索方法的流程图;
图3是根据本发明第三实施方式提供的文档检索方法的流程图;
图4是根据本发明第四实施方式提供的文档检索装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本发明而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本发明所要求保护的技术方案。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明公开的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本发明的第一实施方式涉及一种文档检索方法,具体流程如图1所示,包括:
步骤101:获取候选文档。
具体的说,本实施方式中的候选文档由用户输入的查询语句确定,候选文档可以为多个,本实施方式并不对候选文档的数量作具体限定。为了便于理解,下面对本实施方式中候选文档的获取方式进行详细的说明:
(1)构建检索库,将所有的文档存放于检索库中。
(2)对于新的查询语句,计算查询语句与检索库中每个文档之间的相似度,其中相似度的计算采用BM25算法,具体的计算公式如下:
其中,Score(Q,d)表示查询语句Q与检索库中文档d之间的相似得分,其中n表示查询Q中的词语数,qi表示第i的查询词,fi表示第i个查询词在当前文档的频率,dl表示文档d的文档长度,avgdl表示整个检索库中文档的平均长度,而k1和b是可调参数,需要根据具体的语料设置最优取值。IDF(qi)表示第i个查询词的逆文档频率,其计算公式如下:
其中,N表示查询库中的文档总数,n(q
i)表示包含该查询词的文档数。
(3)对文档的相似得分进行排序,将相似得分最高的前k个文档作为候选文档,可以理解的是,k为大于或等于1的整数,本实施方式并不对k的大小作具体限定。
值得一提的是,上述步骤中得到的k个文档中的每一个文档通常都由若干个句子或者段落组成,文本较长,但是答案通常只是一个句子中的某一个词或短语。如果让预设机器阅读模型直接从篇章级别的文档中查找答案会比较难,且需要的时间较长。但是若能帮助机器直接定位到答案附近的文本,将能大大降低机器阅读的难度和时间。这也是句子选择的必要性,句子选择的目的就是根据查询语句,从候选文档中抽取最有可能成为答案的文本(以句子为单位),并输入到后续的预设机器阅读模型。
步骤102:判断候选文档的文本字数是否小于或等于预设字数,若不是,则执行步骤103;若是,则执行步骤106。
具体的说,考虑到预设机器阅读模型的隐层节点数,本实施方式中的预设字数优选为500字,可以理解的是,本实施方式并不对预设字数的大小作具体限定,可以根据实际需求选择不同大小的预设字数。
步骤103:将候选文档切分为多个句子,计算多个句子中的每个句子与查询语句的相似度。
具体的说,本实施方式中计算多个所述句子中的每个句子与所述查询语句的相似度,具体包括:对多个所述句子中的每个句子进行向量转换,得到多个第一向量,其中,一个句子对应一个第一向量;对所述查询语句进行向量转换,得到第二向量;计算所述多个第一向量中的每个第一向量与所述第二向量的余弦距离,并将所述余弦距离作为所述相似度。
进一步的,本实施方式可以通过bert模型将多个句子和查询语句分别编码为指定长度的向量,再求两个向量之间的余弦距离,计算公式如下:
其中,similarity为所述余弦相似度;Cemb为所述第一向量,具体为{c
1,c
2,...,c
d};Qemb为所述第二向量,具体为{q
1,q
2,...,q
d}。值得一提的是,Cemb和Qemb是两个d维向量,d为768,表示bert模型隐藏层的个数。可以理解的是,第一向量与第二向量的余弦距离越短,表示第一向量对应的句子与查询语句的相似度越高。
步骤104:根据相似度删除多个句子中的部分句子,直至剩余句子的总字数小于或等于预设字数。
具体的说,本实施方式中可以按照所述相似度由低到高的顺序依次删除所述句子,直至剩余句子的总字数小于或等于所述预设字数。
步骤105:将剩余句子和查询语句输入预设机器阅读模型中,得到查询语句的答案。
步骤106:将多个句子和查询语句输入预设机器阅读模型中,得到查询语句的答案。
针对上述步骤105和步骤106,具体的说,本实施方式中的候选文档可以为多个,但是并不是将多个文档拼接成一个长文档,因为每个文档的主题是不一样的,并不能放在一起做阅读,且特长的文档阅读会影响模型的效果。因此本实施方式中将多个文档分别进入阅读理解模型,针对每一个文档做一次阅读理解,并给出对应的候选答案集合。
值得一提的是,本实施方式中的预设机器阅读模型采用的是迁移学习,通过在谷歌提供的BERT基础模型上做微调,训练适合自己任务的机器阅读模型,该模型将问题和文档转化为特征向量输入模型,最后可以得到答案开始和结束位置,根据答案开始和结束位置便可以截取原始文档中的文本片段作为答案。
本发明的实施方式相对于现有技术而言,通过由用户输入的查询语句确定候选文档,能够初步缩小对查询语句答案的查询范围,在确保候选文档中能够存在查询语句的答案的同时,减小预设机器阅读模型的工作量;通过在判断候选文档的文本字数大于预设字数时,将候选文档切分为多个句子,并计算多个句子中的每个句子与查询语句的相似度,从而能够根据相似度得知多个句子中的每个句子能够找到查询语句的答案的概率(句子与查询语句相似度越高,该句子能够找到查阅语句的答案的概率越大);再根据相似度删除多个句子中的部分句子,直至剩余句子的总字数小于或等于所述预设字数,在确保剩余句子中能够找到查询语句的答案的同时,将剩余句子的总字数控制在预设机器阅读模型能够阅读的字数范围内,使得预设机器阅读模型能够直接根据剩余句子和查询语句得到查询语句的答案,从而在降低机器阅读模型阅读难度的同时,提高文档检索的准确性。
本发明的第二实施方式涉及一种文档检索方法,第二实施方式是在第一实施方式的基础上做了进一步的改进,具体改进之处在于:在第二实施方式中,判断所述候选文档的文本字数是否小于或等于预设字数之前还会对候选文档进行指代消解,从而将候选文档中的指代词全部替换为先行词,进一步降低预设机器阅读模型的阅读理解难度,从而进一步提高文档检索的准确性。
本实施方式的具体流程如图2所示,包括:
步骤201:获取候选文档。
步骤202:对候选文档进行指代消解。
具体的说,对所述候选文档进行指代消解之前,还包括:获取所述候选文档中的多个指代词;所述对所述候选文档进行指代消解,具体包括:对所述候选文档进行实体识别,将识别出来的多个实体词作为候选先行词;将一个所述指代词与多个所述候选先行词中的每一个进行替换,计算每个所述候选先行词的匹配概率,将所述匹配概率最高的所述候选先行词作为所述指代词对应的先行词;重复上述步骤,直至候选文档中的指代词均被替换为先行词。
为了便于理解,下面对本实施方式中对候选文档进行指代消解的过程进行更为详细的说明:
(1)采用bert+lstm的方法在自有数据上训练一个通用实体识别模型,该模型可以识别出句子中的人名、地名、机构名等实体词汇。对于新来的候选文档可直接标记出候选文档中的实体,并将这些实体作为指代词的候选先行语。
(2)从语言模型的角度来选择合适的先行语:计算将指代词替换为候选先行语集合中的每个实体之后这个句子的概率,并对概率值排序,取出概率最大的先行语作为该指代词的先行语,此处使用的语言模型为GPT。
(3)指代替换,用先行词替换原候选文档中的指代词,形成新的候选文档。
步骤203:判断进行指代消解后的候选文档的文本字数是否小于或等于预设字数,若不是,则执行步骤204;若是,则执行步骤207。
步骤204:将候选文档切分为多个句子,计算多个句子中的每个句子与查询语句的相似度。
步骤205:根据相似度删除多个句子中的部分句子,直至剩余句子的总字数小于或等于预设字数。
步骤206:将剩余句子和查询语句输入预设机器阅读模型中,得到查询语句的答案。
步骤207:将多个句子和查询语句输入预设机器阅读模型中,得到查询语句的答案。
本实施方式中的步骤201、步骤203至步骤207与第一实施方式中的步骤101至步骤106大致相同,为了避免重复,此处不再赘述。
本发明的实施方式相对于现有技术而言,通过由用户输入的查询语句确定候选文档,能够初步缩小对查询语句答案的查询范围,在确保候选文档中能够存在查询语句的答案的同时,减小预设机器阅读模型的工作量;通过在判断候选文档的文本字数大于预设字数时,将候选文档切分为多个句子,并计算多个句子中的每个句子与查询语句的相似度,从而能够根据相似度得知多个句子中的每个句子能够找到查询语句的答案的概率(句子与查询语句相似度越高,该句子能够找到查阅语句的答案的概率越大);再根据相似度删除多个句子中的部分句子,直至剩余句子的总字数小于或等于所述预设字数,在确保剩余句子中能够找到查询语句的答案的同时,将剩余句子的总字数控制在预设机器阅读模型能够阅读的字数范围内,使得预设机器阅读模型能够直接根据剩余句子和查询语句得到查询语句的答案,从而在降低机器阅读模型阅读难度的同时,提高文档检索的准确性。
本发明的第三实施方式涉及一种文档检索方法,第三实施方式与第一实施方式大致相同,主要区别之处在于:在第一实施方式中,直接根据相似度由低到高的顺序依次删除句子,而在本实施方式中,删除句子时还会考虑句子是否包含与查询语句相关的关键词,从而进一步确保预设机器阅读模型能够找到查询语句的正确答案,从而进一步提高文档检索的准确性。
本实施方式的具体流程如图3所示,包括:
步骤301:获取候选文档。
步骤302:判断候选文档的文本字数是否小于或等于预设字数,若不是,执行步骤303;若是,执行步骤308。
步骤303:将候选文档切分为多个句子,计算多个句子中的每个句子与查询语句的相似度。
步骤304:对查询语句进行问句分析,得到查询语句所属的类别。
具体的说,所述类别包括询问地址、询问时间和询问人名中的至少一者。需要说明的是,本实施方式的阅读理解处理的领域为事实性问题,所以问题类型通常可以分为询问地址、询问人名、询问时间等句式,本实施方式可以设计一个分类模型用于问句分类,采用的算法为textcnn。当一个新的查询语句输入时先对其做一个分类,根据分类结果做对应的规则来选择文本。
步骤305:根据查询语句所属的类别得到与类别对应的关键词。
具体的说,为了便于理解,下面以查询语句所属的类别的询问地址为例,对本步骤进行详细的说明:
询问地址类型的问句,其答案附近通常伴有明显的关键字,如‘位于’、‘处在’、‘地处’等。如果查询语句属于询问地址的句式,就保留包含上述关键字的句子。
步骤306:根据相似度和关键词删除多个句子中的部分句子,直至剩余句子的总字数小于或等于所述预设字数。
具体的说,假设共有L个句子,根据所述相似度由高到低的顺序对L个句子进行排序;删除前N个句子中相似度最低的句子,删除后M个句子中不包括所述关键词的句子,其中,L=M+N,M、N均为大于1的整数。可以理解的是,本实施方式并不对M、N的大小做具体限定,可以根据实际情况设置不同大小的M、N。
为了便于理解,下面对本实施方式中如何删除句子进行具体的举例说明:
假设候选文档被拆分成8个句子(句子A至句子H),将句子A至句子J按照相似度由高到低的顺序排序,排序后为:句子B、句子A、句子E、句子F、句子H、句子C、句子G、句子D,可以看出句子B与查询语句的相似度最高,句子D与查询语句的相似度最低;删除相似度高的前五个句子中相似度最低的句子,即删除句子H;删除后3个句子中不包括所述关键词的句子(假设句子C和句子D不包含关键词),即删除句子C和句子D。可以理解的是,本实施方式中也可以删除前M个句子中相似度最低和次低的句子,以及后M个句子中不包含关键词的句子;也可以删除前M个句子中不包括关键词的句子,和后M个句子中相似度最低的句子。可以根据实际需求设置不同的删除规则,只需确保删除后的剩余句子的总字数小于或等于预设字数即可。
步骤307:将剩余句子和查询语句输入预设机器阅读模型中,得到查询语句的答案。
步骤308:将多个句子和查询语句输入预设机器阅读模型中,得到查询语句的答案。
本实施方式中的步骤301至步骤303、步骤307至步骤308与第一实施方式中的步骤101至步骤103、步骤105至步骤106大致相同,为了避免重复,此处不再赘述。
本发明的实施方式相对于现有技术而言,通过由用户输入的查询语句确定候选文档,能够初步缩小对查询语句答案的查询范围,在确保候选文档中能够存在查询语句的答案的同时,减小预设机器阅读模型的工作量;通过在判断候选文档的文本字数大于预设字数时,将候选文档切分为多个句子,并计算多个句子中的每个句子与查询语句的相似度,从而能够根据相似度得知多个句子中的每个句子能够找到查询语句的答案的概率(句子与查询语句相似度越高,该句子能够找到查阅语句的答案的概率越大);再根据相似度删除多个句子中的部分句子,直至剩余句子的总字数小于或等于所述预设字数,在确保剩余句子中能够找到查询语句的答案的同时,将剩余句子的总字数控制在预设机器阅读模型能够阅读的字数范围内,使得预设机器阅读模型能够直接根据剩余句子和查询语句得到查询语句的答案,从而在降低机器阅读模型阅读难度的同时,提高文档检索的准确性。
本发明第四实施方式涉及一种文档检索装置,如图4所示,包括:
至少一个处理器401;以及,
与至少一个处理器401通信连接的存储器402;其中,
存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行上述文档检索方法。
其中,存储器402和处理器401采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器401和存储器402的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器401处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器401。
处理器401负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器402可以被用于存储处理器401在执行操作时所使用的数据。
本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。