讲授课程:Python语言程序设计基础
讲授章节:第六章 组合数据类型
切入点:jieba是Python中一个重要的第三方中文分词函数库,分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组。
讲授目的及效果:通过讲述jieba库和《三国演义》人物出场统计实例,激发学生对中华民族传统文化的兴趣,引导学生将爱国和维护国家统一作为一种习惯和荣耀。
三国演义是中国古典四大名著之一,以描写战争为主,反映了东汉末年的群雄割据混战和魏、蜀、吴三国之间的政治和军事斗争,并由此引出“天下大势、分久必合、合久必分”和“天下大势,合久必分、分久必合”的结论,说明了中国人民希望统一、拥护统一的思想与行动,促成了中国历史统一多于分裂的局面。《三国演义》这种“分久必合”的思想给出了有益的启示。
那么在《三国演义》这本鸿篇巨著中,哪些人物尤为重要,出场次数最多,可以通过引入jieba库进行词汇的统计,具体实例如下:
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))
运行程序后,输出结果为:曹操 1451;孔明 1383;刘备:1252;关羽:784;张飞:358。由此可以获得结论,“曹操”、“孔明”和“刘备”是《三国演义》中出场次数最多的人,通过描述这些关键人物之间的政治和军事斗争的过程,历史最终走向统一。
作为当代青年,我们更应当发扬爱国精神,维护国家统一的价值观,并使之成为我们不断奋斗的伟大信念。
(作者:沈红岩)