《构建之法》作业:文本词频统计

该博客介绍了如何使用Python进行英文文本词频统计,包括字母频率和单词频率的统计,支持设定停用词并展示最高频的单词。通过一个简单的交互界面,用户可以输入文本路径,程序会输出统计结果。目前存在一些改进的空间,如错误处理和结果展示方式。
摘要由CSDN通过智能技术生成

《构建之法》作业:英文文本词频统计

实现功能:
  • 统计文本中所有出现字母出现的次数、频率(不区分大小写),按出现频率从高到底排列,同频率按字母顺序排列
  • 统计文本中出现的所有单词的次数、频率(不区分大小写),按出现频率从高到底排列,同频率按字母顺序排列
  • 支持输入数字n,仅查看出现频率最高的前n个单词
  • 支持设置stopwords,剔除统计stopwords中单词
使用:

运行代码,出现窗口File,在输入框内输入所需统计的文本路径(加文件后缀名),点击OK。
随后出现对话框及5个按钮,对应5个功能:

  • letters number:
    输出所有字母出现次数、频率
  • all words number without stopwords:
    输出所有单词出现次数、频率,不启用stopwords
  • all words number with stopwords:
    输出所有单词出现次数、频率,启用stopwords
  • input words number without stopwords:
    输出给定前n个单词出现次数、频率,不启用stopwords
  • input words number with stopwords:
    输出给定前n个单词出现次数、频率,启用stopwords

环境:

python3.6
pip install prettytable(用来生成表格)


代码:
'''
目标:  统计文本中英语单词的频率
功能:  1、统计文本中所有出现字母出现的次数、频率(不区分大小写),按出现频率从高到底排列,同频率按字母顺序排列
        2、统计文本中出现的所有单词的次数、频率(不区分大小写),按出现频率从高到底排列,同频率按字母顺序排列
        3、支持输入数字n,仅查看出现频率最高的前n个单词
        4、支持设置stopwords,剔除统计stopwords中单词
'''


import string 
import re
import prettytable as pt
from tkinter import * 

#************文件输入框**********

window1 = Tk()
window1.title('File')
window1.geometry('200x100')

entry = Entry(window1,width=20)
entry.pack()

def closewindow1():
    window1.destroy()

def change_state():
    global path
    path = entry.get()		# 调用get()方法,将Entry中的内容获取出来

button_in = Button(window1, text='OK', command=lambda:[change_state(),closewindow1()]).pack()
window1.mainloop()

#*************读取文件**************

# path = "./The Heart  of a Broken Story.txt"

alph = dict(zip('abcdefghijklmnopqrstuvwxyz', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]))

with open(path,"r", encoding='utf-8') as f:      
    data = f.read()

data = str(data)                                    # 所需统计的文本,放入列表中
data_lower = data.lower()                           # 全部用小写读入
data_words = re.findall(r'[\w]+', data_lower)       # 遇到以下字符,讲句子切割成单词,存入data_words
# data_words.pop()                                  # 使用re.split读入时,需要删除最后一个空字符


k1 = 0
k2 = 0
while 1:                                            # 删除存储单词的列表中非字母开头的元素
    if data_words[k1][0] not in alph
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值