一文帶你掌握Python中文詞頻統(tǒng)計(jì)
詞頻統(tǒng)計(jì)是指在文本中計(jì)算每個(gè)詞出現(xiàn)的次數(shù)。
在 Python 中,可以使用一些第三方庫(kù)(如 jieba)來(lái)分詞,然后使用字典等數(shù)據(jù)結(jié)構(gòu)記錄每個(gè)詞的詞頻。
Python中文詞頻統(tǒng)計(jì)知識(shí)點(diǎn)
- 分詞:需要對(duì)中文文本進(jìn)行分詞,分詞的目的是將文本分解為獨(dú)立的詞語(yǔ),便于后續(xù)的詞頻統(tǒng)計(jì)。
- 字典:使用字典存儲(chǔ)每個(gè)詞的詞頻。字典的鍵為詞語(yǔ),值為詞頻。
- 遍歷:遍歷分詞后的結(jié)果,統(tǒng)計(jì)每個(gè)詞出現(xiàn)的次數(shù)。
- 排序:對(duì)字典按照詞頻排序,以得到詞頻最高的詞。
- 輸出:最后,可以輸出詞頻最高的詞,也可以輸出完整的詞頻字典。
Python中文詞頻分詞
安裝 jieba 庫(kù)
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è)詞語(yǔ)的詞頻
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 庫(kù),使用 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ì)忽略一些詞語(yǔ),這些詞語(yǔ)被稱為停用詞。如常用的助詞、介詞等。
在 Python 中,可以預(yù)先加載停用詞表,在分詞時(shí),如果詞語(yǔ)是停用詞,則忽略。
下面是一個(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è)詞語(yǔ)。在代碼中,通過(guò) with open 語(yǔ)句讀取文件,并將每個(gè)詞語(yǔ)加入到 stop_words 集合中。在分詞后,通過(guò)列表推導(dǎo)式,篩選出不是停用詞的詞語(yǔ)。文件中的內(nèi)容如下:
詞干提取
詞干提取是將詞語(yǔ)的不同形式提取為同一詞干的過(guò)程。例如 “running” 和 “runner” 可以被提取為 “run”。
在 Python 中,可以使用詞干提取工具來(lái)進(jìn)行詞干提取,常見的詞干提取工具有 nltk 庫(kù)的 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ù)是語(yǔ)言。 english 表示使用英語(yǔ)詞干提取器。
其支持多種語(yǔ)言,可以指定不同的語(yǔ)言,以使用不同的詞干提取器。例如,如果是法語(yǔ)文本,可以使用 SnowballStemmer("french") 。
stemmer.stem(word) 是 nltk 庫(kù)的 SnowballStemmer 函數(shù)的一個(gè)方法,用于提取詞干。
詞云圖
詞云圖是一種展示詞頻的可視化圖形,其中詞語(yǔ)的大小代表詞頻的多少。
在 Python 中,可以使用詞云庫(kù) wordcloud 來(lái)生成詞云圖。
以下是一個(gè)使用 wordcloud 庫(kù)創(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 中文詞頻分詞其它庫(kù)
thulac:thulac 是一個(gè)中文分詞庫(kù),支持動(dòng)態(tài)詞性標(biāo)注。
snownlp:snownlp 是一個(gè)基于 SnowNLP 的中文自然語(yǔ)言處理庫(kù),支持中文分詞、情感分析、關(guān)鍵詞提取等功能。
到此這篇關(guān)于一文帶你掌握Python中文詞頻統(tǒng)計(jì)的文章就介紹到這了,更多相關(guān)Python中文詞頻統(tǒng)計(jì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python可視化單詞統(tǒng)計(jì)詞頻統(tǒng)計(jì)中文分詞的實(shí)現(xiàn)步驟
- python中文分詞+詞頻統(tǒng)計(jì)的實(shí)現(xiàn)步驟
- Python jieba 中文分詞與詞頻統(tǒng)計(jì)的操作
- python實(shí)現(xiàn)簡(jiǎn)單中文詞頻統(tǒng)計(jì)示例
- Python英文文章詞頻統(tǒng)計(jì)(14份劍橋真題詞頻統(tǒng)計(jì))
- python寫程序統(tǒng)計(jì)詞頻的方法
- python利用多種方式來(lái)統(tǒng)計(jì)詞頻(單詞個(gè)數(shù))
- Python統(tǒng)計(jì)中文詞頻的四種方法小結(jié)
相關(guān)文章
python+django快速實(shí)現(xiàn)文件上傳
本篇文章主要介紹了django快速實(shí)現(xiàn)文件上傳,通過(guò)django web框架來(lái)實(shí)現(xiàn)一些簡(jiǎn)單的功能,有需要的可以了解一下。2016-10-10Python摳圖教程之使用OpenCV實(shí)現(xiàn)背景去除
這篇文章主要給大家介紹了關(guān)于Python摳圖教程之使用OpenCV實(shí)現(xiàn)背景去除的相關(guān)資料,背景去除是在很多視覺(jué)應(yīng)用里的主要預(yù)處理步驟,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10python datetime 和時(shí)間戳互相轉(zhuǎn)換問(wèn)題
time和datetime都是Python中的內(nèi)置模塊(不需要安裝,直接可以使用),都可以對(duì)時(shí)間進(jìn)行獲取,對(duì)時(shí)間格式進(jìn)行轉(zhuǎn)換,如時(shí)間戳和時(shí)間字符串的相互轉(zhuǎn)換,本文先給大家介紹python datetime 和時(shí)間戳互轉(zhuǎn)問(wèn)題,感興趣的朋友一起看看吧2022-11-11Python中橫向或縱向拼接兩個(gè)表方法實(shí)例
最近要將兩個(gè)表格合并,Python處理起來(lái)很簡(jiǎn)單,所以這篇文章主要給大家介紹了關(guān)于Python中橫向或縱向拼接兩個(gè)表的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07Python數(shù)據(jù)結(jié)構(gòu)之Array用法實(shí)例
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)之Array用法實(shí)例,較為詳細(xì)的講述了Array的常見用法,具有很好的參考借鑒價(jià)值,需要的朋友可以參考下2014-10-10Python 結(jié)構(gòu)化字符串中提取數(shù)據(jù)詳情
這篇文章主要介紹了Python 結(jié)構(gòu)化字符串中提取數(shù)據(jù)詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08Python實(shí)現(xiàn)將n個(gè)點(diǎn)均勻地分布在球面上的方法
這篇文章主要介紹了Python實(shí)現(xiàn)將n個(gè)點(diǎn)均勻地分布在球面上的方法,涉及Python繪圖的技巧與相關(guān)數(shù)學(xué)函數(shù)的調(diào)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03