发明内容
本发明的主要目的在于提供一种改进的基于语义词典的词语相似度计算方法,提高词语之间相似度计算的准确性,进而提高智能交互系统的智能化水平。
为实现上述目的,本发明提供了一种改进的基于语义词典的词语相似度计算方法。
所述改进的基于语义词典的词语相似度计算方法包括如下步骤:
S10:获取待比较的词语A和词语B;
S20:当所述词语A和所述词语B都存在于所述语义词典中时,计算所述词语A与所述词语B的相似度值,否则执行步骤S30;
S30:通过预设的同义词词典建立所述词语A的扩展词组a[M]和/或所述词语B的扩展词组b[N];计算所述词语A与所述扩展词组b[N]中每个词语的相似度值,或所述扩展词组a[M]中每个词语与所述词语B的相似度值,或所述扩展词组a[M]中每个词语与扩展词组b[N]中每个词语的相似度值;取最大相似度值作为所述词语A与所述词语B的相似度值。
进一步地,所述改进的基于语义词典的词语相似度计算方法还包括如下步骤:
S40:当所述词组a[M]中的词语和/或所述词组b[N]中的词语不存在于所述语义词典中时,将所述词语A和/或所述词语B切分为单字词,建立所述词语A的单字词组aa[P]和/或所述词语B的单字词组bb[Q];计算所述词语A与所述单字词组bb[Q]的相似度值,或所述单字词组aa[P]与所述词语B的相似度值,或所述单字词组aa[P]与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值。
优选地,所述步骤S40具体为:
当所述词组a[M]中的词语都不存在于所述语义词典中,且所述词组b[N]中的词语有存在于所述语义词典中时,将所述词语A切分为单字词,建立所述词语A的单字词组aa[P];计算所述单字词组aa[P]与所述词语B的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值;
当所述词组b[N]中的词语都不存在于所述语义词典中,且所述词组a[M]中的词语有存在于所述语义词典中时,将所述词语B切分为单字词,建立所述词语B的单字词组bb[Q];计算所述词语A与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值;
当所述词组a[M]中的词语和所述词组b[N]中的词语都不存在于所述语义词典中时,将所述词语A和所述词语B分别切分为单字词,建立所述词语A的单字词组aa[P]和所述词语B的单字词组bb[Q];计算所述单字词组aa[P]与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值。
优选地,所述步骤S30具体为:
当所述词语A存在于语义词典中,且所述词语B不存在于语义词典中时,建立所述词语B的扩展词组b[N],依次计算所述词语A与扩展词组b[N]中每个词语的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值;
当所述词语A不存在于语义词典中,且所述词语B存在于语义词典中时,建立所述词语A的扩展词组a[M],依次计算所述扩展词组a[M]中所有词语与所述词语B的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值;
当所述词语A和所述词语B都不存在于语义词典中,建立所述词语A的扩展词组a[M]和所述词语B的扩展词组b[N],依次计算所述扩展词组a[M]中所有词语和所述扩展词组b[N]中所有词语的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值。
为实现上述目的,本发明提供了一种改进的基于语义词典的词语相似度计算装置。
所述改进的基于语义词典的词语相似度计算装置包括:
词语获取模块,用于获取待比较的词语A和词语B;
第一词语相似度计算模块,用于当所述词语A和所述词语B都存在于所述语义词典中时,计算所述词语A与所述词语B的相似度值;
第二词语相似度计算模块,用于当所述词语A和所述词语B至少一个不存在于所述语义词典中时,通过预设的同义词词典建立所述词语A的扩展词组a[M]和/或所述词语B的扩展词组b[N],计算所述词语A与所述扩展词组b[N]中每个词语的相似度值,或所述扩展词组a[M]中每个词语与所述词语B的相似度值,或所述扩展词组a[M]中每个词语与扩展词组b[N]中每个词语的相似度值,取最大相似度值作为所述词语A与所述词语B的相似度值。
进一步地,所述改进的基于语义词典的词语相似度计算装置还包括:
第三词语相似度计算模块,用于当所述词组a[M]中的词语和/或所述词组b[N]中的词语不存在于所述语义词典中时,将所述词语A和/或所述词语B切分为单字词,建立所述词语A的单字词组aa[P]和/或所述词语B的单字词组bb[Q];计算所述词语A与所述单字词组bb[Q]的相似度值,或所述单字词组aa[P]与所述词语B的相似度值,或所述单字词组aa[P]与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值。
优选地,所述第三词语相似度计算模块具体用于:
当所述词组a[M]中的词语都不存在于所述语义词典中,且所述词组b[N]中的词语有存在于所述语义词典中时,将所述词语A切分为单字词,建立所述词语A的单字词组aa[P];计算所述单字词组aa[P]与所述词语B的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值;
当所述词组b[N]中的词语都不存在于所述语义词典中,且所述词组a[M]中的词语有存在于所述语义词典中时,将所述词语B切分为单字词,建立所述词语B的单字词组bb[Q];计算所述词语A与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值;
当所述词组a[M]中的词语和所述词组b[N]中的词语都不存在于所述语义词典中时,将所述词语A和所述词语B分别切分为单字词,建立所述词语A的单字词组aa[P]和所述词语B的单字词组bb[Q];计算所述单字词组aa[P]与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值。
优选地,所述第二词语相似度计算模块具体用于:
当所述词语A存在于语义词典中,且所述词语B不存在于语义词典中时,建立所述词语B的扩展词组b[N],依次计算所述词语A与扩展词组b[N]中每个词语的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值;
当所述词语A不存在于语义词典中,且所述词语B存在于语义词典中时,建立所述词语A的扩展词组a[M],依次计算所述扩展词组a[M]中所有词语与所述词语B的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值;
当所述词语A和所述词语B都不存在于语义词典中,建立所述词语A的扩展词组a[M]和所述词语B的扩展词组b[N],依次计算所述扩展词组a[M]中所有词语和所述扩展词组b[N]中所有词语的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值。
本发明采用上述技术方案,带来的技术效果为:当待比较的所述词语A和所述词语B有其中一个不存在于所述语义词典中时,通过预设的同义词词典建立所述词语A的扩展词组a[M]和/或所述词语B的扩展词组b[N],再计算所述词语A与所述扩展词组b[N]中每个词语的相似度值,或所述扩展词组a[M]中每个词语与所述词语B的相似度值,或所述扩展词组a[M]中每个词语与扩展词组b[N]中每个词语的相似度值,取最大相似度值作为所述词语A与所述词语B的相似度值。本发明实施例通过对待比较的所述词语A和/或所述词语B进行同义词扩展,提高词语之间相似度计算的准确性,进而提高智能交互系统的智能化水平。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的主要目的在于提供一种改进的基于语义词典的词语相似度计算方法,提高词语之间相似度计算的准确性,进而提高智能交互系统的智能化水平。
为实现上述目的,本发明提供了一种改进的基于语义词典的词语相似度计算方法。
参照图1,图1为本发明改进的基于语义词典的词语相似度计算方法第一实施例流程示意图。
在一实施例中,如图1所示,所述改进的基于语义词典的词语相似度计算方法包括如下步骤:
S10:获取待比较的词语A和词语B;
具体地,可以通过多种方式获取待比较的词语A和词语B,例如,在智能交互系统中,要进行问题匹配时,所述词语A为从客户端获取,所述词语B从服务器端的数据库中年获取;或者在进行语句相似度计算是,所述词语A从语句1中获取,所述词语B从语句2中获取。
S20:当所述词语A和所述词语B都存在于所述语义词典中时,计算所述词语A与所述词语B的相似度值,否则执行步骤S30;
具体地,所述预设的语义词典是指HowNet语义词典,包括glossary.dat文件。分别判断所述词语A和所述词语B是否存在于预设的语义词典中,即在glossary.dat文件中分别查找所述词语A和所述词语B,若所述词语A和所述词语B都在所述语义词典中,则按照传统的计算词语相似度的方法计算所述词语A和所述词语B的相似度。此处所说的传统的计算词语相似度的方法是指现有技术中公开的基于语义词典的计算词语相似度的方法。
S30:通过预设的同义词词典建立所述词语A的扩展词组a[M]和/或所述词语B的扩展词组b[N];计算所述词语A与所述扩展词组b[N]中每个词语的相似度值,或所述扩展词组a[M]中每个词语与所述词语B的相似度值,或所述扩展词组a[M]中每个词语与扩展词组b[N]中每个词语的相似度值;取最大相似度值作为所述词语A与所述词语B的相似度值。
具体地,当所述词语A和/或所述词语B不在所述语义词典中,则需要基于预设的同义词词典建立所述词语A的扩展词组a[M]和/或所述词语B的扩展词组b[N]。其中,a[M]为所述词语A的同义词扩展词组,M为自然数,代表了扩展词组a[M]中词语的个数;b[N]为所述词语B的同义词扩展词组,N为自然数,代表了扩展词组b[N]中词语的个数。本发明实施例中所述的预设的同义词词典可以基于现有的《同义词词林》或其他版本的同义词词典。
步骤S30在以下三种情况下需要做不同的处理,下述所说的传统的计算词语相似度的方法是指现有技术中公开的基于语义词典的计算词语相似度的方法。
(1)当所述词语A存在于语义词典中,且所述词语B不存在于语义词典中时,只需建立所述词语B的扩展词组b[N],按照传统的计算词语相似度的方法依次计算所述词语A与扩展词组b[N]中每个词语的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值;
(2)当所述词语A不存在于语义词典中,且所述词语B存在于语义词典中时,只需建立所述词语A的扩展词组a[M],按照传统的计算词语相似度的方法依次计算所述扩展词组a[M]中所有词语与所述词语B的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值;
(3)当所述词语A和所述词语B都不存在于语义词典中,则需要同时建立所述词语A的扩展词组a[M]和所述词语B的扩展词组b[N],按照传统的计算词语相似度的方法依次计算所述扩展词组a[M]中所有词语和所述扩展词组b[N]中所有词语的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值。
本发明实施例中当待比较的所述词语A和所述词语B有其中一个不存在于所述语义词典中时,通过预设的同义词词典建立所述词语A的扩展词组a[M]和/或所述词语B的扩展词组b[N],再计算所述词语A与所述扩展词组b[N]中每个词语的相似度值,或所述扩展词组a[M]中每个词语与所述词语B的相似度值,或所述扩展词组a[M]中每个词语与扩展词组b[N]中每个词语的相似度值,取最大相似度值作为所述词语A与所述词语B的相似度值。本发明实施例通过对待比较的所述词语A和/或所述词语B进行同义词扩展,提高词语之间相似度计算的准确性,进而提高智能交互系统的智能化水平。
在一个优选的实施例中,进一步地,当通过第一实施例的方法计算出所述词语A和所述词语B的相似度仍然为0时,所述改进的基于语义词典的词语相似度计算方法还包括如下步骤:
S40:当所述词组a[M]中的词语和/或所述词组b[N]中的词语不存在于所述语义词典中时,将所述词语A和/或所述词语B切分为单字词,建立所述词语A的单字词组aa[P]和/或所述词语B的单字词组bb[Q];计算所述词语A与所述单字词组bb[Q]的相似度值,或所述单字词组aa[P]与所述词语B的相似度值,或所述单字词组aa[P]与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值。
优选地,所述步骤S40具体为:
当所述词组a[M]中的词语都不存在于所述语义词典中,且所述词组b[N]中的词语有存在于所述语义词典中时,将所述词语A切分为单字词,建立所述词语A的单字词组aa[P];计算所述单字词组aa[P]与所述词语B的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值;
当所述词组b[N]中的词语都不存在于所述语义词典中,且所述词组a[M]中的词语有存在于所述语义词典中时,将所述词语B切分为单字词,建立所述词语B的单字词组bb[Q];计算所述词语A与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值;
当所述词组a[M]中的词语和所述词组b[N]中的词语都不存在于所述语义词典中时,将所述词语A和所述词语B分别切分为单字词,建立所述词语A的单字词组aa[P]和所述词语B的单字词组bb[Q];计算所述单字词组aa[P]与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值。
具体地,在一个实施例中,若所述词组a[M]中的词语和所述词组b[N]中的词语都不存在于所述语义词典中,将所述词语A和所述词语B分别切分为单字词,建立所述词语A的单字词组aa[P]和所述词语B的单字词组bb[Q]。假设所述词语A的单字词组为aa[P](aa[0],aa[1],aa[2],......,aa[P-1]),所述述词语B的单字词组为bb[Q](bb[0],bb[1],bb[2],......,bb[Q-1]),则aa[i](0≤i≤P-1)和bb[j](0≤j≤Q-1)之间的相似度可以用sim(aa[i],bb[j])表示,则词语A和词语B之间相似度sim2(A,B)公式如式(1)所示:
式(1)
式(1)中ai=max(sim(aa[i],bb[0]),sim(aa[i],bb[1]),...,sim(aa[i],bb[Q-1]));
bj=max(sim(bb[j],aa[0]),sim(bb[j],aa[1]),...,sim(bb[j],aa[P-1]))。
本发明实施例通过第一实施例的方法计算出所述词语A和所述词语B的相似度仍然为0时,进一步对所述词语A和/或所述词语B的扩展词a[M]中的词语和/或所述词组b[N]中的词语进行分析,将所述词语A和/或所述词语B切分为单字词,建立所述词语A的单字词组aa[P]和/或所述词语B的单字词组bb[Q],按照上述算法计算所述词语A和所述词语B的相似度,进一步提高了词语之间相似度计算的准确性,进而提高智能交互系统的智能化水平。
本发明改进的基于语义词典的词语相似度计算方法最佳实施例的伪代码如下,其中,sim函数是传统的计算词语相似度的算法,sim2函数以式(1)为原型,它的两个参数类型是字符串数组,当其中一个参数为字符串时,可以看作是长度为一的字符串数组:
为实现上述目的,本发明提供了一种改进的基于语义词典的词语相似度计算装置。
参照图2,图2为本发明改进的基于语义词典的词语相似度计算装置第一实施例结构示意图。
在一实施例中,如图2所示,所述改进的基于语义词典的词语相似度计算装置包括:
词语获取模块10,用于获取待比较的词语A和词语B;
具体地,可以通过多种方式获取待比较的词语A和词语B,例如,在智能交互系统中,要进行问题匹配时,所述词语A为从客户端获取,所述词语B从服务器端的数据库中年获取;或者在进行语句相似度计算是,所述词语A从语句1中获取,所述词语B从语句2中获取。
第一词语相似度计算模块20,用于当所述词语A和所述词语B都存在于所述语义词典中时,计算所述词语A与所述词语B的相似度值;
具体地,所述预设的语义词典是指HowNet语义词典,包括glossary.dat文件。分别判断所述词语A和所述词语B是否存在于预设的语义词典中,即在glossary.dat文件中分别查找所述词语A和所述词语B,若所述词语A和所述词语B都在所述语义词典中,则按照传统的计算词语相似度的方法计算所述词语A和所述词语B的相似度。此处所说的传统的计算词语相似度的方法是指现有技术中公开的基于语义词典的计算词语相似度的方法。
第二词语相似度计算模块30,用于当所述词语A和所述词语B至少一个不存在于所述语义词典中时,通过预设的同义词词典建立所述词语A的扩展词组a[M]和/或所述词语B的扩展词组b[N],计算所述词语A与所述扩展词组b[N]中每个词语的相似度值,或所述扩展词组a[M]中每个词语与所述词语B的相似度值,或所述扩展词组a[M]中每个词语与扩展词组b[N]中每个词语的相似度值,取最大相似度值作为所述词语A与所述词语B的相似度值。
具体地,当所述词语A和/或所述词语B不在所述语义词典中,则需要基于预设的同义词词典建立所述词语A的扩展词组a[M]和/或所述词语B的扩展词组b[N]。其中,a[M]为所述词语A的同义词扩展词组,M为自然数,代表了扩展词组a[M]中词语的个数;b[N]为所述词语B的同义词扩展词组,N为自然数,代表了扩展词组b[N]中词语的个数。
所述第二词语相似度计算模块具体用于:在以下三种情况下需要做不同的处理,下述所说的传统的计算词语相似度的方法是指现有技术中公开的基于语义词典的计算词语相似度的方法。
(1)当所述词语A存在于语义词典中,且所述词语B不存在于语义词典中时,只需建立所述词语B的扩展词组b[N],按照传统的计算词语相似度的方法依次计算所述词语A与扩展词组b[N]中每个词语的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值;
(2)当所述词语A不存在于语义词典中,且所述词语B存在于语义词典中时,只需建立所述词语A的扩展词组a[M],按照传统的计算词语相似度的方法依次计算所述扩展词组a[M]中所有词语与所述词语B的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值;
(3)当所述词语A和所述词语B都不存在于语义词典中,则需要同时建立所述词语A的扩展词组a[M]和所述词语B的扩展词组b[N],按照传统的计算词语相似度的方法依次计算所述扩展词组a[M]中所有词语和所述扩展词组b[N]中所有词语的相似度值,并取最大相似度值作为所述词语A与所述词语B的相似度值。
本发明实施例中当待比较的所述词语A和所述词语B有其中一个不存在于所述语义词典中时,通过预设的同义词词典建立所述词语A的扩展词组a[M]和/或所述词语B的扩展词组b[N],再计算所述词语A与所述扩展词组b[N]中每个词语的相似度值,或所述扩展词组a[M]中每个词语与所述词语B的相似度值,或所述扩展词组a[M]中每个词语与扩展词组b[N]中每个词语的相似度值,取最大相似度值作为所述词语A与所述词语B的相似度值。本发明实施例通过对待比较的所述词语A和/或所述词语B进行同义词扩展,提高词语之间相似度计算的准确性,进而提高智能交互系统的智能化水平。
在一个优选的实施例中,进一步地,所述改进的基于语义词典的词语相似度计算装置还包括:
第三词语相似度计算模块,用于当通过第一实施例的方法计算出所述词语A和所述词语B的相似度仍然为0时,进一步判断所述词组a[M]中的词语和/或所述词组b[N]中的词语是否都不存在于所述语义词典中时,将所述词语A和/或所述词语B切分为单字词,建立所述词语A的单字词组aa[P]和/或所述词语B的单字词组bb[Q];计算所述词语A与所述单字词组bb[Q]的相似度值,或所述单字词组aa[P]与所述词语B的相似度值,或所述单字词组aa[P]与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值。
优选地,所述第三词语相似度计算模块具体用于:
当所述词组a[M]中的词语都不存在于所述语义词典中,且所述词组b[N]中的词语有存在于所述语义词典中时,将所述词语A切分为单字词,建立所述词语A的单字词组aa[P];计算所述单字词组aa[P]与所述词语B的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值;
当所述词组b[N]中的词语都不存在于所述语义词典中,且所述词组a[M]中的词语有存在于所述语义词典中时,将所述词语B切分为单字词,建立所述词语B的单字词组bb[Q];计算所述词语A与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值;
当所述词组a[M]中的词语和所述词组b[N]中的词语都不存在于所述语义词典中时,将所述词语A和所述词语B分别切分为单字词,建立所述词语A的单字词组aa[P]和所述词语B的单字词组bb[Q];计算所述单字词组aa[P]与所述单字词组bb[Q]的相似度值,取所述相似度值作为所述词语A与所述词语B的相似度值。
具体地,在一个实施例中,若所述词组a[M]中的词语和所述词组b[N]中的词语都不存在于所述语义词典中,将所述词语A和所述词语B分别切分为单字词,建立所述词语A的单字词组aa[P]和所述词语B的单字词组bb[Q]。假设所述词语A的单字词组为aa[P](aa[0],aa[1],aa[2],......,aa[P-1]),所述述词语B的单字词组为bb[Q](bb[0],bb[1],bb[2],......,bb[Q-1]),则aa[i](0≤i≤P-1)和bb[j](0≤j≤Q-1)之间的相似度可以用sim(aa[i],bb[j])表示,则词语A和词语B之间相似度sim2(A,B)公式如式(1)所示:
式(1)
式(1)中ai=max(sim(aa[i],bb[0]),sim(aa[i],bb[1]),...,sim(aa[i],bb[Q-1]));
bj=max(sim(bb[j],aa[0]),sim(bb[j],aa[1]),...,sim(bb[j],aa[P-1]))。
本发明实施例通过第一实施例的方法计算出所述词语A和所述词语B的相似度仍然为0时,进一步对所述词语A和/或所述词语B的扩展词a[M]中的词语和/或所述词组b[N]中的词语进行分析,将所述词语A和/或所述词语B切分为单字词,建立所述词语A的单字词组aa[P]和/或所述词语B的单字词组bb[Q],按照上述算法计算所述词语A和所述词语B的相似度,进一步提高了词语之间相似度计算的准确性,进而提高智能交互系统的智能化水平。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。