一种语句相似度计算方法及装置
技术领域
本发明实施例涉及计算机技术领域,具体涉及一种语句相似度计算方法及装置。
背景技术
随着计算机自动化和智能化的发展,用户对计算机的自动搜索技术提出了较高的要求,尤其在智能机器人领域,对智能机器人的自动搜索结果的要求更高。而用户输入的语句和搜索结果语句的相似度计算是搜索技术的核心问题。基于上述相似度计算的排名决定了搜索引擎的优劣和用户体验的质量。
现有技术中的语句相似度计算方法主要是采用基于向量空间模型(VSM,Vectorspace model)方法和基于语义向量的相似度计算,其中,基于VSM方法的相似度计算需要大量人工经验配置计算公式,而基于语义向量的相似度计算的算法准确率难以掌握,算法迭代时间较长。
在实现本发明实施例的过程中,发明人发现现有的语句相似度计算方法需要大量人工经验配置计算公式,且准确率难以掌握,算法迭代时间较长。
发明内容
由于现有的语句相似度计算方法需要大量人工经验配置计算公式,且准确率难以掌握,算法迭代时间较长的问题,本发明提出一种语句相似度计算方法及装置。
第一方面,本发明实施例提出一种语句相似度计算方法,包括:
根据第一预设规则对第一语句和第二语句进行分词处理,得到所述第一语句的第一分词向量和所述第二语句的第二分词向量;
根据第二预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,并根据所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,分别计算得到所述第一分词向量的第一模和所述第二分词向量的第二模;
获取所述第一分词向量和所述第二分词向量中相同的目标分词,并根据所述目标分词的权重,计算所述第一分词向量和所述第二分词向量的目标分词内积;
根据所述第一模、所述第二模和所述目标分词内积,计算得到所述第一语句和所述第二语句的相似度。
优选地,所述根据第一预设规则对第一语句和第二语句进行分词处理,得到所述第一语句的第一分词向量和所述第二语句的第二分词向量之前,还包括:
获取所述第一语句和所述第二语句,其中,所述第二语句为所述第一语句的召回语句,所述召回语句为根据所述第一语句经搜索引擎搜索得到的语句。
优选地,所述根据第二预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,并根据所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,分别计算得到所述第一分词向量的第一模和所述第二分词向量的第二模,进一步包括:
根据第二预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重;
对所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重分别进行归一化处理;
根据所述第一分词向量中各个分词的归一化后的权重和所述第二分词向量中各个分词的归一化后的权重,分别计算得到所述第一分词向量的第一模和所述第二分词向量的第二模。
优选地,所述根据第二预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,进一步包括:
将所述第一分词向量中各个分词的权重设置为相等;
根据第一预设值、第二预设值、第三预设值、当前分词在所述第一分词向量中出现的次数和当前分词在所述第二分词向量中出现的次数,计算当前分词在所述第二分词向量中的权重。
优选地,所述计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,进一步包括:
根据所述第二分词向量中各个分词的权重,判断获知所述第二分词向量中各个分词的权重之和大于第四预设值。
优选地,所述根据所述第一模、所述第二模和所述目标分词内积,计算得到所述第一语句和所述第二语句的相似度之后,还包括:
若所述第一语句包括若干个召回语句,则选择最大的相似度对应的目标语句,并将所述目标语句和所述最大的相似度发送至显示器进行输出。
第二方面,本发明实施例还提出一种语句相似度计算装置,包括:
分词处理模块,用于根据第一预设规则对第一语句和第二语句进行分词处理,得到所述第一语句的第一分词向量和所述第二语句的第二分词向量;
模计算模块,用于根据第二预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,并根据所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,分别计算得到所述第一分词向量的第一模和所述第二分词向量的第二模;
内积计算模块,用于获取所述第一分词向量和所述第二分词向量中相同的目标分词,并根据所述目标分词的权重,计算所述第一分词向量和所述第二分词向量的目标分词内积;
相似度计算模块,用于根据所述第一模、所述第二模和所述目标分词内积,计算得到所述第一语句和所述第二语句的相似度。
优选地,所述装置还包括:
语句获取模块,用于获取所述第一语句和所述第二语句,其中,所述第二语句为所述第一语句的召回语句,所述召回语句为根据所述第一语句经搜索引擎搜索得到的语句。
优选地,所述模计算模块,进一步用于:
对所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重分别进行归一化处理;并根据所述第一分词向量中各个分词的归一化后的权重和所述第二分词向量中各个分词的归一化后的权重,分别计算得到所述第一分词向量的第一模和所述第二分词向量的第二模。
优选地,所述模计算模块中根据预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,进一步包括:
第一权重确定单元,用于将所述第一分词向量中各个分词的权重设置为相等;
第二权重确定单元,用于根据第一预设值、第二预设值、第三预设值、当前分词在所述第一分词向量中出现的次数和当前分词在所述第二分词向量中出现的次数,计算当前分词在所述第二分词向量中的权重。
优选地,所述模计算模块进一步用于根据所述第二分词向量中各个分词的权重,判断获知所述第二分词向量中各个分词的权重之和大于第四预设值。
优选地,所述装置还包括:
目标语句输出模块,用于若所述第一语句包括若干个召回语句,则选择最大的相似度对应的目标语句,并将所述目标语句和所述最大的相似度发送至显示器进行输出。
由上述技术方案可知,本发明实施例通过对语句进行分词处理,并为每个分词计算权重,根据权重计算得到两个语句的相似度,避免了大量人工经验配置计算公式,且准确率较高,计算速度较快。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
图1为本发明一实施例提供的一种语句相似度计算方法的流程示意图;
图2为本发明一实施例提供的一种语句相似度计算装置的结构示意图。
具体实施方式
下面结合附图,对发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
图1示出了本发明一实施例提供的一种语句相似度计算方法的方法流程图,包括:
S101、根据第一预设规则对第一语句和第二语句进行分词处理,得到所述第一语句的第一分词向量和所述第二语句的第二分词向量;
其中,所述第一预设规则为对语句进行分词的规则,例如:根据数据库中存在的词进行分词。
所述分词处理为将语句划分为多个词。
通过对第一语句和第二语句进行分词处理,能够减小计算量,提高计算速度。
S102、根据第二预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,并根据所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,分别计算得到所述第一分词向量的第一模和所述第二分词向量的第二模;
其中,所述第二预设规则为对计算分词权重的规则。
举例来说,词权重方法可以计算如下:
A1、遍历计算每个词,假设当前计算第i个词的权重,则初始化权重Wi=0;
A2、若词同时出现在第一语句和第二语句中的次数为M,则Wi+=m*M;
A3、若词只在第一语句中出现并且出现次数为N,则Wi+=n*N;
A4、若词只出现在第二语句中,则Wi=g*G;
其中,m、n、g为系数,可根据数据特点自行调整,本实施例根据经验值设定为m=2、n=1、g=0.5;
A5、将所有词权重相加求和,若有x个词,则S=W0+W1+W2+...+Wx,并归一化到[0,1]区间,对每个词i除去总和并更新Wi=Wi/S。
或者,也可以将每个词权重平均计算。即若第一语句分词个数为N,则每个词权重相同,W=1/N。
通过为每个分词设置权重,能够解决相似度计算人工设计时间长的问题。
S103、获取所述第一分词向量和所述第二分词向量中相同的目标分词,并根据所述目标分词的权重,计算所述第一分词向量和所述第二分词向量的目标分词内积;
S104、根据所述第一模、所述第二模和所述目标分词内积,计算得到所述第一语句和所述第二语句的相似度。
其中,计算第一语句和第二语句的相似度,可用余弦和欧式距离等方法。
举例来说,第一语句中,天空:0.25,为什么:0.25,是:0.25,蓝色:0.25,选择的第二语句中,无云:0.04,的:0.02,天空:0.4,为什么:0.1,呈现:0.04,蓝色:0.4。
余弦计算,分子为重合维度的内积,例子中重合的词为“天空”、“为什么”和“蓝色”,则:
内积为0.25*0.4+0.25*0.1+0.25*0.4=0.225;
第一模为:sqrt(4*0.25^2)=0.5;
第二模为:sqrt(0.04^2+0.02^2+0.4^2+0.1^2+0.04^2+0.4^2)=0.58;
余弦相似度为:内积/(第一模*第二模)=0.225/(0.5*0.58)=0.78。
通过采用用分词后的分词权重计算两个语句的相似度,解决了语句相似度匹配度低的问题。
本实施例通过对语句进行分词处理,并为每个分词计算权重,根据权重计算得到两个语句的相似度,避免了大量人工经验配置计算公式,且准确率较高,计算速度较快。
进一步地,在上述方法实施例的基础上,S101之前,还包括:
S100、获取所述第一语句和所述第二语句,其中,所述第二语句为所述第一语句的召回语句,所述召回语句为根据所述第一语句经搜索引擎搜索得到的语句。
其中,在获取所述第一语句的召回语句之前,对第一语句,即待匹配语句集合建倒排索引,即提取词在哪个问题中,并且位置偏移是多少。然后通过自动程序,对待匹配语句在搜索引擎中搜索,并将每个问题匹配的网页标题存储下来。
具体地,可用多个搜索引擎结果相互校验,新标题重合越多,准确率越高;索引扩展可用标题本身,或用新标题的分词后词语。
举例来说,若待匹配语句为“天空怎么是蓝色的”,即所述第一语句为“天空怎么是蓝色的”;通过搜索引擎,会召回新标题如“天空为什么是蓝的”、“天空为什么这么蓝”、“无云的天空为什么呈现蓝色”等,这些召回的新标题即为第二语句。待匹配语句中只有“天空”、“怎么”、“是”、“蓝色”、“的”等词,根据新召回的标题,可以扩展新词“为什么”“蓝的”、“无云”、“呈现”等。
通过获取待匹配语句及其召回语句,能够通过计算待匹配语句及其召回语句的相似度,进一步获取与待匹配语句最为相似的召回语句。
进一步地,在上述方法实施例的基础上,S102进一步包括:
S1021、根据第二预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重;
S1022、对所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重分别进行归一化处理;
S1023、根据所述第一分词向量中各个分词的归一化后的权重和所述第二分词向量中各个分词的归一化后的权重,分别计算得到所述第一分词向量的第一模和所述第二分词向量的第二模。
通过对权重进行归一化处理,能够使得不同语句之间的权重具有可比性,进一步使得相似度计算更加准确。
进一步地,在上述方法实施例的基础上,S1021进一步包括:
S10211、将所述第一分词向量中各个分词的权重设置为相等;
S10212、根据第一预设值、第二预设值、第三预设值、当前分词在所述第一分词向量中出现的次数和当前分词在所述第二分词向量中出现的次数,计算当前分词在所述第二分词向量中的权重。
进一步地,在上述方法实施例的基础上,S1021进一步包括:
根据所述第二分词向量中各个分词的权重,判断获知所述第二分词向量中各个分词的权重之和大于第四预设值。
从建的倒排索引中召回句子候选。对新句子中的每个词召回的集合取并集,可对匹配到词的权重加和设定阈值,若小于阈值则丢弃召回句子。能够使得计算结果的准确率更高。
更进一步地,在上述方法实施例的基础上,S104之后,还包括:
S105、若所述第一语句包括若干个召回语句,则选择最大的相似度对应的目标语句,并将所述目标语句和所述最大的相似度发送至显示器进行输出。
选择召回句子中相似度数值最大的并输出,能够提升待匹配语句相似度计算的准确率和召回率。
图2示出了本发明一实施例提供的一种语句相似度计算装置的结构示意图,所述装置包括:分词处理模块21、模计算模块22、内积计算模块23和相似度计算模块24;其中,
所述分词处理模块21用于根据第一预设规则对第一语句和第二语句进行分词处理,得到所述第一语句的第一分词向量和所述第二语句的第二分词向量;
所述模计算模块22用于根据第二预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,并根据所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,分别计算得到所述第一分词向量的第一模和所述第二分词向量的第二模;
所述内积计算模块23用于获取所述第一分词向量和所述第二分词向量中相同的目标分词,并根据所述目标分词的权重,计算所述第一分词向量和所述第二分词向量的目标分词内积;
所述相似度计算模块24用于根据所述第一模、所述第二模和所述目标分词内积,计算得到所述第一语句和所述第二语句的相似度。
具体地,所述分词处理模块21根据第一预设规则对第一语句和第二语句进行分词处理,得到所述第一语句的第一分词向量和所述第二语句的第二分词向量;所述模计算模块22根据第二预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,并根据所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,分别计算得到所述第一分词向量的第一模和所述第二分词向量的第二模;所述内积计算模块23获取所述第一分词向量和所述第二分词向量中相同的目标分词,并根据所述目标分词的权重,计算所述第一分词向量和所述第二分词向量的目标分词内积;所述相似度计算模块24根据所述第一模、所述第二模和所述目标分词内积,计算得到所述第一语句和所述第二语句的相似度。
本实施例通过对语句进行分词处理,并为每个分词计算权重,根据权重计算得到两个语句的相似度,避免了大量人工经验配置计算公式,且准确率较高,计算速度较快。
进一步地,在上述装置实施例的基础上,所述装置还包括:
语句获取模块20,用于获取所述第一语句和所述第二语句,其中,所述第二语句为所述第一语句的召回语句,所述召回语句为根据所述第一语句经搜索引擎搜索得到的语句。
进一步地,在上述装置实施例的基础上,所述模计算模块22进一步用于:
对所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重分别进行归一化处理;并根据所述第一分词向量中各个分词的归一化后的权重和所述第二分词向量中各个分词的归一化后的权重,分别计算得到所述第一分词向量的第一模和所述第二分词向量的第二模。
进一步地,在上述装置实施例的基础上,所述模计算模块22中根据预设规则,计算得到所述第一分词向量中各个分词的权重和所述第二分词向量中各个分词的权重,进一步包括:
第一权重确定单元221,用于将所述第一分词向量中各个分词的权重设置为相等;
第二权重确定单元222,用于根据第一预设值、第二预设值、第三预设值、当前分词在所述第一分词向量中出现的次数和当前分词在所述第二分词向量中出现的次数,计算当前分词在所述第二分词向量中的权重。
进一步地,在上述装置实施例的基础上,所述模计算模块22进一步用于根据所述第二分词向量中各个分词的权重,判断获知所述第二分词向量中各个分词的权重之和大于第四预设值。
更进一步地,在上述装置实施例的基础上,所述装置还包括:
目标语句输出模块25,用于若所述第一语句包括若干个召回语句,则选择最大的相似度对应的目标语句,并将所述目标语句和所述最大的相似度发送至显示器进行输出。
本实施例所述的语句相似度计算装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。
本发明的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。