使用Python實現(xiàn)一個簡單實用的文本詞頻統(tǒng)計分析工具
前言
文本分析是自然語言處理(NLP)中的基礎(chǔ)任務(wù),而詞頻統(tǒng)計則是文本分析的入門級應(yīng)用。通過詞頻分析,我們可以快速了解文本的主題傾向、關(guān)鍵信息分布以及語言使用習(xí)慣。本文將帶你實現(xiàn)一個簡單而實用的文本詞頻統(tǒng)計工具,非常適合Python初學(xué)者練手。
功能特點
支持任意.txt格式文本文件的詞頻分析
自動處理文本編碼問題
使用正則表達(dá)式精確提取英文單詞(包括帶連字符和撇號的單詞)
按頻率排序并計算每個單詞的出現(xiàn)比例
支持查看前N個高頻詞功能
代碼實現(xiàn)
import re
from collections import defaultdict
def word_frequency(file_path, top_n=None):
"""
統(tǒng)計文本文件中的單詞頻率
:param file_path: 文本文件路徑
:param top_n: 顯示前N個高頻詞,默認(rèn)顯示全部
:return: 排序后的單詞頻率列表
"""
# 讀取文件內(nèi)容
try:
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read().lower() # 轉(zhuǎn)為小寫
except FileNotFoundError:
print(f"錯誤:文件 {file_path} 未找到")
return []
except UnicodeDecodeError:
print("錯誤:文件編碼不支持,請嘗試使用其他編碼(如gbk)")
return []
# 使用正則表達(dá)式提取單詞(包括帶連字符的單詞)
words = re.findall(r"\b[a-zA-Z'-]+\b", text)
# 統(tǒng)計詞頻
frequency = defaultdict(int)
for word in words:
frequency[word] += 1
# 按頻率排序
sorted_words = sorted(frequency.items(), key=lambda x: x[1], reverse=True)
# 輸出結(jié)果
print(f"\n總共有 {len(words)} 個單詞,其中唯一單詞 {len(sorted_words)} 個")
print("排名 | 單詞\t\t頻率\t占比")
print("-" * 40)
total_words = len(words)
for rank, (word, count) in enumerate(sorted_words[:top_n], 1):
percentage = (count / total_words) * 100
print(f"{rank:4} | {word:12} {count:6} \t{percentage:.2f}%")
return sorted_words
if __name__ == "__main__":
# 使用示例
file_path = input("請輸入文本文件路徑:").strip()
top_n = input("要顯示前多少個高頻詞(默認(rèn)全部):").strip()
top_n = int(top_n) if top_n.isdigit() else None
word_frequency(file_path, top_n)
代碼解析
導(dǎo)入必要模塊:
- re:提供正則表達(dá)式支持,用于精確提取單詞
- defaultdict:特殊字典類型,當(dāng)鍵不存在時提供默認(rèn)值,簡化詞頻統(tǒng)計
核心函數(shù)設(shè)計:
- 異常處理確保文件打開的健壯性
- 使用正則表達(dá)式\b[a-zA-Z'-]+\b提取英文單詞(包括帶連字符和撇號的復(fù)雜形式)
- 采用defaultdict高效統(tǒng)計詞頻
- 使用Python內(nèi)置的sorted()函數(shù)按詞頻排序
用戶交互:
- 支持自定義文件路徑輸入
- 靈活設(shè)置顯示的高頻詞數(shù)量
運行效果
將以下文本保存為txt文件,然后運行程序,輸入文件路徑即可看到分析結(jié)果:

應(yīng)用場景
英文文學(xué)作品詞匯分析
論文關(guān)鍵詞提取
網(wǎng)絡(luò)文本主題挖掘
語言學(xué)習(xí)詞匯頻率研究
進(jìn)階改進(jìn)方向
增加中文分詞支持(可結(jié)合jieba等分詞庫)
添加停用詞過濾功能
實現(xiàn)數(shù)據(jù)可視化展示(如詞云圖)
開發(fā)GUI界面提升用戶體驗
支持批量文件分析比較
到此這篇關(guān)于使用Python實現(xiàn)一個簡單實用的文本詞頻統(tǒng)計分析工具的文章就介紹到這了,更多相關(guān)Python文本詞頻統(tǒng)計分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Opencv 通過軌跡(跟蹤)欄實現(xiàn)更改整張圖像的背景顏色
這篇文章主要介紹了Python Opencv 通過軌跡(跟蹤)欄實現(xiàn)更改整張圖像的背景顏色,在文章末尾有一個小訓(xùn)練——是將所學(xué)得的圖像顏色修改應(yīng)用為畫板一般的刷新,需要的朋友可以參考下2020-03-03
Python的Django中django-userena組件的簡單使用教程
這篇文章主要介紹了Python的Django中django-userena組件的簡單使用教程,包括用戶登陸和注冊等簡單功能的實現(xiàn),需要的朋友可以參考下2015-05-05
opencv python 圖像輪廓/檢測輪廓/繪制輪廓的方法
這篇文章主要介紹了opencv python 圖像輪廓/檢測輪廓/繪制輪廓的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python xpath表達(dá)式如何實現(xiàn)數(shù)據(jù)處理
這篇文章主要介紹了Python xpath表達(dá)式如何實現(xiàn)數(shù)據(jù)處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
Python實現(xiàn)遺傳算法(虛擬機(jī)中運行)
遺傳算法(GA)是最早由美國Holland教授提出的一種基于自然界的“適者生存,優(yōu)勝劣汰”基本法則的智能搜索算法。本文主要介紹了如何通過Python實現(xiàn)遺傳算法,感興趣的同學(xué)可以看一看2021-11-11
Python?實現(xiàn)多表和工作簿合并及一表按列拆分
這篇文章主要介紹了Python?實現(xiàn)多表和工作簿合并及一表按列拆分,文章圍繞主題展開詳細(xì)的資料介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05
Python調(diào)用Java接口失敗(Java日志打印警告:JSON parse error:xxxx)
文章描述了Python調(diào)用Java接口時遇到400錯誤和JSON解析錯誤的問題,通過分析問題發(fā)現(xiàn)參數(shù)傳遞方式可能存在問題,修改Python代碼使用data參數(shù)并序列化數(shù)據(jù)后,問題解決,文章總結(jié)了在Python調(diào)用Java接口傳遞JSONObject數(shù)據(jù)時的注意事項,需要的朋友可以參考下2025-11-11

