博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文本分析——分词、统计词频、词云
阅读量:6036 次
发布时间:2019-06-20

本文共 2878 字,大约阅读时间需要 9 分钟。

导入包

import osimport sysimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport refrom pandas import Series, DataFrame  import stringimport reimport jiebaimport jieba.analyseimport datetimefrom wordcloud import WordCloud, ImageColorGeneratorimport codecs

导入文件和数据

gongdan = pd.read_excel('Gongdan.xlsx')

数据预处理

gongdan['content'] = [str(i) for i in gongdan['content']]gongdan['content'] = [''.join(re.findall(u'[\u4e00-\u9fff]+', i)) for i in gongdan['content']]indexs = list(gongdan['content'][pd.isnull(gongdan['content'])].index)gongdan = gongdan.drop(indexs)indexs = list(gongdan['content'][gongdan['content']==''].index)gongdan = gongdan.drop(indexs)content = gongdan['content']cont = ''.join(content)cont = ''.join(re.findall(u'[\u4e00-\u9fa5]+', cont))

分词并去除停用词

stopwords = set()fr = codecs.open('stopwords.txt', 'r', 'utf-8')for word in fr:   stopwords.add(str(word).strip())fr.close()jieba.load_userdict("dict.txt")text = list(jieba.cut(cont, cut_all=False, HMM=True))text = list(filter(lambda x: x not in stopwords, text))text = [str(i) for i in text if i != ' ']

Tfidf 算法

from sklearn import feature_extractionfrom sklearn.feature_extraction.text import TfidfTransformer  from sklearn.feature_extraction.text import CountVectorizer  test = ' '.join(text)tlist = []tlist.append(test)vectorizer=CountVectorizer()#该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频transformer = TfidfTransformer()#该类会统计每个词语的tf-idf权值tfidf = transformer.fit_transform(vectorizer.fit_transform(tlist))  #第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵  word=vectorizer.get_feature_names()#获取词袋模型中的所有词语  weight=tfidf.toarray()#将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重  tfidf_list = {}for i in range(len(weight)):#打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重      for j in range(len(word)):          tfidf_list[word[j]] = weight[i][j]

词云

font_path = 'yahei.ttf'from PIL import Imageback_coloring = np.array(Image.open('circle.jpg'))wc = WordCloud(font_path=font_path,  # 设置字体               background_color="white",  # 背景颜色               max_words=60,  # 词云显示的最大词数               mask=back_coloring,  # 设置背景图片               stopwords=stopwords,               max_font_size=100,  # 字体最大值               random_state=42,               width=1000, height=860, margin=2,# 设置图片默认的大小,但是如果使用背景图片的话,那么保存的图片大小将会按照其大小保存,margin为词语边缘距离#               prefer_horizontal=1,               )wc.generate_from_frequencies(tfidf_list)plt.imshow(wc, interpolation="bilinear")plt.axis("off")plt.figure()wc.to_file("w.png")# create coloring from imageimage_colors = ImageColorGenerator(back_coloring)# recolor wordcloud and show# we could also give color_func=image_colors directly in the constructorplt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")plt.axis("off")plt.figure()plt.imshow(back_coloring, cmap=plt.cm.gray, interpolation="bilinear")plt.axis("off")plt.show()

转载地址:http://oplhx.baihongyu.com/

你可能感兴趣的文章
一页纸IT项目管理:大道至简的实用管理沟通工具
查看>>
汽车知识:车内异味的清除方法
查看>>
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
浏览器的回流和重绘及其优化方式
查看>>
2.4 salt grains与pillar jinja的模板
查看>>
VDI序曲二十 桌面虚拟化和RemoteApp集成到SharePoint 2010里
查看>>
Nginx下载服务生产服务器调优
查看>>
移动互联网,入口生死战
查看>>
nginx面试常问题目
查看>>
制作ubuntu系统u盘镜像,以及安装
查看>>
JAVA多线程深度解析
查看>>
Kafka High Level Consumer 会丢失消息
查看>>
时间轴
查看>>
java 获取系统当前时间的方法
查看>>
Ubuntu 10.04升级git 到1.7.2或更高的可行方法
查看>>
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
消息队列服务器 memcacheq的搭建
查看>>
VMware Horizon View 7.5 虚拟桌面实施咨询与购买--软件硬件解决方案
查看>>
RabbitMQ如何保证队列里的消息99.99%被消费?
查看>>
第一周博客作业
查看>>