用jieba进行中文分词并统计中文词频

用jieba进行中文分词并统计中文词频
安装jieba

pip install jieba

2种:
1.统计三国演义排前20的词频(去掉部分不想要的词)
2.统计自行指定的三国演义人物的出场次数

import jieba
# 统计三国演义排前20的词频(去掉部分不想要的词)
# 打开读取文件名为threekingdoms.txt的三国演义文档
txt = open('threekingdoms.txt','r', encoding = 'utf-8').read()
# jieba.lcut() 精确模式切分中文
txt = jieba.lcut(txt)
counts = {}
new = {}
excludes = {'将军','却说','荆州','二人','不可','不能','如此','今日','次日','于是','如何','主公','一人','不敢','大喜','陛下','不知','汉中','只见','都督','后主'}
# string.format() 格式化
print('统计三国演义排前20的词频:')
for word in txt:
	# 去标点符号
	if len(word) == 1:
		continue
	elif word == '孟德' or word == '丞相':
		rword = '曹操'
	elif word == '玄德' or word == '玄德曰':
		rword = '刘备'
	elif word == '孔明' or word == '孔明曰':
		rword = '诸葛亮'
	elif word == '关公' or word == '云长':
		rword = '关羽'
	else:
		rword = word
	counts[rword] = counts.get(rword,0) + 1
for rword in excludes:
	del counts[rword]
li = list(counts.items())
# 由大到小排序
li.sort(key=lambda x:x[1], reverse=True)
for i in range(1,21):
	key,value = li[i]
	print('{:<3}{:<6}{:>5}'.format(i,key,value))

结果:

统计三国演义排前20的词频:
1  诸葛亮    1383
2  刘备     1252
3  关羽      784
4  张飞      358
5  商议      344
6  军士      317
7  吕布      300
8  左右      294
9  军马      293
10 赵云      278
11 引兵      276
12 孙权      264
13 天下      255
14 东吴      251
15 魏兵      233
16 司马懿     221
17 人马      220
18 周瑜      217
19 众将      207
20 袁绍      191
import jieba
# 统计指定三国演义人物的出场次数
# 打开读取文件名为threekingdoms.txt的三国演义文档
txt = open('threekingdoms.txt','r', encoding = 'utf-8').read()
# jieba.lcut() 精确模式切分中文
txt = jieba.lcut(txt)
counts = {}
cha = ['曹操','诸葛亮','刘备','关羽','张飞','吕布','赵云','姜维','马岱','庞德','周瑜','袁绍','马超','孙权','司马懿','魏延','黄忠','孟获','刘表','夏侯惇','刘禅']
new = {}
# string.format() 格式化
print('我喜欢的{}个三国演义人物出场统计:'.format(len(cha)))
for word in txt:
	# 去标点符号
	if len(word) == 1:
		continue
	elif word == '孟德' or word == '丞相':
		rword = '曹操'
	elif word == '玄德' or word == '玄德曰':
		rword = '刘备'
	elif word == '孔明' or word == '孔明曰':
		rword = '诸葛亮'
	elif word == '关公' or word == '云长':
		rword = '关羽'
	else:
		rword = word
	counts[rword] = counts.get(rword,0) + 1
for key,value in counts.items():
	if key in cha:
		new[key] = value
li = list(new.items())
# 由大到小排序
li.sort(key=lambda x:x[1], reverse=True)
for i in range(1,len(cha)+1):
	key,value = li[i-1]
	print('{:<3}{:<6}{:>5}'.format(i,key,value))

结果:

我喜欢的21个三国演义人物出场统计:
1  曹操     1451
2  诸葛亮    1383
3  刘备     1252
4  关羽      784
5  张飞      358
6  吕布      300
7  赵云      278
8  孙权      264
9  司马懿     221
10 周瑜      217
11 袁绍      191
12 马超      185
13 魏延      180
14 黄忠      168
15 姜维      151
16 马岱      127
17 庞德      122
18 孟获      122
19 刘表      120
20 夏侯惇     116
21 刘禅       16
  • 6
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值