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

郑州做公司网站的学校门户网站模板

郑州做公司网站的,学校门户网站模板,seo营销外包,wordpress手机字体变大用Python分析《三国演义》中的人物关系网 三国演义获取文本文本预处理分词与词频统计引入停用词后进行词频统计构建人物关系网完整代码 三国演义 《三国演义》是中国古代四大名著之一#xff0c;它以东汉末年到晋朝统一之间的历史为背景#xff0c;讲述了魏、蜀、吴三国之间… 用Python分析《三国演义》中的人物关系网 三国演义获取文本文本预处理分词与词频统计引入停用词后进行词频统计构建人物关系网完整代码 三国演义 《三国演义》是中国古代四大名著之一它以东汉末年到晋朝统一之间的历史为背景讲述了魏、蜀、吴三国之间的纷争与英雄们的传奇故事。今天我们将通过Python初步探索《三国演义》的文本处理感受这部古典名著的魅力。 获取文本 我们需要从本地读取《三国演义》的文本文件。 # 读取本地《三国演义》文本文件 with open(三国演义.txt, r, encodingutf-8) as file:sanguo_text file.read() 输出看一下读取的文件内容 print(sanguo_text[:30])输出如下 文本预处理 对文本进行分词前先去除标点符号使用正则库re来进行。 import re# 去除标点符号和特殊字符 sanguo_text re.sub(r[^\w\s], , sanguo_text) sanguo_text re.sub(r\n, , sanguo_text)分词与词频统计 使用jieba库进行中文分词并进行词频统计输出频率最高的10个词。 import jieba from collections import Counter # 使用jieba进行分词 words jieba.lcut(sanguo_text) # 统计词频 word_counts Counter(words)# 输出出现频率最高的10个词 print(word_counts.most_common(10))当前输出如下 [(曰, 7669), (之, 2797), (也, 2232), (吾, 1815), (与, 1722), (将, 1643), (而, 1600), (了, 1397), (有, 1386), (在, 1286)]可以看到现在大多数是一些语气助词。这里我们要引入停用词。 引入停用词后进行词频统计 在文本处理中停用词是指那些在文本分析中没有实际意义的词汇如“的”、“了”、“在”等。在进行词频统计时我们通常会去除这些停用词以便更准确地分析有意义的词汇。 import jieba from collections import Counter # 使用jieba进行分词 words jieba.lcut(sanguo_text)# 读取停用词列表 with open(常用停用词.txt, r, encodingutf-8) as file:stopwords set(file.read().split())# 去除停用词 filtered_words [word for word in words if word not in stopwords]# 统计词频 word_counts Counter(filtered_words) # 输出出现频率最高的10个词 print(word_counts.most_common(10)) 当前输出 [(曹操, 938), (孔明, 809), (玄德, 494), (丞相, 489), (关公, 478), (荆州, 412), (玄德曰, 385), (孔明曰, 382), (张飞, 349), (商议, 343)]我使用的停用词文件 实际上可以根据自己的需求进行调整。 构建人物关系网 注意三国中人物可能有多个称呼比如说刘备也可以用玄德称呼 # 三国演义主要人物及其别名列表扩展版 characters {刘备: [刘备, 玄德, 皇叔],关羽: [关羽, 云长],张飞: [张飞, 翼德],曹操: [曹操, 孟德, 丞相, 曹孟德],孙权: [孙权, 仲谋],诸葛亮: [诸葛亮, 孔明, 卧龙],周瑜: [周瑜, 公瑾],吕布: [吕布, 奉先],貂蝉: [貂蝉],赵云: [赵云, 子龙],黄忠: [黄忠, 汉升],马超: [马超, 孟起],许褚: [许褚, 仲康],典韦: [典韦],司马懿: [司马懿, 仲达],郭嘉: [郭嘉, 奉孝],袁绍: [袁绍, 本初],袁术: [袁术, 公路],孙策: [孙策, 伯符],甘宁: [甘宁, 兴霸],鲁肃: [鲁肃, 子敬],庞统: [庞统, 凤雏],姜维: [姜维, 伯约] }# 创建一个人物关系计数字典 relation_counts defaultdict(int)# 遍历文本统计人物间的关系 for i in range(len(filtered_words) - 1):for name1, aliases1 in characters.items():if filtered_words[i] in aliases1:for name2, aliases2 in characters.items():if filtered_words[i 1] in aliases2 and name1 ! name2:relation_counts[(name1, name2)] 1# 创建网络图 G nx.Graph()# 添加节点 for character in characters.keys():G.add_node(character)# 添加边及权重 for (name1, name2), count in relation_counts.items():G.add_edge(name1, name2, weightcount)# 绘制关系图 plt.figure(figsize(14, 10)) pos nx.spring_layout(G, k1) edges G.edges(dataTrue) weights [edge[2][weight] for edge in edges]# 绘制节点和边 nx.draw(G, pos, with_labelsTrue, node_size2000, node_colorskyblue, font_size10, font_weightbold, widthweights)# 在图中显示边的权重 edge_labels nx.get_edge_attributes(G, weight) nx.draw_networkx_edge_labels(G, pos, edge_labelsedge_labels)plt.title(《三国演义》人物关系网扩展版) plt.show()完整代码 import re import jieba from collections import Counter, defaultdict import networkx as nx import matplotlib.pyplot as plt from pylab import mpl# 设置中文字体确保图表中能显示中文 mpl.rcParams[font.sans-serif] [SimHei]# 读取本地《三国演义》文本文件 with open(三国演义.txt, r, encodingutf-8) as file:sanguo_text file.read()# 去除标点符号和换行符 sanguo_text re.sub(r[^\w\s], , sanguo_text) sanguo_text re.sub(r\n, , sanguo_text)# 使用jieba进行分词 words jieba.lcut(sanguo_text)# 读取停用词列表 with open(常用停用词.txt, r, encodingutf-8) as file:stopwords set(file.read().split())# 去除停用词 filtered_words [word for word in words if word not in stopwords]# 三国演义主要人物及其别名列表扩展版 characters {刘备: [刘备, 玄德, 皇叔],关羽: [关羽, 云长],张飞: [张飞, 翼德],曹操: [曹操, 孟德, 丞相, 曹孟德],孙权: [孙权, 仲谋],诸葛亮: [诸葛亮, 孔明, 卧龙],周瑜: [周瑜, 公瑾],吕布: [吕布, 奉先],貂蝉: [貂蝉],赵云: [赵云, 子龙],黄忠: [黄忠, 汉升],马超: [马超, 孟起],许褚: [许褚, 仲康],典韦: [典韦],司马懿: [司马懿, 仲达],郭嘉: [郭嘉, 奉孝],袁绍: [袁绍, 本初],袁术: [袁术, 公路],孙策: [孙策, 伯符],甘宁: [甘宁, 兴霸],鲁肃: [鲁肃, 子敬],庞统: [庞统, 凤雏],姜维: [姜维, 伯约] }# 创建一个人物关系计数字典 relation_counts defaultdict(int)# 遍历文本统计人物间的关系 for i in range(len(filtered_words) - 1):for name1, aliases1 in characters.items():if filtered_words[i] in aliases1:for name2, aliases2 in characters.items():if filtered_words[i 1] in aliases2 and name1 ! name2:relation_counts[(name1, name2)] 1# 创建网络图 G nx.Graph()# 添加节点 for character in characters.keys():G.add_node(character)# 添加边及权重 for (name1, name2), count in relation_counts.items():G.add_edge(name1, name2, weightcount)# 绘制关系图 plt.figure(figsize(14, 10)) pos nx.spring_layout(G, k1) edges G.edges(dataTrue) weights [edge[2][weight] for edge in edges]# 绘制节点和边 nx.draw(G, pos, with_labelsTrue, node_size2000, node_colorskyblue, font_size10, font_weightbold, widthweights)# 在图中显示边的权重 edge_labels nx.get_edge_attributes(G, weight) nx.draw_networkx_edge_labels(G, pos, edge_labelsedge_labels)plt.title(《三国演义》人物关系网扩展版) plt.show()
http://www.hkea.cn/news/14462694/

相关文章:

  • 小程序爱成毅的微博wordpress链接优化
  • 网站开发建设技术规范书网站如何做一张轮播图
  • 微信制作网站设计网站建设竞标需要怎么做
  • 深圳坂田网站建设绍兴网站建设优化
  • 网站首页description标签wordpress实现表格填写功能
  • 营销型网站排深圳网址网站建设公司
  • 怎么自己做网站备案长沙网络营销群
  • 网站备案的原则小型网站如何做
  • 河北网站seo外包wordpress 全站搜索
  • 做网站放太多视频做代理需要自己的网站吗
  • 资阳市建设局网站怎样接做网站的活
  • 保健食品东莞网站建设网络营销有哪些方式
  • 濮阳微信网站开发桂林企业建站
  • 什么网站可以直接做word文档响应式网站模板是什么
  • 关键词挖掘查询工具爱站网医院网站建设案例
  • 网站是哪家公司开发的永嘉网站制作哪家好
  • html5 微信网站主流开发技术标准优秀网站架构
  • 电商网站 建设步骤漳州市住房与城乡建设部网站
  • 网站联系方式修改织梦济南网站运营公司
  • 做网站好还是网页好末备案网站如何做cdn
  • 太原零元网站建设包装设计报价明细
  • 外国做的福利小视频在线观看网站58同城推广怎么做
  • 自己做应用的网站南宁百度seo价格
  • 网站收录减少湖南住房和城乡建设网门户网站
  • 河南县网站建设公司动漫设计专业就业方向和前景
  • soho外贸网站建设怎么设立网站
  • 模板和网站是一体的吗计算机论文8000到10000字
  • 元谋县住房和城乡建设局网站怎么自己制作小程序商城
  • 非洲用什么网站做采购什么网站做详情页好
  • 西双版纳网站开发临沂百度推广多少钱