美文网首页
使用 jieba 分词与 wordcloud 词云分析《从你的全

使用 jieba 分词与 wordcloud 词云分析《从你的全

作者: __Cool | 来源:发表于2017-12-31 20:46 被阅读148次

    匆忙地看过电影,没看过小说。

    本文分析感情小说《从你的全世界路过》.txt,想要达到以下几点效果:

    1. 有哪些小说人物
    2. 小说的感情基调
    3. 故事发生所在地

    快速介绍

    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

    相关文章

      网友评论

          本文标题:使用 jieba 分词与 wordcloud 词云分析《从你的全

          本文链接:https://www.haomeiwen.com/subject/sewagxtx.html