简介
◆ jieba库是优秀的中文分词第三方库
◆ jieba库和其他的第三方库一样,在cmd中使用pip install jieba 就可以进行安装
◆ jieba最常用的函数只有一个,在下面我们会见到
jieba库的三种模式及其函数
◆ 精确模式:jieba.lcut(s) 对文本s进行分词
◆ 全局模式:jieba.lcut(s,cut_all=True) 进行分词之后存在冗余
◆ 搜索引擎模式:jieba.lcut_for_search(s) 同样进行分词之后存在冗余
◆ jieba.add_words(w) 向分词词典中增加一个单词
当然,最常用的还是jieba.lcut(s),这个函数就基本上满足平时的需求了
文本词频统计实例
(1)我们先对汉字文本进行分析(采用的例子是MOOC上的文本Hamlet,如果大家需要的话,我可以上传)
# 对Hamlet进行词频分析 def gettext(): #打开文件 text=open("e:/python代码/hamlet.txt","r").read() text=text.lower() #将特殊符号全部换成空格 for ch in '!"#$%^&*()+_-,./:;<>?@[]{}\|~': text=text.replace(ch,"") return text 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)) # RUN-> # the 1137 # and 963 # to 736 # of 669 # you 546 # i 540 # a 527 # my 513 # hamlet 459 # in 435
(2)对中文词频进行分析(同样用到的文本为三国演义,我们对三国演义中人物出现的顺序进行统计)
# 对三国演义出场人物次数进行统计 import jieba txt = open("sanguoyanyi.txt","r",encoding="utf-8").read() words = jieba.lcut(txt) new={} #通过对程序的检查,对程序进行完善 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 # 对原来的字典new中判断是否有rword这个人,没有就返回0, # 赋予rword键有就在原来rword所对应的值加1,并赋予rword键 new[rword]=new.get(rword,0)+1 # 排除系统中不是人名的字 exc={"将军","却说","荆州","二人","不可","不能","如此"} for word in exc: del new[word] item=list(new.items()) item.sort(key=lambda x:x[1],reverse=True) for i in range(10): word,count=item[i] print("{0:<10}{1:>5}".format(word,count)) # RUN-> # 曹操 1451 # 孔明 1383 # 刘备 1253 # 关羽 784 # 张飞 358 # 商议 344 # 如何 338 # 主公 331 # 军士 317 # 吕布 300