今天在偶然网络上又看到了这个神梗:
恐怖如斯恐怖如斯恐怖如斯恐怖如斯…
印象深刻啊…又回到了2015年,我清晰地记得入坑晚的我我中考前一晚追完了《斗破苍穹》,才安心睡觉…
但是后来由于多方原因,《武动乾坤》和《大主宰》我都没有从头到尾系统地看,都是零零散散地看一点望一点…
所以今天我们就来分析分析当年天蚕土豆的三本霸榜之作:
《斗破苍穹》
《武动乾坤》
《大主宰》
不过呢想要分析数据,首先要获取数据,因为这三本书已经出来很久了,所以网上资源遍地都是,利用爬虫也很好爬,如果你们想要自己上手抓取数据,可以看看:pyquery爬取天蚕土豆经典玄幻三部曲;如果你们懒得自己获取数据,我这里也有现成的(https://pan.baidu.com/s/1PWOs8iEkBZDYSmBgB13RDQ提取码:j7ua )
然后我们来看看这些小说吧:
先来看看这些小说所有内容的词云吧:
import threading
import jieba
from wordcloud import WordCloud
import os
# 获取目录下所有小说名称
def file_name(file_dir):
for folder, _, files in os.walk(file_dir):
return [(folder + "/" + _) for _ in files]
# 创建停用词
def stopwordslist(filepath):
stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
return stopwords
# 对句子进行去除停用词
def seg_sentence(sentence):
stopwords = stopwordslist('stop.txt') # 这里加载停用词的路径
outer = ''
for word in jieba.cut(sentence.strip()):
if word not in stopwords:
if word != '\t':
outer += word
return outer
def draw(name):
lists = file_name(name)
word = ""
for item in lists:
with open(item, "r", encoding="utf-8")as f:
word += f.read()
wc = WordCloud(scale=5,
font_path="SimHei.ttf",
background_color="white",
max_words=200000,
).generate(text=" ".join(jieba.cut(seg_sentence(word))))
wc.to_file(name + ".png")
if __name__ == '__main__':
threading.Thread(target=draw("DouPoCangQiong")).start()
threading.Thread(target=draw("WuDongQianKun")).start()
threading.Thread(target=draw("DaZhuZai")).start()
这三张词云图分别是指哪部小说我应该不用讲了,毕竟最大的两个字就是主句名字嘛~ ~ 另外呢,除了那些常见的名词动词形容词介词修饰词等等,(因为太大了,我筛选清楚实在是清不完…程序里面用到的stop.txt
链接我也放出来,你们可以继续完善… https://pan.baidu.com/s/10Kzv9XysBsOto6wmRl7qlw 提取码:kcue )
然后我们再来看看这些小说中的关键词看看:
import os
import matplotlib.pyplot as plt
# 获取当前路径下所有子文件
def file_name(file_dir):
for _, _, files in os.walk(file_dir):
return files
# 获得词频
def get_word_frequency(name):
dicts = {
"灰衣老者": 0, "黑衣老者": 0, "负手而立": 0, "你算什么东西": 0, "的存在": 0,
"如同鬼魅一般": 0, "眼神微微一凝": 0, "微微一凝": 0, "瞳孔微微一缩": 0, "眼神闪烁": 0,
"倒吸一口凉气": 0, "旋即": 0, "是吗": 0, "哼": 0, "小瞧你": 0, "不是省油的灯": 0,
"此子": 0, "大患": 0, "桀": 0, "戾气": 0, "恐怖如斯": 0,
"放眼": 0, "凤毛麟角": 0, "足以把": 0, "沉了下来": 0, "你的对手是我": 0,
"残影": 0, "暴涨": 0, "暴怒": 0, "暴喝": 0, "暴退": 0, "喉咙一甜": 0,
"窃窃私语": 0, "摧枯拉朽": 0, "苦笑": 0, "软柿子": 0,
"娇嗔": 0, "贝齿": 0, "俏脸": 0, "玉手": 0, "红唇": 0,
}
for item in file_name(name):
with open(name + '/' + item, "r", encoding="utf-8")as f:
word = f.read()
for i in dicts:
dicts[i] += word.count(i)
return dicts
# 实现两个字典相加
def add_dicts(dict1, dict2):
dic = dict1
for key in dict1:
dic[key] += dict2.get(key, 0)
return dic
# 对字典按值进行排序
def sort_dict(dicts):
dic = {}
for item in sorted(dicts, key=dicts.get, reverse=True):
dic[item] = dicts[item]
return dic
# 保存为图片
def save_to_img(dicts, name):
plt.rcParams['font.sans-serif'] = ["SimHei"]
fig, ax = plt.subplots(2, 5, figsize=(21, 9))
fig.suptitle(name)
plt.subplot2grid((2, 5), (0, 0), colspan=1, rowspan=2)
plt.bar([".", list(dicts.keys())[0], " ", "."], [0, list(dicts.values())[0], 0, 0], color="#419876")
plt.subplot2grid((2, 5), (0, 1), colspan=4, rowspan=1)
plt.bar(list(dicts.keys())[1:int((len(list(dicts.keys())) - 1) / 2)],
list(dicts.values())[1:int((len(list(dicts.values())) - 1) / 2)],
color="#FF5646")
plt.xticks(rotation=30)
plt.subplot2grid((2, 5), (1, 1), colspan=4, rowspan=1)
plt.bar(list(dicts.keys())[int((len(list(dicts.keys())) - 1) / 2):],
list(dicts.values())[int((len(list(dicts.values())) - 1) / 2):],
color="#675980")
plt.xticks(rotation=30)
plt.savefig(name + ".png", dpi=800)
def main():
dict1 = sort_dict(get_word_frequency("DouPoCangQiong"))
save_to_img(dict1, "斗破苍穹")
print(dict1)
dict2 = sort_dict(get_word_frequency("WuDongQianKun"))
save_to_img(dict2, "武动乾坤")
print(dict2)
dict3 = sort_dict(get_word_frequency("DaZhuZai"))
save_to_img(dict3, "大主宰")
print(dict3)
dict4 = add_dicts(add_dicts(dict1, dict2), dict3)
save_to_img(sort_dict(dict4), "ALL")
print(sort_dict(dict4))
if __name__ == '__main__':
main()
排在第一名的是旋即:一般来讲应该是xx和xx打架时,旋即身形飞速前进/后退 or 出招 or 摆出防御姿态…
第二名是哼:一般来讲有两种情况:
第一种:反派:“哼,不自量力”
第二种:与主角关系近的女性角色:“哼,讨厌”
我觉得第一种应该比较多…
第三名是玉手:这个其实有点出乎我的预料…说实话我对这个词还真的印象不多…
后面还有:
苦笑:男主苦笑一声:哎,现在太菜了,还是打不过那个反派老儿
俏脸:主角老婆的俏脸啊…
的存在:xx强者,可是这片天地间恐怖/强大/无人能敌的存在
桀:反派的笑声:桀桀桀…
暴涨,暴退,暴怒,暴喝:那肯定是打架时候土豆最喜欢用的词啦
红唇:主角老婆的红唇啊…
残影:也是打架时一个很nb的人,哇,好快!竟然只剩下了残影?!
窃窃私语:一般也是打架时,一边的吃瓜群众在那窃窃私语
放眼:放眼这块地方,xx也是数一数二的强者…
…
其他的我就不一一列举了,大家可以自行脑补,比如三部小说中出现的273位灰衣老者、104位黑衣老者往往出场后就是负手而立…等等hahaha ~ ~ ~
不过令我比较奇怪的是,恐怖如斯这个词竟然只出现了26次???也没有网上传的几千次啊…
难道我的统计有误?大家可以试试…
大家没事也可以分析分析别的或者画画别的图之类的看看…
呼应一下标题:
震惊!我用Python分析了天蚕土豆的玄幻三部曲竟然发现…
恐怖如斯的数量竟然没有那么多!真是恐怖如斯!