一 概念:
聚类:将给定对象的集合划分为不同子集的过程,子集被称为簇
文本聚类:对文档进行聚类分析
硬聚类:每个元素被确定地归入一个簇
软聚类:每个元素与每个簇都存在一定的从属程度,只不过该程度有大小
划分式聚类算法:划分聚类的结果是一系列不相交的子集
层次聚类算法:层次及聚类的结果是一棵树,叶子节点是元素,父节点是簇
二 代码实现:
# -*- coding:utf-8 -*- # Author:hankcs # Date: 2018-08-18 23:26 # 《自然语言处理入门》第 10 章 文本聚类 # 配套书籍:http://nlp.hankcs.com/book.php # 讨论答疑:https://bbs.hankcs.com/ from pyhanlp import * ClusterAnalyzer = JClass(\'com.hankcs.hanlp.mining.cluster.ClusterAnalyzer\') if __name__ == \'__main__\': analyzer = ClusterAnalyzer()#聚类分析器 analyzer.addDocument("赵一", "流行, 流行, 流行, 流行, 流行, 流行, 流行, 流行, 流行, 流行, 蓝调, 蓝调, 蓝调, 蓝调, 蓝调, 蓝调, 摇滚, 摇滚, 摇滚, 摇滚") analyzer.addDocument("钱二", "爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲") analyzer.addDocument("张三", "古典, 古典, 古典, 古典, 民谣, 民谣, 民谣, 民谣") analyzer.addDocument("李四", "爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 金属, 金属, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲") analyzer.addDocument("王五", "流行, 流行, 流行, 流行, 摇滚, 摇滚, 摇滚, 嘻哈, 嘻哈, 嘻哈") analyzer.addDocument("马六", "古典, 古典, 古典, 古典, 古典, 古典, 古典, 古典, 摇滚") print(analyzer.kmeans(3)) # 簇的数量为3的集合 print(analyzer.repeatedBisection(3)) # 簇的数量为3的集合 print(analyzer.repeatedBisection(1.0)) # 自动判断聚类数量k
ClusterAnalyzer()内部会自动对其分词、去除停用词、转换为词袋向量