用python分析四大名著之三国演义

点击上方“程序人生”,选择“置顶公众号”

第一时间关注程序猿(媛)身边的故事



项目起因及意义


起初在浏览知乎时看见一篇文章觉得很有意思(用 Python 分析《红楼梦》),此文章较长,题主采用了一系列方法分析红楼梦前八十回和后四十回是否为同一个人所写,虽然题主贴上了部分实现的截图,我就想试着来实现一遍,但由于目前能力有限,一些机器学习算法不够了解,加上 python 又是刚刚学,所以我打算先结合《Python 语言程序设计基础》这本书上的例子——《三国演义》人物出场统计来作为此系列博客第一篇,后续等能力足矣会陆陆续续补上。


前期准备


三国里人物众多,我们需要对人物出场次数统计,中文文章需要分词才能进行词频统计,这里我们用到第三方库 jieba,这里我就不提供下载方法了,然后我们需要《三国演义》的电子书网上都有,很容易下载。


项目进行


将文本数据导入 pycharm


import jieba
txt = open("三国演义.txt""r", encoding="gb18030").read()



这里的编码格式一开始我是按照书上‘utf-8’格式读取,发现会乱码,后来在pycharm里面用‘gbk’格式能读出文本内容,但是个别字符识别不出来,就去百度到“gb18030”比gbk范围更广,这里我成功读入。如果你此时还是读入不了可以写成下面形式


txt = open("三国演义.txt""r", encoding="gb18030",errors="ignore").read()


完整代码实现


import jieba
excludes = {"将军""却说""荆州""二人""不可""不能""如此""商议""如何""主公""军士""左右""军马""引兵""次日""大喜""天下""东吴""于是""今日""不敢""魏兵","人马""陛下""一人"}
txt = open("三国演义.txt""r", encoding="gbk").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 (word, count)


excludes里面定义了一些出现次数较多但不是人名的词,这里主要语句就是 counts[rword] = counts.get(rword, 0) + 1 这一句字典类型的counts,如果word在counts中,返回word对应的值,否则返回0。后面用sort()函数和匿名函数lambda()进行排序,这里字典没有顺序,需要先转化为列表类型。输出结果如下: 



导出数据文件


fo = open("三国人物出场次数.txt""a")
for i in range(10):
   word, count=items[i]
   word = str(word)
   count = str(count)
   fo.write(word)
   fo.write(' ')
   fo.write(count)
   fo.write('\n')
   print (word, count)
print(items)
fo.close()


这里我们将数据导入到 三国人物出场次数.txt 这个文件里面。 


将数据画出气泡图

 


总结


由此可知“曹操“,“ 孔明””刘备”是出场最多的人,这些只是简单的数据分析,作为此系列博客的开头篇,随着学习希望自己能实现完整用python分析四大名著。


点击图片get往期内容

### 回答1: 可以使用Python中的词云库(如wordcloud)和文本处理库(如jieba)来制作四大名著主要人物词云。 具体步骤如下: 1. 读取四大名著的文本文件(如红楼梦、西游记、水浒传、三国演义)。 2. 使用文本处理库(如jieba)对文本进行分词处理,得到每个词语。 3. 根据要,可以去除一些无意义的词语(如“的”、“了”、“是”等),或者添加一些关键词(如主要人物的名字)。 4. 统计每个词语现的次数,生成词频表。 5. 使用词云库(如wordcloud)根据词频表生成词云图。 6. 根据要,可以调整词云图的颜色、形状、字体等参数。 7. 最后保存词云图到本地或者展示在网页上。 以上是制作四大名著主要人物词云的基本步骤,具体实现可以参考相关的Python代码和教程。 ### 回答2: Python是一种高级编程语言,可以用来制作各种数据可视化工具,包括词云。为了制作四大名著主要人物的词云,我们要掌握以下几个步骤: 第一步,准备文本数据。我们要从四大名著中抽取主要人物的名字来制作词云。可以使用Python中的自然语言处理工具,比如NLTK或jieba,来完成这个任务。 第二步,处理文本数据。要对文本数据进行清洗、分词、去除停用词等预处理工作。这可以使用Python中的字符串处理和NLTK或jieba中的分词工具来完成。 第三步,制作词云。Python中有很多词云制作的库,比如WordCloud和pytagcloud。可以使用它们来生成美观的词云。 具体实现时,我们可以按照以下步骤来制作四大名著主要人物词云: 1. 从四大名著中抽取主要人物的名字,可以使用正则表达式或NLTK中的命名实体识别工具来完成。 2. 对文本数据进行清洗和分词处理,可以使用Python字符串处理函数和jieba库来完成。 3. 去除停用词和低频词,可以使用NLTK提供的停用词表和TF-IDF算法来完成。 4. 使用WordCloud或pytagcloud库生成词云图像,并调整颜色、字体、布局等参数使其更加美观。 最终,我们可以得到一张四大名著主要人物词云,展示每个主要人物的重要性和影响力。这样的可视化工具可以被应用在教育、文化和社会研究等领域,为读者和研究者提供更加深入的洞察力和认识。 ### 回答3: 四大名著主要人物词云,顾名思义就是将四大名著中的主要人物进行提取关键词并制作成词云的一个过程。其中四大名著指的是《红楼梦》、《西游记》、《水浒传》、《三国演义》,这些作品中都有着众多千古名人,他们的形象深深地刻在了许多读者的脑海中。而我们通过词云的方式,可以将这些人物的特点和形象更加直观地呈现来。 首先,我们要将四大名著的文本进行处理,通过分词、去停用词等方式对文本进行清洗。接着,利用Python中的jieba分词工具,将文本转化为词语列表。然后,我们可以设置每个人物的特定关键词,如贾宝玉的关键词可以是“荒唐、富贵、痴情”,而悟空的关键词可以是“聪明、顽皮、逍遥自在”。在这个过程中,可以根据人物的特点和形象来设定关键词,尽可能地凸显他们的个性和特点。 接下来,我们可以使用Python中的wordcloud库,将创建好的词语列表制作成词云。这里要用到词云制作的基本原理,即根据词语现的频率和重要性,将其放置到不同的位置和大小,形成美观的词云。可以根据自己的设计求,调整词云的字体、颜色、背景等等。 最后,经过数据分析和图像设计,我们可以得到一系列以四大名著主要人物为主题的词云图,呈现每个人物的形象和特色,也反映了这些人物在古代文学中的地位和影响。 总之,通过Python的文本处理和词云制作,我们可以更加深入地了解和感受四大名著中的主要人物,如它们的思想、气质、习惯等等,为我们学习和研究古代文学提供了一个新的视角。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值