网站开发职位菜单设计制作app
2025/12/25 10:18:15 网站建设 项目流程
网站开发职位,菜单设计制作app,模板官网,WordPress全屏图目录 一、题目描述 二、算法设计思路 核心目标 算法流程 三、完整开发流程 #xff08;一#xff09;整体架构与核心流程 #xff08;二#xff09;模块 1#xff1a;全局环境配置#xff08;解决中文显示核心痛点#xff09; #xff08;三#xff09;模块 2…目录一、题目描述二、算法设计思路核心目标算法流程三、完整开发流程一整体架构与核心流程二模块 1全局环境配置解决中文显示核心痛点三模块 2文本预处理函数preprocess_text四模块 3单字 双字字频统计函数count_char_freq子功能 1单字字频统计子功能 2双字字频统计滑动窗口法输出五模块 4多维度可视化函数visualize_freq核心功能模块可视化优化功能六模块 5主函数__main__子功能 1示例文本定义子功能 2流程执行与控制台输出七额外核心特性八输入输出总结典型应用场景四、单字与双字字频统计算法设计的Python代码完整实现五、程序运行结果展示六、总结一、题目描述设计一个算法同时实现单字和双字字频统计。二、算法设计思路核心目标同时完成单字字频和双字字频统计核心逻辑分为【文本预处理→单字统计→双字统计→结果可视化】四步确保统计结果仅针对汉字排除标点、数字、字母等干扰。算法流程文本预处理通过正则表达式提取纯汉字过滤所有非汉字字符如标点、数字、西文、空格等得到仅含连续汉字的文本序列。单字字频统计遍历预处理后的汉字序列用计数器记录每个汉字的出现次数。双字字频统计遍历预处理后的汉字序列滑动截取连续两个汉字组成「双字对」用计数器记录每个双字对的出现次数如 “中国”“发展”。结果可视化通过条形图、直方图、词云、热力图、网络图等多维度图表展示统计结果直观呈现汉字及双字对的分布规律。三、完整开发流程这是一套面向中小规模中文文本的单字 / 双字字频统计与多维度静态可视化工具核心目标是从原始中文文本中提取纯汉字、统计单字 / 双字出现频次并通过 6 类差异化图表直观展示字频特征最终输出高清可视化图片与控制台统计结果。以下是其所有功能的详细拆解一整体架构与核心流程按照 “环境配置 → 文本预处理 → 字频统计 → 多维度可视化 → 主函数执行” 的逻辑分层设计核心流程为原始中文文本→ 提取纯汉字 → 统计单字 / 双字字频 → 多维度静态可视化 → 输出统计结果 高清图片二模块 1全局环境配置解决中文显示核心痛点该模块为全流程中文兼容提供基础保障所有配置均围绕 “消除中文乱码、统一绘图风格” 设计配置项功能说明plt.rcParams[font.sans-serif] [SimHei]指定 Matplotlib 使用 “黑体” 显示中文解决图表中中文标签 / 标题乱码问题plt.rcParams[axes.unicode_minus] False修复负号-在中文环境下显示为方块的问题plt.rcParams[font.family] sans-serif统一字体族为无衬线字体适配中文显示逻辑sns.set_style(whitegrid)设置 Seaborn 绘图风格为 “白色网格”提升图表可读性sns.set(fontSimHei)强制 Seaborn 库使用黑体避免子图中文仍乱码三模块 2文本预处理函数preprocess_text核心功能过滤原始文本中的非汉字字符如标点、数字、英文、换行符等仅保留纯汉字并拼接为连续字符串为后续字频统计扫清噪音。输入任意中文文本字符串可含标点、换行、数字等冗余字符输出仅由连续汉字组成的字符串实现逻辑用正则表达式r[\u4e00-\u9fa5]匹配所有汉字字符覆盖 Unicode 所有中文汉字区间将匹配到的汉字片段拼接为无间隔的纯汉字字符串示例效果输入含标点的文本人工智能是科技革命的驱动力输出人工智能是科技革命的驱动力。四模块 3单字 双字字频统计函数count_char_freq核心功能基于预处理后的纯汉字文本同时完成单字、双字的频次统计返回可直接用于可视化的频次计数器。子功能 1单字字频统计逻辑直接将纯汉字字符串传入collections.Counter自动统计每个汉字的出现次数示例输入人工智能人工智能输出Counter({人:2, 工:2, 智:2, 能:2})。子功能 2双字字频统计滑动窗口法核心逻辑以 “连续两个汉字” 为单位通过滑动窗口截取所有双字对并统计频次边界处理先判断文本长度≥2避免索引越界长度 2 时返回空 Counter示例输入人工智能截取人工工智智能输出Counter({人工:1, 工智:1, 智能:1})。输出返回两个Counter对象single_counter单字字频计数器键 汉字值 出现次数pair_counter双字字频计数器键 双字对值 出现次数。五模块 4多维度可视化函数visualize_freq核心功能模块该函数是代码的核心基于统计得到的计数器生成2 行 3 列共 6 个子图从 “排行、分布、关联、视觉化” 多维度展示字频特征支持自定义top_n展示前 N 个高频字 / 双字对。子图序号子图类型功能说明实现细节与展示效果1TopN 单字字频条形图展示出现次数最多的前 N 个单字直观呈现核心高频汉字- 提取single_counter的 TopN 数据- 用 Seaborn 条形图绘制横轴为汉字、纵轴为次数- 横轴文字旋转 45° 避免重叠使用Blues_r蓝色系调色板- 标注标题、轴标签字体大小 / 粗细优化。2单字字频分布直方图展示所有单字的频次分布特征而非仅 TopN分析字频的集中趋势- 提取所有单字的频次值用 20 个区间bins绘制直方图- 绿色填充 0.7 透明度标注 “出现次数区间”“汉字数量” 轴标签- 可直观看到大部分汉字出现次数少少数核心字出现次数高。3单字频度词云以视觉化方式展示高频字字号越大 频次越高增强结果可读性- 将single_counter转为字典传入WordCloud生成词云- 指定simhei.ttf字体解决中文词云乱码- 白色背景 viridis彩色配色最多展示 100 个高频字- 关闭坐标轴仅保留标题。4TopN 双字字频条形图展示出现次数最多的前 N 个双字对分析文本中的核心词汇搭配- 逻辑同单字条形图改用Reds_r红色系调色板区分- 横轴为双字对如 “人工”“智能”旋转 45° 避免重叠- 直观呈现文本中最常用的连续两字组合。5双字对热力图Top10分析 Top10 双字对的 “前字 - 后字” 关联关系挖掘字符组合规律- 拆分 Top10 双字对为 “前字”如 “人工” 的 “人”和 “后字”如 “人工” 的 “工”- 构建透视表行 前字列 后字值 出现次数空值填充为 0- 用YlGnBu蓝黄配色绘制热力图标注具体次数- 可直观看到哪些前字常搭配哪些后字如 “人工” 后常接 “智能”。6双字对关联网络图以图形化方式展示字符间的关联关系边粗细对应双字对频次- 用networkx构建无向图✅ 节点 汉字如 “人”“工”“智”✅ 边 双字对关联如 “人” 和 “工” 之间有边✅ 边权重 双字对频次 / 5缩小权重避免边过粗- 固定随机种子seed42保证布局一致- 节点为天蓝色、边为灰色0.6 透明度标注节点汉字- 关闭坐标轴仅保留标题直观展示字符关联强度。可视化优化功能子图布局2 行 3 列适配 6 类图表避免拥挤间距调整plt.tight_layout()自动调整子图间距suptitle添加全局标题高清保存savefig设置dpi300高清bbox_inchestight避免标题 / 标签截断生成char_freq_visualization.png文件交互展示调用plt.show()弹出可视化窗口支持放大、查看细节。六模块 5主函数__main__核心功能串联全流程执行示例文本的统计与可视化并输出关键结果到控制台。子功能 1示例文本定义提供人工智能主题的示例文本可替换为任意中文文本如小说、新闻、论文等。子功能 2流程执行与控制台输出调用preprocess_text预处理文本打印预处理后纯汉字文本的总长度预处理后文本的前 50 字片段验证预处理效果调用count_char_freq统计字频打印 Top10 单字字频、Top10 双字字频便于快速查看核心结果调用visualize_freq生成可视化图表默认展示 Top15 高频字 / 双字对。七额外核心特性参数可定制visualize_freq的top_n参数可自由调整默认 20比如改为top_n10则展示前 10 个高频字 / 双字对兼容性强全流程适配中文无乱码、无格式错误轻量高效基于 Python 内置库 常用数据分析库无需复杂依赖适合中小文本10MB 以内快速分析结果复用生成的高清 PNG 图片可直接用于报告、论文、PPT 等场景鲁棒性双字统计添加长度判断避免空文本 / 短文本导致的索引错误。八输入输出总结输入任意中文文本字符串可含标点、换行、数字等冗余字符输出1. 控制台预处理信息、Top10 单 / 双字字频2. 文件char_freq_visualization.png300DPI 高清图片3. 窗口弹出可视化图表窗口。典型应用场景中文文本的核心词汇分析如提取某篇文章的高频字 / 核心搭配学生 / 研究者的文本数据分析作业、论文辅助中文内容的简单舆情分析如统计热点事件文本的高频字教学场景演示中文文本处理、字频统计、数据可视化的全流程。四、单字与双字字频统计算法设计的Python代码完整实现# 导入所需库 import re import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from collections import Counter from wordcloud import WordCloud import networkx as nx # -------------------------- 全局配置解决中文显示问题 -------------------------- plt.rcParams[font.sans-serif] [SimHei] # 显示中文 plt.rcParams[axes.unicode_minus] False # 显示负号 plt.rcParams[font.family] sans-serif # 统一字体族 sns.set_style(whitegrid) # 设置绘图风格 sns.set(fontSimHei) # -------------------------- 步骤1文本预处理函数 -------------------------- def preprocess_text(text): 文本预处理提取纯汉字过滤所有非汉字字符 :param text: 原始文本字符串 :return: 仅含连续汉字的字符串 # 正则匹配所有汉字Unicode编码范围\u4e00-\u9fa5 chinese_pattern re.compile(r[\u4e00-\u9fa5]) chinese_chars chinese_pattern.findall(text) # 拼接成连续的汉字字符串 clean_text .join(chinese_chars) return clean_text # -------------------------- 步骤2单字双字字频统计函数 -------------------------- def count_char_freq(clean_text): 同时统计单字和双字字频 :param clean_text: 预处理后的纯汉字字符串 :return: single_counter: 单字字频Counter对象 pair_counter: 双字字频Counter对象 # 单字字频统计 single_counter Counter(clean_text) # 双字字频统计滑动窗口截取连续两个字 pair_list [] if len(clean_text) 2: # 文本长度至少为2才会有双字对 for i in range(len(clean_text) - 1): pair clean_text[i] clean_text[i 1] pair_list.append(pair) pair_counter Counter(pair_list) return single_counter, pair_counter # -------------------------- 步骤3多维度可视化函数 -------------------------- def visualize_freq(single_counter, pair_counter, top_n20): 多维度可视化单字/双字字频结果 :param single_counter: 单字字频Counter :param pair_counter: 双字字频Counter :param top_n: 展示TopN的高频字/双字对 # 子图1TopN单字字频条形图 plt.figure(figsize(12, 6)) single_top single_counter.most_common(top_n) single_chars [item[0] for item in single_top] single_counts [item[1] for item in single_top] ax1 plt.subplot(2, 3, 1) sns.barplot(xsingle_chars, ysingle_counts, paletteBlues_r, axax1) ax1.set_title(fTop{top_n}单字字频统计, fontsize12, fontweightbold) ax1.set_xlabel(汉字, fontsize10) ax1.set_ylabel(出现次数, fontsize10) ax1.tick_params(axisx, rotation45) # 横轴文字旋转45度 # 子图2单字字频分布直方图 ax2 plt.subplot(2, 3, 2) single_all_counts list(single_counter.values()) sns.histplot(single_all_counts, bins20, colorgreen, alpha0.7, axax2) ax2.set_title(单字字频分布直方图, fontsize12, fontweightbold) ax2.set_xlabel(出现次数区间, fontsize10) ax2.set_ylabel(汉字数量, fontsize10) # 子图3单字频度词云 ax3 plt.subplot(2, 3, 3) # 生成词云需要将Counter转为字典 single_dict dict(single_counter) wordcloud WordCloud( font_pathsimhei.ttf, # 本地字体文件确保存在 width800, height400, background_colorwhite, max_words100, colormapviridis ).generate_from_frequencies(single_dict) ax3.imshow(wordcloud, interpolationbilinear) ax3.axis(off) # 关闭坐标轴 ax3.set_title(单字频度词云, fontsize12, fontweightbold) # 子图4TopN双字字频条形图 ax4 plt.subplot(2, 3, 4) pair_top pair_counter.most_common(top_n) pair_chars [item[0] for item in pair_top] pair_counts [item[1] for item in pair_top] sns.barplot(xpair_chars, ypair_counts, paletteReds_r, axax4) ax4.set_title(fTop{top_n}双字字频统计, fontsize12, fontweightbold) ax4.set_xlabel(双字对, fontsize10) ax4.set_ylabel(出现次数, fontsize10) ax4.tick_params(axisx, rotation45) # 子图5双字对热力图Top10双字对的前字-后字关联 ax5 plt.subplot(2, 3, 5) # 提取Top10双字对的前字和后字构建关联矩阵 pair_top10 pair_counter.most_common(10) front_chars [pair[0][0] for pair in pair_top10] back_chars [pair[0][1] for pair in pair_top10] pair_values [pair[1] for pair in pair_top10] # 构建透视表前字为行后字为列值为出现次数 pair_df pd.DataFrame({ 前字: front_chars, 后字: back_chars, 次数: pair_values }) pivot_df pair_df.pivot(index前字, columns后字, values次数).fillna(0) sns.heatmap(pivot_df, annotTrue, cmapYlGnBu, fmt.0f, axax5) ax5.set_title(Top10双字对前字-后字热力图, fontsize12, fontweightbold) ax5.set_xlabel(后字, fontsize10) ax5.set_ylabel(前字, fontsize10) # 子图6双字对关联网络图 ax6 plt.subplot(2, 3, 6) # 构建网络图节点汉字边双字对关联边权重出现次数 G nx.Graph() # 添加节点和边 for pair, count in pair_top: G.add_edge(pair[0], pair[1], weightcount / 5) # 权重缩小5倍避免边过粗 # 布局设置 pos nx.spring_layout(G, seed42) # 固定随机种子保证布局一致 # 绘制节点 nx.draw_networkx_nodes(G, pos, node_size800, node_colorskyblue, alpha0.8, axax6) # 绘制边按权重设置宽度 edges G.edges() weights [G[u][v][weight] for u, v in edges] nx.draw_networkx_edges(G, pos, widthweights, edge_colorgray, alpha0.6, axax6) # 绘制节点标签 nx.draw_networkx_labels(G, pos, font_size10, font_familySimHei, axax6) ax6.set_title(双字对关联网络图, fontsize12, fontweightbold) ax6.axis(off) # 关闭坐标轴 # 调整子图间距显示总标题 plt.tight_layout() plt.suptitle(单字双字字频统计可视化分析, fontsize16, fontweightbold, y1.02) plt.savefig(char_freq_visualization.png, dpi300, bbox_inchestight) # 保存图片高清 plt.show() # -------------------------- 主函数执行统计可视化 -------------------------- if __name__ __main__: # 示例文本可替换为任意中文文本如小说、新闻等 sample_text 人工智能是引领新一轮科技革命和产业变革的重要驱动力加快发展新一代人工智能是事关我国能否抓住新一轮科技革命和产业变革机遇的战略问题。 中国高度重视人工智能发展先后出台一系列政策举措推动人工智能领域的研发和应用。从语音识别到图像分类从智能推荐到自动驾驶人工智能技术已经深度融入人们的生产生活带来了前所未有的便利。 发展人工智能既要重视技术创新也要关注伦理规范确保人工智能朝着有利于人类的方向发展。中国愿与世界各国携手合作共同推动人工智能的健康发展让人工智能更好地服务于人类社会的进步。 # 步骤1预处理文本 clean_text preprocess_text(sample_text) print(f预处理后纯汉字文本长度{len(clean_text)} 字) print(f预处理后文本片段{clean_text[:50]}...) # 步骤2统计单字双字字频 single_counter, pair_counter count_char_freq(clean_text) # 输出统计结果示例 print(\n Top10单字字频 ) for char, count in single_counter.most_common(10): print(f{char}: {count}次) print(\n Top10双字字频 ) for pair, count in pair_counter.most_common(10): print(f{pair}: {count}次) # 步骤3多维度可视化 visualize_freq(single_counter, pair_counter, top_n15)五、程序运行结果展示预处理后纯汉字文本长度233 字预处理后文本片段人工智能是引领新一轮科技革命和产业变革的重要驱动力加快发展新一代人工智能是事关我国能否抓住新一轮科技... Top10单字字频 人: 12次能: 11次智: 10次工: 9次的: 8次发: 6次展: 5次新: 4次一: 4次技: 4次 Top10双字字频 智能: 10次人工: 9次工智: 9次发展: 5次新一: 3次能是: 2次一轮: 2次轮科: 2次科技: 2次技革: 2次六、总结本文提出一个同时实现单字和双字字频统计的算法。算法流程包括文本预处理正则提取纯汉字、单字统计遍历计数、双字统计滑动窗口截取双字对、多维度可视化6类图表展示结果。核心功能是通过正则过滤非汉字字符分别统计单字和连续双字的出现频次并生成条形图、词云、热力图等可视化结果。该算法适用于中小规模中文文本分析可输出高清统计图表和控制台结果为中文文本研究提供直观的数据支持。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询