最近朋友面试有被问到文本聚类问题,总结如下:
聚类分析,又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法,以相似性为基础,在一个聚类中的模式之间比不在同一聚类中的模式之间具有更多的相似性(百度百科)。
文本聚类就是把文本转成数值表示的空间向量后,通过聚类算法把文本相似度高的聚在一起。
以淘宝短评论聚类为例,文本聚类通常会遇到以下几大问题:
- 分词:实际环境中很多同义词,错误词,网络词的分词
- 聚类:怎么确定簇的数量,找到K-means中的K值
文本聚类主要流程:
- 1.文本处理
- 分词:针对网络词,新词,使用互信息左右熵挖掘新词,完善分词词典,利用word2vec挖掘同义词,进行同义词替换等操作
- 统计词频,去除低频词
- 利用停用词词典去除停用词
- 2.文本向量表示:
- one-hot:词采用one-hot编码,去除低频词,文本使用bow词袋模型,不考虑词顺序:只考虑词频是使用TF模型,考虑词权重时使用基于BOW的TF-IDF模型,TF-IDF模型会对BOW模型计算一个权重,文本出现多的词权重大,整个语料库出现多的词会有惩罚权重,简单来说,相对文本重要性高的词权重大,低的词权重小
- word2vec:先利用预料或者外部语料训练词向量,然后使用TF模型对每个词的vector求和取均值作为doc的vector表示。或者使用TF-IDF权重*word vector后求和取均值为doc vector表示。
- doc2vec:直接使用doc2vec训练doc vector
- bert:后续可以尝试bert的预训练embedding vector来替代word2vec表示doc
- 3.聚类及评估:
常用算法为K-means和DBSCAN,K-means在 高维特征聚类效果并不好,如果使用one-hot编码时需要先使用PCA进行降维。对于模型评估,K-means采用 簇间距离或者轮廓系数来评定。K值确定可以采用手肘法来选定。具体调参过程等实际操作再来完善。
本文仅作为个人学习总结,非喜勿喷。