要对新闻文本进行聚类,首先要将每一篇新闻都表示成向量的形式。这里使用的方法是提取文本中的特征词,然后将每篇文档表示成一个特征向量。提取特征的方式有很多,这里选取最简单的基于TF-IDF的方法。对新闻文本进行分词、去停用词后,计算每个词的TF-IDF值,依据该值提取特征,并获得每篇文档的特征向量。接下来对流程进行详细描述。
0x001、预处理:分词、去停用词
这里使用比较简单的jieba分词库进行分词。对每篇文章分词后,将出现在停用词表中的词删除。
- 在分词之前,为了提高分词精确度,可以导入自定义词库。
- 清华大学中文分词库:THUOCL
- 在Github上找到一份停用词表:goto456/stopwords
1 | import jieba |
0x002、基于TF-IDF的特征向量
分词之后,每个词的TF-IDF值可以看作这个词的权重。依照权重逆序排列之后,前n个词可以看做n个特征。那么对于每个文档,就可以得到一个n维的特征向量。
这个过程可以调用sklearn的API实现,非常方便。
1 | from sklearn.feature_extraction.text import TfidfVectorizer |
0x003、基于K-means的文本聚类
同样的,这里直接调用sklearn的API实现。示例如下:
1 | from sklearn.cluster import KMeans |
以上。