python實例:三國演義TXT文本詞頻分析


0x00 前言

找不到要寫什么東西了!今天有個潭州大牛講師  說了個  文本詞頻分析  

我基本上就照抄了一遍  

中間遇到一些小小的問題 自我百度 填坑補全了  如下 :

效果演示

0x01   准備環境及介紹

python3.x版本   隨意

安裝jieba庫

pip install jieba

jieba三種模式:

  1.精准模式 lcut函數,返回一個分詞列表

  2.全模式

  3.搜索引擎模式

詞頻:

  <單詞>:<出現次數>的鍵值對

  IPO描述 imput output process

  輸入 :從文件讀取三國演義的內容

  處理 :采用jiedb進行分詞,字典數據結構統計詞語出現的頻率

  輸出 :文章中出現最對的前10個詞

代碼:

  第一步:讀取文件

  第二步:分詞

  第三步:統計

  第四步:排序

介紹完畢了!那么進入實戰吧!

0x02 實戰

完整代碼如下:

 1 import jieba
 2 
 3 content = open('三國演義.txt', 'r',encoding='utf-8').read()
 4 words =jieba.lcut(content)#分詞
 5 excludes={"將軍","卻說","二人","后主","上馬","不知","天子","大叫","眾將","不可","主公","蜀兵","只見","如何","商議","都督","一人","漢中","不敢","人馬","陛下","魏兵","天下","今日","左右","東吳","於是","荊州","不能","如此","大喜","引兵","次日","軍士","軍馬"}#排除的詞匯
 6 words=jieba.lcut(content)
 7 counts={}
 8 
 9 for word in words:
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 =word
22         counts[word] = counts.get(word, 0) + 1
23 
24 
25 
26 for word in excludes:
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\\python.txt", "r",encoding= 'utf-8')   

   這里是我下載的txt文件 《三國演義》是ASCII,怎么辦呢!搜索過后得知,要正常運行就得把TXT的編碼改為UTF-8的形式才能運行成功,怎么做呢!

   首先:打開TXT文本→文件→另存為→編碼→UTF-8 →確定    完成第一個坑。  到這里呢!配合以上代碼你成功了,但是我遇到的遠遠要多2個的所以我准備一並寫出來。

  ②  坑②,這里呢!就是他在在線講課啊 ,沒有TXT三國演義文件怎辦呢!沒辦法 自己找個三國演義文本  附上下載地址: http://vdisk.weibo.com/s/AfY-rVkr38Gg 

  ③  下載好以后就可以就可以愉快的玩耍了,但是我要說但是了,要問我為什么?容我一一道來! 15個字組太多會出現什么呢!我截圖

 

運行后會出現很多不相干的詞匯,行,沒辦法只能清理 ,但是我清理大多數還是有 ,實在沒辦法了,本為了練手所用所以我降到10個詞組,不錯,那么想要完整的名字詞組呢?就需要排除的詞匯增多,所以這個玩法就到此結束。

0x04 謝幕

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM