使用 jieba 分词与 wordcloud 词云分析《从你的全
匆忙地看过电影,没看过小说。
本文分析感情小说《从你的全世界路过》.txt,想要达到以下几点效果:
- 有哪些小说人物
- 小说的感情基调
- 故事发生所在地
快速介绍
jieba:“结巴”中文分词:可以将中文的句子进行单词分割,多种分词模式,支持繁体、自定义词典。
word_cloud:通常和 jieba 结合使用,将分好的单词以图片的方式展示出来,根据单词出现的次数使单词突出。
准备工作
安装 jieba 分词:
pip install jieba
/ pip3 install jieba
安装 word_cloud 词云:
pip install word cloud
开始
使用 jieba 分词:
import jieba
words = [] # 所有单词
two_words = [] # 大于或等于两个单词
with open("9787540458027.txt", 'rb') as f:
for line in f.readlines():
seg = line.decode('gbk').encode('utf-8')# 中文解编码
seg1 = seg.strip()
seg_list = jieba.lcut(seg1, cut_all=False)# jieba分词
words.extend(seg_list)
print "此文章总共分得"+str(len(words))+"个词"
for i in words: # 以词语长度分类
if len(i) >= 2:
words.remove(i)
two_words.append(i)
print "此文章大于两个字的词语有" + str(len(two_words)) + "个"
print "此文章一个字的词语有" + str(len(words)) + "个"
运行结果:
此文章总共分得77865个词
此文章大于两个字的词语有22433个
此文章一个字的词语有55432个
使用 Counter 进行词频统计:
···
from collections import Counter
···
c = Counter(words)
c1 = Counter(two_words)
for k, v in c.most_common(200): # 出现次数前200
print k, v
print "-------------------------------------"
for k1, v1 in c1.most_common(200):
print k1, v1
运行结果:
。 3873
的 2627
我 2174
···省略
-------------------------------------
我们 209
没有 157
一个 150
···省略
运行结果中,标点符号不影响分析,暂不做处理。下面就可以根据问题进行分析。
有哪些小说人物?
筛选到如下人物名称:
慧子 52 | 大黑 46 | 老太太 46 | 管春 42 |
---|---|---|---|
小玉 41 | 木子 40 | 小山 36 | 张嘉佳 35 |
猪头 34 | 马力 33 | 毛毛 31 | 太太 29 |
老子 29 | 袁鑫 27 | 梅茜 27 | 茅十八 25 |
荔枝 24 | 王亦凡 24 | 姜微 23 | 张萍 20 |
黄莺 19 | 蝴蝶 18 | 阿梅 17 | 野狗 26 |
生成人物词云:
人物1.png生成词云基本代码:
# -*- coding:utf-8 -*-
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter
words_dict = {u'慧子': 52, u'大黑': 46, u'老太太':46,
······}
c = Counter(words_dict)
wc = WordCloud(font_path='AaBanSong.ttf').generate_from_frequencies(c) # wordcloud自带的xxx.ttf 并不支持中文,在网上下载一个引用即可
plt.figure()
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()
小说的感情基调
选取了如下几个具有代表性的词语:
偏消极 | 偏积极 | |
---|---|---|
哭 96 | 难过 17 | 喜欢 70 |
眼泪 57 | 离婚 17 | 钱 55 |
却 40 | 等 71 | 爱 45 |
狗 33 | 分手 16 | 笑 36 |
沉默 22 | 结果 53 | 微笑 20 |
开心 13 | ||
我爱你 13 | ||
温暖 13 |
可以看出整篇小说的基调是偏消极的,包含又不限于哭、等待、惋惜之情、转折、离婚、分手等;积极方面有微笑、开心、我爱你等词语,表面看来是悲多喜少,人物的情感生活是曲折的,经济上也并不是很稳定,推断作者在人物情感方面下了较大功夫,而且在故事的结果方面转折较大。
故事发生所在地
地点.png大到城市,南京、长沙、北京;小到菲律宾,酒吧、家里、宿舍、小区、大学;可以确定的是小说中至少一个人物喜欢混酒吧 ,故事大多发生在人物的学生时代,推断他们的大学在南京,毕业后到长沙、北京等地工作,菲律宾旅游。
总结
小说围绕慧子、大黑 、老太太、管春等人物展开青春时代故事描述,其他人为支线拓展和丰富故事内容,酒吧是一个重要的地点,用来描述人物的心情,以及故事的悲喜程度,一般什么人会去酒吧?消愁 or 寻乐暂时不知。
人物在经理悲欢离合之后的生活又是怎样的,等我看完这本小说再回来做读后感,看看推断是否正确,有多少偏差。
参考资料:
jieba 分词:https://github.com/fxsjy/jieba
wordcloud 词云:https://github.com/amueller/word_cloud