用Python统计中英文词频

本设计基于Python3.6实现中英文词频统计功能

英文词频统计

统计哈姆雷特英文版,txt格式文件地址:
hamlet.txt
思路分析:

  1. 获取文件中词汇
  2. 转换为统一格式,如小写或者大写
  3. 切割词汇
  4. 循环遍历进行统计
  5. 打印输出

代码如下:

#获取单词函数定义
def getTxt():
    txt = open('hamlet.txt').read()
    txt = txt.lower()
    for ch in '!"@#$%^&*()+,-./:;<=>?@[\\]_`~{|}': #替换特殊字符
        txt.replace(ch, ' ')
    return txt
#1.获取单词
hamletTxt = getTxt()

#2.切割为列表格式
txtArr = hamletTxt.split()

#3.遍历统计
counts = {}
for word in txtArr:
    counts[word] = counts.get(word, 0) + 1

#4.转换格式,方便打印,将字典转换为列表
countsList = list(counts.items())
countsList.sort(key=lambda x:x[1], reverse=True)#按次数从大到小排序

#5.打印
for i in range(10):
    word, count = countsList[i]
    print('{0:<10}{1:>5}'.format(word,count))

注意:
1. 代码counts[word] = counts.get(word, 0) + 1巧妙使用了字典的get函数,一句代码实现复杂功能
2. 代码countsList.sort(key=lambda x:x[1], reverse=True)中sort函数的参数要注意

输出结果:

哈姆雷特英文词汇统计

中文词频统计

本文中统计功能基于jieba三方库统计三国演义,txt格式文件地址:
三国演义.txt
思路分析:

  1. 获取文本字符串
  2. 切割字符为列表
  3. 循环遍历进行统计
  4. 打印输出

    代码如下:

import jieba
txt = open('threekingdoms.txt','r',encoding='utf-8').read()
excludes = ['却说','二人','不可','军士','军马','引兵','不能','如此',\
            '商议','荆州','如何','将军','次日','大喜','左右','天下',\
            '东吴','于是','今日','不敢','魏兵','陛下','一人','都督',\
            '人马','不知','汉中','只见','众将','后主','蜀兵']#排除词组
words = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    elif word == '诸葛亮' or word == '孔明曰':
        reword = '孔明'
    elif word == '关公' or word == '云长':
        reword = '关羽'
    elif word == '玄德' or word == '玄德曰' or word == '主公':
        reword = '刘备'
    elif word == '孟德' or word == '丞相':
        reword = '曹操'
    else:
        reword = word
        counts[reword] = counts.get(reword, 0) + 1
#取出非人名词汇
for key in excludes:
    del counts[key]
#转换格式,输出
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
    word, count = items[i]
    print('{0:<5}{1:>5}次'.format(word, count))

输出结果:

三国演义人物出现次数前十名

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jarlen John

谢谢你给我一杯咖啡的温暖

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值