内容简介:简单的使用PYTHON对中文文本聚类并预测
前言
这篇文章会接着上篇分词文章讲,内容也是比较简单,并没有做太多的深究,主要是为了让自己尽快熟悉 PYTHON 的语言环境,至于算法之类的讲解这里就不多说了
工具:pycharm
环境:python2.7
在这里我导入习惯常用的包
# -*- coding: UTF-8 -*- import sys import os from sklearn.datasets.base import Bunch from sklearn import feature_extraction from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer import cPickle as pickle import scipy as sp from numpy import *
设置一下我们的中文语言环境
#设中文语言环境 reload(sys) sys.setdefaultencoding("utf-8")
编写一个读文文本的函数
def readfile(path): fp = open(path, "rb") content = fp.read() fp.close() return content
这里我们需要构建一下我们的词空间永久化对象,这个是为了方便我们保存 对象信息到文件里面去,当然,这里不做太多的操作,只是为了方便读取
tfidfspase = Bunch(target_name=[], label=[], filenames=[], contents=[],tdm=[],vocabulary={})
这里读取一下停用词表
stopword=r'E:\python_txt/stoplist.txt' stplist=readfile(stopword).splitlines()
接来下是读取一下我们以前就已经分词好的文本
seg_path=r'E:\python_txt\answer\test/' catelist=os.listdir(seg_path) #将各个分类目录保存到词空间对象中 tfidfspase.target_name.extend(catelist)#循环读取分词后的文本,并保存到 print tfidfspase.target_name
#循环读取分词后的文本,并保存列表中
for mydir in catelist: class_path=seg_path+mydir+'/' file_list = os.listdir(class_path) for file_path in file_list: full_name=class_path+file_path tfidfspase.label.append(mydir) # 保存文件分类标签 tfidfspase.filenames.append(full_name) # 保存当前文件的文件路径 tfidfspase.contents.append(readfile(full_name).strip())
开始计算 TF-IDF 权值
这时候我们的词空间持久化对象就已经构建好了,接下来就是使用sklearn中的TfidfVectorizer初始化词空间了 ,这里的停用词参数就是我们上面加载的数据,顺便打印一下我们才词频向量
vectorizer=TfidfVectorizer(stop_words=stplist,sublinear_tf=True) transformer=TfidfTransformer()#该类会统计每个词语的IF-IDF权值 #文本转为词频矩阵,单独保存字典文件 tfidfspase.tdm=vectorizer.fit_transform(tfidfspase.contents) tfidfspase.vocabulary=vectorizer.vocabulary um_sample,num_features=tfidfspase.tdm.shape print "sample:%d,features: %d"%(num_sample,num_features)
这里我们总共有862个文本,35万多个属性;
接下来就是就是我们的建模了,建模的这个步骤写的很简单,大神们就稍微看一下笑话吧,本人也在学习中;
这里设置分的簇的大小为5,因为目录分类就为5类,提前知道的
#构建K-MEAN模型 k=5 from sklearn.cluster import KMeans km=KMeans(n_clusters=k,init="random",n_init=1,verbose=1) km.fit(tfidfspase.tdm)
接下来我们对一个文档进行测试,这个文档是我们已经提前为它分好了词的。
#测试模型效果 test_path=r"E:\python_txt\answer\test\C7-History/C7-History001.txt" test_content=[] test_content.append(readfile(test_path).strip()) test_tfidf =vectorizer.transform(test_content) print test_tfidf.shape
向量已经成功的生成,接下来就是我们给这个文档进行分类了,并打印类别
new_label=km.predict(test_tfidf)[0] print "new_label:",new_label
OK!建模就讲到了这里,有兴趣的东西可以深究下去;
参考书籍
《机器学习系统设计》
本文由夏尔康 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。
以上所述就是小编给大家介绍的《简单的使用PYTHON对中文文本聚类并预测》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 如何在网上选到一瓶心仪的红酒?通过文本分析预测葡萄酒的质量
- 先发制人!东京工业大学开发AI预测系统,可预测0.5秒后的动作
- Veritas预测:区块链和运维预测技术将在数据保护领域大放异彩
- 算法学习之股票预测
- 模型预测与置信区间
- 家庭用户的用电预测
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。