利用python實現(xiàn)詞頻統(tǒng)計分析的代碼示例
詞頻統(tǒng)計的概念
詞頻統(tǒng)計是指在文本或語音數(shù)據(jù)中,統(tǒng)計每個單詞或符號出現(xiàn)的次數(shù),以便對文本或語音數(shù)據(jù)進行分析和預(yù)處理。詞頻統(tǒng)計是自然語言處理中的一個重要任務(wù),其目的是為后續(xù)的文本分析、情感分析、機器翻譯等任務(wù)做好準備。
在詞頻統(tǒng)計中,通常將文本或語音數(shù)據(jù)轉(zhuǎn)換成單詞或符號的形式,然后統(tǒng)計每個單詞或符號出現(xiàn)的次數(shù),并將其存儲為一個數(shù)據(jù)集或字典。這些數(shù)據(jù)集或字典可以用來訓(xùn)練機器學(xué)習(xí)模型或進行文本分類、情感分析等任務(wù)。
詞頻統(tǒng)計可以應(yīng)用于許多領(lǐng)域,例如文本分類、情感分析、機器翻譯、信息檢索等。在文本分類中,詞頻統(tǒng)計可以幫助確定最重要的單詞或符號,以幫助分類器進行分類。在情感分析中,詞頻統(tǒng)計可以幫助確定文本中最常見的情感,以便進行分類。在機器翻譯中,詞頻統(tǒng)計可以幫助確定翻譯的單詞或符號。在信息檢索中,詞頻統(tǒng)計可以幫助確定查詢中最重要的單詞或符號,以便進行查詢匹配。
總之,詞頻統(tǒng)計是自然語言處理中的一個重要任務(wù),其目的是為后續(xù)的文本分析、情感分析、機器翻譯等任務(wù)做好準備。
常用的方法和工具:
Python:Python 是一種非常流行的編程語言,有許多庫和工具可以用于文本處理和統(tǒng)計,其中最流行的是 NumPy、Pandas 和 SciPy??梢允褂眠@些庫中的任何一個來計算文本中詞頻統(tǒng)計,例如使用 NumPy 中的 str_freq 函數(shù)來計算字符串中單詞出現(xiàn)的頻率。
R:R 是一種統(tǒng)計軟件,可以輕松地進行數(shù)據(jù)可視化和統(tǒng)計分析??梢允褂?R 中的 text mining 包來計算文本中詞頻統(tǒng)計,例如使用 tm 包中的 tf_idf 函數(shù)來計算文本的分詞和詞頻統(tǒng)計。
Java:Java 是一種流行的編程語言,也有許多庫和工具可以用于文本處理和統(tǒng)計??梢允褂?Java 中的 Apache Commons Text 和 Apache Commons Collections 庫來計算文本中詞頻統(tǒng)計,例如使用 Commons Text 中的 getWords method 來獲取文本中的單詞。
JavaScript:JavaScript 是一種前端編程語言,也可以用于后端開發(fā)。可以使用 JavaScript 中的 Node.js 和 npm 包管理器來運行文本處理和統(tǒng)計任務(wù),例如使用 npm 包中的 text-parser 和 text-count 包來計算文本中詞頻統(tǒng)計。
Python實現(xiàn)詞頻統(tǒng)計
關(guān)于python的實現(xiàn),我給大家介紹兩種最常用的方法。
在做詞頻統(tǒng)計之前,需要要用到前面介紹中文分詞封裝的函數(shù),然后我這里使用了關(guān)于大唐不夜城的一條評論文本作為示范先進行分詞。
import re import jieba def chinese_word_cut(mytext): jieba.load_userdict('自定義詞典.txt') # 這里你可以添加jieba庫識別不了的網(wǎng)絡(luò)新詞,避免將一些新詞拆開 jieba.initialize() # 初始化jieba # 文本預(yù)處理 :去除一些無用的字符只提取出中文出來 new_data = re.findall('[\u4e00-\u9fa5]+', mytext, re.S) new_data = " ".join(new_data) # 文本分詞 seg_list_exact = jieba.lcut(new_data) result_list = [] # 讀取停用詞庫 with open('停用詞庫.txt', encoding='utf-8') as f: # 可根據(jù)需要打開停用詞庫,然后加上不想顯示的詞語 con = f.readlines() stop_words = set() for i in con: i = i.replace("\n", "") # 去掉讀取每一行數(shù)據(jù)的\n stop_words.add(i) # 去除停用詞并且去除單字 for word in seg_list_exact: if word not in stop_words and len(word) > 1: result_list.append(word) return result_list comment = '大唐不夜城,不夜城趣味性很高,里面地方特色東西好吃,也有星巴克麥當(dāng)勞等等選擇,有不少場表演,外景夜景一定要薅一個,其它地方很難有這般景象了。娛樂體驗了不倒翁,還有十二時辰里面表演更加精彩、內(nèi)景拍照不錯,簋唐樓可以嘗試一下沉浸劇本殺……' comment_cutted = chinese_word_cut(comment) comment_cutted
方法1:使用Pandas庫實現(xiàn)
首先使用pandas將前面分詞結(jié)果進行轉(zhuǎn)化DataFrame類型
import pandas as pd df = pd.DataFrame(comment_cutted) df
接著使用groupby函數(shù)對第0列進行統(tǒng)計,然后降序輸出
word_frequency_df = df.groupby(0).size().sort_values(ascending=False) word_frequency_df
最后將詞頻統(tǒng)計的結(jié)果保存為文件
# 將詞頻統(tǒng)計進行保存 word_frequency_df.to_excel('詞頻統(tǒng)計結(jié)果.xlsx') # 保存為excel文件 # word_frequency_df.to_csv('詞頻統(tǒng)計結(jié)果.xlsx') # 保存為csv文件
方法2:使用collections庫
# 方法2-使用collections庫 from collections import Counter Counter(comment_cutted)
使用Counter函數(shù)對前面的分詞結(jié)果進行統(tǒng)計,然后使用most_common輸出按詞頻頻次降序排列的結(jié)果,如果你只想輸出前n個單詞,傳入數(shù)值即可。 默認是全部輸出。
word_counts = Counter(comment_cutted) word_counts.most_common() # word_counts.most_common(10) # 輸出詞頻最高的前十個單詞
如果想將上面結(jié)果保存為文件的話,執(zhí)行以下代碼:
# 將詞頻統(tǒng)計結(jié)果保存為txt文件 word_counts_top = word_counts.most_common() with open('詞頻統(tǒng)計結(jié)果.txt','w',encoding='utf-8')as f: for i in word_counts_top: f.write(str(i[0])) f.write('\t') f.write(str(i[1])) f.write('\n')
如果我們想將TOP10高頻詞進行可視化展示,可以執(zhí)行下面代碼:
import matplotlib.pylab as plt plt.rcParams['font.sans-serif'] = ['SimHei'] #解決中文顯示 plt.rcParams['axes.unicode_minus'] = False #解決符號無法顯示 word_counts = Counter(comment_cutted) word_counts_top = word_counts.most_common() x = [item[0] for item in word_counts_top[:10]] y = [item[1] for item in word_counts_top[:10]] plt.bar(x,y) plt.title('Top10高頻詞') plt.xlabel('詞語') plt.ylabel('頻次') plt.show()
到此這篇關(guān)于利用python實現(xiàn)詞頻統(tǒng)計分析的代碼示例的文章就介紹到這了,更多相關(guān)python詞頻統(tǒng)計內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?計算機視覺編程進階之OpenCV?圖像銳化及邊緣檢測
計算機視覺這種技術(shù)可以將靜止圖像或視頻數(shù)據(jù)轉(zhuǎn)換為一種決策或新的表示。所有這樣的轉(zhuǎn)換都是為了完成某種特定的目的而進行的,本篇我們來學(xué)習(xí)下如何對圖像進行銳化處理以及如何進行邊緣檢測2021-11-11如何利用Python動態(tài)模擬太陽系運轉(zhuǎn)
這篇文章主要給大家介紹了關(guān)于如何利用Python動態(tài)模擬太陽系運轉(zhuǎn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Python操作MongoDb數(shù)據(jù)庫流程詳解
這篇文章主要介紹了Python操作MongoDb數(shù)據(jù)庫流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03