一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种适应低算力的大规模相似语句自动抽取方法与流程

2022-07-09 22:37:28 来源:中国专利 TAG:


1.本发明涉及相似对话抽取技术领域,尤其涉及一种适应低算力的大规模相似语句自动抽取方法。


背景技术:

2.目前对于相似含义语句的抽取主要基于语句特征和距离计算测度,由于预训练深度模型在语言模型应用广泛,多用于语句特征的生成,或者直接结合距离计算层,完成整体的相似句判断任务。但在面对大规模数据时,这类复杂模型需要极高的算力支撑,如果采用传统计数类语言模型替代时,虽然对算力要求低,但相似计算的精度又难以保障。


技术实现要素:

3.本发明的目的在于提供一种适应低算力的大规模相似语句自动抽取方法,从而解决现有技术中存在的前述问题。
4.为了实现上述目的,本发明采用的技术方案如下:
5.一种适应低算力的大规模相似语句自动抽取方法,包括如下步骤,
6.s1、对语句进行向量化以将语句转换为特征向量a;基于特征向量a对语句进行近义词增广,以获取语句的增广特征向量a ;基于语义角色获取局部否定向量b;
7.s2、利用局部否定向量b分离语句样本的增广特征向量a ,基于分离结果计算两个语句样本之间的综合相似度;或者,根据分离结果直接判断两个语句是否相似;
8.s3、基于聚类算法获取最优相似度阈值下限,根据综合相似度与最优相似度阈值下限之间的大小关系判定两个语句是否相似,实现相似语句的抽取。
9.优选的,步骤s1中,对语句进行向量化以将语句转换为特征向量a的具体过程为,
10.根据业务需求过滤掉语句样本中与业务无关的符号串;将过滤后的语句分割为基本的语言单位;根据业务特点利用符号对语言单位中的数字进行替换;将语句视为文档,计算各语言单位在文档中出现的频次作为各语言单位的权重,并结合各语言单位在语句中的索引,以将该语句转换为特征向量a。
11.优选的,步骤s1中,对语句进行近义词增广以获取语句样本的增广向量a 的具体过程为,
12.基于词的语义向量,将近义词编组为词典,生成近义词词典,近义词词典中的词条包含语义距离;根据近义词词典将语句中的语言单位的近义词作为拓展特征,加入语句的特征向量a,并在近义词的特征位写入对应的语义距离,获取语句的增广特征向量a 。
13.优选的,步骤s1中,基于语义角色获取局部否定向量b的具体过程为,
14.根据语义角色将否定语言单位与其中心语关联,形成局部否定向量b;所述局部否定向量b用于遮蔽语句的增广特征向量a 中不属于否定范围的特征向量,语句中的否定词本身属于被遮蔽的特征向量,未遮蔽的部分为否定后的局部特征向量。
15.优选的,步骤s2具体包括如下内容,
16.s21、利用局部否定向量b分离语句的增广特征向量a ,即可得到该语句的否定含义向量c和普通含义向量d;
17.s22、利用两个语句的否定含义向量c计算获取两个语句的第一余弦相似度e,利用两个语句的普通含义向量计算两个语句的第二余弦相似度f;将第二余弦相似度f与第一余弦相似度e之间的差值作为两个语句的综合相似度;或者,根据第一余弦相似度e和第二余弦相似度f之间的大小关系直接确定两个语句是否相似。
18.优选的,步骤s3具体包括如下内容,
19.s31、对大量语句样本进行增量层次化聚类;
20.s32、基于增量层次化聚类结果,利用相似度阈值下限启发算法获取最优相似度阈值下限;
21.s33、结合综合相似度与最优相似度阈值下限之间的大小关系判定两个语句是否相似。
22.优选的,步骤s31具体包括如下内容,
23.s311、将大量语句样本两两分为一组,分别计算各组的两个语句样本间的相似度;
24.s312、在1.0-0.5中随机选择一个数作为相似度阈值下限,将相似度阈值从1.0以0.05的步长逐步递减到相似度阈值下限,每次递减表示一轮聚类,每轮聚类过程中将高于或等于相似度阈值的相似度所对应的两个语句样本聚为一类,并选取该类别中信息量最大的语句样本作为该类别的类别样品语句,进入下一轮聚类;直到所有语句样本全部完成聚类,将所有样本全部归入对应的类别中;
25.s313、不同组间存在相同语句时,将相同语句所属的类别进行合并;当语句样本规模大时,不同组间存在相同语句的情况常见,随机选择一部分语句,散布于不同分组作为标记物,即可用少量数据冗余为代价,增大相同语句跨组的几率。
26.优选的,步骤s312中,选取该类别中信息量最大的语句样本作为该类别的类别样品语句的具体过程为,
27.将该类别中的语句样本根据语句样本的长度进行排序,采用信息熵算法计算长度大于长度阈值的语句样本的信息量,并对比长度相近的语句样本的信息量,选择信息熵最大的语句样本作为类别样品语句;信息熵算法的计算公式为,
[0028][0029][0030][0031]
其中,s为语句样本;s*为选择的类别样品语句;选择类别样品语句是一个在s上的优化过程,优化目标为最大化s的熵h,s的取值范围为一个语句集合;c为聚类,m为聚类数量,不同的聚类有不同的语句集合{s1,...,sc};h为s的熵,即s所含有语言符号w的概率分布的负对数期望,一个语句si包含ni个w,具体的符号集合{w1,

,wni}由si通过符号化过程生成,符号化过程基于n元文法,n为一个参数;i为语句样本在语句集合中的索引,即语句集合中的第i个语句样本;j为词语在语句中的索引,即语句中的第j个词语;p(w)表示语言
符号w在样本中的概率分布,j为索引,wj为符号集合中第j个语言符号,即p(wj)表示wj在样本中的出现概率。
[0032]
优选的,步骤s32具体为,利用原语句样本进行多次增量层次化聚类,计算聚类的数量和最大聚类中的语句样本数之和t,将其作为相似度阈值的目标值;选择最小目标值对应的相似度阈值作为最优相似度阈值下限;计算公式为,
[0033][0034]
t(l)=c
sup
(l) c
sub
(l)
[0035]csup
(l)=|g
sup
(l)|,g
sup
(l)={g
1,l
,g
2,l


}
[0036]csub
(l)=maxφ(l),φ(l)={|g
1,l
|,|g
2,l
|,

}
[0037][0038]
其中,l为相似度阈值下限;lowerbound*为最优相似度阈值下限,l*为lowerbound*的缩写;t为判别次数,即相似度阈值计算次数,选择最优相似度阈值下限是在0.5到1的实数区间上选择相似度阈值下限i以获取最小化t的优化过程;csup为大类数量,即聚类的数量;csub为类别中的最大样本数,即每个类别视为一个样本集合时,csub是其中最大的基数;sample size为总样本数;gsup(i)为聚类后的类别集合,g指其中的类别,g的数字角标为其在g中的索引,g
i,i
为在相似度阈值下限为i时计算所得;s.t.为优化时的限定条件,具体指样本规模等于所有聚类中样本规模之和;m为聚类中类别个数;m1*即在最优相似度阈值下限时聚类中类别个数。
[0039]
本发明的有益效果是:1、在相同算力(相同cpu计算服务器)和相同应用效果(实际业务场景下的用户反馈)下,本发明方法比对照方法(基于预训练深度模型)完成判别任务,耗时仅为后者的2%,内存占用基本相同。2、本发明方法在处理千万级语句时仅需要0.5g内存空间(峰值)。3、本发明方法不需要标注语料,不需要给定相似语句类别数量,也不需要给定相似度阈值,避免人工给定这些超参数以实现最大程度的自动化。
附图说明
[0040]
图1是本发明实施例中抽取方法的流程示意图。
具体实施方式
[0041]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
[0042]
实施例一
[0043]
如图1所示,本实施例中,提供了一种适应低算力的大规模相似语句自动抽取方法,包括如下步骤,
[0044]
s1、对语句进行向量化以将语句转换为特征向量a;基于特征向量a对语句进行近义词增广,以获取语句的增广特征向量a ;基于语义角色获取局部否定向量b;
[0045]
s2、利用局部否定向量b分离语句样本的增广特征向量a ,基于分离结果计算两个
语句样本之间的综合相似度;或者,根据分离结果直接判断两个语句是否相似;
[0046]
s3、基于聚类算法获取最优相似度阈值下限,根据综合相似度与最优相似度阈值下限之间的大小关系判定两个语句是否相似,实现相似语句的抽取。
[0047]
综合上述方法过程,本发明方法主要分为两个部分,分别为判别算法和聚类算法。下面分别对这两部分算法进行详细说明。
[0048]
一、判别算法
[0049]
判别算法包括语句向量化算法和语句相似度算法。
[0050]
1、语句向量化算法,包括计数语言模型向量化、近义词增广、否定局部判别3个子算法;
[0051]
1.1、计数语言模型向量化;对应步骤s1,即根据业务需求,首先对语句进行过滤、分割和替换3项操作;具体为:
[0052]
根据业务需求过滤掉语句中与业务无关的符号串(比如html等标记语言);将过滤后的语句分割为基本的语言单位(字、词或短语);根据业务特点利用符号对语言单位中的数字进行替换(对数字进行编码,比如1000编码为n4,n代表数字,4代表长度);将语句视为文档,计算各语言单位在文档中出现的频次作为各语言单位的权重,并结合各语言单位在语句中的索引,以将该语句转换为特征向量a。
[0053]
1.2、近义词增广;具体为,
[0054]
基于词的语义向量,将近义词编组为词典,生成近义词词典,近义词词典中的词条包含语义距离;根据近义词词典将语句中的语言单位的近义词作为拓展特征,加入语句的特征向量a,并在近义词的特征位写入对应的语义距离,获取语句的增广特征向量a 。
[0055]
1.3、否定局部判别;具体为,
[0056]
根据语义角色将否定语言单位与其中心语关联,形成局部否定向量b;所述局部否定向量b用于遮蔽语句的增广特征向量a 中不属于否定范围的特征向量,语句中的否定词本身属于被遮蔽的特征向量,未遮蔽的部分为否定后的局部特征向量。
[0057]
语义角色、中心语以及相互的关系由ltp工具生成,具体内容可参见(http://ltp.ai/docs/appendix.html)。中心语一般指语句中的谓语,在没有谓语的情况下通常指主语或宾语,具体情况根据生成的语义结构关系中“核心关系(hed)”的指向。
[0058]
2、语句相似度算法;对应步骤s2,具体包括如下内容,
[0059]
s21、利用局部否定向量b分离语句样本的增广特征向量a ,即可得到该语句样本的否定含义向量c和普通含义向量d(根据应用效果,可选a 、或遮蔽否定词后的a 、或遮蔽否定含义向量后的部分);
[0060]
s22、利用两个语句的否定含义向量c计算获取两个语句的第一余弦相似度e,利用两个语句的普通含义向量计算两个语句的第二余弦相似度f;将第二余弦相似度f与第一余弦相似度e之间的差值作为两个语句的综合相似度;或者,根据第一余弦相似度e和第二余弦相似度f之间的大小关系直接确定两个语句是否相似。
[0061]
否定含义向量c的第一余弦相似度e视为距离(1减相似度),为了有效避免超出需要的复杂语义计算,可以采用简单规则综合e和f,比如e大于f时,视为两句之间不相似(一般指含义相悖),反之含义相似,或f与e的差作为相似度,获得相似度后,需要根据特定阈值定性判断是否相似(阈值的选择见后续“相似度阈值下限启发算法”)。
[0062]
判别算法结合了通常的全句语句字符级相似度信息,通过近义词增加了局部含义的泛化,而否定局部含将反义语义纳入计算。在实际应用场景下,如果不提供足量反义词、同义词、否定词强化训练语料,基于深度模型的判别算法在效果上劣于该算法,而复杂度却远远高于该算法。
[0063]
二、聚类算法
[0064]
聚类算法包括增量层次化聚类和相似度阈值下限启发算法;对应步骤s3,步骤s3具体包括如下内容,
[0065]
s31、对大量语句样本进行增量层次化聚类;
[0066]
s32、基于增量层次化聚类结果,利用相似度阈值下限启发算法获取最优相似度阈值下限;
[0067]
s33、结合综合相似度与最优相似度阈值下限之间的大小关系判定两个语句是否相似。
[0068]
1、增量层次化聚类;对应步骤s31,具体如下,
[0069]
s311、将大量语句样本两两分为一组,分别计算各组的两个语句样本间的相似度;
[0070]
s312、在1.0-0.5中随机选择一个数作为相似度阈值下限,将相似度阈值从1.0以0.05的步长逐步递减到相似度阈值下限,每次递减表示一轮聚类,每轮聚类过程中将高于或等于相似度阈值的相似度所对应的两个语句样本聚为一类,并选取该类别中信息量最大的语句样本作为该类别的类别样品语句,进入下一轮聚类;直到所有语句样本全部完成聚类,将所有样本全部归入对应的类别中;
[0071]
s313、不同组间存在相同语句时,将相同语句所属的类别进行合并;当语句样本规模大时,不同组间存在相同语句的情况常见,随机选择一部分语句,散布于不同分组作为标记物,即可用少量数据冗余为代价,增大相同语句跨组的几率。
[0072]
与典型层次聚类算法不同,在给定相似度阈值后,增量层次化聚类方法将样本拆分为组,分组计算相似度,归并入对应类别中,相对不分组时的空间复杂度,分组可以降低空间复杂度峰值,调节分组粒度可以控制该峰值。
[0073]
步骤s312中,选取该类别中信息量最大的语句样本作为该类别的类别样品语句的具体过程为,
[0074]
将该类别中的语句样本根据语句样本的长度进行排序,采用信息熵算法计算长度大于长度阈值的语句样本的信息量,并对比长度相近的语句样本的信息量,选择信息熵最大的语句样本作为类别样品语句;信息熵算法的计算公式为,
[0075][0076][0077][0078]
其中,s为语句样本;s*为选择的类别样品语句;选择类别样品语句是一个在s上的优化过程,优化目标为最大化s的熵h,s的取值范围为一个语句集合;c为聚类,m为聚类数量,不同的聚类有不同的语句集合{s1,...,sc};h为s的熵,即s所含有语言符号w的概率分布的负对数期望,一个语句si包含ni个w,具体的符号集合{w1,

,wni}由si通过符号化过
程生成,符号化过程基于n元文法,n为一个参数;i为语句样本在语句集合中的索引,即语句集合中的第i个语句样本;j为词语在语句中的索引,即语句中的第j个词语;p(w)表示语言符号w在样本中的概率分布,j为索引,wj为符号集合中第j个语言符号,即p(wj)表示wj在样本中的出现概率。
[0079]
增量层次化聚类与典型层次聚类算法另一个不同是,归并入类别后,该类别用特定样本作为类别样品语句,这与非层次化聚类(如kmeans)相同,而分组形式上与mini-batch kmeans类似,这样便不需要将新语句样本与所有语句样本做相似度计算,仅与类别样品语句(example)做计算即可,降低了时间复杂度。根据实验结果,类别样品语句选择类别中信息量最大的语句样本时,聚类效果较好,因为信息量大的语句样本更能代表类别所蕴含的语义,且不同类别的语义更具区分度,模型易于表达。选择类别样品语句时,首先将该类别中的语句样本根据语句样本的长度进行排序,从较长语句样本开始计算信息量,并在多个相近长度(比如,长度相差不超过2个字符)的语句间进行比较。算法采用信息熵(information entropy)计算语句样本的信息量。在语言单位不同的语句样本间计算信息熵,较长的语句样本一般含有较多的语义单位,通常信息量也较大,因此不比较长度相差较大语句样本间的信息量,仅计算长度较大的语句样本,可以一定程度避免计算熵,降低计算的复杂度,其中允许比较的语句样本长度作为参数,通过数据优化,选择最大信息熵的语句样本。
[0080]
2、相似度阈值下限启发算法;对应步骤s32,具体为,
[0081]
利用原语句样本进行多次增量层次化聚类,计算聚类的数量和最大聚类中的语句样本数之和t,将其作为相似度阈值的目标值;选择最小目标值对应的相似度阈值作为最优相似度阈值下限;整个过程可视为对相似度阈值在1.0和0.5上的随机优化,优化目标函数为最小化t。该优化目标函数的意义是,假设对样本做相似度计算时,将计算过程转化为两层分类计算,第一层,大类别数(聚类的数量)等同于复杂度csup,第二层,大类别中的小类别数(聚类内样本数)等同于复杂度csub。将多分类转化为多个二分类(判别),判别次数最大为t,即最差情况为t次判别。计算公式为,
[0082][0083]
t(l)=c
sup
(l) c
sub
(l)
[0084]csup
(l)=|g
sup
(l)|,g
sup
(l)={g
1,l
,g
2,l


}
[0085]csub
(l)=maxφ((l,φ(l)={|g
1,l
,|g
2,l
|,

}
[0086][0087]
其中,l为相似度阈值下限;lowerbound*为最优相似度阈值下限,l*为lowerbound*的缩写;t为判别次数,即相似度阈值计算次数,选择最优相似度阈值下限是在0.5到1的实数区间上选择相似度阈值下限l以获取最小化t的优化过程;csup为大类数量,即聚类的数量;csub为类别中的最大样本数,即每个类别视为一个样本集合时,csub是其中最大的基数;sample size为总样本数;gsup(l)为聚类后的类别集合,g指其中的类别,g的数字角标为其在g中的索引,g
i,l
为在相似度阈值下限为l时计算所得;s.t.为优化时的限定条件,具体指样本规模等于所有聚类中样本规模之和;m为聚类中类别个数;m
l
*即在最优相
似度阈值下限时聚类中类别个数。
[0088]
层次化聚类的和非层次聚类的差异在于,初期并不清楚聚类的最佳数量,这与相似语句抽取的场景契合,即不清楚有几个不同含义的语句存在,所以给定相似度阈值就至关重要,而该算法并不直接给定单一的相似度阈值,而是以阈值下限,进行迭代选择阈值影响聚类(相似度阈值下限启发算法配合类模拟退火方法,阈值下限l可视为退火中的温度,随温度降低,迭代进行聚类),可以在不给定聚类数量和相似度阈值的前提下完成相似语句抽取。
[0089]
实施例二
[0090]
以句子“他通常不会拨打13800000000”为例,详细说明本发明方法的执行过程。
[0091]
首先对句子进行分词,并将其中的特定内容进行符号替换,比如,可能的分词结果为“他/通常/不会/拨打/13800000000”,符号替换为“他/通常/不会/拨打/n11”,如果存在业务规则(如电话号码正则表达式),符号也可替换为“他/通常/不会/拨打/phone11”,采用词计数模型,可将该句转换为向量(以稀疏向量表示),[1:1,12:1,23:1,34:1,45:1],冒号左侧数字代表特定词在语句样本中的索引,比如23代表“不会”在语句样本中的索引,45代表“n11”在语句样本中的索引,右侧数字代表词权重。
[0092]
所采用的条件近义词词典存在词条[通常,一般,0.9:x,不会],即在“不会”为后继词时,“通常”和“一般”为近义词,相似度为0.9。近义词拓展算法转换后向量[1:1,12:1,23:1,34:1,45:1,56:0.9],56代表“一般”,否定词“不会”产生遮蔽(mask)向量[1:0,12:0,23:0,34:1,45:0,56:0],冒号右侧1代表“不会”否定范围中包含“拨打”(索引34)。
[0093]
以句子a和b的相似度计算为例,对a和b进行加权向量内积计算,向量中的索引为内积中相乘的位置,比如a和b向量中分别有45:1和45:0.9分量,那么乘积为1*0.9=0.9,即索引相同进行内积分量相乘,1和0.9为该分量乘积权重。对于否定情况,比如a存在遮蔽向量,a和b分别采用遮蔽内的向量成分计算1次,遮蔽外的向量成分计算1次,如果遮蔽内的内积大于0且遮蔽外内积大于0,那么表示a和b在否定部分和非否定部分相同,但如果b没有遮蔽向量,a和b在否定部分含义相反,相似度为两者内积值以1的补值(1减内积值),如果b存在相同遮蔽向量,那么a和b在否定部分含义相同,相似度为两者内积值。上述向量化及近似度计算方法基于计数模型,对算力要求较低。
[0094]
以a、a*(与a相同)、b、c为例的增量层次化聚类,假定a和b、a和c、b和c的相似度分别为0.95、0.8、0.5,假定阈值下限为0.75,那么从1.0以0.05为步长递减阈值,第1轮阈值1.0,a和a*聚为1类,且a作为该类样品(代表)进入下一轮,此时聚类结果为[(a,a*),(b),(c)],第2轮阈值0.95,a和b聚为1类,此时聚类结果为[(a,a*,b),(c)],如果a比b信息量大,a作为样品进入后续聚类,否则b作为样品进入后续聚类,当a作为样品且阈值达到0.8时,a和c聚为1类,结果[(a,a*,b,c)],当b作为样品时,阈值在0.75停止,c不会和b聚为一类,结果[(a,a*,b),(c)],可以看到类别样品的选择影响聚类结果。聚类过程中的数据的逻辑结构为[a:1,a*:2,b:3,c:4],数字为类别标记,聚类始终将被聚入的项的类别标记置为样品标记,比如经过第1轮聚类后,[a:1,a*:1,b:3,c:4],第2轮后,[a:1,a*:1,b:1,c:4]。该过程只在样品上计算一次相似度,形成相似度矩阵,聚类即在相似度矩阵上按阈值进行划分,降低了对算力的要求。
[0095]
以a、a*、b、c、d...z为例的相似度阈值下限启发算法,先从样本中抽样,假设抽样
为a、a*、b、c、d,e在1.0和0.5间采用步长0.05设置下限值,进行多次增量层次化聚类,其中,当设定为0.8时,聚类结果为类别数2,最大类别成员数为3,当设定为0.7时,聚类结果为类别数1,最大类别成员数为6,前者进行多分类时折算为多次二分类(折算为二分类次数,是因为聚类结果除了进行描述性分析外,可以通过分层处理降低多分类或多标任务的复杂度),需要5次完成,后者则需要6次,因此选择0.8作为阈值下限。折算后的差异随样本规模增大而增大,阈值下限的选择对适应低算力非常关键。
[0096]
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
[0097]
本发明提供了一种适应低算力的大规模相似语句自动抽取方法,在相同算力(相同cpu计算服务器)和相同应用效果(实际业务场景下的用户反馈)下,本发明方法比对照方法(基于预训练深度模型)完成判别任务,耗时仅为后者的2%,内存占用基本相同。本发明方法在处理千万级语句时仅需要0.5g内存空间(峰值)。本发明方法不需要标注语料,不需要给定相似语句类别数量,也不需要给定相似度阈值,避免人工给定这些超参数以实现最大程度的自动化。
[0098]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献