三体下载

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

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

"""

Created on Wed Aug 1 18:31:11 2018

@author: luogan

"""

import jieba

import re

from gensim.models import word2vec

import multiprocessing

import gensim

import numpy as np

import pandas as pd

import collections

import pandas

def segment_text(source_corpus, train_corpus, coding, punctuation):

'''

切词,去除标点符号

:param source_corpus: 原始语料

:param train_corpus: 切词语料

:param coding: 文件编码

:param punctuation: 去除的标点符号

:return:

'''

with open(source_corpus, 'r', encoding=coding) as f, open(train_corpus, 'w', encoding=coding) as w:

for line in f:

# 去除标点符号

line = re.sub('[{0}]+'.format(punctuation), '', line.strip())

# 切词

words = jieba.cut(line)

w.write(' '.join(words))

#if __name__ == '__main__':

# 严格限制标点符号

strict_punctuation = '。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑·¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴々﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+=<­­__-\ˇ~﹉﹊()〈〉‹›﹛﹜『』〖〗[]《》〔〕{}「」【】︵︷︿︹︽_﹁﹃︻︶︸﹀︺︾ˉ﹂﹄︼'

# 简单限制标点符号

simple_punctuation = '’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

# 去除标点符号

punctuation = simple_punctuation + strict_punctuation

# 文件编码

coding = 'utf-8'

#coding ="gb18030"

# 原始语料

source_corpus_text = 'santi.txt'

# 是每个词的向量维度

size = 10

# 是词向量训练时的上下文扫描窗口大小,窗口为5就是考虑前5个词和后5个词

window = 5

# 设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃

min_count = 1

# 是训练的进程数,默认是当前运行机器的处理器核数。

workers = multiprocessing.cpu_count()

# 切词语料

train_corpus_text = 'words.txt'

# w2v模型文件

model_text = 'w2v_size_{0}.model'.format(size)

# 切词 @TODO 切词后注释

segment_text(source_corpus_text, train_corpus_text, coding, punctuation)

# w2v训练模型 @TODO 训练后注释

sentences = word2vec.Text8Corpus(train_corpus_text)

model = word2vec.Word2Vec(sentences=sentences, size=size, window=window, min_count=min_count, workers=workers)

model.save(model_text)

# 加载模型

model = gensim.models.Word2Vec.load(model_text)

g= open("words.txt","r") #设置文件对象

std= g.read() #将txt文件的所有内容读入到字符串str中

g.close() #将文件关闭

cc=std.split(' ')

dd=[]

kkl=dict()

'''

将每个词语向量化,并且append 在dd中,形成一个二维数组

并形成一个字典,index是序号,值是汉字

'''

for p in range(len(cc)):

hk=cc[p]

if hk in model:

vec=list(model.wv[hk])

dd.append(vec)

kkl[p]=hk

#将二维数组转化成numpy

dd1=np.array(dd)

from sklearn.cluster import KMeans

estimator = KMeans(n_clusters=100) # 构造聚类器

estimator.fit(dd1) # 聚类

label_pred = estimator.labels_ # 获取聚类标签

#index 是某条向量的序号,值是分类号

index1=list(range(len(dd1)))

vc=pd.Series(label_pred,index=index1)

aa = collections.Counter(label_pred)

v = pandas.Series(aa)

v1=v.sort_values(ascending=False)

for n in range(10):

vc1=vc[vc==v1.index[n]]

vindex=list(vc1.index)

kkp=pd.Series(kkl)

print('第',n,'类的前10个数据')

ffg=kkp[vindex][:10]

ffg1=list(set(ffg))

print(ffg1)

第 0 类的前10个数据

['商讨', '合集\u200b', '连载', '刘慈欣简介', '无奈', '编辑', '事先', '题材', '一二三', '今年']

第 1 类的前10个数据

['的']

第 2 类的前10个数据

['本书', '活', '举', '作者', '看做', '没想到', '朋友', '见面', '主人公', '十分之一']

第 3 类的前10个数据

['延续', '虽', '球状', '更是', '占', '文革', '部', '冷酷']

第 4 类的前10个数据

[nan, '物理学家', '闪电', '怎样', '一年', '一时', '往事', '关于', '却是']

第 5 类的前10个数据

['人类文明', '一段', '试图', '光年', '重新', '星空', '死亡', '内容']

第 6 类的前10个数据

['不了', '大家', '写', '仔细', '有时', '空灵', '许多', '如何', '966', '心中']

第 7 类的前10个数据

['精神', '故事', '科幻', '方式', '永远', '之前']

第 8 类的前10个数据

['里面', '冷兵器', '了', '自己', '立刻', '中', '已', '顶上']

第 9 类的前10个数据

['在', '的']

python文本聚类_python 文本聚类算法相关推荐

  1. python音频聚类_Python实现聚类算法AP

    1.算法简介 AP(Affinity Propagation)通常被翻译为近邻传播算法或者亲和力传播算法,是在2007年的Science杂志上提出的一种新的聚类算法.AP算法的基本思想是将全部数据点都 ...

  2. python数据获取与文本分析_python文本分析之处理和理解文本

    前言: 在进行自然语言的建模(NLP)时,我们通常难以处理文字类型的数据,因此在常见的机器学习项目中,数据的格式是结构化的,就算在视觉处理的时候也是一个矩阵或者高维张量的形式.那么文字类型的数据我们应 ...

  3. python 文本向量化_Python文本特征抽取与向量化算法学习

    本文为大家共享了Python文本特征抽取与向量化的详细代码,供大家参考,详细内容如下 假设我们刚看完诺兰的大片<星际穿越>,设想怎么让机器来自动分析各位观众对电影的评价到底是"赞 ...

  4. python文本聚类分析_python机器学习kmeans算法——对文本进行聚类分析

    #!/usr/bin/env python#-*- coding: utf-8 -*-#@File : kmeans.py#@Author: 田智凯#@Date : 2020/3/19#@Desc : ...

  5. python单词反转_python文本 字符串逐字符反转以及逐单词反转

    python文本 字符串逐字符反转以及逐单词反转 场景: 字符串逐字符反转以及逐单词反转 首先来看字符串逐字符反转,由于python提供了非常有用的切片,所以只需要一句就可以搞定了 >>& ...

  6. python地理位置聚类_python – 用于聚类地理位置数据的DBSCAN

    我有一个纬度和经度对的数据帧. 这是我的数据帧外观. order_lat order_long 0 19.111841 72.910729 1 19.111342 72.908387 2 19.111 ...

  7. python文本发音_Python文本转化语音模块大比拼,看看青铜与王者的差别!

    自从开始公众号写作,作息问题就成了一件让人很头大的事情,相对平时学习时间的基础上,每天需要再多抽出来至少两个小时进行公众号写作,这些时间只能从睡眠中挤出来.别人研究怎么碎片化学习,我现在每天盘算的是怎 ...

  8. python关键词统计_Python文本处理2个小案例(文本嗅探与关键词占比统计)

    问题描述:有一些句子和一些关键词,现在想找出包含至少一个关键词的那些句子(文本嗅探),可以参考print('='*30)之前的代码.如果想进一步计算每个句子中的关键词占比(句子中所有关键词长度之和/句 ...

  9. python数据清洗实例_Python文本清洗案例分析:直播弹幕数据清洗

    任务需求 清洗json格式的弹幕数据(以"聆听丶芒果鱼直播间时间切片弹幕.json"为例),具体要求如下: 提取出所有弹幕类型(列表中的第1个元素)为"NM"的 ...

最新文章

  1. Cache 与Memory架构及数据交互
  2. 转发:Hekaton:SQL Server集成的内存事务处理
  3. java核心技术面试精讲
  4. Android开发简易教程
  5. PAI平台搭建企业级个性化推荐系统
  6. rsync实现文件同步
  7. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数
  8. c语言实力,排序算法(更新ing)(C语言实现)(认真的不像实力派)
  9. 零基础学java web开发 pdf_从零开始学Java Web开发 PDF 扫描版[69M]
  10. 如何确认虚拟机被哪台主机锁定以及如何解锁
  11. “vueuse“ 中文索引与用例
  12. vivado 一次性设置多线程编译
  13. Oracle 11g Release 1 (11.1)——自动存储管理(Automatic Storage Management,ASM)
  14. Asp.net1.0 升级 ASP.NET 2.0 的几个问题总结 (转)
  15. 摄影构图学pdf_简单易懂,摄影小白也能Get的摄影技巧!
  16. 分布式一致性哈希分析
  17. TIA博途V16专业版与博途V15.1专业版或其他版本能否安装在同一台PC中?
  18. 线性方程组数值解法(2)
  19. Linux-mkfs.xfs
  20. 零基础Bootstrap入门教程(25)--折叠面板、折叠面板导航

热门文章

  1. 谷歌和百度的精确搜索技巧
  2. 【JHOK-ZBL1+DH-30L漏电继电器】
  3. 昆明第十二中学计算机笔试题目,昆明市第十二中学2015年招考笔试、面试、课堂考核安排公告...
  4. python基础学习笔记之数据基本类型:逻辑值
  5. set feedback on
  6. 虚函数、抽象函数、抽象类、接口
  7. HTML常用标签(a标签/img标签/table标签)
  8. 一张不错的国内网络安全法规方面立法的历程图
  9. vue cli 接入 mock
  10. SAP 物料 移动类型