一种快速的短文本双聚类方法转让专利

申请号 : CN201310133656.6

文献号 : CN103177125B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 符建辉刘亮亮王石王卫民

申请人 : 镇江诺尼基智能技术有限公司

摘要 :

一种快速的短文本双聚类方法,包括以下步骤:1)短文本干扰项的预处理,在无关语词典和词类词典的支持下,对短文本进行快速进行的无关语和词类识别和处理识别;2)计算预处理后的两个短文本相似度,形成在短文本相似度稀疏矩阵;3)在短文本相似度稀疏矩阵上进行短文本一级聚类,根据短文本相似度的结算结果,将相似的短文本划分成一个一个的簇;4)在一级聚类结果基础上进行短文本二级聚类。

权利要求 :

1.一种快速的短文本双聚类方法,其特征在于:包括以下步骤:步骤1)短文本干扰项的预处理,在无关语词典和词类词典的支持下,对短文本进行快速的无关语和词类识别和处理;

步骤2)计算预处理后的两个短文本相似度,形成短文本相似度稀疏矩阵;

步骤3)在短文本相似度稀疏矩阵上进行短文本一级聚类,根据短文本相似度的计算结果,将相似的短文本划分成一个一个的簇;

步骤4)在一级聚类结果基础上进行短文本二级聚类;

所述的步骤2)包括计算短文本相似度的方法:对两个短文本Si和Sj,它们的相似度计算方法为:|Si|和|Sj|分别表示为Si和Sj的长度m和n,对应的k-gram序列分别为:S”i={w[i,1]..w[i,k],w[i,2]…w[i,k+1],…,w[i,a]…w[i,k+a-1],…,w[i,m-k+

1]…w[i,m]},

S”j={w[j,1]..w[j,k],w[j,2]…w[j,k+1],…,w[j,b]…w[j,k+b-1],…,w[j,n-k+

1]…w[j,n]}。

计算Si和Sj的位置同元相似度的方法如下:

其中两个集合的交集中共有h个元素;我们用w[i,a1]…w[i,k+a1-1]=w[j,b1]…w[j,k+b1-1]表示交集中的两个元素分别来自于S”i和S”j中的哪两个元素。

2.根据权利要求1所述的一种快速的短文本双聚类方法,其特征在于:所述的步骤1包括意码构造方法:对任意一个词类WC,利用随机函数产生随机数,产生nSC个大于0小于

10000的随机正整数,设为C1、…、CnSC,取出《汉语字典》中的第C1个、…、第CnSC个汉字,分别为H1、…、HnSC,则词类WC的意码为汉字串H1…HnSC,nSC为构造的意码的长度。

3.根据权利要求1所述的一种快速的短文本双聚类方法,其特征在于:所述的步骤3)包括以下步骤:步骤31)在计算短文本相似度过程中,将短文本相似度小于某个阈值α的点排除掉,构造短文本相似度稀疏矩阵;

步骤32)在短文本相似度稀疏矩阵中,寻找相似度最大的且大于聚类阈值β的一对点V1与V2,如果找不到,则终止聚类,输出一级聚类结果,转步骤41)进行二级聚类;

步骤33)将V1和V2看成一个新簇,重新计算它与其它点的相似度并更新相似度矩阵,fSimRow、fSimCol为两个相似性度量,fSimRow对应着V1与其它点的相似性,fSimCol对应V2与其它点的相似性,计算方法如下:步骤34)将这两个点V“1 行号为nRowIndex”与V“2 列号为nColIndex”合并为一个新簇NewCluster,将m_cluster[nColIndex]中的点并入到m_cluster[nRowIndex]中,并清空簇m_cluster[nColIndex]中的点。

4.根据权利要求1所述的一种快速的短文本双聚类方法,其特征在于:所述的步骤4)包括以下步骤:步骤41)将包含分句的短文本S按逗号、句号、问号、叹号进行切分,形成若干分句Pi;

步骤42)计算每个分句Pi和簇Cluster的相似度,计算方法如下:步骤43)通过步骤42)计算短文本S中的每个分句Pi与簇Cluster的相似度CSim(Pi,Cluster)后,通过以下方法求短文本S与簇Cluster的相似度:步骤44)利用步骤43)得到的相似度重新构造相似度稀疏矩阵,调用一级聚类方法中的步骤31)至步骤33)聚类算法进行二级聚类。

说明书 :

一种快速的短文本双聚类方法

技术领域

[0001] 本发明涉及人工智能计算机领域中的自然语言处理,特别涉及利用自然语言处理和数据聚类实现一种快速的短文本双聚类方法及其实现。

背景技术

[0002] 在大量的自然语言应用中,有一个基本的而又共同的问题:对由一个由短文本构成的语料集(以下简称短文本语料集或语料集),如何将其中的短文本按照某种相似度聚集成不同的类。
[0003] 一般而论,文本聚类的基本思想是将“相似”的文本聚成一个类;在该类中,文本之间的“差异”较小。而不“相似”的文本聚成另一些类。不同类之间的“差距”较大。这里,“相似”/“差距”是一些文本之间的度量,根据不同的应用需求而定。传统的聚类方法较多,包括K近邻方法、层次聚类法等。
[0004] 在短文本聚类中,常遇到几个难题需要解决:
[0005] (1)语义干扰问题。由于自然语言具有高度的灵活性,因此短文本中通常包含了很多的与短文本要表达的本质含义无关的词语,我们称为无关语。更具体地说,从短文本中去除这些无关语,短文本的本质含义没有变化。例如,在短文本“帮我查一下我的话费”中,“帮我”就是一个无关语。为了提高短文本聚类精度,需要对这些无关语进行清除。另一种干扰是词类干扰。短文本语料库中有大量的意义相近,但是词性不同的词语,它们的存在会影响到聚类的精度。如何规范化短文本中意义相同但词形不同的词语?当然,在实践中还存在大量的符号干扰问题,如英文字母大小写问题、全角/半角问题、简体/繁体问题等。
[0006] (2)短文本相似度的精确计算问题。相似度计算往往与应用需求相关。如何根据一个具体的应用需求,准确地设计相似度计算方法是聚类中的关键问题之一。目前,虽然有多种相似度算法(如欧氏距离法、cos距离法、Pearson系数法、VDM法等),但是根据我们的研究发现,它们均存在缺陷,在实际应用中,效果不好。
[0007] (3)短文本的快速而又准确的聚类问题。传统的单一聚类(如K近邻方法、层次聚类法等)难以实现精确的聚类,在面对开放的语料时,聚类精度一般都很低,达不到实际应用的需求。而且,当短文本的长度稍高时,聚类精度更低。

发明内容

[0008] 所要解决的技术问题:针对以下三个问题,本发明提供了一种精确性高、实用强、适应于大数据处理的的快速的短文本双聚类方法。
[0009] 技术问题1:符号/语义干扰问题。语义干扰主要有两种:无关语干扰、词类干扰,即如何在不改变短文本含义的前提下,去除短文本中的无关语,以提高聚类精度?如何规范化短文本中意义相同但词形不同的词语?
[0010] 技术问题2:短文本相似度的精确计算问题,即如何根据短文本聚类需要,设计出一种有效的短文本相似度计算方法?
[0011] 技术问题3:短文本快速而又准确的聚类问题,即如何既保证聚类速度又保证聚类精度?
[0012] 技术方案:针对以上不足本发明提供了一种快速的短文本双聚类方法,其特征在于:包括以下步骤:
[0013] 步骤1)短文本干扰项的预处理,在无关语词典和词类词典的支持下,对短文本进行快速的无关语和词类识别和处理识别;
[0014] 步骤2)计算预处理后的两个短文本相似度,形成短文本相似度稀疏矩阵;
[0015] 步骤3)在短文本相似度稀疏矩阵上进行短文本一级聚类,根据短文本相似度的计算结果,将相似的短文本划分成一个一个的簇;
[0016] 步骤4)在一级聚类结果基础上进行短文本二级聚类。
[0017] 所述的步骤1)包括意码构造方法:对任意一个词类WC,利用随机函数产生随机数,产生nSC个大于0小于10000的随机正整数,设为C1、...、CnSC,取出《汉语字典》中的第C1个、...、第CnSC个汉字,分别为H1、...、HnSC,则词类WC的意码为汉字串H1...HnSC。
[0018] 所述的步骤2)包括计算短文本相似度的方法:对两个短文本Si和Sj,它们的相似度计算方法为:
[0019]
[0020] |Si|和|Sj|分别表示为Si和Sj的长度m和n。对应的k-gram序列分别为:
[0021] S”i={w[i,1]..w[i,k],w[i,2]...w[i,k+1],...,w[i,a]...w[i,k+a-1],...,w[i,m-k+1]...w[i,m]},
[0022] S”j={w[j,1]..w[j,k],w[j,2]...w[j,k+1],...,w[j,b]...w[j,k+b-1],...,w[j,n-k+1]...w[j,n]}。
[0023] 计算Si和Sj的位置同元相似度的方法如下:
[0024]
[0025]
[0026]
[0027] 其中两个集合的交集中共有h个元素。
[0028] 所述的步骤3)包括以下步骤:
[0029] 步骤31)在计算短文本相似度过程中,将短文本相似度小于某个阈值(α)的点排除掉,构造短文本相似度稀疏矩阵;
[0030] 步骤32)在短文本相似度稀疏矩阵中,寻找相似度最大的且大于聚类阈值β的一对点V1与V2,如果找不到,则终止聚类,输出一级聚类结果,转步骤41)进行二级聚类;
[0031] 步骤33)将V1和V2看成一个新簇,重新它与其它点的相似度并更新相似度矩阵,计算方法如下:
[0032]
[0033] 步骤34)将这两个点V1(行号为nRowIndex)与V2(列号为nColIndex)合并为一个新簇NewCluster,将m_cluster[nColIndex]中的点并入到m_cluster[nRowIndex]中,并清空簇m_cluster[nColIndex]中的点。
[0034] 所述的步骤4包括以下步骤:
[0035] 步骤41)将包含分句的短文本S按逗号、句号、问号、叹号进行切分,形成若干分句Pi;
[0036] 步骤42)计算每个分句Pi和簇Cluster的相似度,计算方法如下:
[0037]
[0038] 步骤43)通过步骤42)计算短文本S中的每个分句Pi与簇Cluster的相似度CSim(Pi,Cluster)后,通过以下方法求短文本S与簇Cluster的相似度:
[0039]
[0040] 步骤44)利用步骤43)得到的相似度重新构造相似度稀疏矩阵,调用一级聚类方法中的步骤31)至步骤33)聚类算法进行二级聚类。
[0041] 有益效果:本发明经历过多次开放的测试。我们随即地抽取大量的某些实际应用中的短文本(10万多条)进行聚类实验。实验结果表明,我们的聚类方法的平均聚类准确率达到85.0%,证实了本发明的有效性。这一精度也达到了实际应用的要求。

附图说明

[0042] 图1为本发明的快速短文本双聚类方法的工作流程图。

具体实施方式

[0043] 下面结合附图和具体实施方式对本发明做进一步说明。
[0044] 如图1所示,一种快速的短文本双聚类方法,包括以下步骤:
[0045] 步骤1)短文本干扰项的预处理,在无关语词典和词类词典的支持下,对短文本进行快速的无关语和词类识别和处理识别。
[0046] 步骤2)基于的短文本相似度计算,计算预处理后的两个短文本相似度,形成短文本相似度稀疏矩阵。
[0047] 步骤3)在短文本相似度稀疏矩阵上进行短文本一级聚类,根据短文本相似度的计算结果,将相似的短文本划分成一个一个的簇。
[0048] 步骤4)在一级聚类结果基础上进行短文本二级聚类。
[0049] 下面针对上述步骤,结合相应的图例,下文做详细的阐述。
[0050] 一、短文本干扰项预处理中的数据结构
[0051] 经过长期的总结我么积累了一个无关语词典,包括“帮我”、“请问”等,形成了一个《无关语词典》。
[0052] 我们收集整理了一个词类词典,形成了一个《词类词典》。例如,词类A=“上网|联网|连网|连接互联网|...”,其中的词语意义相近。当它们出现在短文本中时,需要统一处理,将它们统一归结同一个词条(或者意义代码,简称意码)。另外,在本发明中,为了快速的词典查找,我们采用双数组词典存储结构来存放无关语词典和词类词典中包含的词。
[0053] 下面,我们着重介绍词类的意码构造方法。在意码构造中,使用一个《汉语字典》(如果将本发明用于其它语种,该词典可对应它们的单词),共有10000个汉字。
[0054] 词类意码(Semantic Code,简称SC)的产生方法如下:对任意一个词类WC,利用随机函数产生随机数,产生nSC个大于0小于10000的随机正整数,设为C1、...、CnSC,取出《汉语字典》中的第C1个、...、第CnSC个汉字,分别为H1、...、HnSC,则词类WC的意码为汉字串H1...HnSC。
[0055] 二、短文本干扰项预处理的方法及其实现
[0056] 在对短文本进行繁体到简体转化、英文大写到小写转换、全角到半角转换、首尾空格和标点符号清除等简单预处理后,短文本干扰项预处理的工作。
[0057] 对短文本语料集∑中的每条短文本S,做以下步骤:
[0058] 步骤11)调用无关语双数组词典,识别S中无关语,并且进行删除,形成一个新的短文本S’。
[0059] 步骤12)对S’做以下计算:调用词类词典,识别S’中的词条W对应的词类WC,并且用WC对应的意码SC替换S’中出现的W,形成一个新的短文本S”,将S”存入新的短文本语料集∑’。
[0060] 三、短文本的位置同元相似度计算方法
[0061] 对短文本进行预处理和词类识别和替换后,进行相似度计算,采用基于位置同元k-gram的思想来进行相似度的计算。
[0062] 令|S|表示短文本中的字符的个数。在不同的语言中,字符的含义不一样。例如,在汉语中,汉字算作一个字符;在英文中,ASCII字母算一个字符;在日文中,一个假名算一个字符。
[0063] 本发明先进行两个基本的计算步骤:
[0064] (1)对短文本Si=w[i,1]w[i,2]...w[i,m]进行一个简单变换,得到新的短文本其中假设 和 是领域无关的、特殊的两个字符。注意,此时|Si’|=m+2。
[0065] (2)计算Si’的k-gram序列,为集合S”i={w[i,1]..w[i,k],w[i,2]...w[i,k+1],...,w[i,m-k+3]...w[i,m+2]},其中k≤m。
[0066] 给定两个短文本Si和Sj,|S’i|和|S’j|分别为m和n。令它们对应的k-gram序列分别为:
[0067] S”i={w[i,1]..w[i,k],w[i,2]...w[i,k+1],...,w[i,a]...w[i,k+a-1],...,w[i,m-k+1]...w[i,m]},
[0068] S”j={w[j,1]..w[j,k],w[j,2]...w[j,k+1],...,w[j,b]...w[j,k+b-1],...,w[j,n-k+1]...w[j,n]}。
[0069] 我们计算Si和Sj的位置同元相似度的方法如下:
[0070] 令
[0071]
[0072]
[0073] 又令
[0074]
[0075] 注意,在上述两个集合的交集中共有h个元素。我们用w[i,a1]...w[i,k+a1-1]=w[j,b1]...w[j,k+b1-1]表示交集中的两个元素分别来自于S”i和S”j中的哪两个元素。
[0076] 在上述准备的基础上,下面给出计算Si和Sj的位置同元相似度(简称相似度)的方法:
[0077]
[0078] 四、短文本的一级聚类方法及其实现
[0079] 由于短文本相似度矩阵非常巨大,并且很多相似度为0(或极小)。根据多次实验,短文本相似度小于某个阈值(α)的点非常多,因此我们采用了基于相似度稀疏矩阵的短文本双聚类方法。在该方法中,短文本相似度低于阈值α的点被排除。
[0080] 在本发明中,相似度稀疏矩阵的数据结构如下:
[0081]
[0082]
[0083] 基于短文本相似度稀疏矩阵的一级聚类方法如下:
[0084] 步骤31)在计算短文本相似度过程中,将短文本相似度小于某个阈值(α)的点排除掉,构造短文本相似度稀疏矩阵。
[0085] 步骤32)在短文本相似度稀疏矩阵中,寻找相似度最大的且大于聚类阈值β的一对点V1与V2,如果找不到,则终止聚类,输出一级聚类结果,转步骤41)进行二级聚类。
[0086] 步骤33)将V1和V2看成一个新簇,重新它与其它点的相似度并更新相似度矩阵,计算方法如下:
[0087]
[0088] 其中|X|为X中的点的个数。
[0089] 步骤33)将这两个点V1(行号为nRowIndex)与V2(列号为nColIndex)合并为一个新簇NewCluster,将m_cluster[nColIndex]中的点并入到m_cluster[nRowIndex]中,并清空簇m_cluster[nColIndex]中的点。
[0090] 五、短文本的二级聚类方法及其实现
[0091] 在多次实验中,我们考察了短文本一级主聚类的结果,发现有一些短文本单独成类,即形成单个短文本组成的一个聚类。主要原因是这些短文本是含有多个分句,使得与其它短文本的相似度非常地低。为此,需要进行二级聚类。
[0092] 短文本二级聚类的方法如下:
[0093] 步骤41)将包含分句的短文本S按逗号、句号、问号、叹号进行切分,形成若干分句Pi;
[0094] 步骤42)计算每个分句Pi和簇Cluster的相似度,计算方法如下:
[0095]
[0096] 步骤43)通过步骤42)计算短文本S中的每个分句Pi与簇Cluster的相似度CSim(Pi,Cluster)后,通过以下方法求的短文本S与簇Cluster的相似度:
[0097]
[0098] 步骤44)利用步骤43)得到的相似度重新构造相似度稀疏矩阵,调用一级聚类方法中的步骤31)至步骤33)聚类算法进行二级聚类。
[0099] 六、实验结果
[0100] 由于本发明的词典采用了双数组结构,因此方法的速度很快。
[0101] 本发明经过多次实验,我们发现,词类词条的意码长度为4(即nSC=4)可使得聚类最佳。同时,在短文本相似度稀疏矩阵的阈值α=0.25以及聚类阈值β=0.3的情况下,所得到的聚类结果最佳。
[0102] 我们随即地抽取大量的某些实际应用中的短文本(超过10万条)进行聚类实验。实验结果表明,我们的聚类方法的平均聚类准确率达到85.0%,证实了本发明的有效性。这一精度也达到了实际应用的要求。
[0103] 以上所述仅为本发明的优选实施例而已,并不限制于本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。