Python实例分析——文本词频统计

基于中国大学mooc网嵩天老师的《Python语言程序设计》课程实例

一、数字文本 pi

问题描述:
统计并输出圆周率pi小数点后1000位中各数字出现频率并排序

完整代码:

txt = open('pi1000.txt', 'r').read()    # 获取文本文件
counts = {
   }    # 创建空字典

for num in txt:
    if num == ' ':    # 排除数字文本中可能出现的空格
        continue
    else:
        counts[num] = counts.get(num, 0) + 1  # 统计词频并在字典中创建键值对
items = list(counts.items())       # 将无序的字典类型转换为可排序的列表类型
items.sort(key=lambda x: x[1], reverse=True)   # 以元素的第二列进行从大到小排序

for i in range(10):
    num, count = items[i]
    print("{:<5}:{:>5}".format(num, count))    # 格式化输出排序结果

结果展示:
在这里插入图片描述

二、英文文本 Hamlet

问题描述:
输出 Hamlet 中前10个高频词语及其次数

实例分析:
从思路上看,词频统计只是累加问题,即对每一个词设计一个计数器,词语每出现一次,相关计数器加1。使用字典类型能够很好地解决这个问题:以词语为键,计数器为值,构成 <单词>:<出现次数> 的键值对

  1. 第一步,是分解并提取英文文档中的单词。但是文本中存在噪音干扰:同一个英文单词存在大小写不同形式,而计数却不能区分大小写。因此,需要将大小写单词归一化。除此之外,文本中还有各种各样的标点符号及空格等特殊符号,在统计时需要删除并统一分隔方式。
  2. 第二步,是对每个单词进行计数。计数时要确保每个单词都能被精确计数,做到不遗漏不重复。
  3. 第三步,是对单词的统计值从高到低进行排序。由于字典类型没有顺序,需要将其转换为有顺序的列表类型。

具体步骤及代码分析:
首先下载保存文本,将内容保存在一个txt文档中。文本查看地址:Hamlet
注意:py文件应与文本文件位于统一路径下,否则打开文件时应指定具体路径。

完整代码:

# 首先定
  • 45
    点赞
  • 362
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值