淘先锋技术网

首页 1 2 3 4 5 6 7

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集合,删掉,再不断优化,即可得到出场次序