专栏首页Python编程大咖资深Python程序员教你统计,三国中人物名字出现的频率,很简单

资深Python程序员教你统计,三国中人物名字出现的频率,很简单

资深Python程序员教你简单、有趣的程序: 使用第三方库jieba切分,统计统计名著三国演义中人物名字出现次数。

资深Python程序员教你统计,三国中人物名字出现的频率,很简单 其中一个jieba库是一个对中文文本依照汉字间关联概率进行词组划分的第三方库,使用简单,且非常好用

import jieba

def getWords():
 txt = open('novels/threekingdoms.txt', 'r', encoding = 'utf-8').read()
 words = jieba.lcut(txt)
 counts = {}
 for word in words:
 if len(word) == 1:
 continue
 else:
 counts[word] = counts.get(word, 0) + 1
 word_list = list(counts.items())
 word_list.sort(key = lambda x : x[1], reverse = True)
 return word_list

进行人肉优化,去掉不是人名的词语,并将一些指同一个人物的词合并到一个人物下。

import jieba

def countWords(excludes, merges):
 txt = open('novels/threekingdoms.txt', 'r', encoding = 'utf-8').read()
 words = jieba.lcut(txt)
 counts = {}
 # 取出长度为一的词和符号以及excludes中的词
 for word in words:
 if len(word) == 1 or word in excludes:
 continue
 else:
 counts[word] = counts.get(word, 0) + 1
 # 合并名称相同的人名
 for merge in merges:
 for name in merge[1]:
 counts[merge[0]] += counts.get(name, 0)
 del counts[name]
 word_list = list(counts.items())
 word_list.sort(key = lambda x : x[1], reverse = True)
 return word_list
excludes = {'却说','二人','不可','主公','陛下','汉中','只见','众将','后主','蜀兵','上马','大叫','太守','此人','夫人',
 '先主','后人','背后','城中','天子','一面','何不','大军','忽报','先生','百姓','何故','不能','如此','如何',
 '然后','先锋','不如','赶来','原来','令人','江东','下马','喊声','正是','徐州','忽然','荆州','左右','军马',
 '因此','成都','不见','未知','大败','大事','之后','一军','引军','起兵','军中','接应','引兵','次日','大喜',
 '进兵','大惊','可以','以为','大怒','不得','心中','下文','一声','追赶','粮草','天下','东吴','于是','都督',
 '曹兵','一齐','分解','回报','分付','只得','出马','三千','大将','许都','随后','报知','今日','不敢','魏兵',
 '前面','之兵','且说','众官','洛阳','领兵','商议','军士','星夜','精兵','城上','之计','不肯','相见','其言',
 '一日','而行','文武','襄阳','准备','若何','出战','亲自','必有','一人','人马','不知','何人','此事','之中',
 '伏兵','祁山','乘势','忽见','大笑','樊城','兄弟','首级','立于','西川','传令','当先','五百','一彪','坚守',
 '此时','之间','投降','五千','埋伏','长安','三路','遣使','将军','关兴','军师','朝廷','三军','大王','回见',
 '大将军','必然','将士','是夜','小路' }

merges = [ ('刘备',('玄德','玄德曰','玄德问','刘玄德','玄德大','玄德自','玄德闻','皇叔','刘皇叔')),
 ('关羽',('关公','云长','关云长')),
 ('孔明',('诸葛亮','孔明曰','孔明笑','孔明之','孔明自')),
 ('曹操',('丞相','孟德','曹公','曹孟德')),
 ('张飞',('翼德','张翼德'))
 ]

word_list = countWords(excludes, merges)
for i in range(30):
 word, count = word_list[i]
 print('{0:^10}{1:{3}^10}{2:^15}'.format(i+1, word, count, chr(12288))) # chr(12288)为中文空格 ```
结果如下,当然其中类似将军、英雄、主公、大哥、君这种词语无法判断指的是谁,这里仅统计能够判断的,所以这里只能做一个相对的参考。

1     刘备     1578 2     曹操     1485 3     孔明     1485 4     关羽     820 5     张飞     393 6     吕布     300 7     赵云     278 8     孙权     264 9     司马懿     221 10     周瑜     217 11     袁绍     191 12     马超     185 13     魏延     180 14     黄忠     168 15     姜维     151 16     马岱     127 17     庞德     122 18     孟获     122 19     刘表     120 20     夏侯惇     116 21     董卓     114 22     孙策     108 23     鲁肃     107 24     徐晃     97 25     司马昭     89 26     夏侯渊     88 27     王平     88 28     刘璋     85 29     袁术     84 30     吕蒙     83 以上是Python语言中的一个小案例,仅供大家参考。```

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 近期分享干货,使用python实现语音文件的特征提取方法

    python编程语言无疑是人工智能最重要的语言之一,但是其中语音识别是当前人工智能比较热门的方向,百度的小度机器人、阿里的天猫精灵等其他各大公司都推出了各自的语...

    Python编程大咖
  • 有的人能轻松学会Python编程,不是基础好,而是有了这些刷题网站

    作为编程语言中最为通俗易懂的Python,学好它不仅需要正确的方法,更需要不断的算法训练。

    Python编程大咖
  • Python大神完成王者荣耀助手助力菜鸟,网友评论:不用担心被喷了

    这个时候运行会有一些问题,seek_weapon函数还没有定义,接下来定义seek_weapon,代码如下:

    Python编程大咖
  • 机器学习顶会 ICML 2018 斯德哥尔摩开幕,公平性研究戴上光环

    AI 科技评论按:经过 7 月 10 日的三个 Tutorial Session 和 Opening Reception 晚宴之后,在瑞典斯德哥尔摩举办的机器学...

    AI科技评论
  • appium+python自动化43-切换webview时候报chromedriver版本问题

    用appium切换webview的时候报chrome和chromedriver版本的问题:session not created exception: Chro...

    上海-悠悠
  • 代码提示插件Spket

    Spket是一个可以在Eclipse及MyEclipse中实现JavaScript代码自动提示、自动校验、自动纠错的插件。

    wblearn
  • 从零开始,手摸手搭建前端组件库

    https://majunchang.github.io/mi.vant/#/quickStart

    念念不忘
  • 学界震动!北大教授实名举报武大,中科院三人学术造假!官方回应

    整理自中国新闻周刊、腾讯新闻、生物学霸,北京青年报,每日经济新闻、募格学术、考博圈、经济学家圈等

    小小詹同学
  • AngularJS 使用$sce控制代码安全检查

    由于浏览器都有同源加载策略,不能加载不同域下的文件、也不能使用不合要求的协议比如file进行访问。 在angularJs中为了避免安全漏洞,一些ng-src...

    用户1154259
  • Android安全几道入门题目

    Android系统由于其开源的属性,市场上针对开源代码定制的ROM参差不齐,在系统层面的安全防范和易损性都不一样,android应用市场对app的审核相对 iO...

    FB客服

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动