一种语句相似度计算方法及装置与流程

文档序号:13421877阅读:215来源:国知局
一种语句相似度计算方法及装置与流程

本发明实施例涉及计算机技术领域,具体涉及一种语句相似度计算方法及装置。



背景技术:

随着计算机自动化和智能化的发展,用户对计算机的自动搜索技术提出了较高的要求,尤其在智能机器人领域,对智能机器人的自动搜索结果的要求更高。而用户输入的语句和搜索结果语句的相似度计算是搜索技术的核心问题。基于上述相似度计算的排名决定了搜索引擎的优劣和用户体验的质量。

现有技术中的语句相似度计算方法主要是采用基于向量空间模型(vsm,vectorspacemodel)方法和基于整句语义表示的相似度计算,其中,基于vsm方法的相似度计算需要大量人工经验配置计算公式,而基于整句语义表示的相似度计算的算法需要大量标注语料和人工经验。

在实现本发明实施例的过程中,发明人发现现有的语句相似度计算方法需要大量标注语料和人工经验,且准确率难以掌握。



技术实现要素:

由于现有的语句相似度计算方法需要大量标注语料和人工经验,且准确率难以掌握的问题,本发明提出一种语句相似度计算方法及装置。

第一方面,本发明实施例提出一种语句相似度计算方法,包括:

获取第一语句和第二语句;

对所述第一语句和所述第二语句进行分词处理,得到所述第一语句和所述第二语句分词后的若干个词语;

根据所述第一语句中每个词语分别和所述第二语句中的每个词语的相似度,得到第一矩阵;

根据所述第一矩阵和预设规则,计算得到所述第一语句和所述第二语句的相似度。

优选地,所述根据所述第一语句中每个词语分别和所述第二语句中的每个词语的相似度,得到第一矩阵,进一步包括:

根据所述第一语句和所述第二语句中的词语顺序,分别计算所述第一语句中每个词语和所述第二语句中的每个词语的相似度,并根据所述相似度,建立所述第一矩阵。

优选地,所述根据所述第一矩阵和预设规则,计算得到所述第一语句和所述第二语句的相似度,进一步包括:

建立第二矩阵,根据所述第一矩阵中行和列对应的词语之间的距离,计算得到所述第二矩阵中第一行和第一列中各单元的值;

根据所述第二矩阵中第一行和第一列中各单元的值,计算得到所述第二矩阵中第m行第n列的值a[m][n],所述值a[m][n]为所述第一语句和所述第二语句的相似度;

其中,所述第二矩阵为m×n的矩阵,所述第一矩阵为(m-1)×(n-1)的矩阵。

优选地,所述根据所述第二矩阵中第一行和第一列中各单元的值,计算得到所述第二矩阵中第m行第n列的值a[m][n],进一步包括:

选择所述第一矩阵第i行中最小的相似度为wi和所述第一矩阵第j列中最小的相似度为wj;

计算第一参考值v1=a[i-1][j]+wi、第二参考值v2=a[i][j-1]+wi+1和第三参考值v3=a[i-1][j-1]+w[i][j];所述w[i][j]为所述第一矩阵第i行第j列的值;

若所述第一矩阵第i+1行和第j+1列对应的词语相同,则所述第二矩阵第i行第j列a[i][j]的值为0,否则所述第二矩阵第i行第j列a[i][j]的值为所述第一参考值、所述第二参考值和所述第三参考值中最小的值;

其中,当i=m且j=n时,a[i][j]的值为a[m][n]。

优选地,所述根据分词后的各词语之间的相似度得到第一矩阵,进一步包括:

根据word2vec或glove或plsa或lda算法计算分词后的各词语之间的相似度。

第二方面,本发明实施例还提出一种语句相似度计算装置,包括:

语句获取模块,用于获取第一语句和第二语句;

分词处理模块,用于对所述第一语句和所述第二语句进行分词处理,得到所述第一语句和所述第二语句分词后的若干个词语;

矩阵获取模块,用于根据所述第一语句中每个词语分别和所述第二语句中的每个词语的相似度,得到第一矩阵;

相似度计算模块,用于根据所述第一矩阵和预设规则,计算得到所述第一语句和所述第二语句的相似度。

优选地,所述矩阵获取模块进一步用于根据所述第一语句和所述第二语句中的词语顺序,分别计算所述第一语句中每个词语和所述第二语句中的每个词语的相似度,并根据所述相似度,建立所述第一矩阵。

优选地,所述相似度计算模块进一步包括:

矩阵建立单元,用于建立第二矩阵,根据所述第一矩阵中行和列对应的词语之间的距离,计算得到所述第二矩阵中第一行和第一列中各单元的值;

相似度计算单元,用于根据所述第二矩阵中第一行和第一列中各单元的值,计算得到所述第二矩阵中第m行第n列的值a[m][n],所述值a[m][n]为所述第一语句和所述第二语句的相似度;

其中,所述第二矩阵为m×n的矩阵,所述第一矩阵为(m-1)×(n-1)的矩阵。

优选地,所述相似度计算单元进一步包括:

相似度选择子单元,用于选择所述第一矩阵第i行中最小的相似度为wi和所述第一矩阵第j列中最小的相似度为wj;

参考值计算子单元,用于计算第一参考值v1=a[i-1][j]+wi、第二参考值v2=a[i][j-1]+wi+1和第三参考值v3=a[i-1][j-1]+w[i][j];所述w[i][j]为所述第一矩阵第i行第j列的值;

相似度计算子单元,用于若所述第一矩阵第i+1行和第j+1列对应的词语相同,则所述第二矩阵第i行第j列a[i][j]的值为0,否则所述第二矩阵第i行第j列a[i][j]的值为所述第一参考值、所述第二参考值和所述第三参考值中最小的值;

其中,当i=m且j=n时,a[i][j]的值为a[m][n]。

优选地,所述矩阵获取模块进一步用于根据word2vec或glove或plsa或lda算法计算分词后的各词语之间的相似度。

由上述技术方案可知,本发明实施例通过对语句进行分词处理,并根据分词后的各词语之间的相似度构建矩阵来计算语句之间的相似度,避免了大量标注语料和人工经验,且准确率较高。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。

图1为本发明一实施例提供的一种语句相似度计算方法的流程示意图;

图2为本发明一实施例提供的一种语句相似度计算装置的结构示意图。

具体实施方式

下面结合附图,对发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

图1示出了本发明一实施例提供的一种语句相似度计算方法的方法流程图,包括:

第一方面,本发明实施例提出一种语句相似度计算方法,包括:

s101、获取第一语句和第二语句;

其中,所述第一语句和所述第二语句可以通过键盘直接获取,也可以通过语音应用软件接收语音信息后,识别得到第一语言和第二语句。

s102、对所述第一语句和所述第二语句进行分词处理,得到所述第一语句和所述第二语句分词后的若干个词语;

其中,所分词处理为将语句划分为多个词,例如:根据数据库中存在的词进行分词。

通过对第一语句和第二语句进行分词处理,能够使得后续的相似度计算更加准确。

s103、根据所述第一语句中每个词语分别和所述第二语句中的每个词语的相似度,得到第一矩阵;

具体地,所述根据分词后的各词语之间的相似度得到第一矩阵可以包括:

计算分词后第一语句中的每个词语与第二语句中的词语的相似度;

根据计算得到的相似度构建第一矩阵。

举例来说,第一语句s1为“我今天很开心”,第二语句s2为“我现在心情非常不错”,则构建第一矩阵的步骤如下:

a1、分词处理:第一语句s1分词处理后的词语包括:我s11、今天s12、很s13、开心s14,第二语句s2分词处理后的词语包括:我s21、今天s22、心情s23、非常s24、不错s25;

a2、相似度计算:根据预设规则,s11和s21、s22、s23、s24和s25的相似度分别为:1、0.2、0.3、0.2和0.3;s12和s21、s22、s23、s24和s25的相似度分别为:0.1、0.9、0.3、0.2和0.3;s13和s21、s22、s23、s24和s25的相似度分别为:0.1、0.2、0.3、0.8和0.3;s14和s21、s22、s23、s24和s25的相似度分别为:0.1、0.2、0.3、0.2和0.8;

a3、构建第一矩阵m如下:

s104、根据所述第一矩阵和预设规则,计算得到所述第一语句和所述第二语句的相似度。

其中,所述预设规则为对第一矩阵中的相似度进行处理后得到的第一语句和所述第二语句的相似度。

本实施例通过对语句进行分词处理,并根据分词后的各词语之间的相似度构建矩阵来计算语句之间的相似度,避免了大量标注语料和人工经验,且准确率较高。

进一步地,在上述方法实施例的基础上,s103进一步包括:

根据所述第一语句和所述第二语句中的词语顺序,分别计算所述第一语句中每个词语和所述第二语句中的每个词语的相似度,并根据所述相似度,建立所述第一矩阵。

通过按词语顺序建立第一矩阵,能够提升句子相似度计算的准确率和召回率,可以识别词语顺序导致的语义差异,便于后续计算相似度的语义损失值。

进一步地,在上述方法实施例的基础上,s104进一步包括:

s1041、建立第二矩阵,根据所述第一矩阵中行和列对应的词语之间的距离,计算得到所述第二矩阵中第一行和第一列中各单元的值;

s1042、根据所述第二矩阵中第一行和第一列中各单元的值,计算得到所述第二矩阵中第m行第n列的值a[m][n],所述值a[m][n]为所述第一语句和所述第二语句的相似度;

其中,所述第二矩阵为m×n的矩阵,所述第一矩阵为(m-1)×(n-1)的矩阵。

通过词语之间的距离计算第二矩阵中第一行和第一列中各单元的值,能够便于后续计算第二矩阵的每个值,进一步得到第一语句和第二语句的相似度。

进一步地,在上述方法实施例的基础上,s1042进一步包括:

s10421、选择所述第一矩阵第i行中最小的相似度为wi和所述第一矩阵第j列中最小的相似度为wj;

s10422、计算第一参考值v1=a[i-1][j]+wi、第二参考值v2=a[i][j-1]+wi+1和第三参考值v3=a[i-1][j-1]+w[i][j];所述w[i][j]为所述第一矩阵第i行第j列的值;

s10423、若所述第一矩阵第i+1行和第j+1列对应的词语相同,则所述第二矩阵第i行第j列a[i][j]的值为0,否则所述第二矩阵第i行第j列a[i][j]的值为所述第一参考值、所述第二参考值和所述第三参考值中最小的值;

其中,当i=m且j=n时,a[i][j]的值为a[m][n]。

其中,wi和wj即为对应词语的最小语义损失值。

本实施例结合了第一矩阵中各相似度和第二矩阵中第一行和第一列的值,并通过取三个参考值中最小的值最为第二矩阵中的值,能够解决相似度计算不准确的问题。

更进一步地,在上述方法实施例的基础上,s103进一步包括:

根据word2vec或glove或plsa或lda算法计算分词后的各词语之间的相似度。

通过采用上述算法计算词语之间的相似度,能够获得更准确的词语相似度。

图2示出了本发明一实施例提供的一种语句相似度计算装置的结构示意图,所述装置包括:语句获取模块21、分词处理模块22、矩阵获取模块23和相似度计算模块24;其中,

所述语句获取模块21,用于获取第一语句和第二语句;

所述分词处理模块22,用于对所述第一语句和所述第二语句进行分词处理,得到所述第一语句和所述第二语句分词后的若干个词语;

所述矩阵获取模块23,用于根据所述第一语句中每个词语分别和所述第二语句中的每个词语的相似度,得到第一矩阵;

所述相似度计算模块24用于根据所述第一矩阵和预设规则,计算得到所述第一语句和所述第二语句的相似度。

具体地,所述语句获取模块21获取第一语句和第二语句;所述分词处理模块22对所述第一语句和所述第二语句进行分词处理,得到所述第一语句和所述第二语句分词后的若干个词语;所述矩阵获取模块23根据所述第一语句中每个词语分别和所述第二语句中的每个词语的相似度,得到第一矩阵;所述相似度计算模块24根据所述第一矩阵和预设规则,计算得到所述第一语句和所述第二语句的相似度。

本实施例通过对语句进行分词处理,并根据分词后的各词语之间的相似度构建矩阵来计算语句之间的相似度,避免了大量标注语料和人工经验,且准确率较高。

进一步地,所述矩阵获取模块23进一步用于根据所述第一语句和所述第二语句中的词语顺序,分别计算所述第一语句中每个词语和所述第二语句中的每个词语的相似度,并根据所述相似度,建立所述第一矩阵。

进一步地,所述相似度计算模块24进一步包括:

矩阵建立单元241,用于建立第二矩阵,根据所述第一矩阵中行和列对应的词语之间的距离,计算得到所述第二矩阵中第一行和第一列中各单元的值;

相似度计算单元242,用于根据所述第二矩阵中第一行和第一列中各单元的值,计算得到所述第二矩阵中第m行第n列的值a[m][n],所述值a[m][n]为所述第一语句和所述第二语句的相似度;

其中,所述第二矩阵为m×n的矩阵,所述第一矩阵为(m-1)×(n-1)的矩阵。

进一步地,所述相似度计算单元242进一步包括:

相似度选择子单元2421,用于选择所述第一矩阵第i行中最小的相似度为wi和所述第一矩阵第j列中最小的相似度为wj;

参考值计算子单元2422,用于计算第一参考值v1=a[i-1][j]+wi、第二参考值v2=a[i][j-1]+wi+1和第三参考值v3=a[i-1][j-1]+w[i][j];所述w[i][j]为所述第一矩阵第i行第j列的值;

相似度计算子单元2423,用于若所述第一矩阵第i+1行和第j+1列对应的词语相同,则所述第二矩阵第i行第j列a[i][j]的值为0,否则所述第二矩阵第i行第j列a[i][j]的值为所述第一参考值、所述第二参考值和所述第三参考值中最小的值;

其中,当i=m且j=n时,a[i][j]的值为a[m][n]。

更进一步地,所述矩阵获取模块23进一步用于根据word2vec或glove或plsa或lda算法计算分词后的各词语之间的相似度。

本实施例所述的语句相似度计算装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。

本发明的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1