简单的使用PYTHON对中文文本聚类并预测

栏目: 编程工具 · 发布时间: 6年前

内容简介:简单的使用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

简单的使用PYTHON对中文文本聚类并预测

#循环读取分词后的文本,并保存列表中
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)

简单的使用PYTHON对中文文本聚类并预测

这里我们总共有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

简单的使用PYTHON对中文文本聚类并预测

向量已经成功的生成,接下来就是我们给这个文档进行分类了,并打印类别

new_label=km.predict(test_tfidf)[0]
print "new_label:",new_label

OK!建模就讲到了这里,有兴趣的东西可以深究下去;

参考书籍

《机器学习系统设计》

简单的使用PYTHON对中文文本聚类并预测

本文由夏尔康 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。

转载、引用前需联系作者,并署名作者且注明文章出处。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。


以上所述就是小编给大家介绍的《简单的使用PYTHON对中文文本聚类并预测》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

ANSI Common Lisp

ANSI Common Lisp

Paul Graham / Prentice Hall / 1995-11-12 / USD 116.40

For use as a core text supplement in any course covering common LISP such as Artificial Intelligence or Concepts of Programming Languages. Teaching students new and more powerful ways of thinking abo......一起来看看 《ANSI Common Lisp》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试