计算句子相似度
计算句子相似度,①常用方法有基于语义和词序相似度计算方法,②基于关系向量模型
基于语义和词序的句子相似度计算方法简介
定义1:给定一个句子Ti,经过汉语分词系统分词后,得到的所有词W1构成的向量称为句子Ti的向量表示,表示为Ti = {w1,w2,.....wn}。
例子1:T1:这个中文分词可不可以,用着方不方便。分词后:T1=[这个, 中文分词, 可不可以, 用着, 方, 不, 方便]。向量表示T1={这个, 中文分词, 可不可以, 用着, 方, 不, 方便}
T2:这个中文分词比较方便,用着方便还可以。分词后:T2=[这个, 中文分词, 比较方便, 用着, 方便, 还可以]。向量表示T2={这个, 中文分词, 比较方便, 用着, 方便, 还可以}
定义2:给定一个句子Ti的向量表示,Ti中词的个数称为Ti的向量长度,表示为Len(Ti).
例子2:对于句子T1和T2的向量长度表示为:Len(T1)=7,Len(T1)=6。
定义3:给定两个句子Ti、Tj的向量表示,将Ti、Tj中的所有词Wi进行合并,并且对于重复初想的词只保留一个,由此得到两个向量之和,称为Ti、Tj的并集,表示T=T1 U T2={这个, 中文分词, 可不可以, 比较方便,用着, 方, 不, 方便,还可以},很显然,并集长度Len(T)<=Len(T1)+Len(T2)。
定义4:给定一个句子Ti的向量表示Ti = {w1,w2,.....wn}和一个词wi,依次计算wi和Ti中每一个词的相似度(值为0到1之间),所以所有结果中的最大值称为wi在Ti中的语义分数,表示为Ci。
定义5:给定两个句子Ti、Tj的向量表示,Ti和Tj的集合T={w1、w2,....wn},对T中的每一个词Wi,计算Wi在Ti中的语义分数Ci,T中每个分词的语义分数组成的一个向量称为Ti基于T的语义向量,表示为Si={C1,C2,...,Cn}。
在该算法中,基于T分别计算Ti和Tj的语义向量Si、Sj,以计算Si作为说明,过程如下:
1、对于T中的每一个词wi,如果wi 在Ti 中出现,则在语义向量Si中将wi 的语义分数Ci设为1。
2、如果Ti中不包含wi,则计算wi 在 Ti 中的语义分数 Ci=a(a为预先设定的阈值 , 无阈值设为0 ,本文中阈值为0.2 ) 。
根据语义向量计算语义相似度方法如下图:
词序相似度计算法方法如下:
![利用IKAnalyzer中文分词,计算句子相似度](https://img.haomeiwen.com/i2526335/78f9a852ca2f4b57.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
其中r1、r2 分别为T1、T2的词序向量,以T1为例,其计算方法如下:
1、对于T中的每一个词wi,如果T1中包含该次,则r1中该次的取值为该词