7.19 文本词频统计

7.19 文本词频统计

一、 纯英文文本词频统计

  • 英文文本:Hamet 分析词频
http://www.chenyoude.com/预科班/hamlet.txt

问题分析:

  • 文本去噪及归一化
  • 使用字典表达词频

实现代码

# 读取文件
t = open(r'C:\Users\青柠\Desktop\预科\第六天\factory','r').read()
# 将读取文件小写化并以空格分割
t = t.lower().split(' ')

word = {} # 使用字典存储读入的数据
for i in t:
    if i not in word:
        word[i] = 1
    else:
        word[i] +=1

# 使用函数取出单词出现的次数 方便排序
def func(i):
    return i[1]
list = list(word.items()) # 将字典转化为元组(元组可排序)
list.sort(key = func) # 将函数取出来的次数进行初始排序
list.reverse() # 反转,降序排列

for i in list[0:10]: # 规格化输出
    print(f'{i[0]:^7}{i[1]^5}')

输出结果:

the  786
and  593
of   522
to   505
 a   381
my   370
in   325
you  319
 i   294
his  238

二、纯中文文本词频统计

  • 中文文本:《三国演义》 分析人物
http://www.chenyoude.com/预科班/threekingdoms.html

问题分析

  • 中文文本分词
  • 使用字典表达词频

实现代码

# 使用结巴库进行中文文本断句
import jieba
t = open(r'C:\Users\青柠\Desktop\预科\第六天\sanguo','r',encoding='utf-8').read()
t = jieba.lcut(t)

word = {}
for i in t:
    # 进行文本去噪,不需要打印的去除
    if len(i) == 1:
        continue
    if i in {"将军", "却说", "荆州", "二人", "不可", "不能", "如此", "商议"}:
        continue
    if '曰' in i:
        continue
    if i in word:
        word[i] += 1
    else:
        word[i] = 1

def func(i):
    return i[1]
list = list(word.items())
list.sort(key=func)
list.reverse()
for i in list[0:10]:
    print(i[0],i[1])

输出结果:

曹操 953
孔明 836
玄德 585
关公 510
丞相 491
张飞 358
如何 338
主公 331
军士 317
吕布 300

转载于:https://www.cnblogs.com/dadazunzhe/p/11213474.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值