失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python红楼梦词频统计_Python 红楼梦的字频与词频统计

python红楼梦词频统计_Python 红楼梦的字频与词频统计

时间:2021-04-24 23:48:58

相关推荐

python红楼梦词频统计_Python 红楼梦的字频与词频统计

Python 红楼梦的字频与词频统计

使用jieba分词工具分词,在网上下载了一个停用词表(包括标点符号)去除停用词。

使用wordcloud生成词云。

其实除了停用词,程度词与否定词等也应该去除,但没有找到合适的词表。

字频:

字符 字频

了 13993

的 9862

不 9439

一 8160

道 7271

来 7189

人 6626

我 6204

是 6145

说 6108

这 5204

他 5193

你 5004

儿 4756

着 4105

去 4006

个 3983

也 3933

子 3896

玉 3877

有 3738

宝 3733

又 3677

们 3321

笑 3285

里 3084

贾 3005

只 2962

那 2932

见 2930

上 2594

好 2555

姐 2504

太 2466

家 2447

在 2401

就 2368

么 2363

便 2247

大 2219

头 2149

日 2113

听 2054

出 2051

老 1994

下 1945

要 1866

都 1844

回 1800

知 1762

二 1755

两 1660

过 1635

还 1618

事 1580

自 1536

如 1536

话 1516

心 1502

小 1491

起 1483

看 1473

没 1448

因 1440

母 1425

凤 1407

忙 1400

之 1382

呢 1370

叫 1366

今 1353

面 1350

时 1344

些 1308

娘 1300

可 1292

等 1259

问 1242

奶 1195

什 1175

到 1165

才 1158

中 1135

吃 1123

和 1118

罢 1075

此 1034

打 1023

想 1008

夫 992

倒 989

正 950

别 949

给 937

黛 931

进 927

几 913

词频:

DataFrame就不贴在这了

前80回:

后40回:

# 如果您需要使用此代码,os.chdir路经需要指定到txt文本所在路径

# 使用Zipin函数,需要txt有read()函数可以打开的正确的编码格式

# 使用Cipin函数需要安装jieba库

# 使用word cloud函数需要安装wordcloud与matplotlib库

import os

import codecs

import jieba

import pandas as pd

from wordcloud import WordCloud

from scipy.misc import imread

import matplotlib.pyplot as plt

os.chdir("/Users/Zhaohaibo/Desktop")

class Hlm(object):

# —————————————————————

# Zipin(self, readdoc, writedoc)

# readdoc: 要读取的文件名

# writedoc:要写入的文件名

# output

# 字频前100,并写入writedoc

# —————————————————————

def Zipin(self, readdoc, writedoc):

word_lst = []

word_dict = {}

exclude_str = ",。!?、()【】<>《》=:+-*—“”…"

with open(readdoc,"r") as fileIn ,open(writedoc,'w') as fileOut:

# 添加每一个字到列表中

for line in fileIn:

for char in line:

word_lst.append(char)

# 用字典统计每个字出现的个数

for char in word_lst:

if char not in exclude_str:

if char.strip() not in word_dict: # strip去除各种空白

word_dict[char] = 1

else :

word_dict[char] += 1

# 排序x[1]是按字频排序,x[0]则是按字排序

lstWords = sorted(word_dict.items(), key=lambda x:x[1], reverse=True)

# 输出结果 (前100)

print ('字符\t字频')

print ('=============')

for e in lstWords[:100]:

print ('%s\t%d' % e)

fileOut.write('%s, %d\n' % e)

# —————————————————————

# Cipin(self, doc)

# doc: 要读取的文件名

# return:

# 词频表(DataFrame格式)

# —————————————————————

def Cipin(self, doc):

wdict = {}

f = open(doc,"r")

for line in f.readlines():

words = jieba.cut(line)

for w in words:

if(w not in wdict):

wdict[w] = 1

else:

wdict[w] += 1

# 导入停用词表

stop = pd.read_csv('stoplist.txt', encoding = 'utf-8', sep = 'zhao', header = None,engine = 'python') #sep:分割符号(需要用一个确定不会出现在停用词表中的单词)

stop.columns = ['word']

stop = [' '] + list(stop.word) #python读取时不会读取到空格。但空格依旧需要去除。所以加上空格; 读取后的stop是series的结构,需要转成列表

for i in range(len(stop)):

if(stop[i] in wdict):

wdict.pop(stop[i])

ind = list(wdict.keys())

val = list(wdict.values())

ind = pd.Series(ind)

val = pd.Series(val)

data = pd.DataFrame()

data['词'] = ind

data['词频'] = val

return data

# —————————————————————

# Ciyun(self, doc)

# doc: 要读取的文件名

# output:

# 词云图

# —————————————————————

def Ciyun(self,doc):

g = open(doc,"r").read()

back_pic = imread("aixin.jpg") # 设置背景图片

wc = WordCloud( font_path='/System/Library/Fonts/STHeiti Medium.ttc',#设置字体

background_color="white", #背景颜色

max_words=2000,# 词云显示的最大词数

mask=back_pic,#设置背景图片

max_font_size=200, #字体最大值

random_state=42,

).generate(g)

plt.figure(figsize=(64,32))

plt.imshow(wc)

plt.axis('off')

plt.savefig("ciyun.jpg")

plt.show()

def main(self,readdoc):

# self.Zipin(readdoc,writedoc)

df = self.Cipin(readdoc)

#self.Ciyun(readdoc)

return df

if __name__ == '__main__':

hlm = Hlm()

hlm.Zipin("红楼梦.txt","红楼梦字频.txt")

df_hlm1 = hlm.main("红楼梦.txt")

如果觉得《python红楼梦词频统计_Python 红楼梦的字频与词频统计》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。