模块5:jieba库基本介绍 实例10:文本词频统计

jieba是优秀的中文分词第三方库

(cmd命令行) pip install jieba

模块5:jieba库基本介绍 实例10:文本词频统计_第1张图片 没有想到,还挺顺利就下载好了!!!

jieba库的使用说明

jieba分词的三种模式

精确模式:把文本精确的切分开,不存在冗余单词
全模式:把文本中所有可能的词语都扫描出来,有冗余
搜索引擎模式:在精确模式基础上,对长词再次切分

jieba库常用函数

函数 描述
jieba.lcut(s) 精确模式,返回一个列表类型的分词结果(很重要!
jieba.lcut(s,cut_all=True) 全模式,返回一个列表类型的分词结果,存在冗余
jieba.lcut_for_search(s) 搜索引擎模式,返回一个列表类型的分词结果,存在冗余
jieba.add_word(w) 向分词词典增加新词w

实例10:文本词频统计

英文文本:Hamlet      分析词频
https://python123.io/resources/pye/hamlet.txt

模块5:jieba库基本介绍 实例10:文本词频统计_第2张图片 

上述链接是下载hamlet.txt文档的

一定要将该文档下载到.py文件所在路径下

否则在执行代码时它会提示找不到该文件

def getText():  #定义一个小函数,可以获得一个文本的具体信息
    txt=open("hamlet.txt","r").read()   #首先我们打开哈姆雷特这个文件
    txt=txt.lower()  #将所有英文字符变成小写
    for ch in '!"#$%&()*+-./:;<=>?@[\\]^_`{|}~ ': #去掉所有文本中出现的各种特殊符号
        txt=txt.replace(ch," ") #使用空格来替换这些特殊符号
    return txt

hamletTxt=getText() #对文件进行读取,并且对文本进行归一化
words=hamletTxt.split()
counts={}  #定义了一个字典类型,空字典
for word in words:
    counts[word]=counts.get(word,0)+1
items=list(counts.items()) #将字典类型变为列表类型
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
    word,count=items[i]
    print("{0:<10}{1:>5}".format(word,count))

模块5:jieba库基本介绍 实例10:文本词频统计_第3张图片


中文文本:《三国演义》   分析人物出场统计
https://python123.io/resources/pye/threekingdoms.txt
import jieba
txt=open("threekingdoms.txt","r",encoding="utf-8").read()
words=jieba.lcut(txt)
counts={}
for word in words:
    if len(word)==1:
        continue
    else:
        counts[word]=counts.get(word,0)+1
items=list(counts.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))

模块5:jieba库基本介绍 实例10:文本词频统计_第4张图片

 升级版

import jieba
txt=open("threekingdoms.txt","r",encoding="utf-8").read()
excludes={"将军","却说","荆州","二人","不可","不能","如此"}
words=jieba.lcut(txt)
counts={}
for word in words:
    if len(word)==1:
        continue
    elif word=="诸葛亮"  or word=="孔明曰":
        rword="孔明"
    elif word=="关公"  or word=="云长":
        rword="关羽"
    elif word=="玄德"  or word=="玄德曰":
        rword="刘备"
    elif word=="孟德"  or word=="丞相":
        rword="曹操"
    else:
        rword=word
    counts[rword]=counts.get(rword,0)+1
for word in excludes:
    del counts[word]
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
    word,count=items[i]
    print("{0:<10}{1:>5}".format(word,count))

模块5:jieba库基本介绍 实例10:文本词频统计_第5张图片

 虽说是升级版,但还需加强

就是说越改越多哈哈哈哈


”文本词频统计"举一反三

《红楼梦》《西游记》《水浒传》...

政府工作报告、科研论文、新闻报道...

你可能感兴趣的:(python,开发语言)