当前位置: 首页 > news >正文

大数据分析-读取文本文件内容进行词云图展示

在对文本文件进行数据分类预测的时候,常常需要先将文本文件进行分词,提取关键词后进行后续的向量化处理,今天我们就来介绍一种将文本文件进行分词并统计词频,最终形成词云图的方法,其中可视化的对文本内容进行分析和展示,十分实用!

一、需要用到jieba的分词工具以及pyecharts的可视化展示工具

经过测试用pyecharts的可视化工具比直接用wordcloud工具要更加方便,因为wordcloud经常都会莫名奇妙的提示需要true-type的字体,这个真的是一个很bug的存在,而且pyecharts的交互体验感更好,花不多说,我们先导入相应的库:

import jieba, re
from collections import Counter
from pyecharts.charts import WordCloud
from pyecharts import options as opts

二、读取文本文件:

# 1. 读文本,需要提前准备一个txt,里面准备好相应的文本数据

text = open('article.txt', encoding='utf-8').read()

三、进行分词,将停用词进行过滤

1、停用词去掉的原因是因为有一些停用词对于文本的分析基本没有用,就是符号以及一些助词,因此要将这些干扰项去掉,可以去网上下载相应的停用词表,这我就直接使用(stopword.txt)。

2、调用jieba进行分词,将停用词进行过滤并统计每个词的词频。有了词频才能做后面的可视化的操作。选取了top200词频的词来进行可视化的展示,否则就太稀松了。

STOPWORDS = set(open('stopword.txt', encoding='utf-8').read().split())
words = [w for w in jieba.cut(text)if w.strip() and w not in STOPWORDS and re.fullmatch(r'[\u4e00-\u9fa5]+', w)]
top200 = Counter(words).most_common(200)

我们直观的看一下分词的结果和词频:

四、调用pyecharts来生成词云:会生成一个user_query_cloud.html的网页

还可以指定词云的形状:

- 'circle':圆形(默认形状),词云会围绕圆形轮廓分布。
- 'cardioid':心形(心脏线形状),词云呈心形轮廓。
- 'diamond':菱形,词云以菱形为轮廓分布。
- 'triangle-forward':正三角形(向前的三角形)。
- 'triangle':三角形(与 'triangle-forward' 类似,部分版本可能无差异)。
- 'star':星形,词云围绕星形轮廓排列。

wc = (WordCloud(init_opts=opts.InitOpts(width="800px", height="600px")).add(series_name="词频",data_pair=top200,word_size_range=[10, 100],shape="cardioid",textstyle_opts=opts.TextStyleOpts(font_family="Microsoft YaHei"),  # 显式指定中文字体).set_global_opts(title_opts=opts.TitleOpts(title="用户提问的词云"),tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{b}: {c}"),)
)wc.render("user_query_cloud.html")

我们来看一下效果吧:

好了,到这整个小的数据分析项目就结束了,大家如果有任何疑问和需要讨论的地方,可以在下方留言哟~

http://www.dtcms.com/a/337711.html

相关文章:

  • Zephyr 中的 bt_le_per_adv_set_data 函数的介绍和应用方法
  • [机器学习]09-基于四种近邻算法的鸢尾花数据集分类
  • 具身智能赋能轮椅机器人的认知革命与人机共生新范式
  • 【软考架构】第4章 信息安全的抗攻击技术
  • 从「行走」到「思考」:机器人进化之路与感知—决策链路的工程化实践
  • 微电网管控系统中python多线程缓存与SQLite多数据库文件连接池实践总结(含源码)
  • 安川YASKAWA焊接机器人保护气智能节气阀
  • 蓝牙 GFSK RX Core 架构解析
  • Linux下的软件编程——IPC机制
  • 重复(Repeat)和迭代(Iteration)区别、递归(Recursion)
  • 超级云平台:重构数字生态的“超级连接器“
  • 想找出版社出书?这样选就对了!
  • 哈工深无人机目标导航新基准!UAV-ON:开放世界空中智能体目标导向导航基准测试
  • 【论文阅读】-《GeoDA: a geometric framework for black-box adversarial attacks》
  • 基于Flink CDC实现联系人与标签数据实时同步至ES的实践
  • 后台管理系统-6-vue3之mockjs模拟和axios请求数据
  • python UV虚拟环境项目搭建
  • 和芯星通携手思博伦通信,测试验证系列导航定位芯片/模块符合GB/T 45086.1标准
  • 学习stm32 感应开关盖垃圾桶
  • 用 Python 实现一个“小型 ReAct 智能体”:思维链 + 工具调用 + 环境交互
  • 软件测试覆盖率:真相与实践
  • unity实现背包拖拽排序
  • 1个月征服Java:零基础直达企业级开发——Java面向对象补充知识
  • 汽车近光灯难达标?OAS 软件精准解困
  • 【牛客刷题】正六边形阴影面积计算
  • 深入理解列式存储与向量化引擎
  • 无人机行业“黑话”
  • 10CL016YF484C8G Altera FPGA Cyclone
  • Qt第十讲-使用快捷键
  • Mybatis执行sql流程(一)