当前位置:   article > 正文

python 文本聚类算法

python 文本聚类

python 文本聚类算法

三体下载
将下载的文件重命名为santi.txt,放在文件的目录下

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Wed Aug 1 18:31:11 2018
  5. @author: luogan
  6. """
  7. import jieba
  8. import re
  9. from gensim.models import word2vec
  10. import multiprocessing
  11. import gensim
  12. import numpy as np
  13. import pandas as pd
  14. import collections
  15. import pandas
  16. def segment_text(source_corpus, train_corpus, coding, punctuation):
  17. '''
  18. 切词,去除标点符号
  19. :param source_corpus: 原始语料
  20. :param train_corpus: 切词语料
  21. :param coding: 文件编码
  22. :param punctuation: 去除的标点符号
  23. :return:
  24. '''
  25. with open(source_corpus, 'r', encoding=coding) as f, open(train_corpus, 'w', encoding=coding) as w:
  26. for line in f:
  27. # 去除标点符号
  28. line = re.sub('[{0}]+'.format(punctuation), '', line.strip())
  29. # 切词
  30. words = jieba.cut(line)
  31. w.write(' '.join(words))
  32. #if __name__ == '__main__':
  33. # 严格限制标点符号
  34. strict_punctuation = '。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑·¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴々﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+=<­­__-\ˇ~﹉﹊()〈〉‹›﹛﹜『』〖〗[]《》〔〕{}「」【】︵︷︿︹︽_﹁﹃︻︶︸﹀︺︾ˉ﹂﹄︼'
  35. # 简单限制标点符号
  36. simple_punctuation = '’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
  37. # 去除标点符号
  38. punctuation = simple_punctuation + strict_punctuation
  39. # 文件编码
  40. coding = 'utf-8'
  41. #coding ="gb18030"
  42. # 原始语料
  43. source_corpus_text = 'santi.txt'
  44. # 是每个词的向量维度
  45. size = 10
  46. # 是词向量训练时的上下文扫描窗口大小,窗口为5就是考虑前5个词和后5个词
  47. window = 5
  48. # 设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃
  49. min_count = 1
  50. # 是训练的进程数,默认是当前运行机器的处理器核数。
  51. workers = multiprocessing.cpu_count()
  52. # 切词语料
  53. train_corpus_text = 'words.txt'
  54. # w2v模型文件
  55. model_text = 'w2v_size_{0}.model'.format(size)
  56. # 切词 @TODO 切词后注释
  57. segment_text(source_corpus_text, train_corpus_text, coding, punctuation)
  58. # w2v训练模型 @TODO 训练后注释
  59. sentences = word2vec.Text8Corpus(train_corpus_text)
  60. model = word2vec.Word2Vec(sentences=sentences, size=size, window=window, min_count=min_count, workers=workers)
  61. model.save(model_text)
  62. # 加载模型
  63. model = gensim.models.Word2Vec.load(model_text)
  64. g= open("words.txt","r") #设置文件对象
  65. std= g.read() #将txt文件的所有内容读入到字符串str中
  66. g.close() #将文件关闭
  67. cc=std.split(' ')
  68. dd=[]
  69. kkl=dict()
  70. '''
  71. 将每个词语向量化,并且append 在dd中,形成一个二维数组
  72. 并形成一个字典,index是序号,值是汉字
  73. '''
  74. for p in range(len(cc)):
  75. hk=cc[p]
  76. if hk in model:
  77. vec=list(model.wv[hk])
  78. dd.append(vec)
  79. kkl[p]=hk
  80. #将二维数组转化成numpy
  81. dd1=np.array(dd)
  82. from sklearn.cluster import KMeans
  83. estimator = KMeans(n_clusters=100) # 构造聚类器
  84. estimator.fit(dd1) # 聚类
  85. label_pred = estimator.labels_ # 获取聚类标签
  86. #index 是某条向量的序号,值是分类号
  87. index1=list(range(len(dd1)))
  88. vc=pd.Series(label_pred,index=index1)
  89. aa = collections.Counter(label_pred)
  90. v = pandas.Series(aa)
  91. v1=v.sort_values(ascending=False)
  92. for n in range(10):
  93. vc1=vc[vc==v1.index[n]]
  94. vindex=list(vc1.index)
  95. kkp=pd.Series(kkl)
  96. print('第',n,'类的前10个数据')
  97. ffg=kkp[vindex][:10]
  98. ffg1=list(set(ffg))
  99. print(ffg1)
  1. 0 类的前10个数据
  2. ['商讨', '合集\u200b', '连载', '刘慈欣简介', '无奈', '编辑', '事先', '题材', '一二三', '今年']
  3. 1 类的前10个数据
  4. ['的']
  5. 2 类的前10个数据
  6. ['本书', '活', '举', '作者', '看做', '没想到', '朋友', '见面', '主人公', '十分之一']
  7. 3 类的前10个数据
  8. ['延续', '虽', '球状', '更是', '占', '文革', '部', '冷酷']
  9. 4 类的前10个数据
  10. [nan, '物理学家', '闪电', '怎样', '一年', '一时', '往事', '关于', '却是']
  11. 5 类的前10个数据
  12. ['人类文明', '一段', '试图', '光年', '重新', '星空', '死亡', '内容']
  13. 6 类的前10个数据
  14. ['不了', '大家', '写', '仔细', '有时', '空灵', '许多', '如何', '966', '心中']
  15. 7 类的前10个数据
  16. ['精神', '故事', '科幻', '方式', '永远', '之前']
  17. 8 类的前10个数据
  18. ['里面', '冷兵器', '了', '自己', '立刻', '中', '已', '顶上']
  19. 9 类的前10个数据
  20. ['在', '的']

posted on 2018-08-01 18:44 luoganttcc 阅读(...) 评论(...) 编辑 收藏

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/290000
推荐阅读
相关标签
  

闽ICP备14008679号