CN106557777A - 一种基于SimHash改进的Kmeans聚类方法 - Google Patents

一种基于SimHash改进的Kmeans聚类方法 Download PDF

Info

Publication number
CN106557777A
CN106557777A CN201610901630.5A CN201610901630A CN106557777A CN 106557777 A CN106557777 A CN 106557777A CN 201610901630 A CN201610901630 A CN 201610901630A CN 106557777 A CN106557777 A CN 106557777A
Authority
CN
China
Prior art keywords
document
clustered
cluster
simhash
sentence
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.)
Granted
Application number
CN201610901630.5A
Other languages
English (en)
Other versions
CN106557777B (zh
Inventor
李晓东
向菁菁
耿光刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Internet Network Information Center
Original Assignee
China Internet Network Information Center
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Internet Network Information Center filed Critical China Internet Network Information Center
Priority to CN201610901630.5A priority Critical patent/CN106557777B/zh
Publication of CN106557777A publication Critical patent/CN106557777A/zh
Application granted granted Critical
Publication of CN106557777B publication Critical patent/CN106557777B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/232Non-hierarchical techniques
    • G06F18/2321Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
    • G06F18/23211Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with adaptive number of clusters

Abstract

本发明公开了一种基于SimHash改进的Kmeans聚类方法,本方法为:1)使用SimHash算法计算每一待聚类文档的指纹,生成一SimHash表;2)选取一待聚类文档,根据该文档的指纹查找该SimHash表,得到一相似文档集合S0;3)将S0中与该待聚类文档的Overlap值将大于阈值α的文档加入相似文档集合S1;4)返回S1所属的聚类簇集合C0,计算该待聚类文档到C0中所有簇质心的距离,然后将该文档归入距离最近且小于设定阈值的簇i并更新簇质心表,否则新建一簇k,将该文档作为该簇k中的第一个元素;若C0为空,则新建一个簇j,将该待聚类文档作为该簇j中的第一个元素。本发明大大提高了聚类效果。

Description

一种基于SimHash改进的Kmeans聚类方法
技术领域
本发明涉及一种基于SimHash改进的Kmeans聚类方法,属于计算机网络技术领域。
背景技术
在当今互联网信息处于爆炸式增长的时代,信息的去重和聚类作为一种重要的技术手段受到越来越多的学者的研究和青睐。其中文本信息的去重和聚类是其中重要的一部分。因此,本发明只涉及文本信息的去重和聚类。文本信息的聚类主要涉及两个方面:第一是文本表示模式,即用什么表示文本;二是选择合适的聚类算法。目前,文本表示模式多种多样,比较流行的有向量空间模型(Vector Space Model,VSM),概率模型,语言模型等;同样,在聚类算法的选择上针对不同的聚类目标可供选择的算法及各种变体也有很多。
本发明中针对新闻网页内容的聚类不同于根据新闻内容所属主题进行分类(分为娱乐、军事、政治、教育等),而是将内容相同或相似的新闻聚为一类。该聚类问题是一个典型的基于划分的问题,基于划分的聚类算法中最简单最常用的算法为Kmeans聚类算法,但单纯的Kmeans算法具有两个明显的缺点:一是需要在聚类前指定聚类簇的个数;在事先不知道聚类簇个数的情况下,聚类质量很难保证;二是需要迭代计算质心,当样本数据较大时,不仅计算开销大而且耗时长,不能适用于大量数据。
Google于2002年提出一个局部敏感哈希算法,用于大规模的网页去重,其算法名为SimHash。该算法的主要思想是对文本向量进行降维,将高维的特征向量映射成N bit的SimHash Code或称为指纹(只包含0和1)。通过计算两篇文档指纹码之间的海明距离来判断文档是否相似(通常选用64bit特征码,海明距离阈值选择为3,若两篇文档的SimHash Code的海明距离小于3则被认定为相似)。因此,SimHash在计算两篇文档的相似度时只需计算两篇文档SimHash Code的海明距离,不再需要对根据文本内容继续计算,大大加快了计算时间。
因此,本发明针对Kmeans上述两个缺点,融合了SimHash数据压缩和相似文档快速查找的特点,对Kmeans进行了改进。
发明内容
针对现有技术中存在的技术问题,本发明提供一种基于SimHash改进的Kmeans聚类方法。本发明的目的在于:
1)针对新闻文本信息进行聚类,将相同或相似文本内容的新闻聚为一类;
2)针对Kmeans聚类算法需事先指定聚类簇个数和当样本数据量大时计算开销大这两个缺点进行了改进,使得改进后的Kmeans算法能够准确、高效、快速的进行新闻网页聚类;
3)为新闻溯源研究提供重要的技术支撑;
为实现以上目的,本发明的技术方案为:
一种基于SimHash改进的Kmeans聚类方法,其步骤为:
1)使用SimHash算法计算每一待聚类文档的指纹,生成一SimHash表;
2)选取一待聚类文档,计算该待聚类文档所属的聚类簇并将其记录到该SimHash表中;根据该待聚类文档的指纹查找该SimHash表,得到与该待聚类文档相似的文档集合S0;
3)计算该文档集合S0中的每一文档与该待聚类文档的相似度值;将与该待聚类文档的相似度值大于阈值α的文档加入相似文档集合S1;
4)返回该相似文档集合S1所属的聚类簇集合C0,计算该待聚类文档到该聚类簇集合C0中所有簇的簇质心的距离,然后将该待聚类文档归入距离最近且距离小于设定阈值的簇i并更新该簇i的簇质心表,如果该待聚类文档与该聚类簇集合C0中所有簇的簇质心的距离均不小于该设定阈值,则新建一个簇k,将该待聚类文档作为该簇k中的第一个元素;若该聚类簇集合C0为空,则新建一个簇j,将该待聚类文档作为该簇j中的第一个元素。
进一步的,更新簇i的簇质心表的方法为:将新加入的该待聚类文档中的句子加入该簇i的句子频率表中,选择句子频率大于阈值β的句子集合作为该簇i新的质心。
进一步的,步骤1)中,首先使用分句对每一待聚类文档进行切分,采用句子作为待聚类文档的最小单元,然后使用SimHash算法计算每一待聚类文档的指纹。
进一步的,利用公式计算所述相似度值;其中,sim(A,B)为相似度值,|A∩B|表示文档A与文档B中相同句子的个数,|A|表示文档A中句子的总个数,|B|表示文档B中句子的总个数。
进一步的,步骤2)中,利用SimHash算法计算当前所选待聚类文档指纹与其他每一待聚类文档指纹的海明距离,将与当前所选待聚类文档的海明距离小于设定值M的待聚类文档作为当前所选待聚类文档的相似文档集合S0。
进一步的,该设定值M为3。
进一步的,所述待聚类文档为新闻网页正文。
本发明高效的进行文本聚类,本文提出的基于SimHash改进的Kmeans算法(以下简称为改进后的Kmeans算法),融合SimHash数据压缩和快速查找的优点,算法步骤如下:
输入:m个待聚类的只包含新闻关键信息(关键信息指新闻的标题、时间、来源和正文)信息的网页;
输出:k个聚类簇,以及聚类簇中包含的网页;
在进行聚类前,先计算这m个网页的SimHash Code(采用64bit),生成一SimHash表,同时对所有网页进行分句处理,构成新的分句后的网页集合S。
SimHash使用了以空间换取时间的做法实现快速查找。假设使用了64bit的特征码,那么将64bit特征码切分为k份(比如:4份),每一份对应一个16bit的特征串;使用一个哈希表,将每一篇文档链接在每一份特征串映射的位置;对于每篇文档在生成SimHashCode之后,即通过切分的方式将SimHash Code切分之后再通过HashTable映射到链接,便得到SimHash表。
与Kmeans不同,基于SimHash的Kmeans一开始不用指定聚类簇个数K,初始状态时的聚类簇个数为0,SimHash表为空。对于一篇待聚类的文档doc:
1)判断待聚类的文档doc所属簇并填充SimHash表;利用文档doc的SimHash Code,查找SimHash表,返回SimHash算法计算出的相似文档集合S0;S0中可以是代表文档的文档编号,可以是代表文档的文档本身;
2)文档集合S0中的文档与待聚类文档doc一一计算Overlap值;
3)若Overlap值大于阈值α,则加入相似文档集合S1;
4)返回文档集合S1所属的聚类簇集合C0,计算文档doc到簇集合C0中所有簇的簇质心的距离;
5)若集合C0为空,则新建一个簇,doc为簇中的第一个元素并作为初始质心;若集合C0不为空,则将doc归为这些簇中与其距离最近且距离小于设定阈值的簇,并更新簇质心表;否则新建一个簇k。
6)更新质心表:将新加入的文档doc中的句子加入整个簇内句子的句子频率表中,选择句子频率大于阈值β的句子集合作为该簇新的质心。
本发明的聚类过程借用了SimHash快速查找的特性对Kmeans算法进行了改进,使用SimHash在进行聚类之前找出与待聚类文档可能相似的文档集合,以减少聚类过程中计算量;然后使用Overlap系数(公式如下)进行文本相似度的计算:
假设有文档A和B,在上述公式中,|A∩B|表示文档A,B中相同句子的个数,|A|,|B|分别表示文档A和B中句子的总个数。A,B中相同的句子越多,系数越大;但对于A,B之间存在真包含的关系情况,例如:,即文档A中的全部内容都来源于文档B,根据Overlap系数计算出此时的sim(A,B)=1.0。
本发明聚类的类别数无需预先指定,程序会根据文档自动将文档分为若干类;聚类簇的中心是通过该簇中频率出现次数大于某一阈值的句子组合而成,不需要人工事先指定,而且在每轮迭代后会重新计算聚类簇的中心。
与现有技术相比,本发明的积极效果为:
本发明能够快速高效的对新闻正文文本进行聚类,在由200篇新闻网页正文组成的验证集上,以轮廓系数作为评价指标,改进后的Kmeans算法与Kmeans算法在聚类质量和聚类速度上的对比如下表1所示:
表1 Kmeans与改进的Kmeans对比结果
从表1中能够看出,改进后的Kmeans的执行时间比传统Kmeans快27倍;根据轮廓系数指标,改进后的Kmeans聚类效果优于传统Kmeans算法近2倍。总体上看,改进后的Kmeans较传统Kmeans在性能上有很大的提高。
附图说明
图1为待聚类新闻关键信息文本示例图;
图2为聚类结果文件示例图;
图3为改进后的Kmeans算法流程图。
具体实施方式
下面结合附图对本发明的具体实施方法进行进一步详细描述。
本发明的整体算法见图3。
1)使用分句对新闻正文进行切分,而非分词处理;
2)采用句子作为文本的最小单元,使用SimHash将文本转换为Nbit的字符串,对文本进行压缩;
3)寻找相似的文本集合时,利用SimHash计算关于两篇相似文档的Nbit的字符串的海明距离小于3的特性,先得出可能相似的文档集合,在后续继续计算之前去除了不相似的文档;
4)不同于Kmeans算法每轮迭代计算簇的质心,改进后的Kmeans算法每个簇维护一张簇质心表,表内存放句子频率大于阈值β的句子集合作为该簇质心;比起Kmeans的迭代计算,句子的频率统计的计算开销要小的多。
具体实施例:
将待聚类的新闻网页关键信息的文本以文本文件格式(.txt)存在于本地文件夹中,如图1所示,新闻关键信息文本内容格式为:标题、时间、来源和正文,四者之间以换行符分隔开。
指定待聚类文件目录,运行改进后Kmeans聚类算法,生成“xxx_cluster_result.txt”,文件格式为:簇标号\t簇内的网页编号(网页编号之间以空格分隔),聚类结果文件如图2所示。

Claims (7)

1.一种基于SimHash改进的Kmeans聚类方法,其步骤为:
1)使用SimHash算法计算每一待聚类文档的指纹,生成一SimHash表;
2)选取一待聚类文档,计算该待聚类文档所属的聚类簇并将其记录到该SimHash表中;根据该待聚类文档的指纹查找该SimHash表,得到与该待聚类文档相似的文档集合S0;
3)计算该文档集合S0中的每一文档与该待聚类文档的相似度值;将与该待聚类文档的相似度值大于阈值α的文档加入相似文档集合S1;
4)返回该相似文档集合S1所属的聚类簇集合C0,计算该待聚类文档到该聚类簇集合C0中所有簇的簇质心的距离,然后将该待聚类文档归入距离最近且距离小于设定阈值的簇i并更新该簇i的簇质心表,如果该待聚类文档与该聚类簇集合C0中所有簇的簇质心的距离均不小于该设定阈值,则新建一个簇k,将该待聚类文档作为该簇k中的第一个元素;若该聚类簇集合C0为空,则新建一个簇j,将该待聚类文档作为该簇j中的第一个元素。
2.如权利要求1所述的方法,其特征在于,更新簇i的簇质心表的方法为:将新加入的该待聚类文档中的句子加入该簇i的句子频率表中,选择句子频率大于阈值β的句子集合作为该簇i新的质心。
3.如权利要求1或2所述的方法,其特征在于,步骤1)中,首先使用分句对每一待聚类文档进行切分,采用句子作为待聚类文档的最小单元,然后使用SimHash算法计算每一待聚类文档的指纹。
4.如权利要求1或2所述的方法,其特征在于,利用公式计算所述相似度值;其中,sim(A,B)为相似度值,|A∩B|表示文档A与文档B中相同句子的个数,|A|表示文档A中句子的总个数,|B|表示文档B中句子的总个数。
5.如权利要求1或2所述的方法,其特征在于,步骤2)中,利用SimHash算法计算当前所选待聚类文档指纹与其他每一待聚类文档指纹的海明距离,将与当前所选待聚类文档的海明距离小于设定值M的待聚类文档作为当前所选待聚类文档的相似文档集合S0。
6.如权利要求5所述的方法,其特征在于,该设定值M为3。
7.如权利要求1所述的方法,其特征在于,所述待聚类文档为新闻网页正文。
CN201610901630.5A 2016-10-17 2016-10-17 一种基于SimHash改进的Kmeans文档聚类方法 Active CN106557777B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610901630.5A CN106557777B (zh) 2016-10-17 2016-10-17 一种基于SimHash改进的Kmeans文档聚类方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610901630.5A CN106557777B (zh) 2016-10-17 2016-10-17 一种基于SimHash改进的Kmeans文档聚类方法

Publications (2)

Publication Number Publication Date
CN106557777A true CN106557777A (zh) 2017-04-05
CN106557777B CN106557777B (zh) 2019-09-06

Family

ID=58443091

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610901630.5A Active CN106557777B (zh) 2016-10-17 2016-10-17 一种基于SimHash改进的Kmeans文档聚类方法

Country Status (1)

Country Link
CN (1) CN106557777B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783990A (zh) * 2016-08-26 2018-03-09 华为技术有限公司 一种数据压缩方法及终端
CN108596271A (zh) * 2018-05-09 2018-09-28 中国平安人寿保险股份有限公司 指纹构建算法的评估方法、装置、存储介质及终端
CN108897775A (zh) * 2018-06-01 2018-11-27 昆明理工大学 一种基于感知哈希的快速图像识别系统及方法
CN109543704A (zh) * 2017-09-22 2019-03-29 比亚迪股份有限公司 汽车及车载雷达的多目标聚类方法、装置
CN112235384A (zh) * 2020-10-09 2021-01-15 腾讯科技(深圳)有限公司 分布式系统中的数据传输方法、装置、设备及存储介质
CN112329717A (zh) * 2020-11-25 2021-02-05 中国人民解放军国防科技大学 一种面向海量数据相似度检测的指纹高速缓存方法
CN112631922A (zh) * 2020-12-28 2021-04-09 广州品唯软件有限公司 流量回放数据选取方法、系统和存储介质
WO2022153287A1 (en) * 2021-01-13 2022-07-21 Bigid Inc Clustering of structured and semi-structured data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022840A (zh) * 2015-08-18 2015-11-04 新华网股份有限公司 一种新闻信息处理方法、新闻推荐方法和相关装置
CN105809193A (zh) * 2016-03-07 2016-07-27 山东大学 一种基于kmeans算法的非法运营车辆的识别方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022840A (zh) * 2015-08-18 2015-11-04 新华网股份有限公司 一种新闻信息处理方法、新闻推荐方法和相关装置
CN105809193A (zh) * 2016-03-07 2016-07-27 山东大学 一种基于kmeans算法的非法运营车辆的识别方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李纲等: "基于语义指纹的中文文本快速去重", 《知识组织与知识管理》 *
税仪冬等: "周期分类和Single-Pass聚类相结合的话题识别与跟踪方法", 《北京交通大学学报》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783990A (zh) * 2016-08-26 2018-03-09 华为技术有限公司 一种数据压缩方法及终端
CN107783990B (zh) * 2016-08-26 2021-11-19 华为技术有限公司 一种数据压缩方法及终端
CN109543704A (zh) * 2017-09-22 2019-03-29 比亚迪股份有限公司 汽车及车载雷达的多目标聚类方法、装置
CN109543704B (zh) * 2017-09-22 2021-02-23 比亚迪股份有限公司 汽车及车载雷达的多目标聚类方法、装置
CN108596271A (zh) * 2018-05-09 2018-09-28 中国平安人寿保险股份有限公司 指纹构建算法的评估方法、装置、存储介质及终端
CN108596271B (zh) * 2018-05-09 2023-05-26 中国平安人寿保险股份有限公司 指纹构建算法的评估方法、装置、存储介质及终端
CN108897775A (zh) * 2018-06-01 2018-11-27 昆明理工大学 一种基于感知哈希的快速图像识别系统及方法
CN112235384A (zh) * 2020-10-09 2021-01-15 腾讯科技(深圳)有限公司 分布式系统中的数据传输方法、装置、设备及存储介质
CN112235384B (zh) * 2020-10-09 2023-10-31 腾讯科技(深圳)有限公司 分布式系统中的数据传输方法、装置、设备及存储介质
CN112329717A (zh) * 2020-11-25 2021-02-05 中国人民解放军国防科技大学 一种面向海量数据相似度检测的指纹高速缓存方法
CN112631922A (zh) * 2020-12-28 2021-04-09 广州品唯软件有限公司 流量回放数据选取方法、系统和存储介质
WO2022153287A1 (en) * 2021-01-13 2022-07-21 Bigid Inc Clustering of structured and semi-structured data

Also Published As

Publication number Publication date
CN106557777B (zh) 2019-09-06

Similar Documents

Publication Publication Date Title
CN106557777B (zh) 一种基于SimHash改进的Kmeans文档聚类方法
CN107133213B (zh) 一种基于算法的文本摘要自动提取方法与系统
CN109960724B (zh) 一种基于tf-idf的文本摘要方法
CN104850633B (zh) 一种基于手绘草图部件分割的三维模型检索系统及方法
CN110321925B (zh) 一种基于语义聚合指纹的文本多粒度相似度比对方法
CN107102981B (zh) 词向量生成方法和装置
WO2017107566A1 (zh) 基于词向量相似度的检索方法和系统
US7809718B2 (en) Method and apparatus for incorporating metadata in data clustering
CN102289522B (zh) 一种对于文本智能分类的方法
CN104881458B (zh) 一种网页主题的标注方法和装置
CN107862070B (zh) 基于文本聚类的线上课堂讨论短文本即时分组方法及系统
CN106294350A (zh) 一种文本聚合方法及装置
CN106202294B (zh) 基于关键词和主题模型融合的相关新闻计算方法及装置
CN110008309B (zh) 一种短语挖掘方法及装置
CN108647322B (zh) 基于词网识别大量Web文本信息相似度的方法
CN107291895B (zh) 一种快速的层次化文档查询方法
CN111190900A (zh) 一种云计算模式下json数据可视化优化方法
CN107357895B (zh) 一种基于词袋模型的文本表示的处理方法
CN106844482B (zh) 一种基于搜索引擎的检索信息匹配方法及装置
CN104699797A (zh) 一种网页数据结构化解析方法和装置
CN108304377A (zh) 一种长尾词的提取方法及相关装置
CN105183792B (zh) 一种基于局部敏感哈希的分布式快速文本分类方法
CN107169011B (zh) 基于人工智能的网页原创性识别方法、装置及存储介质
CN110837555A (zh) 海量文本去重筛选的方法、设备和存储介质
CN109359090A (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
GR01 Patent grant
GR01 Patent grant