CN106909575B - 文本聚类方法和装置 - Google Patents
文本聚类方法和装置 Download PDFInfo
- Publication number
- CN106909575B CN106909575B CN201510981938.0A CN201510981938A CN106909575B CN 106909575 B CN106909575 B CN 106909575B CN 201510981938 A CN201510981938 A CN 201510981938A CN 106909575 B CN106909575 B CN 106909575B
- Authority
- CN
- China
- Prior art keywords
- text
- clustering
- content block
- simhash
- texts
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种文本聚类方法和装置。其中,该方法包括:通过第一预设算法对多个文本进行第一级聚类,其中,第一预设算法为低于第一预设位数的SimHash算法,通过第一预设算法判定为相似的文本属于同一类别,通过第一预设算法判定为不相似的文本属于不同类别;以及通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类,其中,第二预设算法不同于第一预设算法,通过第二预设算法判定为相似的文本属于同一类别,通过第二预设算法判定为不相似的文本属于不同类别。本申请解决了相关技术中相似文章聚类准确性较低的技术问题。
Description
技术领域
本申请涉及数据处理领域,具体而言,涉及一种文本聚类方法和装置。
背景技术
在处理来自各种资源的文章时,通常需要对这些文章进行去重或统计相似文章的相关信息。SimHash算法以其高性能被广泛使用于相似文章聚类中,但现有的SimHash聚类算法并不完全适用于来源相对复杂的文章,因为不同的来源可能会对这些文章进行细微的修改,例如,修改标题、添加副标题、添加空白字符与一些无关内容等。现有方案完全根据SimHash算法进行相似文章聚类,准确率不是较高。此外,由于文章的改动使得原本内容上相似的文章被误判为不相似,某些不相似的文章由于SimHash算法的碰撞被误判为相似。
针对相关技术中相似文章聚类准确性较低的问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种文本聚类方法和装置,以解决相关技术中相似文章聚类准确性较低问题。
为了实现上述目的,根据本申请的一个方面,提供了一种文本聚类方法。该方法包括:通过第一预设算法对多个文本进行第一级聚类,其中,第一预设算法为低于第一预设位数的SimHash算法,通过第一预设算法判定为相似的文本属于同一类别,通过第一预设算法判定为不相似的文本属于不同类别;以及通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类,其中,第二预设算法不同于第一预设算法,通过第二预设算法判定为相似的文本属于同一类别,通过第二预设算法判定为不相似的文本属于不同类别。
进一步地,通过第一预设算法对多个文本进行第一级聚类包括:计算多个文本的SimHash值,得到多个SimHash值;分别将多个SimHash值中每个SimHash值按照第二预设位数进行分组;以及根据分组后的多个SimHash值对多个文本进行第一级聚类。
进一步地,多个SimHash值包括第一SimHash值和第二SimHash值,第一SimHash值按照第二预设位数进行分组后得到第一分组集合,第二SimHash值按照第二预设位数进行分组后得到第二分组集合,根据分组后的多个SimHash值对多个文本进行第一级聚类包括:判断第一分组集合和第二分组集合中是否存在对应相同的组别;在判断出第一分组集合与第二分组集合中存在对应相同的组别时,则初步判定第一SimHash值对应的文本和第二SimHash值对应的文本相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为同一类别;以及在判断出第一分组集合与第二分组集合中不存在对应相同的组别时,则判定第一SimHash值对应的文本和第二SimHash值对应的文本不相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为不同类别。
进一步地,在判断出第一分组集合与第二分组集合中存在对应相同的组别时,则初步判定第一SimHash值对应的文本和第二SimHash值对应的文本相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为同一类别之后,该方法还包括:计算第一SimHash值和第二SimHash值的海明距离;判断第一SimHash值和第二SimHash值的海明距离是否小于第一预设值;在判断出第一SimHash值和第二SimHash值的海明距离小于第一预设值时,则判定第一SimHash值对应的文本和第二SimHash值对应的文本相似;以及在判断出第一SimHash值和第二SimHash值的海明距离不小于第一预设值时,则判定第一SimHash值对应的文本和第二SimHash值对应的文本不相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为不同类别。
进一步地,第二预设算法为文本取样聚类算法,第一级聚类得到的类别中包括第一类别,第一类别中的文本包括第一文本和第二文本,通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类包括:分别对第一文本和第二文本进行分块,得到第一内容块集合和第二内容块集合,其中,第一内容块集合为第一文本分块后得到的内容块集合,第二内容块集合为第二文本分块后得到的内容块集合;分别从第一内容块集合中各个内容块和第二内容块集合中各个内容块中获取第一预设数量的字符,得到第三内容块集合和第四内容块集合,其中,第三内容块集合为从第一内容块集合的各个内容块中获取的第一预设数量的字符组成的内容块集合,第四内容块集合为从第二内容块集合的各个内容块中获取的第一预设数量的字符组成的内容块集合;判断第三内容块集合和第四内容块集合中相同内容块的数量是否大于第二预设值;在判断出第三内容块集合和第四内容块集合中相同内容块的数量大于第二预设值时,则判定第一文本和第二文本为相似文本,并将第一文本和第二文本划分为同一类别;以及在判断出第三内容块集合和第四内容块集合中相同的内容块的数量不大于第二预设值时,则判定第一文本和第二文本为不相似文本,并将第一文本和第二文本划分为不同类别。
进一步地,第二预设算法包括多个聚类算法,通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类包括:对第一级聚类得到的各个类别中的文本依次采用多个聚类算法中每个聚类算法进行聚类。
进一步地,第二预设算法包括如下至少一种聚类算法:文本取样聚类算法、文本长度差聚类算法、文本相似度聚类算法。
为了实现上述目的,根据本申请的另一方面,提供了一种文本聚类装置。该装置包括:第一聚类单元,用于通过第一预设算法对多个文本进行第一级聚类,其中,第一预设算法为低于第一预设位数的SimHash算法,通过第一预设算法判定为相似的文本属于同一类别,通过第一预设算法判定为不相似的文本属于不同类别;以及第二聚类单元,用于通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类,其中,第二预设算法不同于第一预设算法,通过第二预设算法判定为相似的文本属于同一类别,通过第二预设算法判定为不相似的文本属于不同类别。
进一步地,第一聚类单元包括:计算模块,用于计算多个文本的SimHash值,得到多个SimHash值;分组模块,用于分别将多个SimHash值中每个SimHash值按照第二预设位数进行分组;以及第一聚类模块,用于根据分组后的多个SimHash值对多个文本进行第一级聚类。
进一步地,多个SimHash值包括第一SimHash值和第二SimHash值,第一SimHash值按照第二预设位数进行分组后得到第一分组集合,第二SimHash值按照第二预设位数进行分组后得到第二分组集合,第一聚类模块包括:判断子模块,用于判断第一分组集合和第二分组集合中是否存在对应相同的组别;第一分组子模块,用于在判断出第一分组集合与第二分组集合中存在对应相同的组别时,则初步判定第一SimHash值对应的文本和第二SimHash值对应的文本相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为同一类别;以及第二分组子模块,用于在判断出第一分组集合与第二分组集合中不存在对应相同的组别时,则判定第一SimHash值对应的文本和第二SimHash值对应的文本不相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为不同类别。
本申请通过第一预设算法对多个文本进行第一级聚类,其中,第一预设算法为低于第一预设位数的SimHash算法,通过第一预设算法判定为相似的文本属于同一类别,通过第一预设算法判定为不相似的文本属于不同类别;以及通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类,其中,第二预设算法不同于第一预设算法,通过第二预设算法判定为相似的文本属于同一类别,通过第二预设算法判定为不相似的文本属于不同类别,本申请通过降低SimHash位数,放宽判定文本相似的条件,从而可以避免将一些经过细微修改的文本判定为不相似,并通过第二预设算法对第一级聚类得到的各个类别中的文本再次进行聚类,从而可以提高相似文本聚类的准确性,解决了相关技术中相似文章聚类准确性较低问题,进而达到了提高相似文章聚类准确性的效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请第一实施例的文本聚类方法的流程图;
图2是根据本申请第二实施例的文本聚类方法的流程图;以及
图3是根据本申请实施例的文本聚类装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及地一些术语或概念进行说明:
SimHash算法:一种相似文本聚类算法,对每个文本计算SimHash值,SimHash值差异小的两个文本判定为相似文本。
海明距离:两个二进制串中不同位的数量。
哈希算法:是指将任意长度的输入映射为固定长度的输出,该输出即称为哈希值。
编辑距离:是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数,其中,允许的编辑操作包括将一个字符替换成另一个字符、插入一个字符和删除一个字符。
TF-IDF算法:一种相似文本判定算法,通过计算文本关键词与词频来计算两个文本相似度的方法。
根据本申请实施例,提供了一种文本聚类方法。图1是根据本申请第一实施例的文本聚类方法的流程图,如图1所示,该方法包括如下的步骤S102至步骤S104:
步骤S102,通过第一预设算法对多个文本进行第一级聚类,其中,第一预设算法为低于第一预设位数的SimHash算法,通过第一预设算法判定为相似的文本属于同一类别,通过第一预设算法判定为不相似的文本属于不同类别。
本申请实施例的第一预设位数可以根据实际情况进行设置。由于在进行文本聚类时比较通用的SimHash算法是计算64位长度的SimHash值,当两个文本的SimHash值的海明距离在3以内时,则判定两个文本相似,但是通过64位长度的SimHash值进行相似文本判定容易使一些相似的文本被误判为不相似,因此,本申请实施例为了减少将一些相似的文本被误判为不相似,可以将第一预设位数设置为64位,即第一预设算法为低于64位的SimHash算法(也即计算低于64位长度的SimHash值,例如,计算32位长度的SimHash值或是16位长度的SimHash值),通过低于64位长度的SimHash值进行相似文本判定,放宽了相似文本判定的条件,可以减少将一些相似的文本被误判为不相似。
具体地,以下以第一预设算法为32位的SimHash算法为例对本申请实施例进行说明。分别计算各个文本的32位长度的SimHash值,并分别计算任意两个文本的32位长度的SimHash值的海明距离,如果两个文本对应的海明距离大于阈值(例如,3或是4等),则判定这两个文本不相似,并将这两个文本划分为不同的类别,如果这两个文本对应的海明距离不大于阈值,则判定这两个文本相似,并将这两个文本划分为同一类别。
优选地,为了提高相似文本聚类的速度,通过第一预设算法对多个文本进行第一级聚类包括:计算多个文本的SimHash值,得到多个SimHash值;分别将多个SimHash值中每个SimHash值按照第二预设位数进行分组;以及根据分组后的多个SimHash值对多个文本进行第一级聚类。
本申请实施例在计算得到各个文本的SimHash值之后,按照第二预设位数对各个SimHash值进行分组,其中,第二预设位数可以根据SimHash值的长度进行设置,例如,32位长度的SimHash值,则可以将第二预设位数设为8,即每8位作为一组,每个SimHash值分成4组,也可以将第二预设位数设为16,即每16位作为一组,每个SimHash值分成2组。具体地,本申请实施例的第二预设位数优选为8,第一预设算法优选为32位SimHash算法。
优选地,多个SimHash值包括第一SimHash值和第二SimHash值,第一SimHash值按照第二预设位数进行分组后得到第一分组集合,第二SimHash值按照第二预设位数进行分组后得到第二分组集合,根据分组后的多个SimHash值对多个文本进行第一级聚类包括:判断第一分组集合和第二分组集合中是否存在对应相同的组别;在判断出第一分组集合与第二分组集合中存在对应相同的组别时,则初步判定第一SimHash值对应的文本和第二SimHash值对应的文本相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为同一类别;以及在判断出第一分组集合与第二分组集合中不存在对应相同的组别时,则判定第一SimHash值对应的文本和第二SimHash值对应的文本不相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为不同类别。
本申请实施例在按照第二预设位数分别将第一SimHash值和第二SimHash值进行分组得到第一分组集合和第二分组集合后,判断第一分组集合和第二分组集合中是否存在对应相同的组别。
例如,第一SimHash值依次按照每8位一组分成四组,即组11至组14,其中,第1至8位为组11,第9至16位为组12,第17至24位为组13,第25至32位为组14,同样地,第二SimHash值依次按照每8位一组分成四组,即组21至组24,其中,第1至8位为组21,第9至16位为组22,第17至24位为组23,第25至32位为组24,则组11与组21对应、组12与组22对应、组13与组23对应以及组14与组24对应。
如果第一SimHash值和第二SimHash值中存在对应相同的组别,即组11与组21、组12与组22、组13与组23以及组14与组24中至少存在一对组别相同时,则初步判定第一SimHash值对应的文本和第二SimHash值对应的文本相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为同一类别,如果第一SimHash值和第二SimHash值中对应地组别均不相同,即组11与组21、组12与组22、组13与组23以及组14与组24均不相同,则判定第一SimHash值对应的文本和第二SimHash值对应的文本不相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为不同类别。
需要说明的是,在本申请实施例中,对多个SimHash值中任意两个SimHash值分别执行上述操作,以分别判定多个SimHash值中任意两个SimHash值对应的文本是否相似,从而实现多个文本的聚类,例如,当前存在10个文本,对应计算得到10个SimHash值,分别对这10个SimHash值按照第二预设位数进行分组,得到10个分组集合,即分组集合1至分组集合10,每次从上述10个分组集合中取两个分组集合进行比较以判定这两个分组集合对应的文本是否相似,并把判定为相似的文本划分为同一类别,把判定为不相似的文本划分为不同类别;重复执行上述步骤直至完成上述10个分组集合中任意两个分组集合的判定,以完成对上述10个文本的聚类。
优选地,在判断出第一分组集合与第二分组集合中存在对应相同的组别时,则初步判定第一SimHash值对应的文本和第二SimHash值对应的文本相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为同一类别之后,该方法还包括:计算第一SimHash值和第二SimHash值的海明距离;判断第一SimHash值和第二SimHash值的海明距离是否小于第一预设值;在判断出第一SimHash值和第二SimHash值的海明距离小于第一预设值时,则判定第一SimHash值对应的文本和第二SimHash值对应的文本相似;以及在判断出第一SimHash值和第二SimHash值的海明距离不小于第一预设值时,则判定第一SimHash值对应的文本和第二SimHash值对应的文本不相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为不同类别。
本申请实施例在初步判定两个文本相似之后,可以继续根据两个文本对应的SimHash值的海明距离来进一步判定这两个文本是否相似。具体地,还是以第一SimHash值对应的文本和第二SimHash值对应的文本为例进行说明:计算第一SimHash值和第二SimHash值的海明距离,并与第一预设值进行比较,其中,第一预设值可以根据实际情况进行设置,例如,设为3或是4等,如果第一SimHash值和第二SimHash值的海明距离小于第一预设值,则判定第一SimHash值对应的文本和第二SimHash值对应的文本相似,如果第一SimHash值和第二SimHash值的海明距离不小于第一预设值,则判定第一SimHash值对应的文本和第二SimHash值对应的文本不相似。
本申请实施例通过上述步骤将多个文本进行聚类,得到多个类别,其中,判定为相似的文本属于同一类别,判定为不相似的文本属于不同类别。
步骤S104,通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类,其中,第二预设算法不同于第一预设算法,通过第二预设算法判定为相似的文本属于同一类别,通过第二预设算法判定为不相似的文本属于不同类别。
本申请实施例通过第一预设算法将多个文本进行初步聚类之后,进一步通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类。优选地,由于在第一级聚类得到的类别中可能存在部分类别中仅包含一个文本,本申请实施例可以先从第一级聚类得到的类别中剔除掉那些仅包含一个文本的类别再进行第二级聚类。
可选地,第二预设算法可以包括如下至少一种聚类算法:文本取样聚类算法、文本长度差聚类算法、文本相似度聚类算法。
本申请实施例的文本取样聚类算法是指对对文本中句子进行取样后基于样本进行相似文本判定;文本长度差聚类算法是指计算任意两个文本的长度差并判断该长度差是否小于某个阈值来判定文本是否相似,例如,两个文本的长度差小于某个阈值,则判定这两个文本相似,并将这两个划分为同一类别,两个文本的长度差不小于某个阈值,则判定这两个文本不相似,并将这两个划分为不同类别;文本相似度聚类算法是指计算任意两个文本的相似度并基于相似度判定文本是否相似,例如,两个文本的相似度大于某个阈值,则判定这两个文本相似,并将这两个划分为同一类别,两个文本的相似度不大于某个阈值,则判定这两个文本不相似,并将这两个划分为不同类别。
优选地,第二预设算法为文本取样聚类算法,第一级聚类得到的类别中包括第一类别,第一类别中的文本包括第一文本和第二文本,通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类包括:分别对第一文本和第二文本进行分块,得到第一内容块集合和第二内容块集合,其中,第一内容块集合为第一文本分块后得到的内容块集合,第二内容块集合为第二文本分块后得到的内容块集合;分别从第一内容块集合中各个内容块和第二内容块集合中各个内容块中获取第一预设数量的字符,得到第三内容块集合和第四内容块集合,其中,第三内容块集合为从第一内容块集合的各个内容块中获取的第一预设数量的字符组成的内容块集合,第四内容块集合为从第二内容块集合的各个内容块中获取的第一预设数量的字符组成的内容块集合;判断第三内容块集合和第四内容块集合中相同内容块的数量是否大于第二预设值;在判断出第三内容块集合和第四内容块集合中相同内容块的数量大于第二预设值时,则判定第一文本和第二文本为相似文本,并将第一文本和第二文本划分为同一类别;以及在判断出第三内容块集合和第四内容块集合中相同的内容块的数量不大于第二预设值时,则判定第一文本和第二文本为不相似文本,并将第一文本和第二文本划分为不同类别。
本申请实施例的第一类别为第一级聚类得到的类别中任意一个类别,且该类别中文本数不小于2,第一文本和第二文本为第一类别中任意两个文本。以下本申请实施例以第一类别中的第一文本和第二文本为例说明通过文本取样聚类算法进行相似文本判定的过程:
具体地,可以按照断句符(例如,逗号、句号、分号等)对第一文本和第二文本进行分块,例如,按照断句符分别将第一文本和第二文本划分成多个句子。优选地,在对第一文本和第二文本划分成多个内容块后,可以去除每个内容块内的无效字符(例如,引号、空格等),并基于去除了无效字符的内容块得到第一内容块集合和第二内容块集合。优选地,为了提高相似文本判定结果的准确性,在分别对第一文本和第二文本进行分块,得到第一内容块集合和第二内容块集合之前,本申请实施例还可以分别对第一文本和第二文本进行全角字符转为半角字符、将繁体字字转换为简体字等处理,从而可以避免相同文本内容因为格式不同而被判定为不相同文本内容。
本申请实施例的第一预设数量可以根据文本句子特点进行设置,例如,如果多数文本的句子均较长,则可以将第一预设数量设置的大一些,例如,设置第一预设数量为20,如果多数文本的句子均较短,则可以将第一预设数量设置的小一些,例如,设置第一预设数量为10。具体地,本申请实施例通过分别从第一内容块集合中各个内容块中取第一预设数量的字符,得到第三内容块集合,通过分别从第二内容块集合中各个内容块中取第一预设数量的字符,得到第四内容块集合。可选地,可以取各个内容块中前第一预设数量的字符组成各个新的内容块,并将同一文本对应的所有新的内容块组成一个新的内容块集合(即上述第三内容块集合和第四内容块集合),例如,取内容块1中前10个字符组成新的内容块1,取内容块2中前10个字符组成新的内容块2,以此类推。本申请实施例通过对步骤S102得到内容块进行采样,从而可以减少那些细微修改对相似文本判定的影响。
在得到第三内容块集合和第四内容块集合之后,可以通过计算第三内容块集合和第四内容块集合中各个内容块的哈希值、SimHash值、编辑距离等来判断第三内容块集合中的内容块是否与第四内容块集合中的内容块相同。
在计算得到第三内容块集合和第四内容块集合中相同内容块的数量之后,即可以判断第三内容块集合和第四内容块集合中相同内容块的数量是否大于第二预设值。具体地,本申请实施例的第二预设值可以根据文本长度自适应进行调整,例如,如果文本长度较长(即文本字符数)(例如,文本长度大于2000),则预设值可以取大一些,如果文本长度较短(例如,文本长度小于500),则预设值可以取小一些。具体地,在判断出第三内容块集合和第四内容块集合中相同内容块的数量大于第二预设值时,则判定第一文本和第二文本相似,并将第一文本和第二文本划分为同一类别,在判断出第三内容块集合和第四内容块集合中相同的内容块的数量不大于第二预设值时,则判定第一文本和第二文本为不相似文本,并将第一文本和第二文本划分为不同类别。
本申请实施例通过第一预设算法对多个文本进行第一级聚类,其中,第一预设算法为低于第一预设位数的SimHash算法,通过第一预设算法判定为相似的文本属于同一类别,通过第一预设算法判定为不相似的文本属于不同类别;以及通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类,其中,第二预设算法不同于第一预设算法,通过第二预设算法判定为相似的文本属于同一类别,通过第二预设算法判定为不相似的文本属于不同类别,本申请通过降低SimHash位数,放宽判定文本相似的条件,从而可以避免将一些经过细微修改的文本判定为不相似,并通过第二预设算法对第一级聚类得到的各个类别中的文本再次进行聚类,从而可以提高相似文本聚类的准确性,解决了相关技术中相似文章聚类准确性较低问题,进而达到了提高相似文章聚类准确性的效果。
优选地,第二预设算法可以包括多个聚类算法,通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类包括:对第一级聚类得到的各个类别中的文本依次采用多个聚类算法中每个聚类算法进行聚类。
例如,第二预设算法包括文本取样聚类算法和文本长度差聚类算法,则可以先根据文本取样聚类算法对第一级聚类得到的各个类别中的文本进行聚类,并根据文本长度差聚类算法分别对通过文本取样聚类算法得到的各个类别中的文本再次进行聚类。第二预设算法包含两个以上的聚类算法时,同样按照上述方法进行聚类,即在前一个执行的聚类算法的聚类结果上执行后续的聚类算法进行聚类。优选地,为了提高聚类速度,可以先对第二预设算法包含的多个聚类算法按照运算速度进行排序,运算速度快的聚类算法先执行,运算速度慢的聚类算法后执行,从而大部分不相似的文本在到达运算速度很慢的聚类算法前就已经被过滤掉,只有很少一部分文章执行排在最后的那些运算速度很慢的聚类算法,从而可以将总体判定时间大大减小。
图2是根据本申请第二实施例的文本聚类方法的流程图。如图2所示,该方法包括如下步骤:
步骤S202,列举除SimHash算法之外的多种相似文本聚类算法。
例如,文本取样聚类算法、文本长度差聚类算法、文本相似度聚类算法等。
步骤S204,将上述多种文本聚类算法按照运算速度进行排序,形成多级判定。
步骤S206,通过SimHash算法对文本进行初步聚类。
本申请实施例通过计算所有文本的SimHash值,并根据所有文本的SimHash值对所有文本进行聚类。
具体地,本申请实施例可以采用32位SimHash算法,即计算各个文本32位SimHash值,当两个文本的SimHash值的差异的位数(即海明距离)在3位或3位以内时,初步判定两个文本相似。具体地,计算各个文本的SimHash值的步骤可以如下:
步骤S11,通过分词或切分文本,得到n个特征。
各个特征即文本分词或切分后得到的各个内容块。
步骤S12,计算各个特征的哈希值,得到该文本的特征值Fture[n]。
各个特征值即各个特征的哈希值,分别计算n个特征的哈希值,得到n个特征值,即Fture[n],其中,Fture[n]为包含n个元素的数组,每个元素均为一个特征值。
步骤S13,对各个特征都赋予权重1,或通过TF-IDF等算法计算每个特征的权重,得到权重Wght[n]。
对n个特征均赋予权重,得到n个权重,即Wght[n],其中,Wght[n]为包含n个元素的数组,每个元素均为一个权重。
步骤S14,记录n个整数序列Flag[m],m为要计算的SimHash值的长度,整数序列中各个元素的初始值都为0。
上述Flag[m]为包含m个元素的数组,每个元素均为一个整数,每个元素的初始值均为0,上述m为要计算的SimHash值的长度,例如,计算32位长度的SimHash值,则m取32。
步骤S15,对每一个特征值Fture[x]的每个二进制位FtureBit[i],若该位为0,则Flag[i]减去Wght[x]的值,若该位为1,则Flag[i]加上Wght[x]的值。
特征值Fture[x]表示上述特征值数组Fture[n]第x个元素,其中,x=1,2,…,n,Flag[i]表示数组Flag[m]第i个元素,FtureBit[i]表示特征值Fture[x]的第i个二进制位,其中,i=1,2,…,m。具体地,每个特征值由多个二进制位组成,在本申请实施例中,对每一个特征值Fture[x]的每个二进制位FtureBit[i]进行判断,如果FtureBit[i]为0,Flag[i]减去Wght[x]的值,如果FtureBit[i]为1,Flag[i]加上Wght[x]的值。
步骤S16,最终得到数组Flag[]中的每个位的数据Flag[j],如果该位的数据大于或等于0,则SimHash值对应第j位设为1,如果该位的数据小于0,则SimHash值对应第j位设为0,其中,j=1,2,…,m。
具体判定时,本申请实施例使用一种算法减少计算量,该算法的核心思想是:将32位SimHash值的二进制值按8位一组,切成4组,此时两个文本若要相似,则这两个文本对应的SimHash值分成的4组中,至少有一组完全一样。具体地,根据分组后的多个SimHash值对多个文本进行聚类的步骤可以如下:
步骤S21,准备4组桶Bucket[4],其中,每组桶可以是字典(Dictionary)或哈希图(HashMap)之类的数据结构,包括键(Key)和值(Value),其中,Key用于存储唯一标识符,Value用于存储具体的数据。每组桶中的每个元素是一个单独的桶,存储了一个整数(即Key)与一个文本列表(即Value)的映射关系。
步骤S22,将每个文本的SimHash值按每8位一组分成4组Part[4]。
上述Part[4]表示包含四个元素的数组。
步骤S23,对每一个Part[i],判断Bucket[i]的Key中是否有Part[i],若有,则将该Part[i]所属的文本加入到该Key对应的文本列表中,若没有,则添加一个Key为Part[i]的新元素,并将该Part[i]所属的文本加入到该Key对应的文本列表中。
上述Part[i]表示数组Part[4]中第i个元素,Bucket[i]表示第i组桶,其中,i=1,2,3,4。
在完成对所有文本执行上述步骤之后,得到的每个桶即为一个初步聚类。
步骤S208,判断是否完成所有文本的判定。
在判断出完成了所有文本的判定时,则结束,在判断出未完成所有文本的判定时,则执行步骤210。
步骤S210,取一个聚类中的两个文本。
上述两个文本为未进行过判定的文本。
步骤S212,判断这两个文本是否通过所有级别判定。
在判断出这两个文本通过所有级别判定时(即在所有级别的聚类算法中均判定出这两个文本相似),则判定这两个文本相似,并返回执行步骤S208,如果这两个文本未通过所有级别判定,则执行步骤S214。
步骤S214,对聚类中的两个文本执行下一级别判定。
对上述两个文本执行下一级别判定,即通过后续的聚类算法继续判定这两个文本是否相似。
步骤S216,判断是否判定通过?
如果下一级别判定这两个文本相似,则返回执行步骤S212,如果下一级别判定这两个文本不相似,则判定这两个文本不相似,并返回执行步骤S208。
步骤S218,不相似。
步骤S220,相似。
本申请实施例通过对每个聚类中的文本,逐级执行后续的判定算法,若其中某一级判定两个文本不相似,则最终判定两个文本为不相似,若每一级都判定两个文本相似,则最终判定两个文本相似。由于SimHash算法计算速度快,且可过滤掉大量的文本,所以本申请实施例将SimHash算法作为第一级判定,从而可以提高整个文本聚类的速度。
由上述描述可知,本申请实施例在SimHash算法的基础上,按运算速度排列多级相似文本判定算法(即聚类算法),并放宽各级相似判定算法的判定条件,尽量减少原本相似的文章在任何一级被误判为不相似的可能,虽然每一级判定都会有一些不相似的文章被误判为相似,但由于多级判定的设计,每一级误判的概率相乘后,最终误判的概率会变得非常低,使相似文章的判定结果更准确;此外,由于多级相似文本判定算法按算法复杂度升序排列,运算速度快的判定算法先被执行,运算速度慢的判定算法后被执行,从而大部分不相似的文章在到达运算速度慢的算法前就已经被过滤掉,只有很少一部分文章执行排在后面的那些运算速度比较慢的算法,使得总体判定时间大大减小,与单独使用SimHash算法相比速度又不会慢很多。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本申请实施例的另一方面,提供了一种文本聚类装置,该文本聚类装置可以用于执行本申请实施例的文本聚类方法,本申请实施例的文本聚类方法也可以通过本申请实施例的文本聚类装置来执行。
图3是根据本申请实施例的文本聚类装置的示意图,如图3所示,该装置包括:第一聚类单元10和第二聚类单元20。
第一聚类单元10,用于通过第一预设算法对多个文本进行第一级聚类,其中,第一预设算法为低于第一预设位数的SimHash算法,通过第一预设算法判定为相似的文本属于同一类别,通过第一预设算法判定为不相似的文本属于不同类别。
第二聚类单元20,用于通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类,其中,第二预设算法不同于第一预设算法,通过第二预设算法判定为相似的文本属于同一类别,通过第二预设算法判定为不相似的文本属于不同类别。
本申请实施例通过第一聚类单元10通过第一预设算法对多个文本进行第一级聚类,其中,第一预设算法为低于第一预设位数的SimHash算法,通过第一预设算法判定为相似的文本属于同一类别,通过第一预设算法判定为不相似的文本属于不同类别;以及第二聚类单元20通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类,其中,第二预设算法不同于第一预设算法,通过第二预设算法判定为相似的文本属于同一类别,通过第二预设算法判定为不相似的文本属于不同类别,本申请通过降低SimHash位数,放宽判定文本相似的条件,从而可以避免将一些经过细微修改的文本判定为不相似,并通过第二预设算法对第一级聚类得到的各个类别中的文本再次进行聚类,从而可以提高相似文本聚类的准确性,解决了相关技术中相似文章聚类准确性较低问题,进而达到了提高相似文章聚类准确性的效果。
优选地,第一聚类单元10包括:计算模块,用于计算多个文本的SimHash值,得到多个SimHash值;分组模块,用于分别将多个SimHash值中每个SimHash值按照第二预设位数进行分组;以及第一聚类模块,用于根据分组后的多个SimHash值对多个文本进行第一级聚类。
优选地,多个SimHash值包括第一SimHash值和第二SimHash值,第一SimHash值按照第二预设位数进行分组后得到第一分组集合,第二SimHash值按照第二预设位数进行分组后得到第二分组集合,第一聚类模块包括:判断子模块,用于判断第一分组集合和第二分组集合中是否存在对应相同的组别;第一分组子模块,用于在判断出第一分组集合与第二分组集合中存在对应相同的组别时,则初步判定第一SimHash值对应的文本和第二SimHash值对应的文本相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为同一类别;以及第二分组子模块,用于在判断出第一分组集合与第二分组集合中不存在对应相同的组别时,则判定第一SimHash值对应的文本和第二SimHash值对应的文本不相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为不同类别。
可选地,该装置还包括:计算单元,用于计算第一SimHash值和第二SimHash值的海明距离;判断单元,用于判断第一SimHash值和第二SimHash值的海明距离是否小于第一预设值;第一判定单元,用于在判断出第一SimHash值和第二SimHash值的海明距离小于第一预设值时,则判定第一SimHash值对应的文本和第二SimHash值对应的文本相似;以及第二判定单元,用于在判断出第一SimHash值和第二SimHash值的海明距离不小于第一预设值时,则判定第一SimHash值对应的文本和第二SimHash值对应的文本不相似,并将第一SimHash值对应的文本和第二SimHash值对应的文本划分为不同类别。
可选地,第二预设算法为文本取样聚类算法,第一级聚类得到的类别中包括第一类别,第一类别中的文本包括第一文本和第二文本,第二聚类单元20包括:分块模块,用于分别对第一文本和第二文本进行分块,得到第一内容块集合和第二内容块集合,其中,第一内容块集合为第一文本分块后得到的内容块集合,第二内容块集合为第二文本分块后得到的内容块集合;获取模块,用于分别从第一内容块集合中各个内容块和第二内容块集合中各个内容块中获取第一预设数量的字符,得到第三内容块集合和第四内容块集合,其中,第三内容块集合为从第一内容块集合的各个内容块中获取的第一预设数量的字符组成的内容块集合,第四内容块集合为从第二内容块集合的各个内容块中获取的第一预设数量的字符组成的内容块集合;判断模块,用于判断第三内容块集合和第四内容块集合中相同内容块的数量是否大于第二预设值;第一判定模块,用于在判断出第三内容块集合和第四内容块集合中相同内容块的数量大于第二预设值时,则判定第一文本和第二文本为相似文本,并将第一文本和第二文本划分为同一类别;以及第二判定模块,用于在判断出第三内容块集合和第四内容块集合中相同的内容块的数量不大于第二预设值时,则判定第一文本和第二文本为不相似文本,并将第一文本和第二文本划分为不同类别。
可选地,第二预设算法包括多个聚类算法,第二聚类单元20包括:第二聚类模块,用于对第一级聚类得到的各个类别中的文本依次采用多个聚类算法中每个聚类算法进行聚类。
可选地,第二预设算法包括如下至少一种聚类算法:文本取样聚类算法、文本长度差聚类算法、文本相似度聚类算法。
所述文本聚类装置包括处理器和存储器,上述第一聚类单元和第二聚类单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来进行相似文本聚类。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:通过第一预设算法对多个文本进行第一级聚类,其中,第一预设算法为低于第一预设位数的SimHash算法,通过第一预设算法判定为相似的文本属于同一类别,通过第一预设算法判定为不相似的文本属于不同类别;以及通过第二预设算法分别对第一级聚类得到的各个类别中的文本进行第二级聚类,其中,第二预设算法不同于第一预设算法,通过第二预设算法判定为相似的文本属于同一类别,通过第二预设算法判定为不相似的文本属于不同类别。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (8)
1.一种文本聚类方法,其特征在于,包括:
通过第一预设算法对多个文本进行第一级聚类,其中,所述第一预设算法为低于第一预设位数的SimHash算法,通过所述第一预设算法判定为相似的文本属于同一类别,通过所述第一预设算法判定为不相似的文本属于不同类别;以及
通过第二预设算法分别对所述第一级聚类得到的各个类别中的文本进行第二级聚类,其中,所述第二预设算法不同于所述第一预设算法,通过所述第二预设算法判定为相似的文本属于同一类别,通过所述第二预设算法判定为不相似的文本属于不同类别;
所述第二预设算法包括多个聚类算法,通过第二预设算法分别对所述第一级聚类得到的各个类别中的文本进行第二级聚类包括:对所述第一级聚类得到的各个类别中的文本依次采用所述多个聚类算法中每个聚类算法进行聚类;其中,对所述第二预设算法包含的所述多个聚类算法按照运算速度进行排序,运算速度快的聚类算法先执行,运算速度慢的聚类算法后执行;
其中,所述多个聚类算法包括文本取样聚类算法,所述第一级聚类得到的类别中包括第一类别,所述第一类别中的文本包括第一文本和第二文本,通过第二预设算法分别对所述第一级聚类得到的各个类别中的文本进行第二级聚类包括:
分别对所述第一文本和所述第二文本进行分块,得到第一内容块集合和第二内容块集合,其中,所述第一内容块集合为所述第一文本分块后得到的内容块集合,所述第二内容块集合为所述第二文本分块后得到的内容块集合;
分别从所述第一内容块集合中各个内容块和所述第二内容块集合中各个内容块中获取第一预设数量的字符,得到第三内容块集合和第四内容块集合,其中,所述第三内容块集合为从所述第一内容块集合的各个内容块中获取的第一预设数量的字符组成的内容块集合,所述第四内容块集合为从所述第二内容块集合的各个内容块中获取的第一预设数量的字符组成的内容块集合;
判断所述第三内容块集合和所述第四内容块集合中相同内容块的数量是否大于第二预设值;
在判断出所述第三内容块集合和所述第四内容块集合中相同内容块的数量大于所述第二预设值时,则判定所述第一文本和所述第二文本为相似文本,并将所述第一文本和所述第二文本划分为同一类别;以及
在判断出所述第三内容块集合和所述第四内容块集合中相同的内容块的数量不大于所述第二预设值时,则判定所述第一文本和所述第二文本为不相似文本,并将所述第一文本和所述第二文本划分为不同类别;
其中,按照断句符对所述第一文本和所述第二文本进行分块;在对所述第一文本和所述第二文本划分成多个内容块后,去除每个内容块内的无效字符,并基于去除了无效字符的内容块得到所述第一内容块集合和所述第二内容块集合;
其中,在分别对所述第一文本和所述第二文本进行分块,得到所述第一内容块集合和所述第二内容块集合之前,所述方法还包括:分别对所述第一文本和所述第二文本进行全角字符转为半角字符、将繁体字转换为简体字。
2.根据权利要求1所述的方法,其特征在于,通过第一预设算法对多个文本进行第一级聚类包括:
计算所述多个文本的SimHash值,得到多个SimHash值;
分别将所述多个SimHash值中每个SimHash值按照第二预设位数进行分组;以及
根据分组后的多个SimHash值对所述多个文本进行第一级聚类。
3.根据权利要求2所述的方法,其特征在于,所述多个SimHash值包括第一SimHash值和第二SimHash值,所述第一SimHash值按照所述第二预设位数进行分组后得到第一分组集合,所述第二SimHash值按照所述第二预设位数进行分组后得到第二分组集合,根据分组后的多个SimHash值对所述多个文本进行第一级聚类包括:
判断所述第一分组集合和所述第二分组集合中是否存在对应相同的组别;
在判断出所述第一分组集合与所述第二分组集合中存在对应相同的组别时,则初步判定所述第一SimHash值对应的文本和所述第二SimHash值对应的文本相似,并将所述第一SimHash值对应的文本和所述第二SimHash值对应的文本划分为同一类别;以及
在判断出所述第一分组集合与所述第二分组集合中不存在对应相同的组别时,则判定所述第一SimHash值对应的文本和所述第二SimHash值对应的文本不相似,并将所述第一SimHash值对应的文本和所述第二SimHash值对应的文本划分为不同类别。
4.根据权利要求3所述的方法,其特征在于,在判断出所述第一分组集合与所述第二分组集合中存在对应相同的组别时,则初步判定所述第一SimHash值对应的文本和所述第二SimHash值对应的文本相似,并将所述第一SimHash值对应的文本和所述第二SimHash值对应的文本划分为同一类别之后,所述方法还包括:
计算所述第一SimHash值和所述第二SimHash值的海明距离;
判断所述第一SimHash值和所述第二SimHash值的海明距离是否小于第一预设值;
在判断出所述第一SimHash值和所述第二SimHash值的海明距离小于所述第一预设值时,则判定所述第一SimHash值对应的文本和所述第二SimHash值对应的文本相似;以及
在判断出所述第一SimHash值和所述第二SimHash值的海明距离不小于所述第一预设值时,则判定所述第一SimHash值对应的文本和所述第二SimHash值对应的文本不相似,并将所述第一SimHash值对应的文本和所述第二SimHash值对应的文本划分为不同类别。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述多个聚类算法还包括如下至少一种聚类算法:文本长度差聚类算法、文本相似度聚类算法。
6.一种文本聚类装置,其特征在于,包括:
第一聚类单元,用于通过第一预设算法对多个文本进行第一级聚类,其中,所述第一预设算法为低于第一预设位数的SimHash算法,通过所述第一预设算法判定为相似的文本属于同一类别,通过所述第一预设算法判定为不相似的文本属于不同类别;以及
第二聚类单元,用于通过第二预设算法分别对所述第一级聚类得到的各个类别中的文本进行第二级聚类,其中,所述第二预设算法不同于所述第一预设算法,通过所述第二预设算法判定为相似的文本属于同一类别,通过所述第二预设算法判定为不相似的文本属于不同类别;
所述第二预设算法包括多个聚类算法,所述第二聚类单元包括:第二聚类模块,用于对所述第一级聚类得到的各个类别中的文本依次采用所述多个聚类算法中每个聚类算法进行聚类;其中,对所述第二预设算法包含的所述多个聚类算法按照运算速度进行排序,运算速度快的聚类算法先执行,运算速度慢的聚类算法后执行;
其中,所述多个聚类算法包括文本取样聚类算法,第一级聚类得到的类别中包括第一类别,第一类别中的文本包括第一文本和第二文本,第二聚类单元包括:
分块模块,用于分别对第一文本和第二文本进行分块,得到第一内容块集合和第二内容块集合,其中,第一内容块集合为第一文本分块后得到的内容块集合,第二内容块集合为第二文本分块后得到的内容块集合;
获取模块,用于分别从第一内容块集合中各个内容块和第二内容块集合中各个内容块中获取第一预设数量的字符,得到第三内容块集合和第四内容块集合,其中,第三内容块集合为从第一内容块集合的各个内容块中获取的第一预设数量的字符组成的内容块集合,第四内容块集合为从第二内容块集合的各个内容块中获取的第一预设数量的字符组成的内容块集合;
判断模块,用于判断第三内容块集合和第四内容块集合中相同内容块的数量是否大于第二预设值;
第一判定模块,用于在判断出第三内容块集合和第四内容块集合中相同内容块的数量大于第二预设值时,则判定第一文本和第二文本为相似文本,并将第一文本和第二文本划分为同一类别;
以及第二判定模块,用于在判断出第三内容块集合和第四内容块集合中相同的内容块的数量不大于第二预设值时,则判定第一文本和第二文本为不相似文本,并将第一文本和第二文本划分为不同类别;
其中,所述装置还用于按照断句符对所述第一文本和所述第二文本进行分块;在对所述第一文本和所述第二文本划分成多个内容块后,去除每个内容块内的无效字符,并基于去除了无效字符的内容块得到所述第一内容块集合和所述第二内容块集合;
其中,在分别对所述第一文本和所述第二文本进行分块,得到所述第一内容块集合和所述第二内容块集合之前,所述装置还用于分别对所述第一文本和所述第二文本进行全角字符转为半角字符、将繁体字转换为简体字。
7.根据权利要求6所述的装置,其特征在于,所述第一聚类单元包括:
计算模块,用于计算所述多个文本的SimHash值,得到多个SimHash值;
分组模块,用于分别将所述多个SimHash值中每个SimHash值按照第二预设位数进行分组;以及
第一聚类模块,用于根据分组后的多个SimHash值对所述多个文本进行第一级聚类。
8.根据权利要求7所述的装置,其特征在于,所述多个SimHash值包括第一SimHash值和第二SimHash值,所述第一SimHash值按照所述第二预设位数进行分组后得到第一分组集合,所述第二SimHash值按照所述第二预设位数进行分组后得到第二分组集合,所述第一聚类模块包括:
判断子模块,用于判断所述第一分组集合和所述第二分组集合中是否存在对应相同的组别;
第一分组子模块,用于在判断出所述第一分组集合与所述第二分组集合中存在对应相同的组别时,则初步判定所述第一SimHash值对应的文本和所述第二SimHash值对应的文本相似,并将所述第一SimHash值对应的文本和所述第二SimHash值对应的文本划分为同一类别;以及
第二分组子模块,用于在判断出所述第一分组集合与所述第二分组集合中不存在对应相同的组别时,则判定所述第一SimHash值对应的文本和所述第二SimHash值对应的文本不相似,并将所述第一SimHash值对应的文本和所述第二SimHash值对应的文本划分为不同类别。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510981938.0A CN106909575B (zh) | 2015-12-23 | 2015-12-23 | 文本聚类方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510981938.0A CN106909575B (zh) | 2015-12-23 | 2015-12-23 | 文本聚类方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106909575A CN106909575A (zh) | 2017-06-30 |
CN106909575B true CN106909575B (zh) | 2020-07-31 |
Family
ID=59206097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510981938.0A Active CN106909575B (zh) | 2015-12-23 | 2015-12-23 | 文本聚类方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106909575B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109241124B (zh) * | 2017-07-11 | 2023-03-10 | 沪江教育科技(上海)股份有限公司 | 一种快速检索相似字符串的方法及系统 |
CN110390011B (zh) * | 2018-04-12 | 2024-05-24 | 北京京东尚科信息技术有限公司 | 数据分类的方法和装置 |
CN109189824B (zh) * | 2018-08-10 | 2022-04-26 | 创新先进技术有限公司 | 一种检索相似文章的方法及装置 |
CN109359183B (zh) * | 2018-10-11 | 2021-04-23 | 南京中孚信息技术有限公司 | 文本信息的查重方法、装置及电子设备 |
CN110597719B (zh) * | 2019-09-05 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种用于适配测试的图像聚类方法、装置及介质 |
CN110990568A (zh) * | 2019-11-26 | 2020-04-10 | 北京中科汇联科技股份有限公司 | 一种短文本聚类方法、装置、电子设备及存储介质 |
CN114090741A (zh) * | 2021-11-24 | 2022-02-25 | 北京鼎普科技股份有限公司 | 海量文件相似计算方法及装置 |
CN114896392A (zh) * | 2022-04-14 | 2022-08-12 | 北京宝兰德软件股份有限公司 | 工单数据的聚类方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930206A (zh) * | 2011-08-09 | 2013-02-13 | 腾讯科技(深圳)有限公司 | 病毒文件的聚类划分处理方法和装置 |
CN103177125A (zh) * | 2013-04-17 | 2013-06-26 | 镇江诺尼基智能技术有限公司 | 一种快速的短文本双聚类方法 |
CN104008105A (zh) * | 2013-02-25 | 2014-08-27 | 腾讯科技(北京)有限公司 | 一种识别垃圾文本的方法和装置 |
CN104615768A (zh) * | 2015-02-13 | 2015-05-13 | 广州神马移动信息科技有限公司 | 文档的同本识别方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120124581A (ko) * | 2011-05-04 | 2012-11-14 | 엔에이치엔(주) | 개선된 유사 문서 탐지 방법, 장치 및 컴퓨터 판독 가능한 기록 매체 |
-
2015
- 2015-12-23 CN CN201510981938.0A patent/CN106909575B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930206A (zh) * | 2011-08-09 | 2013-02-13 | 腾讯科技(深圳)有限公司 | 病毒文件的聚类划分处理方法和装置 |
CN104008105A (zh) * | 2013-02-25 | 2014-08-27 | 腾讯科技(北京)有限公司 | 一种识别垃圾文本的方法和装置 |
CN103177125A (zh) * | 2013-04-17 | 2013-06-26 | 镇江诺尼基智能技术有限公司 | 一种快速的短文本双聚类方法 |
CN104615768A (zh) * | 2015-02-13 | 2015-05-13 | 广州神马移动信息科技有限公司 | 文档的同本识别方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106909575A (zh) | 2017-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106909575B (zh) | 文本聚类方法和装置 | |
CN107862070B (zh) | 基于文本聚类的线上课堂讨论短文本即时分组方法及系统 | |
WO2016165538A1 (zh) | 一种地址数据的管理方法和装置 | |
CN107544982B (zh) | 文本信息处理方法、装置及终端 | |
CN109241526B (zh) | 一种段落分割方法和装置 | |
CN107918604B (zh) | 一种中文的分词方法及装置 | |
CN107784110B (zh) | 一种索引建立方法及装置 | |
CN108363686A (zh) | 一种字符串分词方法、装置、终端设备及存储介质 | |
CN104866478A (zh) | 恶意文本的检测识别方法及装置 | |
CN111767716A (zh) | 企业多级行业信息的确定方法、装置及计算机设备 | |
CN109993216B (zh) | 一种基于k最近邻knn的文本分类方法及其设备 | |
CN109933648B (zh) | 一种真实用户评论的区分方法和区分装置 | |
Bachteler et al. | Similarity filtering with multibit trees for record linkage | |
CN110837555A (zh) | 海量文本去重筛选的方法、设备和存储介质 | |
CN113688240A (zh) | 威胁要素提取方法、装置、设备及存储介质 | |
CN109670153B (zh) | 一种相似帖子的确定方法、装置、存储介质及终端 | |
CN117216239A (zh) | 文本去重方法、装置、计算机设备及存储介质 | |
CN109359481B (zh) | 一种基于bk树的反碰撞搜索约减方法 | |
CN109657060A (zh) | 安全生产事故案例推送方法及系统 | |
CN112559465A (zh) | 一种日志压缩方法、装置、电子设备及存储介质 | |
CN106649367B (zh) | 检测关键词推广程度的方法和装置 | |
CN113609279B (zh) | 一种物料型号提取方法、装置及计算机设备 | |
CN113157788B (zh) | 大数据挖掘方法及系统 | |
CN112528021B (zh) | 一种模型训练方法、模型训练装置及智能设备 | |
CN115334039B (zh) | 一种基于人工智能模型的特征构建方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |