一文帶你掌握Python中文詞頻統(tǒng)計(jì)
詞頻統(tǒng)計(jì)是指在文本中計(jì)算每個(gè)詞出現(xiàn)的次數(shù)。
在 Python 中,可以使用一些第三方庫(如 jieba)來分詞,然后使用字典等數(shù)據(jù)結(jié)構(gòu)記錄每個(gè)詞的詞頻。
Python中文詞頻統(tǒng)計(jì)知識(shí)點(diǎn)
- 分詞:需要對(duì)中文文本進(jìn)行分詞,分詞的目的是將文本分解為獨(dú)立的詞語,便于后續(xù)的詞頻統(tǒng)計(jì)。
- 字典:使用字典存儲(chǔ)每個(gè)詞的詞頻。字典的鍵為詞語,值為詞頻。
- 遍歷:遍歷分詞后的結(jié)果,統(tǒng)計(jì)每個(gè)詞出現(xiàn)的次數(shù)。
- 排序:對(duì)字典按照詞頻排序,以得到詞頻最高的詞。
- 輸出:最后,可以輸出詞頻最高的詞,也可以輸出完整的詞頻字典。
Python中文詞頻分詞
安裝 jieba 庫
pip install jieba
使用 jieba.cut() 函數(shù)對(duì)中文文本進(jìn)行分詞
import jieba text = "夢(mèng)想橡皮擦的Python博客很不錯(cuò)" seg_list = jieba.cut(text) print(list(seg_list))
輸出結(jié)果:
['夢(mèng)想', '橡皮擦', '的', 'Python', '博客', '很', '不錯(cuò)']
使用字典可以很方便地存儲(chǔ)每個(gè)詞語的詞頻
import jieba text = "夢(mèng)想橡皮擦的Python博客很不錯(cuò)" seg_list = jieba.cut(text) # print(list(seg_list)) word_dict = {} for word in seg_list: print(word) if word in word_dict: word_dict[word] += 1 else: word_dict[word] = 1 print(word_dict)
再次整理Python詞頻統(tǒng)計(jì)的具體實(shí)現(xiàn)方法:
- 導(dǎo)入 jieba 庫,使用 jieba.cut() 函數(shù)對(duì)中文文本進(jìn)行分詞。
- 遍歷分詞后的結(jié)果,統(tǒng)計(jì)每個(gè)詞出現(xiàn)的次數(shù)。
- 使用字典記錄每個(gè)詞出現(xiàn)的次數(shù)。
- 對(duì)字典按照詞頻排序,并輸出詞頻最高的詞。
代碼示例:
import jieba def get_word_frequency(text): seg_list = jieba.cut(text) word_dict = {} for word in seg_list: if word in word_dict: word_dict[word] += 1 else: word_dict[word] = 1 sorted_word_dict = sorted(word_dict.items(), key=lambda x: x[1], reverse=True) return sorted_word_dict text = "夢(mèng)想橡皮擦的Python博客很不錯(cuò)" result = get_word_frequency(text) print(result)
停用詞
在分詞時(shí),通常會(huì)忽略一些詞語,這些詞語被稱為停用詞。如常用的助詞、介詞等。
在 Python 中,可以預(yù)先加載停用詞表,在分詞時(shí),如果詞語是停用詞,則忽略。
下面是一個(gè)簡(jiǎn)單的例子:
import jieba stop_words = set() with open("stop_words.txt", "r",encoding='utf-8') as f: for line in f: stop_words.add(line.strip()) text = "夢(mèng)想橡皮擦的Python博客很不錯(cuò)" seg_list = jieba.cut(text) filtered_words = [word for word in seg_list if word not in stop_words] print(filtered_words)
“stop_words.txt” 文件中是停用詞表,每行一個(gè)詞語。在代碼中,通過 with open 語句讀取文件,并將每個(gè)詞語加入到 stop_words 集合中。在分詞后,通過列表推導(dǎo)式,篩選出不是停用詞的詞語。文件中的內(nèi)容如下:
詞干提取
詞干提取是將詞語的不同形式提取為同一詞干的過程。例如 “running” 和 “runner” 可以被提取為 “run”。
在 Python 中,可以使用詞干提取工具來進(jìn)行詞干提取,常見的詞干提取工具有 nltk 庫的 PorterStemmer 和 SnowballStemmer 。
下面是一個(gè)簡(jiǎn)單的例子:
import nltk from nltk.stem import SnowballStemmer stemmer = SnowballStemmer("english") words = ["run", "runner", "running"] stemmed_words = [stemmer.stem(word) for word in words] print(stemmed_words)
SnowballStemmer 函數(shù)的第一個(gè)參數(shù)是語言。 english 表示使用英語詞干提取器。
其支持多種語言,可以指定不同的語言,以使用不同的詞干提取器。例如,如果是法語文本,可以使用 SnowballStemmer("french") 。
stemmer.stem(word) 是 nltk 庫的 SnowballStemmer 函數(shù)的一個(gè)方法,用于提取詞干。
詞云圖
詞云圖是一種展示詞頻的可視化圖形,其中詞語的大小代表詞頻的多少。
在 Python 中,可以使用詞云庫 wordcloud 來生成詞云圖。
以下是一個(gè)使用 wordcloud 庫創(chuàng)建詞云圖的簡(jiǎn)單示例:
from wordcloud import WordCloud import matplotlib.pyplot as plt text = "ca1 ca2 ca3 ca4 ca4 ca4" wordcloud = WordCloud(width=400, height=400, random_state=21, max_font_size=110).generate(text) plt.figure(figsize=(10, 5)) plt.imshow(wordcloud, interpolation="bilinear") plt.axis('off') plt.show()
首先使用 WordCloud 函數(shù)創(chuàng)建一個(gè)詞云圖對(duì)象,并設(shè)置圖片的寬度、高度、隨機(jī)狀態(tài)、字體大小等參數(shù)。
然后,使用 generate() 方法生成詞云圖,并將其作為參數(shù)傳遞給 matplotlib 的 imshow() 函數(shù)。
最后,使用 show() 方法顯示詞云圖。
Python 中文詞頻分詞其它庫
thulac:thulac 是一個(gè)中文分詞庫,支持動(dòng)態(tài)詞性標(biāo)注。
snownlp:snownlp 是一個(gè)基于 SnowNLP 的中文自然語言處理庫,支持中文分詞、情感分析、關(guān)鍵詞提取等功能。
到此這篇關(guān)于一文帶你掌握Python中文詞頻統(tǒng)計(jì)的文章就介紹到這了,更多相關(guān)Python中文詞頻統(tǒng)計(jì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python獲取當(dāng)前運(yùn)行函數(shù)名稱的方法實(shí)例代碼
這篇文章主要介紹了python獲取當(dāng)前運(yùn)行函數(shù)名稱的方法實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04Python定時(shí)任務(wù)工具之APScheduler使用方式
APScheduler (advanceded python scheduler)是一款Python開發(fā)的定時(shí)任務(wù)工具。這篇文章主要介紹了Python定時(shí)任務(wù)工具--APScheduler的使用方式,需要的朋友可以參考下2019-07-07Python Paramiko模塊中exec_command()和invoke_shell()兩種操作區(qū)別
invoke_shell 使用 SSH shell channel,而 exec_command 使用 SSH exec channel,本文主要介紹了Python Paramiko模塊中exec_command()和invoke_shell()兩種操作區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02解決Python pandas df 寫入excel 出現(xiàn)的問題
今天小編就為大家分享一篇解決Python pandas df 寫入excel 出現(xiàn)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07Python模擬登錄requests.Session應(yīng)用詳解
這篇文章主要介紹了Python模擬登錄requests.Session應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11