python实例:利用jieba库,分析统计金庸名著《倚天屠龙记》中人物名出现次数并排序

本实例主要用到python的jieba库

首先当然是安装pip install jieba

这里比较关键的是如下几个步骤:

加载文本,分析文本

txt=open("C:\\Users\\Beckham\\Desktop\\python\\倚天屠龙记.txt","r", encoding=‘utf-8‘).read()    #打开倚天屠龙记文本
words=jieba.lcut(txt)   #jieba库分析文本

对数据进行筛选和处理

for word in words:    #筛选分析后的词组
    if len(word)==1:   #因为词组中的汉字数大于1个即认为是一个词组,所以通过continue结束点读取的汉字书为1的内容
        continue
    elif word=="教主":  #书中教主也指张无忌,即循环读取到教主也认为是张无忌这个名字出现一次,后面类似
        rword="张无忌"
    elif word=="无忌":
        rword="张无忌"
    elif word=="义父":
        rword="谢逊"
    else:
        rword=word
    counts[rword]=counts.get(rword,0)+1  #对rword出现的频率进行统计,当rword不在words时,返回值是0,当rword在words中时,返回+1,以此进行累计计数

for word in exculdes:#如果循环读取到的词组与exculdes字典内的内容匹配,那么过滤掉(不显示)这个词组
    del(counts[word])

创建列表显示和排序

items=list(counts.items())#字典到列表
items.sort(key=lambda x:x[1],reverse=True)#lambda是一个隐函数,是固定写法,以下命令的意思就是按照记录的第2列排序  

for i in range(15):#显示前15位数据
    word,count=items[i]
    print("{0:<10}{1:>10}".format(word,count)) #0:<10左对齐,宽度10,”>10"右对齐

具体脚本如下,每一步都有解析,就不分步解释了

# -*-coding:utf8-*-
# encoding:utf-8

import jieba   #倒入jieba库

txt=open("C:\\Users\\Beckham\\Desktop\\python\\倚天屠龙记.txt","r", encoding=‘utf-8‘).read()    #打开倚天屠龙记文本

exculdes={"说道","甚么","自己","武功","咱们","一声","心中","少林","一个","弟子",
          "明教","便是","之中","如何","师父","只见","怎么","两个","没有","不是","不知","这个","不能","只是",
         "他们","突然","出来","如此","今日","知道","我们","心想","二人","两人","不敢","虽然","姑娘","这时","众人"
          ,"可是","原来","之下","当下","身子","你们","脸上","左手","手中","倘若","之后","起来","喝道","武当派","跟着"
          ,"武当","却是","登时","身上","说话","长剑","峨嵋派","性命","难道","丐帮","兄弟","见到","魔教","不可","心下"
          ,"之间","少林寺","伸手","高手","一招","这里","正是"}   #创建字典,主要用于存储非人物名词,供后面剔除使用

words=jieba.lcut(txt)   #jieba库分析文本
counts={}

for word in words:    #筛选分析后的名词
    if len(word)==1:   #因为词组中的汉字数大于1个即认为是一个词组,所以通过continue结束掉读取的汉字书为1的内容
        continue
    elif word=="教主":  #书中教主也指张无忌,即循环读取到教主也认为是张无忌这个名字出现一次,后面类似
        rword="张无忌"
    elif word=="无忌":
        rword="张无忌"
    elif word=="义父":
        rword="谢逊"
    else:
        rword=word
    counts[rword]=counts.get(rword,0)+1  #对rword出现的频率进行统计,当rword不在words时,返回值是0,当rword在words中时,返回+1,以此进行累计计数

for word in exculdes:#如果循环读取到的词组与exculdes字典内的内容匹配,那么过滤掉(不显示)这个词组
    del(counts[word])

items=list(counts.items())#字典到列表
items.sort(key=lambda x:x[1],reverse=True)#lambda是一个隐函数,是固定写法,以下命令的意思就是按照记录的第2列排序  

for i in range(15):#显示前15位数据
    word,count=items[i]
    print("{0:<10}{1:>10}".format(word,count)) #0:<10左对齐,宽度10,”>10"右对齐

毫无疑问,张无忌妥妥的主角

参考:

https://gitee.com/huangshenru/codes/clneriovm0sqxw5k89j2h98

https://www.cnblogs.com/0330lgs/p/10648168.html

原文地址:https://www.cnblogs.com/becks/p/11421214.html

时间: 2024-11-07 00:20:43

python实例:利用jieba库,分析统计金庸名著《倚天屠龙记》中人物名出现次数并排序的相关文章

python 利用jieba库词频统计

1 #统计<三国志>里人物的出现次数 2 3 import jieba 4 text = open('threekingdoms.txt','r',encoding='utf-8').read() 5 excludes = {'将军','却说','二人','不能','如此','荆州','不可','商议','如何','军士','左右','主公','引兵','次日','大喜','军马', 6 '天下','东吴','于是'} 7 #返回列表类型的分词结果 8 words = jieba.lcut(t

jieba库词频统计练习

在sypder上运行jieba库的代码: import matplotlib.pyplot as pltfracs = [2,2,1,1,1]labels = 'houqin', 'jiemian', 'zhengjiehong','baogan','dadaima'explode = [ 0,0,0,0,0]plt.axes(aspect=1)plt.pie(x=fracs, labels=labels, explode=explode,autopct='%3.1f %%', shadow=T

Python爬虫实例(六)多进程下载金庸网小说

目标任务:使用多进程下载金庸网各个版本(旧版.修订版.新修版)的小说 代码如下: # -*- coding: utf-8 -*- import requests from lxml import etree from multiprocessing import Pool import os import sys reload(sys) sys.setdefaultencoding('utf-8') headers = {'User-Agent':'Mozilla/5.0 (Windows NT

jieba库分词统计

代码在github网站,https://github.com/chaigee/chaigee,中的z2.py文件 py.txt为团队中文简介文件 代码运行后词频统计使用xlwt库将数据发送到excel表格,如图,频数为1的省略 在excel表格作柱形图如图所示 由此分析我们团队的简介用词得出:我们团队不仅注重团队合作,而且注重团队分工,发扬队员风格,提高队员对项目的兴趣,做擅长的工作,多次提到宣言以此提高团队凝聚力. 原文地址:https://www.cnblogs.com/chaigee/p/

一个利用静态代码分析检查并记录开源项目中存在的隐患的网站

www.viva64.com/en/examples/ 他山之石可以攻玉.不仅可以看看都有哪些常见的地雷,还可以练练英文.

资深Python程序员教你统计,三国中人物名字出现的频率,很简单

资深Python程序员教你简单.有趣的程序:使用第三方库jieba切分,统计统计名著三国演义中人物名字出现次数. 资深Python程序员教你统计,三国中人物名字出现的频率,很简单其中一个jieba库是一个对中文文本依照汉字间关联概率进行词组划分的第三方库,使用简单,且非常好用 import jieba def getWords(): txt = open('novels/threekingdoms.txt', 'r', encoding = 'utf-8').read() words = jie

python jieba库的使用说明

1.jieba库基本介绍 (1).jieba库概述 jieba是优秀的中文分词第三方库 - 中文文本需要通过分词获得单个的词语         - jieba是优秀的中文分词第三方库,需要额外安装 - jieba库提供三种分词模式,最简单只需掌握一个函数 (2).jieba分词的原理 Jieba分词依靠中文词库 - 利用一个中文词库,确定汉字之间的关联概率         - 汉字间概率大的组成词组,形成分词结果 - 除了分词,用户还可以添加自定义的词组 2.jieba库使用说明 (1).jie

Python jieba 库的使用说明

1.jieba库基本介绍 (1).jieba库概述 jieba是优秀的中文分词第三方库 - 中文文本需要通过分词获得单个的词语         - jieba是优秀的中文分词第三方库,需要额外安装 - jieba库提供三种分词模式,最简单只需掌握一个函数 (2).jieba分词的原理 Jieba分词依靠中文词库 - 利用一个中文词库,确定汉字之间的关联概率         - 汉字间概率大的组成词组,形成分词结果 - 除了分词,用户还可以添加自定义的词组 2.jieba库使用说明 (1).jie

jieba库

一.jieba 库简介 (1) jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组:除此之外,jieba 库还提供了增加自定义中文单词的功能. (2) jieba 库支持3种分词模式: 精确模式:将句子最精确地切开,适合文本分析. 全模式:将句子中所以可以成词的词语都扫描出来,速度非常快,但是不能消除歧义. 搜索引擎模式:在精确模式的基础上,对长分词再次切分,提高召回率,适合搜索引擎分词. 二.安装库函数 (1) 在命令行下输