用Python去分析《天龙八部》中谁是真正的猪脚

2018-03-09 10:15:49 Python 阅读 (6133) 评论(1)

一. 准备工作

  (1).安装jieba库,可以直接使用pip下载安装

pip install jieba

  (2).准备好小说的txt文件,自行百度下载(*^▽^*)

二.编码工作

  (1).导入jieba包,读取txt文件,这里要注意可能下载的txt文件不是utf-8编码的,这里open的时候需要加上该txt的编码,这样应该就可以打开txt文件了,如果还有编码转换的bug,在open函数中加一个errors="ignore",这样一定就能正常读取文件了。

blob.png

  (2).jieba分词&简单过滤

    jieba.lcut分词读取到的文件,得到一个列表,然后进行一个简单过滤,我们假设人物名字都是2到4个汉字(不考虑特殊情况),然后《天龙八部》中“萧峰”和“乔峰”实指同一人。把循环中的人物和出现次数都放到一个字典(人物名作key,出现次数作valve)里,字典的get方法是根据key值获取value,如果没有查到,就返回默认值。

blob.png

    (3).排序&输出

        将上一步获取到的字典转换成列表,方便排序。上面定义了一个常用的非人名的字词,输出的时候判断是不是常用的非人名的字词,这里也简单的过滤了下。拿到这些数据后,就可以进行下一步的处理了,存文件或存数据库那就是后话了,这里就不再演示了。  

blob.png

三.完整代码&结果

  (1).完整代码

import jieba
txt = open("天龙八部精校版.txt", "r", encoding="gb2312", errors="ignore").read()
# 常用的非人名的字词
no_name = ["说道", "出来", "如何", "跟着", "之后", "当真", "说话", "这里", "爹爹", "可是", "起来", "你们", "身上","两人","还是","这些","不会","自己","内力","怎么","南海","身子","脸上","原来","这么","弟子","众人", "这个","便是","倘若","突然","只是","不敢","他们","我们","见到","声音","心想","如此","只见","之中","不能","一个", "知道", "什么", "武功", "不是", "甚么", "一声", "咱们", "师父", "心中", "不知"]
res = jieba.lcut(txt)
count = {}  # 定义存储人物和出现次数字典
for word in res:
    if len(word) == 1 or len(word) > 4:
        continue
    elif word == "萧峰":
        new_word = "乔峰"
    else:
        new_word = word
    count[new_word] = count.get(new_word, 0) + 1
# 字典转换为列表
names = list(count.items())
# 列表排序,根据出场次数排序
names.sort(key=lambda x: x[1], reverse=True)
# 输出
for key, item in names:
    if key not in no_name:
        print("%s---->%s" % (key, item))

 (2).结果分析

    由图可知,乔峰,段誉,虚竹三兄弟是天龙八部的猪脚,而乔峰戏份最多,乔峰才是最大的猪脚。而事实上,《天龙八部》剧中也是以乔峰的身世之谜贯穿全剧的,程序诚不欺我,(#^.^#)!

blob.png




PS:这里也放几张别的小说里的人物出场次数,处理方式都是一样的。

                             《倚天屠龙记》

1blob.png

                        《射雕英雄传》

blob.png


评论

gw1992225 18-03-09 15:13:14 这个玩的可以 666