文本聚类
将一个个文档表示成高维空间点,通过计算哪些点距离比较近,聚成一个簇,簇的中心叫做簇心
一个好的聚类要保证簇内点的距离尽量的近,但簇与簇之间的点要尽量的远
聚类一般步骤
1. 引入依赖库
一般有随机数库、jieba 分词、pandas 库等
加载停用词字典,是个 stopwords.txt 文件,可以根据场景在该文本里面添加要去除的词(比如冠词、人称、数字等词)
2. 语料加载
3. 分词
4. 去停用词
5. 生成训练数据
6. 将得到的数据集打散,生成更可靠的训练集分布,避免同类数据分布不均匀
7. 抽取词向量特征,将文本中的词语转换为词频矩阵,统计每个词语的 tf-idf 权值,获得词在对应文本中的 tf-idf 权重
用 TF-IDF 的中文文本 K-means 聚类
使用 k-means++ 来初始化模型,然后通过 PCA 降维把上面的权重 weight 降到10维,进行聚类模型训练
定义聚类结果可视化函数
对数据降维到2维,然后获得结果,最后绘制聚类结果图
得到的聚类结果图,可以看到4个中心点和4个簇
降维使用了 PCA,我们还可以试试 TSNE,TSNE 保留下的属性信息,更具代表性,也即最能体现样本间的差异,但是 TSNE 运行极慢,PCA 则相对较快
在展示高维数据时,常常先用 PCA 进行降维,再使用 TSNE
学习资料:
《中文自然语言处理入门实战》