前文业已指出,结巴(jieba)为优秀的分词库,功能强大,今天就拿它来小试牛刀。
《三国演义》为中国文学史上的第一部章回小说,是历史演义小说的开山之作,中国古典四大名著之一。明清时期甚至有“第一才子书”之称。其描写了从东汉末年到西晋初年之间近百年的历史风云,诉说了魏、蜀、吴三国之间的政治和军事斗争等故事,塑造了一群叱咤风云的三国英雄人物。虽说英雄不问出处,但其出场秀还是值得研究一番的。
二话不说,上代码:
import jieba
txt=open('三国演义.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))
运行结果:
可见结巴很聪明但也难免机械,还没有那么AI,不能智能识别同一人物的不同身份和角色,还需要不断打磨(降噪)升级:
for word in words:
if len(word)==1:
continue
elif word=='孔明' or word=='孔明曰':
word='诸葛亮'
elif word=='关公' or word=='云长':
word='关羽'
elif word=='玄德' or word=='玄德曰':
word='刘备'
else:
word=word
ex={'将军','却说','丞相','二人','不可','荆州','不能','如此','商议','如何',\
'主公','军士','左右','军马','引兵','次日','大喜','天下','东吴','于是',\
'今日','不敢','魏兵','陛下','一人','都督','人马','不知'}
for word in ex:
del counts[word]
经过如此这般,出场的十大英雄依次是:
卧龙诸葛亮稳坐头把交椅,奸雄曹操屈居第三,周郎末席,是否符合您的心理预期呢?