简介
◆ 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