gensim doc2vec + sklearn kmeans 做文本聚类
来源:互联网 发布:淘宝直播微淘粉丝要求 编辑:程序博客网 时间:2024/06/13 11:55
前一篇用doc2vec做文本相似度,模型可以找到输入句子最相似的句子,然而分析大量的语料时,不可能一句一句的输入,语料数据大致怎么分类也不能知晓。于是决定做文本聚类。
选择kmeans作为聚类方法。前面doc2vec可以将每个段文本的向量计算出来,然后用kmeans就很好操作了。
选择sklearn库中的KMeans类。
程序如下:
# coding:utf-8import sysimport gensimimport numpy as npfrom gensim.models.doc2vec import Doc2Vec, LabeledSentencefrom sklearn.cluster import KMeansTaggededDocument = gensim.models.doc2vec.TaggedDocumentdef get_datasest(): with open("out/text_dict_cut.txt", 'r') as cf: docs = cf.readlines() print len(docs) x_train = [] #y = np.concatenate(np.ones(len(docs))) for i, text in enumerate(docs): word_list = text.split(' ') l = len(word_list) word_list[l-1] = word_list[l-1].strip() document = TaggededDocument(word_list, tags=[i]) x_train.append(document) return x_traindef train(x_train, size=200, epoch_num=1): model_dm = Doc2Vec(x_train,min_count=1, window = 3, size = size, sample=1e-3, negative=5, workers=4) model_dm.train(x_train, total_examples=model_dm.corpus_count, epochs=100) model_dm.save('model/model_dm') return model_dmdef cluster(x_train): infered_vectors_list = [] print "load doc2vec model..." model_dm = Doc2Vec.load("model/model_dm") print "load train vectors..." i = 0 for text, label in x_train: vector = model_dm.infer_vector(text) infered_vectors_list.append(vector) i += 1 print "train kmean model..." kmean_model = KMeans(n_clusters=15) kmean_model.fit(infered_vectors_list) labels= kmean_model.predict(infered_vectors_list[0:100]) cluster_centers = kmean_model.cluster_centers_ with open("out/own_claasify.txt", 'w') as wf: for i in range(100): string = "" text = x_train[i][0] for word in text: string = string + word string = string + '\t' string = string + str(labels[i]) string = string + '\n' wf.write(string) return cluster_centersif __name__ == '__main__': x_train = get_datasest() model_dm = train(x_train) cluster_centers = cluster(x_train)
阅读全文
0 0
- gensim doc2vec + sklearn kmeans 做文本聚类
- 用gensim.doc2vec 建模、利用相似度做文本分类
- 用gensim doc2vec计算文本相似度
- Kmeans 文本聚类
- Sklearn库中Kmeans聚类技术
- sklearn.cluster.Kmeans 聚类研究
- gensim doc2vec选译
- gensim中doc2vec调参
- Spark-KMeans文本聚类
- kmeans实现文本聚类
- 基于gensim的Doc2Vec简析
- 基于gensim的Doc2Vec简析
- Kmeans聚类算法 python sklearn 用户画像
- 聚类算法学习----之----sklearn.cluster.KMeans
- PCA降维以及Kmeans聚类实例----python,sklearn,PCA,Kmeans
- python sklearn做文本分类
- 文本聚类——Kmeans
- NLP14-基于Gensim中的Doc2Vec的试探
- css继承
- lintcode--和大于s的最小数组
- 23种设计模式(7):中介者模式
- Android 不依赖activity的全局悬浮窗实现
- 从矩阵左上角到右下角的最大值
- gensim doc2vec + sklearn kmeans 做文本聚类
- git的fetch
- 压缩字符串
- 【Java】StringUtils工具类常用方法详解
- 使用谷歌内核TChromium入门
- ACM基础题:奇偶数分离
- HTML中的排版标签
- css3基础样式 边框 阴影 字体
- loadrunner测试需要注意的点