择天记小说人物数据分析过程python

本文通过pthon和Excel简单分析人物之间的关系



首先介绍一下这部小说,小说作者猫腻

陈长生在故事中,先是认识和体会到了自身命运和生命的时限。从这个方面出发,他是属于认识自然、了解自然、认识规律、了解规律的过程。

陈长生认识与体会的过程,便属于主观能动力中想的范畴。正因为有了这种认识和想法,他的心中才具备了自己的主观意识。

因此,陈长生有了改变自身命运的想法。他不希望自己的生命就此终结,而是希望选择和思考改变的方法。

于是,陈长生开始付出自己的行动。逆天改命,也成为了他人生中重要的行动和实践。他开始寻找改命的方法并做出行动。

这个逆天改命的行动,便构成了主观能动力的实践部分。那,便是做与行动,是属于改造世界。

可是,在他逆天改命的路上困难重重、险阻重生。面对这些坎坷和阻碍,陈长生开始了自己的改命之路。

而这段道路上,他不折不挠、坚强不屈的意志精神,便构成了主观能动力的精神状态。可以说,正是这份精神状态,让陈长生坚持把那条改命之路走下去。

认识自身命运、做出行动改造命运,并且从中体现出坚强不屈、百折不挠的精神状态,整体上发挥了陈长生的主观能动力。

《择天记》给予我们的人生启迪,或者便是这份融合着陈长生认识命运、改造命运和坚强不屈的主观能动力。也许,这也是我们面对人生困难与挫折时所应该发挥的哲思了。这,也是一份满满的青春正能量。

楼主因为看过择天记,所以拿择天记来做分析也是非常高兴。

好了废话不多说



开始

环境:python3

模块:jieba

材料:择天记.txt,择天记人物.txt

择天记可以自己到网上下载,

以下是主要人物


择天记小说人物数据分析过程python_第1张图片




1.定义数据结构

names = {}#字典类型

relationships = {}#字典类型

linenames = []#列表类型

all_names = []#列表类型

names用于存入小说人物和出场次数;relationships保存人物关系的有向边,该字典的键为有向边的起点,值为一个字典edge,edge的键是有向边的终点,值是有向边的权值,代表两个人物之间联系的紧密程度;linenames存入每行小说出现的人物;all_names是小说所有人物。



2.把人物名导入jieba库

导入的目的是对小说出现的人名进行统计。

#添加人名到jieba词库中

f1 = open('/Users/tencenting/PycharmProjects/qm/venv/zetianji/names.txt',encoding='utf-8')

for line in f1.readlines():

all_names.append(line.strip().strip('\ufeff'))

for name in all_names:

jieba.add_word(name)

以上都是固定语法。把路径改了就行。可参考jieba库的用法



3.统计小说人物关系出场次数

#统计小说人物出场人数模块

f2 =open('/Users/tencenting/PycharmProjects/qm/venv/zetianji/zetianji.txt',encoding='utf-8')

forlineinf2.readlines():

seg_list = jieba.cut(line)

linenames.append([])

foriinseg_list:

ifiinall_names:

linenames[-1].append(i)

ifnames.get(i)is None:

names[i] =0

relationships[i] = {}

names[i] +=1



4.保存数据写到本地

#人物关系及写入文件模块

forlineinlinenames:

forname1inline:

forname2inline:

ifname1 == name2:

continue

ifrelationships[name1].get(name2)is None:

relationships[name1][name2] =1

else:

relationships[name1][name2] +=1

importcodecs

withcodecs.open('/Users/tencenting/PycharmProjects/qm/venv/zetianji/tian_node.txt','w','utf-8')asf:

f.write("Id Label Weight\r\n")

forname, timesinnames.items():

f.write(name +' '+ name +' '+str(times) +'\r\n')

withcodecs.open('tian_edge.txt','w',"utf-8")asf:

f.write("Source Target Weight\r\n")

forname, edgesinrelationships.items():

forv, winedges.items():

ifw >3:

f.write(name +' '+ v +" "+str(w) +"\r\n")



5.数据可视化

步骤4.的结果


择天记小说人物数据分析过程python_第2张图片

导入Excel可视化数据得:



择天记小说人物数据分析过程python_第3张图片
择天记小说人物数据分析过程python_第4张图片
择天记小说人物数据分析过程python_第5张图片

以上结果Excel得出。不过还是推荐使用gephi来可视化

可视化结论:主角陈长生和徐有容在小说的出场次数是最多的4%,其次是陈长生和唐三十六3%(取平均值)

你可能感兴趣的:(择天记小说人物数据分析过程python)