文本词频统计。《三国演义》人物出场统计,排除更多无关词汇干扰,总结出场最多的10个人物,同时对返回结果进行图形展示。

import jieba 
excludes = {"将军","却说","荆州","二人","不可","不能",
            "如此","商议","如何","主公","军士","左右",
            "军马","引兵","次日","大喜","天下","东吴",
            "于是","今日","魏兵","陛下","一人","都督",
            "人马","不知","不敢"}
txt = open("threekingdoms.txt","r",encoding='utf-8').read()
words = jieba.lcut(txt)
counts = {}
for word in words:
    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 word in excludes:
    del(counts[word])
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word,count))
    
import matplotlib.pyplot as plt
import matplotlib

matplotlib.rcParams['font.family']='SimHei' #字体为细黑体
ls=[('曹操',1451),('孔明',1383),('刘备',1252),('关羽',784),
    ('张飞',358),('吕布',300),('赵云',278),('孙权',264),
    ('司马懿',221),('周瑜',217)]
x1=[]
for i in range(10):
    x1.append(ls[i][0])
y1=[]
for i in range(10):
    y1.append(ls[i][1])
    
print(x1)
print(y1)

plt.scatter(x1, y1)
plt.show()

下面是代码运行结果:

词频统计
​​​​
结果图形化展示

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值