具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
实施例一
图1为本申请实施例一提供的一种相似度计算方法的流程示意图,如图1所示,其包括:
S11、根据所有待处理对象对应的关键词向量,对所有待处理对象进行分组,同一组中的待处理对象至少具有部分相同的关键词。
本实施例中,待处理对象可以为文本数据、图像数据、语音数据、下述的类簇等,本实施例对此不进行限定。
本实施例中,对于不同类型的待处理对象,关键词的体现也会有所不同。例如,当待处理对象为文本数据时,关键词可以为文本中提取得到的文本关键词;当待处理对象为图像数据时,关键词可以为图像数据中的节点、灰度值等;当待处理对象为语音数据时,关键词可以为语音数据的音调关键词、语音数据转换得到的文本关键词等。
本实施例中,关键词向量是根据待处理对象中包括的关键词生成的向量,由于关键词向量与待处理对象一一对应,因此关键词向量可以用于从整体上表征对应的待处理对象;此外,关键词向量还可以用于表征对应的待处理对象中的关键词,从而可以直接根据关键词向量确定对应的待处理对象中的关键词,当然,关键词向量还可以用于表征对应的待处理对象的其他内容,本实施例对此不进行限定。
本实施例中,可以根据所有待处理对象的关键词以及预先设定的规则,确定每个待处理对象对应的关键词向量。
例如,可以根据所有待处理对象的关键词的总数量,确定关键词向量的维度数量,并按照预先设定的规则,建立关键词向量的维度与关键词一一映射关系,进而可以根据每个待处理对象的关键词以及所述映射关系,对关键词向量的各个维度进行赋值,确定每个待处理对象对应的赋值后的关键词向量。
进一步地,可以先按照预先设定的规则,建立关键词词典,所述关键词词典中包括关键词向量的维度与关键词一一映射关系,然后可以基于预设的关键词词典,以及每个所述待处理对象的关键词,确定出每个所述待处理对象对应的关键词向量。
本实施例中,预先设定的规则可以为预先设置关键词与维度的映射规则,从而可以根据映射规则直接确定关键词与维度的一一映射关系。
关键词词典是根据所有的待处理对象的全部关键词建立的词典。关键词词典中需要包括足够多的关键词数据,从而可以通过关键词词典确定与每个所述待处理对象对应的关键词向量。
在确定关键词向量时,可以先确定出待处理对象中的关键词,然后查找关键词词典,根据关键词词典中包括的映射关系,确定出待处理对象中的关键词对应的维度,然后对关键词向量的各个维度进行赋值,确定每个待处理对象对应的赋值后的关键词向量。具体确定关键词向量的方法详见下述实施例二,本实施例在此不再赘述。
当然,本实施例中,也可以通过其他方法确定关键词向量,例如关键词向量还可以为下述实施例中的中心词向量,本实施例对此不进行限定。
本实施例中,可以直接对关键词向量进行分析,确定至少具有部分相同的关键词的多个待处理对象。至少具有部分相同的关键词的待处理对象中可以包括关键词全部相同的待处理对象,本实施例对此不进行限定。
具体地,在确定至少具有部分相同的关键词的多个待处理对象后,可以将至少具有部分相同的关键词的多个待处理对象分为一组,以方便后续处理。具体地,可以将具有同一个关键词的多个待处理对象分为一组,从而减少了分组后得到的组数,进而减小了后续分别计算多组内的待处理对象间的相似度的计算量。
S12、计算同一组中不同待处理对象的关键词向量之间的相似度,以确定该组中不同待处理对象之间的相似度。
具体地,计算相似度时,可以直接根据待处理对象对应的关键词向量,直接计算得到余弦相似度,该相似度即计算的关键词向量对应的待处理对象间的相似度,当然,还可以通过其他方法计算相似度,本实施例对此不进行限定。
具体地,上述步骤中,由于通过将至少具有部分相同关键词的多个待处理对象分为一组,由此可以将所有的待处理对象分为多组,在计算相似度时,按照分组分别计算每组中的多个关键词向量间的相似度即可。
本实施例中,由于可以将至少具有部分相同关键词的多个待处理对象进行分组,而该多个待处理对象之间的相似度可能较高,而不具有相同关键词的待处理对象之间的相似度较低,则本实施例中,在执行上述步骤S12时,可以直接计算至少具有部分相同关键词的多个所述待处理对象之间的相似度,从而避免了两两计算所有的待处理对象的相似度,极大地减小了计算量。
另外,本申请实施例提供的相似度计算方法可以应用于任何需要计算相似度的场景中,例如其具体可以应用于智能问答系统。
智能问答系统中建立有包括问题和答案的语料库,则上述的待处理对象可以包括待搜索问题以及语料库中的问题,需要确定的相似度为同一组中的待搜索问题与语料库中的问题之间的相似度。
则本申请另一实施例还可以提供一种智能问答系统,其包括相似度确定模块,用于根据所有待处理对象对应的关键词向量,对所有待处理对象进行分组,同一组中的待处理对象至少具有部分相同的关键词,所述待处理对象包括待搜索问题以及语料库中的问题;计算同一组中不同待处理对象的关键词向量之间的相似度,以确定同一组中的待搜索问题与语料库中的问题之间的相似度。
具体地,待搜索问题可以为用户输入的问题,也可以为其他终端输入的问题;在对待搜索问题和语料库中的问题进行分组时,可以将不包括待搜索问题的分组删除,保留包括待搜索问题的分组,从而在计算待搜索问题和语料库中的问题之间的相似度时,减小计算量;确定待搜索问题与语料库中的问题之间的相似度后,可以根据相似度的高低确定与待搜索问题匹配的语料库中的问题,然后根据确定的问题召回语料库中对应的答案。若无法确定与某一个待搜索问题匹配的问题,则表示语料库中没有与该待搜索问题对应的答案。
实施例二
图2为本申请实施例二提供的一种确定关键词向量的方法流程示意图,本实施例以待处理对象为文本数据,对如何确定关键词向量进行举例说明,本实施例中,确定的关键词向量为待处理文本对应的文本词向量。如图2所示,其包括:
S21、抽取所有待处理文本中的关键词。
具体地,本实施例中,直接抽取待处理文本中的关键词的具体过程可以为:
A)先对待处理文本进行分词处理,并删除停用词,确定待处理文本中的候选关键词;
B)将提取到的候选关键词作为节点,构建无向图。
每一个待处理文本均可以对应一无向图。当待处理文本的两个候选关键词共同出现在长度为k的窗口中时,可以确定无向图中这两个候选关键词的节点之间存在边,这两个候选关键词每在窗口中出现一次,该条边的权重加一。
C)无向图构建完成后,即可根据无向图,从候选关键词确定待处理文本中的关键词。
此外,在相似度计算过程中,针对不断地有新的待处理文本的加入,若仅仅简单地抽取待处理文本中关键词,可能导致相似度计算程序的泛化能力较差,即其对新文本的处理能力较差。因此,本实施例中,如图2所示,还可以通过文本实体识别,提取出待处理文本中用于表征待处理文本的事件的实体词,并将实体词添加至关键词词典中。抽取实体词的具体方法如下:
1)预先基于实体词的特征构建实体词词典:
具体地,可以通过知识图谱确定某一个实体词的实体粒度的特征,还可以根据日志及大量的网页数据分析统计确定某一个实体词的词粒度的特征。然后可以以实体名称为key(存储关键词),将各个实体词的特征存入数据库中,形成实体词词典。
2)抽取待处理文本中的实体词:
对待处理文本进行分词处理,然后将分词后得到的词根据n-gram模型进行组合,构建成短语,进而可以利用别名匹配和combo算法扩大实体词的召回,召回后通过bloomfilter算法对召回的实体词进行过滤。
3)对实体词进行排序
通过实体词词典查询到词的词典特征,然后结合待处理文本的特征计算出实体词与待处理文本相关的特征,利用Gbrank算法根据相关特征对实体词进行排序。
4)进行实体对齐与消歧
对实体词进行排序后,我们可以将实体词对齐到具体的某个实体上,存在多个实体的时候可以对实体进行消歧,从而可以根据排序后的实体词确定用于表征待处理文本的事件的实体词。此外,还可以通过一些预设的规则对实体词的排序结果进行微调来提高准确率和召回率。
通过在关键词词典中增加实体词,使得当新文本对应的事件与已经抽取过的文本对应的事件相同时,可以准确地将其作为新的待处理文本进行处理,并且可以在确定新增的新鲜文本与其他待处理文本之间的相似度时提高准确率,从而可以提高本申请中相似度计算方案的泛化能力,其中,本实施例中,泛化能力为本申请中的相似度计算方案对新鲜样本的适应能力。
为了清楚地进行说明,下述将直接提取出来的关键词称为第一关键词,将通过文本实体识别提取出来的实体词称为第二关键词,两者均属于文本中的关键词。
S22、根据所有待处理对象的关键词的总数量,确定文本词向量的维度数量。
具体地,步骤S21中确定的关键词的总数量可以为n个,则,本实施例中,文本词向量的维度数量也为n。
S23、按照预先设定的规则,建立关键词词典,所述关键词词典中包括文本词向量的维度与关键词一一映射关系。
本实施例中,在确定关键词后,可以将在所有的待处理文本中出现频率极高或者极低的关键词过滤掉,从而在不影响相似度计算的前提下,实现关键词词典的清洗与过滤,进而减小关键词词典的大小。
具体地,关键词的出现频率指的是该关键词在在所有文章中被提取出来的次数。当然,关键词出现的频率的高低可以直接通过次数衡量,也可以通过关键词出现的次数在总次数中所占的比值衡量,本实施例对此不进行限定。
本实施例中,建立关键词词典时,需要确定文本词向量的维度与关键词一一映射关系。
具体地,关键词词典中每个关键词可以对应一个ID值,该ID值可以与文本词向量中的维度一一对应。例如,第一关键词1对应的ID为1,第一关键词2对应的ID为2……第二关键词1对应的ID为m,第二关键词2对应的ID为m+1……。
ID值可以直接指示文本词向量中对应的维度,例如,n维的文本词向量可以为(a1,a2……an-1,an),其中,ak表示文本词向量中第k维的值,k=1,2…n,ID值为1表示k=1,ID值为m表示k=m。
当然,关键词词典中可以仅包括关键词与ID值的映射关系,也可以包括其他映射关系,例如关键词与文本向量之间的映射关系等,本实施例对此不进行限定。
本实施例中,上述步骤S22和步骤S23的执行顺序不进行限定,只要关键词的总数量相同即可,即关键词词典中也包括n个关键词。
S24、基于关键词词典以及每个待处理对象的关键词,对文本词向量的各个维度进行赋值,以确定每个待处理对象对应的文本词向量。
下面以确定一个待处理文本的文本词向量为例,对文本词向量的确定进行举例说明。
具体地,关键词词典中可以包括n个关键词,n个关键词对应的ID值分别为1、2……n-1、n,对应的文本词向量的维度数量也为n。
在此基础上,可以预设一n维的文本词向量(a1,a2……an-1,an),其中,ak表示第k维的值,k=1,2…n,预设的文本词向量的各个维度的值可以均为0,即:ak=0,k=1,2…n,。
确定一个待处理文本的文本词向量时,可以先确定该待处理文本中,通过上述步骤S21提取出的关键词有哪些,然后基于所述关键词词典中的映射关系,确定每个所述待处理对象的关键词对应的维度;更改预设的文本词向量中所述维度对应的值,从而确定与所述待处理对象一一对应的所述文本词向量。若预设的文本词向量中各个维度的值均为0,在更改维度的值时,可以将维度的值改为1。
具体地,若文本词向量的维度数量为100,且根据关键词词典可以确定该待处理对象的关键词对应的维度为6、8、13、55,此时,可以将预设的文本词向量(a1,a2……an-1,an)中第a6、a8、a13、a55的值设置为1,其余为仍然为0。当然,在更改预设的文本词向量中所述维度对应的值时,还可以考虑关键词在该待处理文本中的权重等,从而将不同关键词对应的维度设置不同的值。
本实施例中,由于待处理文本中的关键词可能仅占所有关键词中的小部分,因此若预设的文本词向量中所有维度的值均为0,会使得确定的文本词向量中大部分的值为0,即确定的文本词向量为稀疏表示的文本词向量,通过稀疏表示的文本词向量计算相似度时,计算更加简单。
另外需要说明的是,通过上述方法确定文本词向量后,可以直接根据文本词向量中某一维度的值,确定对应的待处理文本中是否包括这一维度对应的关键词,进而可以直接根据文本词向量确定出具有部分相同的关键词的待处理文本,例如,若某一待处理文本对应的文本词向量中a6的值为1,则可以基于关键词词典中的映射关系,确定该待处理文本包括与文本词向量的第六维对应的关键词。
当然,实施例二仅以待处理对象为待处理文本,对关键词向量的确定方法进行举例说明,在本申请的其他实现方案中,关键词向量也可以通过其他方法确定,本实施例对此不进行限定。
实施例三
本实施例中,提供一种将上述实施例一中计算相似度的方法应用至文本的聚类以及去重的方案。
图3为本申请实施例三提供的一种聚类方法的流程示意图,首先需要说明的是,本实施例中,将所述待聚类文本与所述类簇作为待处理对象,并将所述中心词向量和所述文本词向量均作为关键词向量。如图3所示,其包括:
S31、根据待聚类文本的文本词向量,将多个所述待聚类文本归为多个类簇,每个类簇中的所述待聚类文本具有至少部分相同的关键词。
本实施例中,确定待聚类文本的关键词的以及确定文本词向量的方法与上述实施例二相同,本实施例在此不再赘述。
本实施例中,确定文本词向量后,可以根据文本词向量确定对应的待聚类文本中的关键词,进而可以根据关键词将多个待聚类文本归为多个类簇。
通常,相似的两个待聚类文本之间至少有1个关键词,则本实施例中,可以根据所述文本词向量,将具有同一关键词的所述待聚类文本归为一个类簇,以得到多个类簇。
与将具有多个相同关键词的所述待聚类文本归为一个类簇后得到多个类簇的数量相比,仅将具有同一关键词的所述待聚类文本归为一个类簇得到的类簇的数量较少,从而减小后续的计算量。
具体地,若关键词有n个,则若仅将具有同一关键词的所述待聚类文本归为一个类簇,得到的类簇最多有n个,若将具有两个相同的关键词的所述待聚类文本归为一个类簇,则得到的类簇最多可以为
若将具有三个相同关键词的待聚类文本归为一个类簇,得到的类簇的最大数量还会成倍增加。比较可知,具有同一关键词的所述待聚类文本归为一个类簇后的类簇数量远远小于将具有多个相同关键词的所述待聚类文本归为一个类簇后得到的类簇的数量。
具体地,由于在上述实施例中,文本词向量是基于关键词与文本词向量的维度一一映射关系确定的,则将具有同一个相同关键词的所述待聚类文本归为一个类簇时,可以先基于映射关系,确定该同一个关键词的维度,然后确定文本词向量中该同一个关键词对应的维度的数值是否为0,若不为0,则可以将文本词向量归入该同一个关键词对应的类簇中。
可选地,本实施例中,在确定多个类簇后,可以根据预设条件,过滤确定的多个所述类簇,从而减小类簇的数量,进而减小后续步骤中的计算量。
具体地,过滤多个类簇的预设条件可以包括:所述类簇中相似的所述待聚类文本所占的比例大于第一阈值;或者,所述类簇中包括的所述待聚类文本在所述待聚类文本总量中所占的比例处于预设范围之外。
具体地,本实施例中,可以先计算类簇内的待聚类文本对应的文本词向量之间的相似度,从而确定类簇内待聚类文本之间的相似度,当所述类簇中相似的所述待聚类文本所占的比例大于第一阈值时,可以确定该类簇中的相似的待聚类文本较多,此时可以确定该类簇可能直接属于另一较大类簇等,进而导致该类簇在聚类时贡献较低。因此,本实施例中,可以将相似的待聚类文本较多的类簇过滤掉。
本实施例中,若所述类簇中包括的所述待聚类文本在所述待聚类文本总量中所占的比例处于预设范围之外,则表示该类簇中包括的待聚类文本极多或者极少。若类簇中包括的待聚类文本较多,例如包括所有的待聚类文本中70%的待聚类文本,此时可以确定该类簇在聚类时的贡献较低,同时,为了减少计算量,可以将该类簇过滤掉。若类簇中包括的待聚类文本较少,例如包括所有的待聚类文本中0.07%的待聚类文本,此时也可以确定该类簇在聚类时的贡献较低,可以将该类簇过滤掉。
同时,由于每个待聚类文本中包括多个关键词,仅过滤掉一部分类簇时,过滤掉的类簇中的待聚类文本,仍然会因为待聚类文本中其他的关键词被归至其他类簇中。因此,过滤掉部分类簇后不会导致遗漏较多的待聚类文本,从而保证了聚类的准确性。
S32、确定所述类簇对应的中心词向量,将所述待聚类文本与所述类簇作为待处理对象,并将所述中心词向量和所述文本词向量均作为关键词向量,以通过如上述实施例一所述的方法确定所述待聚类文本与所述类簇之间的相似度。
本实施例中,可以对所述类簇中所有所述待聚类文本的所述文本词向量加权平均,确定所述中心词向量。
具体地,假设某一类簇中包括i个待聚类文本,i为正整数,每个待聚类文本的文本词向量有n维,n为正整数,则该类簇内的所有待聚类文本对应的文本词向量可为:
(a1,1,a1,2……a1,n-1,a1,n),(a2,1,a2,2……a2,n-1,a2,n)…(ai,1,ai,2……ai,n-1,ai,n)。
在计算该类簇的中心词向量时,可以对所述类簇中所有所述待聚类文本的所述词向量的各个维度的值进行加权平均,以确定所述中心词向量中对应维度的值。
具体地,确定的中心词向量可以为(b
1,…b
n-1,b
n),其中,
其中,k为正整数,b
k为中心词向量中第k维的值,k=1,2…n,a
j,k为第j个待聚类文本的第k维的值,i为该类簇中的待聚类文本的个数。
本实施例中,类簇的中心词向量可以用于表征该类簇中所有的待聚类文本中的关键词及关键词的权重。当某一个类簇的中心词向量中某个维度的值不为0时,即可根据关键词与维度之间的一一映射关系,确定该类簇包括该维度对应的关键词,维度的值可以表示该关键词在该类簇中所占的权重。
在确定完中心词向量后,即可以根据所述类簇的中心词向量以及所述文本词向量,根据实施例一提供的相似度计算方法,确定文本词向量与中心词向量之间的相似度。
此外,若根据类簇的中心词向量以及所述文本词向量进行分组后,得到的某一组中不包括中心词向量,则可以直接将改组丢弃。
具体地,可以根据类簇的中心词向量以及待聚类文本的文本词向量,将类簇以及待聚类文本分为多组,每组中的类簇以及待聚类文本具有同一关键词,然后计算每一组中的待聚类文本的文本词向量与类簇的中心词向量之间的相似度,从而可以减小计算难度,且多个组可以并行进行计算,提高了计算效率。
具体计算时,可以将同一组中的类簇的中心词向量以及待聚类文本的文本词向量组合为pair对数据,每一个pair对数据中均包括一个中心词向量以及一个文本词向量,组合完成后,可以直接计算pair对中两个向量间的相似度。
可选地,本实施例中,在确定中心词向量后,还可以计算多个中心词向量之间的相似度,以确定多个类簇之间的相似度,并合并相似度大于第二阈值的所述类簇,从而减少类簇的数量,进而提高计算速度。计算多个类簇之间的相似度的方法可以与上述实施例一类似。合并后,需要重新计算合并后的所述类簇的中心词向量。
具体地,在计算多个类簇间的相似度时,可以根据类簇的中心词向量,将具有同一关键词的类簇分为一组,然后将组内的类簇的中心词向量两两之间组合为一个pair对数据,组合完成后,可以直接计算pair对中两个向量间的相似度,根据计算结果确定是否将两个类簇合并为一个类簇。
S33、根据相似度的计算结果更新所述多个类簇中的所述待聚类文本,以完成待聚类文本的聚类。
本实施例中,确定相似度后,当某一待聚类文本的文本词向量与某一类簇的中心词向量间的相似度较高时,可以将待聚类文本归入该类簇中,以更新类簇中的待聚类文本。
具体地,在计算完成后,可以比较一个待聚类文本的文本词向量与对应的多个类簇的中心词向量之间的相似度,然后将该待聚类文本归入相似度最高的类簇中。
本实施例中,步骤S32、S33可以多次执行,多次执行时,即每次更新类簇中的待聚类文本之后,重新计算类簇的中心词向量,然后根据重新计算后的中心词向量以及待聚类文本的文本词向量,重新更新类簇中的待聚类文本。
可选地,多次执行步骤S32、S33时,可以在重新计算类簇的中心词向量后,再次根据中心词向量确定所述多个类簇间的相似度,合并相似度大于第二阈值的所述类簇,并重新计算合并后的所述类簇的中心词向量,本实施例对此不进行限定。
本实施例中,多次执行步骤S32、S33时,若当前确定的类簇的中心词向量与前一次执行步骤S32、S33确定的中心词向量相同或相似度极高,则可以停止重复执行步骤S32、S33,并确定初步聚类完成。
当然,初步聚类完成之后,同样可以再次根据中心词向量确定所述多个类簇间的相似度,合并相似度大于第二阈值的所述类簇,并重新计算合并后的所述类簇的中心词向量。
可选地,由于在聚类过程中可能过滤掉了部分类簇,导致初步聚类的过程中可能遗漏了少量的待聚类文本,则在初步聚类完成后,可以进行补充召回计算。补充召回计算即根据未被聚类的所述待聚类文本的文本词向量以及所述类簇的中心词向量,确定未被聚类的所述待聚类文本以及所述类簇间的相似度,以根据所述相似度计算结果将未被聚类的所述待聚类文本补入所述类簇中。
本实施例提供的聚类算法,可以根据待聚类文本的文本词向量,将多个所述待聚类文本归为多个类簇,每个类簇中的所述待聚类文本具有至少部分相同的关键词;根据所述类簇的中心词向量以及所述文本词向量,通过如上所述的方法确定所述待聚类文本的文本词向量与所述类簇的中心词向量之间的相似度;根据相似度的计算结果更新所述多个类簇中的所述待聚类文本,从而极大地减小了计算的复杂度,且减小了计算量。
本申请实施例提供的聚类方法可以应用于任何需要聚类的场景中,例如其具体可以应用于智能问答系统。
智能问答系统中具有包括问题和答案的语料库,则待聚类文本具体可以为语料库中的答案,并可以通过上述的聚类方法对语料库中的答案进行聚类,在召回答案时,可以直接召回聚类后的一个类簇中的答案。
本申请另一实施例中,在上述聚类的基础上,还包括:确定聚类后的所述类簇中的所述聚类后文本的文本词向量间的相似度,以对所述聚类后文本进行去重。
具体地,现有的文本去重方法包括以下四种:
1)计算每个文本的全文指纹(即全文hash值),在进行去重时,两两比较全文指纹,全文指纹相同即两个文本相同。
2)计算文本的段落或句子的simhash值,通过比对各个文本的simhash值,确定两个文本之间的相似度,进而确定重复文本。
3)提取文章的去重特征,如:段落和句子的Simhash,文章关键词,图片指纹等,基于这些去重特征构建索引,通过在索引中检索的确定重复文本。
4)提取文章的去重特征,构建文章的去重特征向量,通过K-means聚类的方式发现重复文章。
上述去重方法中,第一种去重方法仅能比对全文严格相似的文本,在一定程度上进行增删改就会导致全文指纹失效。第二种去重方法通过依次比对文章各Simhash的方法,需要全量比较,计算需求较大,同时Simhash的可比性也受制于文章结构的稳定性,一旦文章分段发生变化,段落Simhash的相似度比较就会失效。第三种去重方法中,构建文章去重索引虽然适合于信息流模式,但是在搜索feed(反馈)的业务场景中存在性能瓶颈,且无法给出稳定的重复文章类簇。第四种去重方法是基于去重特征的聚类方法,其受制于现有的聚类算法的性能,在计算时大多基于去重特征,直接计算两两数据之间的相似度,无法实现高时效性的大规模文本聚类。
而本实施例中,在上述聚类的基础上进行文本去重,可以极大地减小了聚类算法的计算复杂度,并减小了计算量,进而实现了高时效性的大规模文本聚类。
具体地,在聚类后,重复的文本被聚类至同一类簇中,则在去重时,可以直接计算一个类簇中具有相同关键词的文本,从而对文本进行去重。
在具体使用时,例如,在Spark计算平台上执行上述聚类以及去重方法,可以在4小时内完成亿级待聚类文本的聚类以及去重,且聚类结果准确度极高,去重后进行召回时,召回率也较高。
实施例四
上述实施例描述的是对一个具有多个待聚类文本的固定集合进行聚类的过程,但是在实际使用时,获得待聚类文本的过程可能是连续的,即可能会在一定时间内获得部分待聚类文本,然后间隔一段时间后,获得增加的待聚类文本。当获得增加的待聚类文本时,本实施例中,对已经获得的待聚类文本进行聚类后,还可以包括:确定增加的待聚类文本,计算所述增加的待聚类文本的文本词向量与聚类确定的所述类簇的中心词向量之间的相似度;根据相似度计算结果,确定是否将增加的待聚类文本合并至所述类簇中,以对增加的待聚类文本进行聚类。
与获得增加的待聚类文本后,重新聚类所有的待聚类文本相比,本实施例中,通过在聚类后获得的类簇的基础上,对增加的待聚类文本进行聚类,可以减小计算量,同时保证类簇的稳定。下面通过图4对本实施例进行具体说明,图4以第一预设时间以及第二预设时间为例,对增加的待聚类文本的处理方法进行详细说明。同时,下述实施例中的第一类簇以及第二类簇等仅为了更加清楚地说明聚类的过程,其并不作为本申请的限定。
图4为本申请实施例四提供一种聚类方法流程示意图,如图4所示,其包括:
S41、通过如实施例三所述的方法,聚类第一预设时间内的所述待聚类文本,得到第一类簇。
本实施例中,步骤S41中聚类的方法与上述实施例三相同,在此不再赘述。
S42、根据所述第一类簇,确定第二预设时间内增加的所述待聚类文本。
本实施例中第一预设时间以及第二预设时间可以通过滑动时间窗口实现,具体地,滑动时间窗口内的时间可以为15分钟,滑动时间窗口的待聚类文本即为这15分钟抓取的待聚类文本,滑动时间窗口滑动时,例如滑动时间窗口的起始时间与结束时间同时增加1分钟,则滑动时间窗口内会存在部分新增加的待聚类文本。
当然,本实施例中,第一预设时间以及第二预设时间仅用于区分不同时间内获得的不同的待聚类文本,其还可以有其他形式,本实施例对此不进行限定。
S43、计算增加的所述待聚类文本的文本词向量与所述第一类簇的中心词向量间的相似度,根据所述相似度计算结果确定是否将增加的所述待聚类文本合并至所述第一类簇中。
本实施例中,在计算相似度时,可以根据上述实施例一中的方法计算相似度;也可以根据上述实施例三的方法先对增加的待聚类文本进行聚类得到第二类簇,然后计算第二类簇的中心词向量与第一类簇的中心词向量间的相似度;或者先根据上述实施例一中的方法计算相似度,从而将增加的所述待聚类文本中的一部分合并至所述第一类簇中,然后根据上述实施例三的方法,聚类剩余的另一部分待聚类文本得到第二类簇,然后再计算第二类簇的中心词向量与第一类簇的中心词向量间的相似度,本实施例在此不再赘述。
当然,若确定增加的待聚类文本无法合并至第一类簇中,也可以根据无法合并至第一类簇中的待聚类文本重新确定新的类簇,本实施例对此不进行限定。
另外需要说明的是,提取增加的待聚类文本中的关键词后,还可能得到新增的关键词,对应的,确定第一类簇之后,可以根据关键词词典中的映射关系以及类簇的中心词向量,重新确定类簇对应的关键词;然后根据增加的待聚类文本中的关键词以及多个第一类簇的关键词,重新建立关键词词典以确定新的映射关系,然后根据新的映射关系重新确定待聚类数据的文本词向量以及第一类簇的中心词向量。
通过本实施例的聚类方法,可以将增加的数据直接与第一类簇进行合并,保证了随着时间的变化,获得的相似的文章始终被归入同一个类簇中,保证了该类簇的稳定性,同时使得多个时间内获得的聚类可以进行比较汇总。在应用时,可以将每类簇设置对应的文章ID,则通过上述方法还可以保证类簇的文章ID的稳定性。
实施例五
上述提取关键词时,提取得到的关键词包括通过TextRank算法提取得到的第一关键词,以及通过文字实体识别提取到的实体词(下称第二关键词),所述实体词用于表征所述待聚类文本对应的事件。因此,本实施例还可以提供一种基于实体词的事件级聚类方法。
图5为本申请实施例五提供一种事件级聚类的方法流程图,本实施例中提供的聚类方法是在上述实施例三或者实施例四的基础上再次进行聚类的方法,如图5所示,其包括:
S51、在更新后的所述多个类簇的中心词向量中,增加所述实体词(即下述第二关键词)对应的维度的值的权重。
可选地,本步骤具体可以为:确定所有的第二关键词,并确定每个第二关键词对应的维度以及每个第二关键词对应的权重值,第二关键词对应的权重值大于1以实现增加权重。在中心词向量中,将第二关键词对应的维度的值与对应的第二关键词的权重相乘,以增加权重。
本实施例的另一实现方式中,还可以通过减小第二关键词之外的关键词的权重来间接增加第二关键词的权重,减小权重时,权重值小于1。
当然,上述增加第二关键词的权重、减小第二关键词之外的关键词的权重两种实现方式可以同时使用,也可以仅使用一种,本实施例对此不进行限定。
S52、根据增加权重后的中心词向量,对所述多个类簇进行事件主题粒度级聚类。
由于第二关键词(即实体词)用于表征所述待聚类文本对应的事件,则在增加第二关键词的权重后,即可进行事件主题粒度级的聚类。
本实施例中,具体对类簇进行事件主题粒度级聚类的方法与上述实施例三中对待聚类文本进行聚类的方法类似,本实施例对此不再赘述。
本实施例中,通过增加关键词中实体词的权重,使得其在聚类时的权重较高,进而使得对类簇进行再次聚类后,得到的每个聚类即可对应一个事件。在应用时,可以将每个事件主题粒度级的类簇设置事件ID,还可以通过事件主题粒度级聚类,将所有的待聚类文本按照事件打散,然后重新按照需求进行排列并推送。
另外需要说明的是,上述的多个实施例也可以结合使用,本实施例对此不进行限定。例如通过实施例四对待聚类文本进行聚类后得到多个类簇,再通过实施例五对聚类后的类簇进行事件主题粒度级的聚类。
图6为本申请实施例六提供的一种相似度计算装置的结构示意图,如图6所示,其包括:
第一程序单元601,用于根据所有待处理对象对应的关键词向量,对所有待处理对象进行分组,同一组中的待处理对象至少具有部分相同的关键词;
第二程序单元602,用于计算同一组中不同待处理对象的关键词向量之间的相似度,以确定组中不同待处理对象之间的相似度。
可选地,本实施例中,所述词向量为稀疏词向量。
可选地,本实施例中,还包括:预设程序单元,用于根据所有待处理对象的关键词以及预先设定的规则,确定每个待处理对象对应的关键词向量。
可选地,本实施例中,所述预设程序单元具体用于根据所有待处理对象的关键词的总数量,确定关键词向量的维度数量,并按照预先设定的规则,建立关键词向量的维度与关键词一一映射关系,以确定每个待处理对象对应的关键词向量。
可选地,本实施例中,所述按照预先设定的规则,建立关键词向量的维度与关键词一一映射关系,以确定每个待处理对象对应的关键词向量包括:
按照预先设定的规则,建立关键词词典,所述关键词词典包括关键词向量的维度与关键词一一映射关系,以确定每个待处理对象对应的关键词向量。
可选地,本实施例中,所述根据所有待处理对象的关键词的总数量,确定关键词向量的维度数量包括:
所有待处理对象的关键词的总数量与关键词向量的维度数量相等。
可选地,本实施例中,所述根据所有待处理对象的关键词以及预先设定的规则,确定每个待处理对象对应的关键词向量包括:根据每个待处理对象的关键词以及所述映射关系,对关键词向量的各个维度进行赋值,确定每个待处理对象对应的赋值后的关键词向量。
可选地,本实施例中,所述待处理对象包括待搜索问题以及语料库中的问题,确定的相似度为同一组中的待搜索问题与语料库中的问题之间的相似度。
图7为本申请实施例七提供一种聚类装置的结构示意图,如图7所示,其包括:
第三程序单元701,用于根据所有待聚类文本对应的文本词向量,将所有所述待聚类文本归为多个类簇,每个类簇中的所述待聚类文本具有至少部分相同的关键词;
第四程序单元702,用于确定所述类簇对应的中心词向量,将所述待聚类文本与所述类簇作为待处理对象,并将所述中心词向量和所述文本词向量均作为关键词向量,以通过如权利要求1-7任一项所述的方法确定所述待聚类文本与所述类簇之间的相似度;
第五程序单元703,用于根据相似度的计算结果更新所述类簇中的所述待聚类文本,以完成待聚类文本的聚类。
可选地,本实施例中,所述每个类簇中的所述待聚类文本具有至少部分相同的关键词包括:每个类簇中的所述待聚类文本均具有一个相同的关键词。
可选地,本实施例中,还包括:第六程序单元,用于根据预设条件,过滤确定的多个所述类簇。
可选地,本实施例中,所述预设条件包括:
所述类簇中相似的所述待聚类文本所占的比例大于第一阈值;
或者,所述类簇中包括的所述待聚类文本在所述待聚类文本总量中所占的比例处于预设范围之外。
可选地,本实施例中,还包括:第七程序单元,用于确定所述多个类簇间的相似度,合并相似度大于第二阈值的所述类簇,并重新计算合并后的所述类簇的中心词向量。
可选地,本实施例中,对所述类簇中所有所述待聚类文本的所述词向量的各个维度的值进行加权平均,以确定所述中心词向量中对应维度的值。
可选地,本实施例中,还包括:第八程序单元,用于根据未被聚类的所述待聚类文本的文本词向量以及所述类簇的中心词向量,确定未被聚类的所述待聚类文本以及所述类簇间的相似度;根据所述相似度计算结果将未被聚类的所述待聚类文本补入所述类簇中。
可选地,本实施例中,还包括:第九程序单元,用于确定聚类后的所述类簇中的文本间的相似度,以对文本进行去重。
可选地,本实施例中,所述关键词包括实体词,所述实体词用于表征所述待聚类文本对应的事件。
可选地,本实施例中,还包括:第十程序单元,用于在更新后的所述多个类簇的中心词向量中,增加所述实体词对应的维度的值的权重;根据增加权重后的中心词向量,对所述多个类簇进行事件主题粒度级聚类。本申请另一实施例还提供一种存储介质,其上存储有计算机可执行指令,所述计算机可执行指令在被处理器处理时执行如下步骤:
根据所有待处理对象对应的关键词向量,对所有待处理对象进行分组,同一组中的待处理对象至少具有部分相同的关键词;
根据同一组中待处理对象的关键词向量,计算该组中不同待处理对象之间的相似度。
可选地,本实施例中,所述词向量为稀疏词向量。
可选地,本实施例中,还包括:根据所有待处理对象的关键词以及预先设定的规则,确定每个待处理对象对应的关键词向量。
可选地,本实施例中,所述根据所有待处理对象的关键词以及预先设定的规则,确定每个待处理对象对应的关键词向量包括:根据所有待处理对象的关键词的总数量,确定关键词向量的维度数量,并按照预先设定的规则,建立关键词向量的维度与关键词一一映射关系,以确定每个待处理对象对应的关键词向量。
可选地,本实施例中,所述按照预先设定的规则,建立关键词向量的维度与关键词一一映射关系,以确定每个待处理对象对应的关键词向量包括:按照预先设定的规则,建立关键词词典,所述关键词词典包括关键词向量的维度与关键词一一映射关系,以确定每个待处理对象对应的关键词向量。
可选地,本实施例中,所述根据所有待处理对象的关键词的总数量,确定关键词向量的维度数量包括:所有待处理对象的关键词的总数量与关键词向量的维度数量相等。
可选地,本实施例中,所述根据所有待处理对象的关键词以及预先设定的规则,确定每个待处理对象对应的关键词向量包括:根据每个待处理对象的关键词以及所述映射关系,对关键词向量的各个维度进行赋值,确定每个待处理对象对应的赋值后的关键词向量。
可选地,本实施例中,所述待处理对象包括待搜索问题以及语料库中的问题,确定的相似度为同一组中的待搜索问题与语料库中的问题之间的相似度。
本申请另一实施例还提供一种存储介质,其上存储有计算机可执行指令,所述计算机可执行指令在被处理器处理时执行如下步骤:
根据所有待聚类文本对应的文本词向量,将所有所述待聚类文本归为多个类簇,每个类簇中的所述待聚类文本具有至少部分相同的关键词;
确定所述类簇对应的中心词向量,将所述待聚类文本与所述类簇作为待处理对象,并将所述中心词向量和所述文本词向量均作为关键词向量,以通过如上所述的方法确定所述待聚类文本与所述类簇之间的相似度;
根据相似度的计算结果更新所述类簇中的所述待聚类文本,以完成待聚类文本的聚类。
可选地,本实施例中,所述每个类簇中的所述待聚类文本具有至少部分相同的关键词包括:每个类簇中的所述待聚类文本均具有一个相同的关键词。
可选地,本实施例中,还包括:根据预设条件,过滤确定的多个所述类簇。
可选地,本实施例中,所述预设条件包括:所述类簇中相似的所述待聚类文本所占的比例大于第一阈值;或者,所述类簇中包括的所述待聚类文本在所述待聚类文本总量中所占的比例处于预设范围之外。
可选地,本实施例中,还包括:确定所述多个类簇间的相似度,合并相似度大于第二阈值的所述类簇,并重新计算合并后的所述类簇的中心词向量。
可选地,本实施例中,对所述类簇中所有所述待聚类文本的所述词向量的各个维度的值进行加权平均,以确定所述中心词向量中对应维度的值。
可选地,本实施例中,还包括:根据未被聚类的所述待聚类文本的文本词向量以及所述类簇的中心词向量,确定未被聚类的所述待聚类文本以及所述类簇间的相似度;根据所述相似度计算结果将未被聚类的所述待聚类文本补入所述类簇中。
可选地,本实施例中,还包括:确定聚类后的所述类簇中的文本间的相似度,以对文本进行去重。
可选地,本实施例中,所述关键词包括实体词,所述实体词用于表征所述待聚类文本对应的事件。
可选地,本实施例中,还包括:在更新后的所述多个类簇的中心词向量中,增加所述实体词对应的维度的值的权重;根据增加权重后的中心词向量,对所述多个类簇进行事件主题粒度级聚类。
可选地,本实施例中,还包括:确定增加的待聚类文本,计算所述增加的待聚类文本与聚类确定的所述类簇之间的相似度;根据相似度计算结果,确定是否将增加的待聚类文本合并至所述类簇中,以对增加的待聚类文本进行聚类。
可选地,本实施例中,所述待聚类文本包括智能问答系统的语料库中的答案。
本申请另一实施例还提供一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的方法。
图8为本申请执行上述方法的一些电子设备的硬件结构示意图。根据图8所示,该设备包括:
一个或多个处理器81以及存储器82,图8中以一个处理器81为例。
执行上述方法的设备还可以包括:输入装置83和输出装置84。
处理器81、存储器82、输入装置83和输出装置84可以通过总线或者其他方式连接,图8中以通过总线连接为例。
存储器82作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的上述方法对应的程序指令/模块。处理器81通过运行存储在存储器82中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中上述方法。
存储器82可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储计算相似度时所创建的数据等。此外,存储器82可以包括高速随机存取存储器82,还可以包括非易失性存储器82,例如至少一个磁盘存储器82件、闪存器件、或其他非易失性固态存储器82件。在一些实施例中,存储器82可选包括相对于处理器81远程设置的存储器82,这些远程存储器82可以通过网络连接至客户端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置83可接收输入的数字或字符信息,以及产生与客户端的用户设置以及功能控制有关的键信号输入。输入装置83可包括按压模组等设备。
所述一个或者多个模块存储在所述存储器82中,当被所述一个或者多个处理器81执行时,执行上述任意方法实施例中的上述方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器71、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,所述计算机可读记录介质包括用于以计算机(例如计算机)可读的形式存储或传送信息的任何机制。例如,机器可读介质包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储介质、电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)等,该计算机软件产品包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
本领域的技术人员应明白,本申请实施例的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应说明的是:以上实施例仅用以说明本申请实施例的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。