栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 数据可视化

手把手教你对文本文件进行分词、词频统计和可视化(附源码)

 

大家好!我是Python进阶者。

前言

前几天一个在校大学生问了一些关于词频、分词和可视化方面的问题,结合爬虫,确实可以做点东西出来,可以玩玩,还是蛮不错的,这里整理成一篇文章,分享给大家。

本文主要涉及的库有爬虫库requests、词频统计库collections、数据处理库numpy、结巴分词库jieba 、可视化库pyecharts等等。

一、数据来源

关于数据方面,这里直接是从新闻平台上进行获取的文本信息,其实这个文本文件可以拓展开来,你可以自定义文本,也可以是报告,商业报告,政治报告等,也可以是新闻平台,也可以是论文,也可以是微博热评,也可以是网易云音乐热评等等,只要涉及到大量文本的,都可月引用本文的代码,进行词频分词、统计、可视化等。

二、数据获取

数据获取十分简单,一个简单的爬虫和存储就可以搞定,这里以一篇新闻为例进行演示,代码如下:

  1. import re import collections  # 词频统计库 
  2. import numpy as np # numpy数据处理库 import jieba  # 结巴分词 
  3. import requests from bs4 import BeautifulSoup 
  4.  from pyecharts import options as opts 
  5. from pyecharts.charts import WordCloud from pyecharts.globals import SymbolType 
  6.  import warnings 
  7. warnings.filterwarnings('ignore')  
  8. r=requests.get("https://m.thepaper.cn/baijiahao_11694997",timeout=10) r.encoding="utf-8" 
  9. s=BeautifulSoup(r.text,"html.parser") f=open("报告.txt","w",encoding="utf-8") 
  10. L=s.find_all("p") for c in L: 
  11.     f.write("{}n".format(c.text))      
  12. f.close() 

代码运行之后,在本地会得到一个【报告.txt】文件,文件内容就是网站上的文本信息。如果你想获取其他网站上的文本,需要更改下链接和提取规则。



三、词频统计

接下来就是词频统计了,代码如下所示。

  1. # 读取文件 fn = open("./报告.txt","r",encoding="utf-8") 
  2. string_data = fn.read() fn.close() 
  3. # 文本预处理 # 定义正则表达式匹配模式 
  4. pattern = re.compile(u't|,|/|。|n|.|-|:|;|)|(|?|"')  string_data = re.sub(pattern,'',string_data)  # 将符合模式的字符去除 
  5. # 文本分词 # 精确模式分词 
  6. seg_list_exact = jieba.cut(string_data,cut_all=False)   object_list = [] 
  7. # 自定义去除词库 remove_words = [u'的',u'要', u'“',u'”',u'和',u',',u'为',u'是', 
  8.                 '以' u'随着', u'对于', u'对',u'等',u'能',u'都',u'。',                 u' ',u'、',u'中',u'在',u'了',u'通常',u'如果',u'我', 
  9.                 u'她',u'(',u')',u'他',u'你',u'?',u'—',u'就',                 u'着',u'说',u'上',u'这', u'那',u'有', u'也', 
  10.                 u'什么', u'·', u'将', u'没有', u'到', u'不', u'去']   
  11. for word in seg_list_exact:     if word not in remove_words: 
  12.         object_list.append(word) # 词频统计 
  13. # 对分词做词频统计 word_counts = collections.Counter(object_list)  
  14. # 获取前30最高频的词 word_counts_all = word_counts.most_common() 
  15. word_counts_top30 = word_counts.most_common(30)  print("2021年政府工作报告一共有%d个词"%len(word_counts)) 
  16. print(word_counts_top30) 

首先读取文本信息,之后对文本进行预处理,提取文字信息,并且可以自定义词库,作为停用词,之后将获取到的词频做词频统计,获取前30最高频的词,并进行打印,输出结果如下图所示。



四、可视化

接下来就是可视化部分了,这里直接上代码,如下所示。

  1. import pyecharts from pyecharts.charts import Line 
  2. from pyecharts import options as opts  
  3. # 示例数据 cate = [i[0] for i in word_counts_top30] 
  4. data1 = [i[1] for i in word_counts_top30]  
  5. line = (Line()        .add_xaxis(cate) 
  6.        .add_yaxis('词频', data1,                    markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")])) 
  7.        .set_global_opts(title_opts=opts.TitleOpts(title="词频统计Top30", subtitle=""),        xaxis_opts=opts.AxisOpts(name_rotate=60,axislabel_opts={"rotate":45})) 
  8.       )  
  9. line.render_notebook() 

输出结果是一个线图,看上去还不错。



五、总结

本文基于Python网络爬虫获取到的文本文件,通过词频、分词和可视化等处理,完成一个较为简单的项目,欢迎大家积极尝试。在代码实现过程中,如果有遇到任何问题,请加我好友,我帮助解决哦!

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/796097.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号