本次作業的要求來自於:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2822
一、中文詞頻統計
1. 下載一長篇中文小說。
2. 從文件讀取待分析文本。
3. 安裝並使用jieba進行中文分詞。
pip install jieba
import jieba
jieba.lcut(text)
4. 更新詞庫,加入所分析對象的專業詞匯。
jieba.add_word('天罡北斗陣') #逐個添加
jieba.load_userdict(word_dict) #詞庫文本文件
參考詞庫下載地址:https://pinyin.sogou.com/dict/
轉換代碼:scel_to_text
5. 生成詞頻統計
6. 排序
7. 排除語法型詞匯,代詞、冠詞、連詞等停用詞。
8. 輸出詞頻最大TOP20,把結果存放到文件里
9. 生成詞雲。
二、實現
1、本文下載了余華的《活着》,放於huozhe.txt中
2、讀取文本
mytext = open('huozhe.txt',encoding='UTF-8').read()
3、安裝jieba
4、更新詞庫,加入所分析對象的專業詞匯
jieba.add_word('福貴') jieba.add_word('家珍') jieba.add_word('鳳霞') jieba.add_word('有慶') jieba.add_word('二喜') jieba.add_word('苦根')
5. 生成詞頻統計
'''分割出詞匯''' words = list(jieba.cut(mytext)) wordDict={} '''統計頻率次數''' wordSet=set(words) for w in wordSet: if len(w)>1: wordDict[w] = words.count(w)
6. 排序
'''排序''' wordList = list(wordDict.items()) wordList.sort(key=lambda x:x[1],reverse=True)
7. 排除語法型詞匯,代詞、冠詞、連詞等停用詞。
ci=['我們','知道','看到','自己','起來','什么','他們','一個','看着','沒有','看看','就是','怎么','還是','這么','覺得'] for c in ci: mytext = mytext.replace(c, "")
8. 輸出詞頻最大TOP20,把結果存放到文件里
'''輸出top20''' for i in range(20): print(wordList[i]) '''保存為csv文件''' pd.DataFrame(data=wordList).to_csv('My story.csv',encoding='utf-8')
9. 生成詞雲
10、整體代碼
import jieba import pandas as pd mytext = open('huozhe.txt',encoding='UTF-8').read() jieba.add_word('福貴') jieba.add_word('家珍') jieba.add_word('鳳霞') jieba.add_word('有慶') jieba.add_word('二喜') jieba.add_word('苦根') ci=['。','《','》',' ','我們','知道','看到','自己','起來','什么','他們','一個','看着','沒有','看看','就是','怎么','還是','這么','覺得'] for c in ci: mytext = mytext.replace(c, "") '''分割出詞匯''' words = list(jieba.cut(mytext)) wordDict={} '''統計頻率次數''' wordSet=set(words) for w in wordSet: if len(w)>1: wordDict[w] = words.count(w) '''排序''' wordList = list(wordDict.items()) wordList.sort(key=lambda x:x[1],reverse=True) '''輸出top20''' for i in range(20): print(wordList[i]) '''保存為csv文件''' pd.DataFrame(data=wordList).to_csv('My story.csv',encoding='utf-8')
11、運行截圖