今天和似乎往年一样,餐厅卖饺子的窗口前早早排起了长长的队伍
唯一不同的是今天的天气似乎格外的清爽,没有雾霾

20181222_195630-COLLAGE.jpg

我来自秦岭南麓山脚下的小山村,处于南北分界线上
对于冬至该吃饺子还是汤圆似乎没有什么纠结
因为我们那冬至没有这习俗,在这天我们既不吃饺子也不吃汤圆

在餐厅挑了个人少的窗口随便吃过了午饭就回到了宿舍
这时一好久不联系的学弟发来了消息

能帮我用Python写个作业吗?输出任一金庸小说中出现次数最多的五个人名

说干就干!
就用小时候最喜欢的《天龙八部》来做这次作业
先搜集一下小说中出现的主要人物的名字,用来做字典
主要人物姓名.txt
接下来要下载正本的小说,用来分析
天龙八部.txt

程序的实现过程很简单,先将主要的人物姓名读入一个列表,然后用结巴分词对整部小说进行分词
这里需要使用用户自定义字典,将全部姓名作为字典,以提高分词的准确率
最后对分词的结果进行统计输出
简单的示例代码如下:

import jieba
from collections import Counter
import re

# 结巴分词导入姓名
jieba.load_userdict("names.txt")

# 天龙八部中主要人物姓名
names = []
f =  open("names.txt",encoding='utf-8')
lines = f.readlines()
for line in lines:
    names.append(line.strip('\n'))

file =  open('tlbb.txt',encoding='utf-8').read()
file = re.sub("[A-Za-z0-9:·—,。“”'‘【】\n]", "", file)
seg_list = jieba.cut(file,cut_all=False)
cut_words = (" ".join(seg_list))
all_words=cut_words.split()

# 统计每个词出现次数
c=Counter()
for x in all_words:
    if len(x) > 1:
        c[x] += 1

# 输出词频最高的前几个词  times 输出前几名
print('\n词频统计结果(姓名:出现次数):')
times = 5
for (k,v) in c.most_common():
    if k in names:
        times = times - 1
        print("%s:%d" % (k, v))
        if times == 0:
            break

运行截图:
demo.png

最后祝大家冬至快乐~心想事成,一夜暴富!
也祝我自己一夜暴富!

标签: 冬至, 分词

添加新评论