《庆余年2》除了主角表演经常,每个配角小人物也很出彩。那到底有哪些小人物呢?
在deepseek中输入提示词:
你是一个Python编程专家,要写一个Python脚本,具体步骤如下:
读取文档:"D:\qyn\庆余年第二季剧情.docx";
使用jieba进行中文分词,
遍历分词结果,筛选出标签为'nr'的词语(这些就是人名),打印出来;
统计每个人名在文档中出现的次数,打印出来;
筛选出出现次数大于10的人名,用matplotlib绘制一个水平柱状图:x轴为人名,y轴为人名出现次数;
x轴上的人名要按照出现次数,从小到大排列;
设置matplotlib默认字体为'SimHei',文件路径为:C:\Windows\Fonts\simhei.ttf
注意:每一步都要输出信息到屏幕上
源代码:
import docx
import jieba
import jieba.posseg as pseg
import collections
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
设置matplotlib默认字体
font_path = r"C:\Windows\Fonts\simhei.ttf" # SimHei字体文件路径
font_prop = FontProperties(fname=font_path)
plt.rcParams['font.sans-serif'] = font_prop.get_name()
plt.rcParams['axes.unicode_minus'] = False
读取文档
doc_path = r"D:\qyn\庆余年第二季剧情.docx"
doc = docx.Document(doc_path)
使用jieba进行中文分词,并提取人名
text = ' '.join([para.text for para in doc.paragraphs])
words = pseg.cut(text)
person_names = [word for word, flag in words if flag == 'nr']
输出所有的人名
print("所有的人名:")
print(person_names)
统计每个人名在文档中出现的次数,并打印出来
name_counts = collections.Counter(person_names)
print("每个人名出现的次数:")
print(name_counts)
筛选出出现次数大于10的人名
filtered_names = {name: count for name, count in name_counts.items() if count > 10}
按照出现次数对filtered_names进行排序
sorted_filtered_names = dict(sorted(filtered_names.items(), key=lambda item: item[1]))
使用matplotlib绘制一个水平柱状图,x轴为人名,y轴为人名出现次数
names_list = list(sorted_filtered_names.keys())
counts_list = list(sorted_filtered_names.values())
创建图表并设置大小
plt.figure(figsize=(10, len(names_list) // 3))
绘制水平柱状图
plt.barh(range(len(names_list)), counts_list, color='skyblue', tick_label=names_list)
设置图表标题和轴标签
plt.title('出现次数大于10的人名统计')
plt.xlabel('人名出现次数')
plt.ylabel('人名')
显示图表
plt.tight_layout()
plt.show()
程序运行,结果如上,可见,除了主角'范闲'、 '李承泽'、'陈萍萍'、'林婉儿'、 '范思辙'、 '林若甫'、'王启年'、'李承乾等这些,还有众多小人物:'叶灵儿': 49, '赖名成': 48, '言冰云': 46, '杨万里': 43, '郭铮': 40, ', '邓子越': 37, '李成儒': 35, '谢必安': 34, '明青达': 33, '柳如玉': 32, '袁梦': 27, '贺宗纬': 27, '老太太': '李承儒': 23, '袁宏道': 21, '李太医': 20, '桑文': 19, ''林珙': 18, '明家': 17, '洪竹': 16, '侯季常': 15, '郭保坤': 12, '费介': 12, , '秦恒': 10, '宜贵嫔': 10, '言若海':, '叶重': 10, '公子哥': 9, '王夫人': '肖恩': 8, '范闲才': 8, '向庆帝': 8, '郭保': 6, '成佳林':': '辛其物':
很多出场次数很少的小人物,比如桑文、辛其物、洪竹,人物塑造鲜明,给人印象深刻。