1《都挺好》简介
该小说讲述了职场金领苏明玉从小不受家人待见,生长在家庭的边缘,在孤独扭曲的环境中长大成人的故事。结局是这样的,苏明哲回到了美国,苏明成和朱丽离婚后不知所踪,苏明玉和石天冬在一起了,三个子女看清了苏大强的为人,没有人再管着他,最终苏大强得了老年痴呆症,苏明玉于心不忍,因此把他接回家照顾。
上图是去除停用词、去除人名、只保留形容词和名词的小说词云图;由图中也可以看出基本都是和家庭相关的词语。
# 小说词云
def getWordCloud():
rlist=[]
for s in content:
for w in pseg.cut(str(s)):
if(w.word not in stopdict and w.flag=='a' or w.flag=='n'):
rlist.append(w.word)
rlist = " ".join(rlist)
w = WordCloud(font_path="C:/Users/Windows/fonts/simkai.ttf",width=600,height=400,background_color="black",max_words=50)
w.generate(rlist)
path=r'C:\Users\Administrator\Desktop\pic.png'
w.to_file(path)
2人物共同出现频数
2.1制作主要人物字典
需要把《都挺好》小说txt版下载下来,刚开始我是通过jieba分词把所有nr(人名)的词语保存下来,作为人物集合,但是①某个人物多个称呼 ②nr类型会出现许多不合适的词
words=pseg.cut(single)
for w in words:
if(w.flag=='nr')
参考电视猫中的人物关系图,单独制作了主要人物词典
#主要人物 姓名词典
pdict={
'明玉':['明玉','苏明玉','苏总'],'朱丽':['朱丽','丽丽'],'明哲':['明哲','苏明哲','大哥'],
'明成':['明成','苏明成','大哥'],'苏大强':['苏大强','老爹','爸'],'吴非':['吴非'],'苏家':['苏家'],
'宝宝':['宝宝'],'老蒙':['老蒙','蒙总'],'小蒙':['小蒙'],'天冬':['天冬','石天冬','石大哥'],
'柳青':['柳青'],'蔡根花':['蔡根花'],'钟点工':['钟点工'],'温玮光':['温玮光','温总'],'苏母':['苏母']}
#判断na是哪个人物
def getPerson(na):
for key,value in pdict.items():
if(na in value):
return str(key)
return '无'
2.2计算人物相互出现的频数
(1)首先初始化一个16×16的人物频数0矩阵。
(2)在小说的每一段中,当这一段中出现了词典中的人物时,就把出现的人物两两对应的频数+1。
(3)遍历频数矩阵的右上半边(或左下半边)获得人物两两之间的频数。
# 计算人物相互出现的频数 保存成顶点-权重
def getPeopleNetwork():
plist=list(pdict.keys())
N=len(plist)
pcount=np.ze