一种短句相似度的计算方法及系统
文献发布时间:2023-06-19 11:26:00
技术领域
本发明涉及计算机技术领域,具体涉及一种短句相似度的计算方法及系统。
背景技术
汉语属于弱语法语言,其语言表达的丰富性往往为语义匹配带来挑战,比如词序的颠倒、近同义词等问题;为了让匹配算法适应这种丰富性,借助上下文是一个可行的思路,比如在判断词的语义一致性时,认为同样上下文的情况下,不同的词所表达的语义是一致的,这个判别标准同样可以扩展到句子级别,即上下文一致的情况下,不同句子表达的语义是一致,因此,在处理中长句子时,句子的长度让语义得以表达的更加浅显,语义匹配的难度更小。相对的,在短句的语义匹配中,语义的表达受到了限制,句子层面的语义表达性减弱,而单个词或者字对语义表达的贡献度也变大,可能一个虚词都会导致语义的偏差,因此,我们所要解决的关键问题就是如何对短句进行语义匹配。
目前,常用的方法有:常用的基于字面距离的语义匹配,虽然能够简单直观的进行计算,但同义、近义、多义词、等效语义短语无法体现;基于机器学习的语义匹配,表示相关的任务,不同任务会出现不同的表示,然后以标注数据为模型设定一个目标,通过目标判断两个句子是相似或不相似,模型在学习的过程中不断拟合特征和目标之间的关系,寻找到潜在的语义规律,需要大量的标注数据对模型进行训练,标注质量也会影响模型的训练;基于句向量的语义匹配,不依赖于训练数据,通过bert预训练的模型得到词向量和句向量,通过距离或向量夹角可以直接评价句子之间的语义相似度,但是基于word2vec的句向量提取方法存在大量未登陆词问题(没有对应的词向量),会影响到整体的向量空间,简单的平均或是池化操作无法过滤到一些无用词(虚词)的影响,基于预训练模型的句向量提取方法在中长句上更有优势,在短句上容易受到无用词的影响,存在短句间相似度计算准确率低的问题。
发明内容
因此,本发明提供的一种短句相似度的计算方法及系统,克服了现有技术中短句间的相似度计算准确率低的缺陷。
为达到上述目的,本发明提供如下技术方案:
第一方面,本发明实施例提供一种短句相似度的计算方法,包括:
获取待计算相似度的第一短句、第二短句,并分别对第一短句、第二短句进行分词处理;
根据第一短句、第二短句中的每个分词所包含的每个字的字向量,及通过预设近同义词库获得该分词的所有近同义词所包含的每个字的字向量,分别计算第一短句、第二短句中每个分词的TFIDF值及词向量;
分别对第一短句、第二短句的各个词向量及其TFIDF值对应的动态权重进行加权求和,得到第一短句、第二短句对应的句向量;
基于第一短句、第二短句的句向量,利用余弦相似度计算第一短句、第二短句的相似度。
在一实施例中,TFIDF值根据每个分词对语义的贡献比例进行计算;通过第一短句、第二短句中的每个分词所包含的每个字的字向量计算短句中每个分词的词向量;通过预设近同义词库获得该分词的所有近同义词所包含的每个字的字向量计算每个分词的词向量。
在一实施例中,通过以下公式计算TFIDF值对应的动态权重:
TFIDF
其中,TF
在一实施例中,计算第一短句或第二短句的词向量的步骤,包括:
根据第一短句或第二短句中的每个分词所包含的每个字的字向量,通过预设近同义词库,构造第i个分词w
在一实施例中,通过以下公式计算句向量:
其中,TFIDF
在一实施例中,通过以下公式计算第一短句、第二短句的相似度:
其中,v
第二方面,本发明实施例提供一种短句相似度的计算系统,包括:
预处理模块,用于获取待计算相似度的第一短句、第二短句,并分别对第一短句、第二短句进行分词处理;
基于字向量的TFIDF值及词向量计算模块,用于根据第一短句、第二短句中的每个分词所包含的每个字的字向量,及通过预设近同义词库获得该分词的所有近同义词所包含的每个字的字向量,分别计算第一短句、第二短句中每个分词的TFIDF值及词向量;
句向量计算模块,用于分别对第一短句、第二短句的各个词向量及其TFIDF值对应的动态权重进行加权求和,得到第一短句、第二短句对应的句向量;
相似度计算模块,用于基于第一短句、第二短句的句向量,利用余弦相似度计算第一短句、第二短句的相似度。
第三方面,本发明实施例提供一种终端,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明实施例第一方面所述的短句相似度的计算方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行本发明实施例第一方面所述的短句相似度的计算方法。
本发明技术方案,具有如下优点:
1、本发明提供的短句相似度的计算方法及系统,基于字向量构造词向量,同时为了弥补缺乏同义信息的缺陷,引入预设近同义词库,将近同义词的信息融入词向量中,因此两个近同义词的词向量是非常接近的。
2、本发明提供的短句相似度的计算方法及系统,在基于句向量的语义匹配中,当前的方案不足以适应短句,基于预训练的句向量生成工具无法有效的提取出短句中的语义信息,由于短句的语义信息较弱,而某一个关键词可以囊括整个句子的语义,因此本发明提供的方法基于关键词权重的方式,让关键词在句向量中的占比更高,可以更好的表示整个短句的语义。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种短句相似度的计算方法的一个具体示例的流程图;
图2为本发明实施例提供的句向量的一个具体示例的流程图;
图3为本发明实施例提供的一种短句相似度的计算系统的模块组成图;
图4为本发明实施例提供的一种短句相似度的计算终端一个具体示例的组成图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
实施例1
本发明实施例提供的一种短句相似度的计算方法,如图1所示,包括如下步骤:
步骤S1:获取待计算相似度的第一短句、第二短句,并分别对第一短句、第二短句进行分词处理。
在本发明实施例中的短句为汉语短句子,如智能问答系统中的提问句等,仅以此举例,不以此为限,在实际应用中根据实际需求进行相应短语的选择;借助现有的分词工具分别对第一短句、第二短句进行分词处理,例如是Jieba、SnowNLP、PkuSeg、THULAC、HanLP,仅以此举例,不以此为限,在实际应用中根据实际需求选择相应的分词工具。
步骤S2:根据第一短句、第二短句中的每个分词所包含的每个字的字向量,及通过预设近同义词库获得该分词的所有近同义词所包含的每个字的字向量,分别计算第一短句、第二短句中每个分词的TFIDF值及词向量。
在本发明实施例中,TFIDF值根据每个分词对语义的贡献比例进行计算;通过第一短句、第二短句中的每个分词所包含的每个字的字向量计算短句中每个分词的词向量;通过预设近同义词库获得该分词的所有近同义词所包含的每个字的字向量计算每个分词的词向量;本发明实施例通过字向量,及近同义词库计算每个分词的词向量,词向量由组成该词的每个字的字向量,及该词所有近同义词所包含的每个字的字向量,按照预设比例的权重相加得到。
在本发明实施例中,在实际应用中根据领域的不同及领域适应性选择相应的预设近同义词库,更好的对特定的领域词进行统计。
在一具体实施例中,近同义词的抽取采用已经构造好的近义词表,借用哈工大构造的词林工具,在词林中,最后一个符号表示这个集合中各个词的关系,“=”代表“相等”、“同义”;“#”代表“不等”、“同类”,属于相关词语;“@”代表“自我封闭”、“独立”,在词典中既没有同义词,也没有相关词,在算法中,只选择“=”的集合,在哈工大词林的基础上,可以加入领域定制的近义词配置,例如:
Aa01C04=们辈曹等
Aa01C05@众学生
Aa01C06#妇孺父老兄弟男女老少男女老幼
在本发明实施例中,采用基于字向量以及动态权重的句向量语义匹配方法,TFIDF值可以显示出每个分词的词频以及逆文档频率,词频可以体现出一个词的重要程度,而逆文档频率可以体现一个词的区分能力,因此,将TDIDF值作为权重反映出每个分词在句子中的语义关键程度,因为在句子长度有限的情况下,通过关键词可以囊括句子中大部分的语义信息,同时,一些虚词、语气词也会随着权重的降低而过滤。
在本发明实施例中,通过以下公式计算TFIDF值对应的动态权重:
TFIDF
其中,TF
在本发明实施例中,如果用训练好的词向量模型计算向量,通常会出现未登录词的问题,未登录词即没有对应的词向量,而在汉语中词的数量过于广泛,很难构造一个全面的词表,尤其是一些领域关键词,为了避免词向量未登录词的问题,采用的是字向量,因为在汉语中,字是相对有限的,但是采用字向量会缺失词向量的一部分属性,比如词与词之间的近义关系,为了弥补这个缺陷,构造一个近同义词库,然后将该词的词向量与近义词的词向量进行平均,将近义词信息融合进词向量中,通过字向量避免了未登录词的问题,同时使用近义词弥补了字向量的缺陷。
在本发明实施例中,如图2所示,计算第一短句或第二短句的词向量的步骤,包括:根据第一短句或第二短句中的每个分词所包含的每个字的字向量,通过预设近同义词库,构造第i个分词w
步骤S3:分别对第一短句、第二短句的各个词向量及其TFIDF值对应的动态权重进行加权求和,得到第一短句、第二短句对应的句向量。
在本发明实施例中,如图2所示,表示句向量的生成流程,通过以下公式计算句向量:
其中,TFIDF
步骤S4:基于第一短句、第二短句的句向量,利用余弦相似度计算第一短句、第二短句的相似度。
在本发明实施例中,衡量相似度的方法是采用余弦相似度,余弦相似度是通过计算两个向量夹角的余弦值来评估两个向量的相似程度,通过以下公式计算第一短句、第二短句的相似度:
其中,v
本发明实施例中提供的短句相似度的计算方法,其中,对待计算相似度的第一短句、第二短句进行分词处理,根据第一短句、第二短句中的每个分词所包含的每个字的字向量,通过预设近同义词库,分别计算第一短句、第二短句中每个分词的TFIDF值及词向量;基于各个词向量及其TFIDF值对应的动态权重进行加权求和,得到第一短句、第二短句对应的句向量,利用余弦相似度计算第一短句、第二短句的相似度。基于词向量和TFIDF值动态权重的句向量,更好的适应短句表示,对关键词的突出能力更强,采用字向量避免了未登录词的问题,同时使用近义词弥补了字向量的缺陷,提高了相似度的准确率。
实施例2
本发明实施例提供一种短句相似度的计算系统,如图3所示,包括:
预处理模块1,用于获取待计算相似度的第一短句、第二短句,并分别对第一短句、第二短句进行分词处理;此模块执行实施例1中的步骤S1所描述的方法,在此不再赘述。
基于字向量的TFIDF值及词向量计算模块2,用于根据第一短句、第二短句中的每个分词所包含的每个字的字向量,通过及通过预设近同义词库获得该分词的所有近同义词所包含的每个字的字向量,分别计算第一短句、第二短句中每个分词的TFIDF值及词向量;此模块执行实施例1中的步骤S2所描述的方法,在此不再赘述。
句向量计算模块3,用于分别对第一短句、第二短句的各个词向量及其TFIDF值对应的动态权重进行加权求和,得到第一短句、第二短句对应的句向量;此模块执行实施例1中的步骤S3所描述的方法,在此不再赘述。
相似度计算模块4,用于基于第一短句、第二短句的句向量,利用余弦相似度计算第一短句、第二短句的相似度;此模块执行实施例1中的步骤S4所描述的方法,在此不再赘述。
本发明实施例提供一种短句相似度的计算系统,提出了基于词向量和TFIDF值动态权重的句向量,更好的适应短句表示,对关键词的突出能力更强,采用字向量避免了词向量存在的未登录词问题,同时使用近义词弥补了字向量的缺陷,提高了相似度的准确率。
实施例3
本发明实施例提供一种终端,如图4所示,包括:至少一个处理器401,例如CPU(Central Processing Unit,中央处理器),至少一个通信接口403,存储器404,至少一个通信总线402。其中,通信总线402用于实现这些组件之间的连接通信。其中,通信接口403可以包括显示屏(Display)、键盘(Keyboard),可选通信接口403还可以包括标准的有线接口、无线接口。存储器404可以是高速RAM存储器(Random Access Memory,易挥发性随机存取存储器),也可以是非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器404可选的还可以是至少一个位于远离前述处理器401的存储装置。其中处理器401可以执行实施例1中的短句相似度的计算方法。存储器404中存储一组程序代码,且处理器401调用存储器404中存储的程序代码,以用于执行实施例1中的短句相似度的计算方法。其中,通信总线402可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。通信总线402可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。其中,存储器404可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:HDD)或固降硬盘(英文:solid-statedrive,缩写:SSD);存储器404还可以包括上述种类的存储器的组合。其中,处理器401可以是中央处理器(英文:central processing unit,缩写:CPU),网络处理器(英文:networkprocessor,缩写:NP)或者CPU和NP的组合。
其中,存储器404可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard diskdrive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);存储器404还可以包括上述种类的存储器的组合。
其中,处理器401可以是中央处理器(英文:central processing unit,缩写:CPU),网络处理器(英文:network processor,缩写:NP)或者CPU和NP的组合。
其中,处理器401还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,缩写:ASIC),可编程逻辑器件(英文:programmable logic device,缩写:PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,缩写:FPGA),通用阵列逻辑(英文:generic arraylogic,缩写:GAL)或其任意组合。
可选地,存储器404还用于存储程序指令。处理器401可以调用程序指令,实现如本申请执行实施例1中的短句相似度的计算方法。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机可执行指令,该计算机可执行指令可执行实施例1中的短句相似度的计算方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
- 一种短句相似度的计算方法及系统
- 一种数学公式相似度计算方法及系统