用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))

输出结果:

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

Python中,可以使用以下步骤来进行英文词频统计: 1. 准备文本数据:首先,你需要有一个包含英文文本的文件或字符串。你可以从文件中读取文本或直接使用字符串。 2. 文本预处理:对文本进行预处理是一个重要的步骤。你可以使用正则表达式或其他方法去除标点符号、数字和特殊字符,将所有字母转换为小写等。 3. 分词:将文本分割成单词。可以使用空格、标点符号或其他自定义分隔符来拆分文本。 4. 统计词频:使用Python的字典数据结构来统计每个单词的出现次数。遍历分词后的列表,对每个单词进行计数。 5. 排序:根据词频进行排序,可以按照出现次数从高到低或从低到高排序。 下面是一个示例代码,用于展示如何实现英文词频统计: ```python import re from collections import Counter def word_frequency(text): # 文本预处理 text = text.lower() # 转换为小写 text = re.sub(r'[^a-zA-Z\s]', '', text) # 去除标点符号和特殊字符 # 分词 words = text.split() # 统计词频 word_count = Counter(words) return word_count # 示例文本 text = "This is a sample text. It contains some sample words." # 统计词频 frequency = word_frequency(text) # 打印词频结果 for word, count in frequency.most_common(): print(f'{word}: {count}') ``` 上述代码将输出: ``` sample: 2 this: 1 is: 1 a: 1 text: 1 it: 1 contains: 1 some: 1 words: 1 ``` 这是每个单词及其出现次数的词频统计结果。你可以根据实际需求进行进一步的处理和分析。希望对你有帮助!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jarlen John

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

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

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

打赏作者

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

抵扣说明:

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

余额充值