鱼C论坛

 找回密码
 立即注册
查看: 2202|回复: 0

[技术交流] 文本词频统计3

[复制链接]
发表于 2020-11-12 15:23:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 文本词频统计3
# threekingdomsV2:找一个三国演义的文件,保存为threekingdoms.txt,放在同一目录里面
# 记录输出出现次数最多的前十五个人物名输出
# 该版本通过设置排除非人名的词,进一步优化后精确统计:
excludes = {"将军", "荆州", "却说", "二人", "不可", "不能",\
            "如此", "商议", "如何", "左右", "军士", "军马",\
            "引兵", "次日", "大喜", "今日", "天下", "东吴",\
            "于是", "不敢", "魏兵", "陛下", "一人", "人马",\
            "不知", "汉中", "主公", "只见", "众将", "后主",\
            }
  1. import jieba

  2. filename = "threekingdoms.txt"
  3. txt = open(filename, "r", encoding="utf-8").read()
  4. words = jieba.lcut(txt)
  5. excludes = {"将军", "荆州", "却说", "二人", "不可", "不能",\
  6.             "如此", "商议", "如何", "左右", "军士", "军马",\
  7.             "引兵", "次日", "大喜", "今日", "天下", "东吴",\
  8.             "于是", "不敢", "魏兵", "陛下", "一人", "人马",\
  9.             "不知", "汉中", "主公", "只见", "众将", "后主",\
  10.             }
  11. counts = {}
  12. for word in words:
  13.     if len(word)==1:
  14.         continue
  15.     elif word == "诸葛亮" or word == "孔明曰":
  16.         rword = "孔明"
  17.     elif word == "玄德" or word == "玄德曰":
  18.         rword = "刘备"
  19.     elif word == "关公" or word == "云长":
  20.         rword = "关羽"
  21.     elif word == "孟德" or word == "丞相":
  22.         rword = "曹操"
  23.     else:
  24.         rword = word
  25.     counts[rword] = counts.get(rword, 0) + 1
  26. for word in excludes:
  27.     del counts[word]
  28. items = list(counts.items())
  29. items.sort(key=lambda x:x[1],reverse=True)
  30. # 将出现次数最多的前十五个人物名输出
  31. for i in range(15):
  32.     word, count = items[i]
  33.     print("{0:<10}{1:>5}".format(word, count))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-29 14:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表