《倚天屠龙记》作为金庸先生的经典作品,在无数人心目中留下了深刻的印象,基本上隔一段时间这部经典作品就会被重新拍成电影或者电视剧,可见观众的喜爱程度。虽然本人没有完完全全拜读过先生的这部作品,但是作为剧迷,也是刷了好几遍电视剧,对其中的人物印象颇深。
前段时间刚刚开始接触python,在python的初步入门阶段结束后,决定对《倚天屠龙记》这本经典小说进行文本分析,挖掘其中的人物关系。主要使用的软件为python,R以及Gephi,涉及到的内容为文本处理和网络分析。主要思路为:首先利用python的jieba库对文本进行分词处理,其次统计小说主要人物的出场次数以及先后次序,最后构建人物关系邻接矩阵,建立人物关系网络。
##读入文本txt = open("Documents/Python Scripts/倚天屠龙记.txt","r", encoding = "utf-8").read()repeatname = open("Documents/Python Scripts/主角名单.txt","r", encoding = "utf-8").read()#print(txt)
从读入的《倚天屠龙记》文本可以看出文章有大量的标点符号,这会对后续的分词会产生影响,因此需要去掉这些标点符号。
##去掉文本的标点符号punctuation = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~“”?,!《》【】()、。:;’‘……¥·"""dicts={i:'' for i in punctuation}punc_table=str.maketrans(dicts)txt1=txt.translate(punc_table)#print(txt1)
处理后的文本已经完全没有标点符号,接下来进行分词处理。
##使用python中的jieba库进行分词处理import loggingimport jiebajieba.setLogLevel(logging.INFO)##jieba库没有“杨逍”这个词,需要添加jieba.add_word("杨逍")words = jieba.lcut(txt1)
分词结果包含大量的词语,为便于观察,我们绘制中文词云进行展示。
##绘制词云import wordcloudimport matplotlib.pyplot as plt w = wordcloud.WordCloud(font_path = "Documents/Python Scripts/SimHei.ttf",width = 600, height = 400)w.generate(" ".join(words))plt.imshow(w, interpolation="