词频记录与词云制作

《三国演义》可以说是接触最久一本小说。最早是红白机大卡带的游戏,然后有按照小说历程设计的策略游戏《三国志Ⅺ》。

并且上学时有课文《出师表》,《空城计》的学习。基本上课外拓展《三国演义》的题都考不动我。

颇有感情的一本小说,即使到现在也还是很喜欢。

现在学习python学到新技能,自然做出一番操作。

#e10.4CalThreeKingdoms.py
import jieba
excludes = {"将军","却说","荆州","二人","不可","不能","如此"}
txt = open("三国演义.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(5):
    word, count = items[i]
    print ("{0:<10}{1:>5}".format(word, count))

 

 找不到正确的小说文本,所以还是与真实数据有一定的差距。

至于一些无关名词的出现,只需在第三行的代码中插入相应文字即可,依次重复即可获得正解。

#WordCloud.py
import jieba
import wordcloud
f=open("三国演义.txt",'r',encoding='utf-8')
t=f.read()
f.close()
ls=jieba.lcut(t)

txt="".join(ls)
w=wordcloud.WordCloud(
    width=1000,height=700,
    background_color='white',
    font_path='msyh.ttc',max_words=15
    )
w.generate(txt)
w.to_file("grwordcloud.png")

通过词云,可以得到一些结论。

1:“且听下回分解”是结尾必备,除了最后一章的“鼎足三分已成梦,后人凭吊空牢骚。”所以该语句出场频率较高

2:各式各样的曰,可以看出小说具有大量对话,说明三国演义不仅仅有让人酣畅淋漓的大场面,也有精彩绝伦的对话(个人愚见)

我们可以通过词云的方式了解更多,不仅仅限制于小文章。当然还可以某些领导人的讲话,了解他的个人风格等等。

原文地址:https://www.cnblogs.com/lalalala-fan/p/12650491.html