jieba库词频统计_如何用python对《三国演义》、《红楼梦》等名著开展词云分析及字频统计、出场统计等工作。...

以下以《红楼梦》为例进行设计。

在制作词云图及统计之前,需要下载python的几个库,wordcloud、jieba以及imageio等,我的操作系统为Windows10,IDE环境为idle,下载方式就直接搜索cmd,打开命令提示符窗口,输入pip install wordcloud等库进行下载即可。

696fbd500d9c5ada7ade0736cba286da.png
像这样,就下载成功了

要对名著进行开展,必不可少的就是这些名著的电子书,安装好库就要进行对电子书的下载,这个链接可以下载《红楼梦》的txt电子书:

红楼梦txt下载|红楼梦txt全集下载-红楼梦百度云下载-TXT下载站​www.txtxzz.com
d41c9f73779ac86ae4e4667ee17beb52.png

f03530b3af8a8387a61e890b266d5e1d.png
这是我用到的背景图

以下为我具体的操作代码,具体的注释我都加在了里面:

import jieba 
import wordcloud
from imageio import imread# 1、进行词云分析,即词云图的制作
def ciyun():mask = imread("林黛玉.png")   # 打开词云背景图tf = open('红楼梦.txt','rt',encoding = 'utf-8')   # 打开《林黛玉》txt文档txt = ''for line in tf.readlines():for j in ",.“”?:《》--!":line.replace('',j)txt += linejieba_cut = jieba.lcut(txt)   # 利用jieba对文档进行全文分词c = wordcloud.WordCloud(width = 1200,font_path = 'msyh.ttc',height = 800,background_color='white',mask=mask)   # 进行背景、画布大小、颜色等处理c.generate(' '.join(jieba_cut))c.to_file('红楼梦.png')tf.close()
ciyun() # 2、出场统计的制作
excludes = {"什么","一个","我们","那里","你们","如今","说道","知道","起来","姑娘","这里","出来","他们","众人","自己","一面","只见","怎么","奶奶","两个","没有","不是","不知","这个","听见","这样","进来","咱们","告诉","就是","东西","袭人","回来","只是","大家","只得","老爷","丫头","这些","不敢","出去","所以","不过","的话","不好","姐姐","探春","鸳鸯","一时","不能","过来","心里","如此","今日","银子","几个","答应","二人","还有","只管","这么","说话","一回","那边","这话","外头","打发","自然","今儿","罢了","屋里","那些","听说","小丫头","不用","如何"}# 将这些会干扰的词汇列出并且删除,以免影响最后的结果
txt = open("红楼梦.txt","r",encoding='utf-8').read()   # 打开《红楼梦》txt电子书
words = jieba.lcut(txt)   # 利用jieba进行全文分词
paixv = {}
for word in words:if len(word) == 1:   # 如果分割的长度是一,可能是语气词之类的,所以删除continueelse:paixv[word] = paixv.get(word,0) + 1for word in excludes:			del(paixv[word])  # 如果列出的干扰词汇在分完词后的所有词汇中那么删除items = list(paixv.items())  # 将字典转换为列表
items.sort(key=lambda x:x[1],reverse = True)  # 将列表进行降序排列for i in range(20):  # 打印出前20个出场最多的人物名word,count = items[i]print("{0:<10}{1:>5}".format(word,count))# 3、字频统计的制作    
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): def Zipin(self, readdoc, writedoc):   # 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] = 1else :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 ('%st%d' % e)fileOut.write('%s, %dn' % e)# 词频表(DataFrame格式)def Cipin(self, doc):   # 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] = 1else: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['词'] = inddata['词频'] = valreturn data

最后的结果截图为:

词云图:

9f73a93b7915fb5cb39d8389a9890335.png

出场统计:

80daca6426ed176dc222d23c7b87a677.png

字频统计:

2b10e3c6cc26c162a3cd9592a670c5df.png
有点多就只截一部分

以上便为《红楼梦》的词云分析及字频统计、出场统计。主要是为了记录一下我昨天的课程设计作业,代码有借鉴。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学史思维导图_【学科活动】思维导图展风采,数学文化提素养——庆云县第四中学(北校区)四年级数学组活动小记...

思维无限 导我所想思维的火花跨越时空&#xff0c;照亮昨天、今天和明天。人类从茹毛饮血、采集狩猎到今天足不出户购遍全球&#xff0c;人工智能、大数据信息处理融入每个人的生活。这其中&#xff0c;最大的改变就是思维方式的改变。——题记思维导图又叫心智导图&#xff0c…

k2677场效应管参数引脚_共射极放大电路,场效应管放大电路,运算放大电路

电子技术、无线电维修及SMT电子制造工艺技术绝不是一门容易学好、短时间内就能够掌握的学科。这门学科所涉及的方方面面很多&#xff0c;各方面又相互联系&#xff0c;作为初学者&#xff0c;首先要在整体上了解、初步掌握它。无论是无线电爱好者还是维修技术人员&#xff0c;你…

加载类_JVM类加载详解

类的加载器概述类加载器是JVM执行类加载机制的前提。ClassLoader的作用&#xff1a;ClassLoader是Java的核心组件&#xff0c;所有的Class都是由ClassLoader进行加载的&#xff0c;ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部&#xff0c;转换为一个与目…

group by用法多个字段_select的用法

select的用法 --每个员工的所有信息 select * from emp; --每个人的部门编号&#xff0c;姓名&#xff0c;薪水 select empno, ename, sal from emp; --每个人的年薪 select ename, sal*12 from emp; --计算2*3的值 select 2*3 from emp; --计算2*3的值(dual) select 2*3 from …

计算机考试打字小作文,打字练习作文(通用5篇)

打字练习作文(通用5篇)导语&#xff1a;随着计算机在人们的生活中普及&#xff0c;敲键盘打字的速度就变成了人们努力的方向。下面是小编为大家整理的打字练习作文(通用5篇)&#xff0c;欢迎阅读&#xff0c;希望大家能够喜欢。打字练习作文 篇1今天过得有些无聊&#xff0c;爸…

eclipse创建pojo_使用Eclipse Hibernate插件逐步为POJO域Java类和hbm自动生成代码

eclipse创建pojo概述&#xff1a; 在本教程中&#xff0c;我们将使用Eclipse Hibernate工具自动生成域对象和相应的hbm xml文件。 如果您正在处理大型或中型项目&#xff0c;并且开始时有超过5个以上的表&#xff0c;那么您可能会发现此插件是自动生成映射域对象java文件和相应…

c语言中x的n次方怎么表示_线性代数的本质及其在AI中的应用

线性代数是 AI 专家必须掌握的知识&#xff0c;这已不再是个秘密。如果不掌握应用数学这个领域&#xff0c;你永远就只能是「门外汉」。当然&#xff0c;学习线性代数道阻且长。数学&#xff0c;尤其是线性代数常与枯燥、复杂和毫无意义的事物联系起来。不过你还可以另辟蹊径。…

解码base64_linux C++ Base64编解码

Base64的由来目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时&#xff0c;系统之间的报文交互都需要使用Base64对明文进行转码&#xff0c;然后再进行签名或加密&#xff0c;之后再进行&#xff08;或再次Base64&#xff09;传输。那么&#xf…

java的for循环取出数据只是拿到最后一个_新兴大数据分析榆中百合

新兴大数据分析榆中百合大数据流程从流程角度上看&#xff0c;整个大数据处理可分成4个主要步骤。处理流程图分为三层(数据采集层&#xff0c;数据存储与计算处理层&#xff0c;数据可视化)&#xff1a;表2-1 系统环境系统版本Windows 10专业版(建议)LinuxCentOS 6.8 or CentO…

c++冒泡排序代码_【开源推荐】数据结构和算法必知必会的50个代码实现

最近GitHub上发现了个非常不错的项目&#xff0c;目前star 4000&#xff0c;项目主要讲数据结构和算法&#xff0c;有多种语言 50个代码实现。实现语言有c&#xff0c;c#&#xff0c;go&#xff0c;java&#xff0c;javascript&#xff0c;object-c&#xff0c;python&#xff…

android 抽屉_Android Studio之路,我们来了解一下Google官方Android开发工具

记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了&#xff0c;所有重构了一下思路&#xff0c;覆写了一篇Google主推-Android开发利器——Android Studio&#xff0c;这可能是最全的AS教程&#xff01;Android Studio,自Google2013年发布以来&#xff0c;就…

karaf osgi_在OSGi中为Karaf构建Camel-CXF REST服务–组播和聚合

karaf osgi请查看我在Karaf的OSGi中构建普通CXF服务&#xff08;无Camel&#xff09;的其他文章 。 这是有关如何 创建一个CXF REST服务 使用骆驼多播&#xff08;并并行化&#xff09;传入的请求 来自两个不同服务的源数据 汇总响应并 最后将合并结果作为JSON返回给最终…

酒店wifi代理服务器没有响应,wn10连接酒店wifi的登录界面无法弹出如何处理

通常情况下&#xff0c;我们在连接酒店wifi后都会出现登录验证界面。不过&#xff0c;最近一位windows10系统用户在连接wifi后打开网页却遇到无法显示登陆界面情况&#xff0c;该怎么办呢&#xff1f;接下来&#xff0c;就随小编一起看看wn10连接酒店wifi的登录界面无法弹出问题…

python词云安装什么库_python词云安装什么库

python词云需要安装wordcloud库。 安装方法&#xff1a; 在cmd使用pip install wordcloud命令即可安装。 wordcloud库把词云当作一个WordCloud对象&#xff1a;wordcloud.WordCloud()代表一个文本对应的词云。 可以根据文本中词语出现的频率等参数绘制词云。 示例&#xff1a;f…

怎么wps解除合并单元格_wps表格怎么锁定单元格

wps表格怎么锁定单元格呢&#xff1f;很多用户对此还不是很清楚&#xff0c;小编这里就给大家带来有关wps表格怎么锁定单元格的回答&#xff0c;希望能够对大家有所帮助。一、整个表格进行锁定1、同时按住CtrlA&#xff0c;选中整个单元格&#xff0c;如图2、选中以后&#xff…

挡土墙计算软件_广联达软件如何计算钢板止水带?

原创作者&#xff1a;张向荣1、什么是钢板止水带&#xff1f;混凝土结构中&#xff0c;地下室墙体施工中&#xff0c;如果底板和墙体分开浇筑&#xff0c;就需要留置施工缝。施工缝&#xff1a;施工缝并不是一种真实存在的“缝”&#xff0c;它只是因先浇筑混凝土超过初凝时间&…

网站图片多服务器选多大,网站上的图片一般多大合适

网站上的图片一般多大合适 内容精选换一换安装了SSL证书后&#xff0c;访问网站时&#xff0c;HTTPS比HTTP要多几次握手的时间&#xff0c;HTTPS协议握手阶段比较费时&#xff0c;同时还要进行RSA校验&#xff0c;因此使用了SSL证书后&#xff0c;相较于HTTP访问&#xff0c;访…

怎么在自己的网站上显示其它网站_自己做网站要怎么选域名?

域名是一种无形的资产注册一个好的域名能让你的网站更加容易取得成功&#xff0c;那么什么样的域名才是好域名呢?自己做网站域名要怎么选呢?1.好记的域名如果一个喜欢你网站的网友&#xff0c;电脑硬盘坏了丢失了收藏夹里所有的网址&#xff0c;或者在他人机器上上网&#xf…

微信朋友圈删除后服务器还有吗,删了的朋友圈还可以找回来吗

演示工具&#xff1a;手机型号&#xff1a;iphone12系统版本&#xff1a;ios14软件版本&#xff1a;微信7.0.20删除的朋友圈动态不能找回来。删除是从网络服务器上面把此信息删除了&#xff0c;是无法找回的&#xff0c;而已删除掉以后&#xff0c;好友那边此条动态也是同步删除…

mysql drop_mysql恢复drop掉的表

手贱drop了几个表&#xff0c;以为能从昨天的备份中恢复&#xff0c;结果发现最近两个月的备份都是空文件&#xff0c;因为备份脚本在两个月前改错了&#xff01;难道就这样丢失两个月的数据&#xff1f;镇定镇定——先看看mysql的配置文件cat /etc/my.cnf发现如下字样说明有救…