首页 > 精选 > 关注公众号的有福了!原来书也可以这么读

关注公众号的有福了!原来书也可以这么读

《一个人的村庄》是不是一个人的村庄?除了令狐冲,谁又是《笑傲江湖》中出场最多的人?诺奖得主的书是怎么用词的?《红楼梦》前八十回和后四十回有没有明显区别?和冯唐是不是写的一类书?西北作家贾平凹和陈忠实有何相似之处?

 

本文运用python分析了小说中的词频和词性特征,从而发现:

 

《一个人的村庄》

新疆作家刘亮程的散文集,再版多次,写的是空旷世界的细腻生活。书中前20个出现频率最高的词是:一个,村庄,我们,野地,麦子,他们,事情,自己,苞谷,它们,知道,路上,没有,一辈子,村子,榆木,一条,一生,村里,看见。



前两个词都挺切合作者表达的意思,一个人,一个土地,一个砖瓦村落,第三个词我们,有时指人类,有时指我和村里人,野地是村庄之外的地方,也是种麦子的地方,而他们,有时指其他村民,指父亲和牛,指村里的老人,而事情,就是在村里转悠,娶个老婆生娃。

在散文集里,出现最多的人是我们,最多的地方是村庄,最多的人名是榆木,最多的粮食是麦子,最多的动作是看见,最多的季节是冬天,最多的感觉是寒冷……

 

《笑傲江湖》

金庸最有意思的小说,讲述了荡气回肠,令人爱不释手的江湖故事。



小说中,出现最多的自然是主角令狐大爷,排第二的居然是他师傅岳不群,华山派气宗掌门,可惜心术不正,成了江湖第一伪君子。第三是,令狐冲的红颜知己,日月神教的继任教主任盈盈。第四依旧是人名,林平之,家有祖传辟邪剑谱。第四,剑法,小说中厉害的武功都使的是剑。第五,终于见到了小师妹。第六,长剑,书中最常用的武器。第七,恒山,是北岳恒山派的根据地,令狐冲还在此做了掌门,并且舍命相救恒山派女弟子排在第八的仪琳。第九是动词说道。第十,采花大盗田伯光。

 

《蛙》

莫言,第一位获得诺奖的国内作家,同时凭借小说《蛙》获得茅盾文学奖。小说语言丰富,新意别出,故事有趣,获奖实至名归。

从词频上看,最多几个词是姑姑,小狮子,我们和孩子,这些就是‘诺奖小说常用词’。



从词性看,非语素字,动词,名词,代词和副词的比例分别是352322137,这就是‘诺奖小说比例’。



《红楼梦》前八十回与后四十回

 

小说前八十回曹雪芹所著,后四十回无名氏续,程伟元、高鹗整理。根据词性的分析,前后两部分并没有明显区别,比例甚至十分相近。



和冯唐:《》与《万物生长》

 

1952年生,已经去世。冯唐,1971年生,活跃于各大书展。两人书中都描写了大量光怪陆离的两性关系,是座巅峰,有人将他两进行对比。两本书分别是两人的代表作,分析的结果是,两书的词性使用比例是很相近的。但,《》中的名词比例还是比《》少了3个点,而动词却多了两个点。


西北作家:贾平凹和陈忠实,《秦腔》和《白鹿原》

 

西北多产作家,而且以粗犷朴实的文风独树一帜。贾平凹和陈忠实都是陕西人,分别因为《秦腔》和《白鹿原》获得矛盾文学奖。《白鹿原》与《秦腔》和之前分析的作品有很大区别,因为书中出现最多的是动词,名词比例也更大,而非语素字比例要小于《秦腔》。






Python代码如下:


 

##词频分析

import jieba 

import jieba.analyse

import jieba.posseg #词性

import xlwt #写入Excel表的 

 

if__name__=="__main__": 

 

    wbk = xlwt.Workbook(encoding ='ascii') 

    sheet =wbk.add_sheet("wordCount")#Excel单元格名字 

    word_lst = []#频率

    key_list=[]#词目

 

    for line in open(".txt",encoding="gbk"):#需要分词统计的文档 

 

        item = line.strip('\n\r').split('\t') #制表格切分 

        # print item 

        tags = jieba.analyse.extract_tags(item[0])#jieba 

        for t in tags: 

            word_lst.append(t) 

 

    word_dict= {} 

    with open("wordCount.txt",'w') aswf2: #打开文件 

 

        for item in word_lst: 

            if item not in word_dict: #统计数量 

                word_dict[item] = 1 

            else: 

                word_dict[item] += 1 

 

        orderList=list(word_dict.values()) 

        orderList.sort(reverse=True) 

       

        for i in range(len(orderList)): 

            for key in word_dict: 

                ifword_dict[key]==orderList[i]: 

                    wf2.write(key+''+str(word_dict[key])+'\n') #写入txt文档 

                    key_list.append(key) 

                    word_dict[key]=0 

   

    for i in range(len(key_list)):

        sheet.write(i, 1, label = orderList[i])#频率

        sheet.write(i, 0, label = key_list[i])#词目

 

    wbk.save('.xls') #保存 wordCount.xls文件 

 

 

##词性分析

import jieba.posseg #词性

import xlwt #写入Excel表的 

import collections

 

text = open(".txt",encoding="gbk").read()#不能解,可以试试gbk,utf-8

tex = jieba.posseg.cut(text)

 

l = []

for i in tex:

    l.append(i.flag)

#

m=collections.Counter(l)

mm=sorted(m.items(), key=lambdapair: pair[1], reverse=True)

 

友情链接