python红楼梦词频统计
《红楼梦》人物的出场统计涉及对词汇的统计,中文文章的需要分词才能进行词频统计,需要用到jieba库。
分析过程:
代码:
import jieba
txt=open("G:\\红楼梦.txt","r",encoding="utf-8")
txt.read()
words=jieba.lcut(txt)#精准模式
a={}
for word in words:
if len(word)==1:#排除单个字符的统计结果
continue
else:
a[word]=a.get(word,0)+1
items=list(a.items())#将字典转换为记录列表
items.sort(key=lambda x:x[1],reverse=True)#记录第二列排序
for i in range(15):
word,count=items[i]
print("{0:<10}{1:>5}".format(word,count))
txt.close()
第一步是打开红楼梦.txt文件,只读的方式,使用UTF-8编码方式
第二步是使用精准模式,将单词保存到words列表中,使用一个字典类型a={},统计单词的次数:
for word in words:
if len(word)==1:#排除单个字符的统计结果
continue
else:
a[word]=a.get(word,0)+1
如果字符长度为1则跳过,否则使用a.get(word,0)方法表示:如果word在a中则返回word对应的值,如果word不在a中就返回0。
第三步是对单词的统计的值从高到低进行排序,输出前15个高频词语,并格式化打印输出。由于字典没有顺序,需要将其转换为有顺序的列表类型,再使用sort()方法和lambda函数配合实现单词出现的次数,对元素进行排序。最后输出排序结果前15位的单词。
items=list(a.items())#将字典转换为记录列表
items.sort(key=lambda x:x[1],reverse=True)#记录第二列排序
实验结果:
可以看出贾宝玉和贾母的出现的次数最高。