文本聚类

文本聚类

import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer #基于TF-IDF词频转换向量库
from sklearn.cluster import KMeans
import jieba.posseg as pseg

中文分词

def jieba_cut(collect):
word_list = []
seg_list = pseg.cut(collect) #精确模式分词
for word in seg_list:
if word.flag in ['a','ag','an']: #只选择形容词
word_list.append(word.word) #分词追加到列表
return word_list

读取文件

fn = open('D:/collect.txt',encoding='utf-8')
collect_list = fn.readlines() #读取文件内容为列表
fn.close()

word to vector

stop_words = [u'…', u'。', u',', u'?', u'!', u'+', u' ', u'、', u':', u';', u'(', u')', u'.', u'-'] # 定义停用词
vectorizer = TfidfVectorizer(stop_words=stop_words, tokenizer=jieba_cut, use_idf=True) # 创建词向量模型
X = vectorizer.fit_transform(collect_list) # 将评论关键字列表转换为词向量空间模型

k均值聚类

K均值聚类

model_kmeans = KMeans(n_clusters=3) # 创建聚类模型对象
model_kmeans.fit(X) # 训练模型

聚类结果汇总

cluster_labels = model_kmeans.labels_ # 聚类标签结果
word_vectors = vectorizer.get_feature_names() # 词向量
word_values = X.toarray() # 向量值
comment_matrix = np.hstack((word_values, cluster_labels.reshape(word_values.shape[0], 1))) # 将向量值和标签值合并为新的矩阵
word_vectors.append('cluster_labels') # 将新的聚类标签列表追加到词向量后面
comment_pd = pd.DataFrame(comment_matrix, columns=word_vectors) # 创建包含词向量和聚类标签的数据框
print (comment_pd.head(1)) # 打印输出数据框第1条数据

聚类结果分析

comment_cluster1 = comment_pd[comment_pd['cluster_labels'] == 2].drop('cluster_labels', axis=1) # 选择聚类标签值为2的数据,并删除最后一列
word_importance = np.sum(comment_cluster1, axis=0) # 按照词向量做汇总统计
print (word_importance.sort_values(ascending=False)[:20]) # 按汇总统计的值做逆序排序并打印输出前5个词

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注:这篇技术文章是9月我就职于W公司时在完成新闻聚类后整理的技术文档,因数据管控严格,文档中的聚类结果无法从公司电...
    Mc杰夫阅读 8,750评论 5 5
  • 背景介绍 文本情感分析作为NLP的常见任务,具有很高的实际应用价值。本文将采用LSTM模型,训练一个能够识别文本p...
    城市中迷途小书童阅读 1,738评论 0 0
  • 最近一段时间在文本聚类的工作,一路也遇到了不少坑,自己也写一篇文章记录了一下自己的过程. 1:什么是文本聚类 先说...
    云时之间阅读 13,115评论 0 15
  • 背景介绍 由于项目需要,需要对旅游游记文本进行聚类,为打标签做指导,所以调研了主流的短文本聚类方法,文本聚类主要还...
    bupt_周小瑜阅读 14,454评论 3 22
  • 参考文章:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.htmlh...
    枫枫大世界阅读 500评论 0 0