文明网站的建设与管理的思考,企业网站建设方案优化,土豆网网站开发源代码,钟情建网站公司Python 代码主要实现了对《红楼梦》文本的词频统计和数据可视化
完整详细下载地址#xff1a;https://download.csdn.net/download/huanghm88/89879439
python实训4 基于词频的篇章语义相似度与红楼梦内容分析 步骤3 针对红楼梦词频的数据可视化 https://download.csdn.net/download/huanghm88/89879439
python实训4 基于词频的篇章语义相似度与红楼梦内容分析 步骤3 针对红楼梦词频的数据可视化
# 引入 collections 包 json 包 codecs 包 jieba 包
import collections, json, codecs, jieba
# 引入tqdm循环可视化工具
from tqdm import tqdm
# 引入词云图绘制的 WordCloud 模块
from wordcloud import WordCloud
# 引入 matplotlib 的绘图模块记作 plt
import matplotlib.pyplot as plt# 步骤1 中实现的函数
# 定义一个函数输入一个 文件路径 input_path 以utf-8格式读入并解析json文件。
def json_load (input_path) :return json.load(codecs.open(input_path, r, utf-8))# 实训2步骤3 中实现的函数
# 定义函数输入为一个中文字串组成的list。利用jieba分词对中文字串进行切分并统计词频。
def word_count(document_words) :to_ret collections.Counter()for word in document_words :word_cut list(jieba.cut(word))word_cut_counter collections.Counter(word_cut)to_ret to_ret word_cut_counterreturn to_ret# 实训2步骤4 中实现的函数
# 定义函数输入为一个collections.Counter格式的词频统计 word_count 和一个路径 outut_path 。
# 基于 word_count 绘制词云图并储存在地址 outut_path 中
def word_cloud(word_count, outut_path) :for word in word_count :if word_count[word] 1 :word_count[word] 0if len(word) 1 :word_count[word] 0wc WordCloud(width2000, # 绘图的宽度height1200, # 绘图的高度font_pathmsyh.ttf, # 中文字体的路径colormapspring # 颜色风格可以不设置) wc.generate_from_frequencies(word_count)wc.to_file(outut_path)# 利用 json_load 函数读入红楼梦的json文件
# 辅导老师也可以准备其它文本用于处理
# 我们这里只对红楼梦前80回做处理
data json_load(红楼梦.json)[:80]# 步骤1 中实现的内容
# 使用 word_count 函数得到红楼梦每章的字数统计存入word_counts。
# 同时使用tqdm循环可视化工具可视化处理过程
word_counts []
for chapter in tqdm(data) :count_t word_count(chapter[content])word_counts.append(count_t)# 使用实训2步骤4的内容绘制两章的词云图
# word_cloud(word_counts[5], 红楼梦第6章.png)
# word_cloud(word_counts[15], 红楼梦第16章.png)# 分别得到宝玉、贾母、刘姥姥四个词汇在各个章节的词频统计数据。
baoyu_count []
jiamu_count []
liulaolao_count []
for wc in word_counts :baoyu_count.append(wc[宝玉])jiamu_count.append(wc[贾母])liulaolao_count.append(wc[刘姥姥])
# 如果好奇的话这里可以打印词频统计结果
# print(baoyu_count)
# print(jiamu_count)
# print(liulaolao_count)# 第一部分
# 使用plt工具画柱状图
def draw_bar_single(input_data, output_path) :# 每个柱子的位置position list(range(1, len(input_data)1))plt.bar(x position, # 每个柱子的位置height input_data # 每个柱子的高度)# 保存路径plt.savefig(output_path)# 清空缓存可以背下来plt.clf()# 可以看到宝玉通篇在提刘姥姥只有来的几次被提。
draw_bar_single(liulaolao_count, 刘姥姥_bar.png)
draw_bar_single(baoyu_count, 宝玉_bar.png)# 第二部分
# 使用plt工具画多重柱状图这里是绘制宝玉和贾母的词频
# 每个柱子的位置
position_1 [t-0.2 for t in range(1, len(baoyu_count)1)]
position_2 [t0.2 for t in range(1, len(jiamu_count)1)]plt.bar(x position_1, height baoyu_count,width 0.4, # 柱子的宽度label baoyu # 标签
)
plt.bar(x position_2, height jiamu_count,width 0.4, # 柱子的宽度label jiamu # 标签
)
# 绘制图例
plt.legend()
# 保存路径
plt.savefig(multi_bar.png)
# 清空缓存
plt.clf()# width 0.2
# plt.bar(x [1-width, 2-width, 3-width, 4-width], height [4, 3, 2, 1], width width*2, label sampleA)
# plt.bar(x [1width, 2width, 3width, 4width], height [1, 2, 3, 4], width width*2, label sampleB)
# #
# plt.show()# 第三部分
# 使用plt工具画折线图这里是绘制宝玉和贾母的词频
# 折现数据点的位置position list(range(1, len(baoyu_count)1))plt.plot(position, # 数据点的位置baoyu_count, # 词频统计数据labelbaoyu, # 标签colorblue, # 颜色marker., # 点的形状linestyle- # 线的形状)
plt.plot(position, # 数据点的位置jiamu_count, # 词频统计数据labeljiamu, # 标签colorgreen, # 颜色marker., # 点的形状linestyle-- # 线的形状)# 横纵坐标标签
plt.xlabel(chapter)
plt.ylabel(word count)
# 绘制图例
plt.legend()
# 保存路径
plt.savefig(lines.png)以下是对这段代码的分析**一、整体功能概述**这段 Python 代码主要实现了对《红楼梦》文本的词频统计和数据可视化。具体功能包括1. 读取《红楼梦》的 JSON 文件并对前 80 回的内容进行处理。
2. 使用 jieba 分词对每章的内容进行切分并统计词频。
3. 绘制特定章节的词云图展示章节中的高频词汇。
4. 统计特定人物宝玉、贾母、刘姥姥在各章节中的词频。
5. 分别绘制人物词频的柱状图、多重柱状图和折线图进行可视化展示。**二、主要函数分析**1. json_load(input_path)- 功能以 UTF-8 格式读入并解析 JSON 文件。- 参数input_path是 JSON 文件的路径。- 返回值解析后的 JSON 数据。2. word_count(document_words)- 功能对输入的中文字串列表进行 jieba 分词并统计词频。- 参数document_words是一个由中文字串组成的列表。- 返回值一个collections.Counter对象包含了分词后的词频统计结果。3. word_cloud(word_count, output_path)- 功能根据输入的词频统计结果绘制词云图并保存到指定路径。- 参数word_count是一个collections.Counter格式的词频统计结果output_path是保存词云图的路径。4. draw_bar_single(input_data, output_path)- 功能绘制单个的柱状图。- 参数input_data是要绘制的柱子高度数据output_path是保存柱状图的路径。**三、代码执行过程**1. 首先使用json_load函数读入《红楼梦》的 JSON 文件并只取前 80 回的数据。2. 然后使用tqdm循环可视化工具对每一章的内容进行词频统计将结果存入word_counts列表中。3. 接着分别统计宝玉、贾母、刘姥姥在各章节中的词频并可以打印出来查看。4. 之后分别绘制刘姥姥和宝玉的词频柱状图以及宝玉和贾母的词频多重柱状图和折线图进行可视化展示。**四、应用场景**1. 文本分析通过对文学作品进行词频统计和可视化可以了解作品中不同词汇的出现频率和分布情况从而深入分析作品的主题、人物等方面。2. 数据可视化教学这段代码可以作为数据可视化的教学示例展示如何使用 Python 的相关库进行词云图、柱状图和折线图的绘制。3. 完整详细下载地址https://download.csdn.net/download/huanghm88/89879439