python词频统计三国演义_python实例:三国演义TXT⽂本词
频分析
0x00 前⾔
不到要写什么东西了!今天有个潭州⼤⽜讲师 说了个 ⽂本词频分析
我基本上就照抄了⼀遍
中间遇到⼀些⼩⼩的问题 ⾃我百度 填坑补全了 如下 :
效果演⽰
0x01 准备环境及介绍
python3.x版本 随意
安装jieba库
pip install jieba
jieba三种模式:
1.精准模式 lcut函数,返回⼀个分词列表
2.全模式
3.搜索引擎模式
词频:
:的键值对
IPO描述 imput output process
输⼊ :从⽂件读取三国演义的内容
处理 :采⽤jiedb进⾏分词,字典数据结构统计词语出现的频率
输出 :⽂章中出现最对的前10个词
代码:
第⼀步:读取⽂件
第⼆步:分词
第三步:统计
第四步:排序
介绍完毕了!那么进⼊实战吧!
0x02 实战
完整代码如下:
1 importjieba2
3 content = open('三国演义.txt', 'r',encoding='utf-8').read()
4 words =jieba.lcut(content)#分词
python怎么读取txt5 excludes={"将军","却说","⼆⼈","后主","上马","不知","天⼦","⼤叫","众将","不可","主公","蜀兵","只见",
"如何","商议","都督","⼀⼈","汉中","不敢","⼈马","陛下","魏兵","天下","今⽇","左右","东吴","于是","荆州","不能","如此","⼤喜","引兵","次⽇","军⼠","军马"}#排除的词汇
6 words=jieba.lcut(content)
7 counts={}8
9 for word inwords:10 if len(word) == 1: #排除单个字符的分词结果
11 continue
12 elif word == '孔明' or word == '孔明⽈':13 real_word = '孔明'
14 elif word == '关公' or word == '云长':15 real_word = '关⽻'
16 elif word == '孟德' or word == '丞相':17 real_word = '曹操'
18 elif word == '⽞德' or word == '⽞德⽈':19 real_word = '刘备'
20 else:21 real_word =word22 counts[word] = (word, 0) + 1
23
24
25
26 for word inexcludes:27 del(counts[word])28 items=list(counts.items())29 items.sort(key=lambda x:x[1],reverse=True)30 for i in range(10):31 word,count=items[i]32 print("{0:<10}{1:>5}".format(word,count))
0x03 注意事项
① 在执⾏的过程中遇到:'gbk' codec can't decode byte 0x82 in position 20: illegal multibyte sequence 编码错误:content = open("C:\\Users\\geek\\Desktop\\", "r",encoding= 'utf-8')
这⾥是我下载的txt⽂件 《三国演义》是ASCII,怎么办呢!搜索过后得知,要正常运⾏就得把TXT的编码改为UTF-8的形式才能运⾏成功,怎么做呢!
⾸先:打开TXT⽂本→⽂件→另存为→编码→UTF-8 →确定 完成第⼀个坑。 到这⾥呢!配合以上代码你成功了,但是我遇到的远远要多2个的所以我准备⼀并写出来。
③ 下载好以后就可以就可以愉快的玩耍了,但是我要说但是了,要问我为什么?容我⼀⼀道来! 15个字组太多会出现什么呢!我截图
运⾏后会出现很多不相⼲的词汇,⾏,没办法只能清理 ,但是我清理⼤多数还是有 ,实在没办法了,本为了练⼿所⽤所以我降到10个词组,不错,那么想要完整的名字词组呢?就需要排除的词汇增多,所以这个玩法就到此结束。
0x04 谢幕
完
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论