jieba库是Python中对中文分词效果比较好的一个库,最近正好看到MOOC上嵩天老师的课程,因此也跟着学了下
首先肯定需要安装jieba ,这个很简单,win+r cmd下运行以下代码即可,但是由于PY第三方库很多是国外源提供,速度比较慢,因此可能会出现报错等情况
pip install jieba
新手们可以和我一样使用这样的方式来改善下载慢容易报错的位置,等学到LINUX系统前后基本上就知道解决方式了,目前可以在C:\Users\xxx(你的用户名)下新建一个pip文件夹,里边新建一个pip.ini文件,以记事本方式打开,里边粘贴进去以下代码即可
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
这样之后的pip即可使用指定的源安装,速度会相对较快,国内用的比较多的还有豆瓣源,感兴趣的可以百度搜一下,将网址指定为豆瓣源的网址即可
之后可以开始编写,我自己写的代码如下,没有完全参照嵩天老师的代码:
import jieba
filename = 'D:\pychram\sanguoyanyi.txt'
with open(filename,'r',encoding="UTF-8") as f:
txt = f.read()
fenhao = jieba.lcut(txt)
counts = {}
for word in fenhao:
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("\n人物:{},出现共计:{}次".format(word,count))
输出结果为
人物:曹操,出现共计:939次
人物:孔明,出现共计:831次
人物:将军,出现共计:746次
人物:却说,出现共计:647次
人物:玄德,出现共计:570次
人物:丞相,出现共计:489次
人物:关公,出现共计:484次
人物:二人,出现共计:464次
人物:不可,出现共计:430次
人物:荆州,出现共计:413次
人物:孔明曰,出现共计:384次
人物:玄德曰,出现共计:383次
人物:不能,出现共计:381次
人物:如此,出现共计:375次
人物:张飞,出现共计:349次
Process finished with exit code 0
里边有几个例如孔明,孔明曰等其实为同一人,但分成了两组,然后如此不能之类的则不是人名,其实没达到我们的要求,因此需要对jieba的分词进行设置
删除其中的却说等等,并且将孔明,孔明曰整合
import jieba
filename = 'D:\pychram\sanguoyanyi.txt'
with open(filename,'r',encoding="UTF-8") as f:
txt = f.read()
fenhao = jieba.lcut(txt)
counts = {}
for word in fenhao:
if len(word) == 1:
continue
elif word =="诸葛亮" or word == "孔明曰":
trueword == "孔明"
elif word =="关公" or word == "云长":
trueword == "关羽"
elif word == "玄德" or word == "玄德曰":
trueword == "刘备"
elif word == "孟德" or word == "丞相":
trueword == "曹操"
else:
trueword = word
counts[trueword] = counts.get(trueword,0)+1
s = {"将军","却说","荆州","二人","不可","不能","如此"}
for wrong in s:
del counts[wrong]
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(15):
word,count =items[i]
print("\n人物:{},出现共计:{}次".format(word,count))
但其实这样还是会有新的非人名词汇出现,输出结果为
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\oslo\AppData\Local\Temp\jieba.cache
Loading model cost 0.602 seconds.
Prefix dict has been built succesfully.
人物:曹操,出现共计:939次
人物:孔明,出现共计:831次
人物:张飞,出现共计:349次
人物:商议,出现共计:343次
人物:如何,出现共计:336次
人物:主公,出现共计:327次
人物:军士,出现共计:310次
人物:吕布,出现共计:302次
人物:左右,出现共计:290次
人物:军马,出现共计:287次
人物:引兵,出现共计:276次
人物:刘备,出现共计:272次
人物:次日,出现共计:269次
人物:大喜,出现共计:265次
人物:孙权,出现共计:262次
Process finished with exit code 0
之后可以将大喜,次日等加入S集合,删掉,再不断优化,即可得到出场次序