使用Python計算檔案中的單詞頻率

2021-10-07 10:45:21 字數 2667 閱讀 5202

是否曾想知道一種快速的方法來告知某些文件所關注的內容? 它的主要主題是什麼? 讓我給你這個簡單的把戲。 列出文件中提到的唯一單詞,然後檢查每個單詞被提及了多少次(頻率)。 通過這種方式,您可以了解文件的主要內容。 但這手動操作並不容易,所以我們需要一些自動化的過程,不是嗎?

是的,自動化過程將使這一過程變得更加容易。 讓我們看看如何在文字檔案中列出不同的唯一單詞,並使用python檢查每個單詞的出現頻率。

讓遊戲開始吧!

由於我們要在遊戲中應用模式,因此我們需要使用正規表示式(regex)。 如果「正規表示式」是您的新名詞,那麼這是wikipedia的乙個很好的定義:

定義搜尋模式的字串行,主要用於與字串進行模式匹配或字串匹配(即類似「查詢和替換」的操作)。

這個概念出現於2023年代,當時美國數學家stephen kleene將正規語言的描述形式化,並與unix文字處理實用程式ed(編輯器)和grep(過濾器)共同使用。

如果您想在繼續學習本教程之前進一步了解正規表示式,可以檢視我的其他教程《 python中的正規表示式》 ,然後再次回來繼續本教程。

讓我們逐步開發這款遊戲。 我們要做的第一件事是將文字檔案儲存在字串變數中。

document_text = open('test.txt', 'r')

text_string = document_text.read()

現在,為了使我們的正規表示式更容易應用,讓我們使用lower()函式將文件中的所有字母變成小寫字母,如下所示:

text_string = document_text.read().lower()
讓我們寫乙個正規表示式,它將返回字元數在[3-15]範圍內的所有單詞。 從3開始,將有助於避免我們可能不想對它們的頻率進行計數的單詞,例如if , of , in

等等,而長度大於15單詞可能不是正確的單詞。 這種模式的正規表示式如下所示:

\b[a-z]\b
\b與單詞邊界有關 。 有關單詞邊界的更多資訊,可以檢視本教程 。

上面的正規表示式可以編寫如下:

match_pattern = re.search(r'\b[a-z]\b', text_string)
由於我們要遍歷文件中的多個單詞,因此可以使用findall函式:

返回string中的pattern的所有非重疊匹配項,作為字串列表。

從左到右掃瞄該字串 ,並以找到的順序返回匹配項。

如果模式中存在乙個或多個組,則返回乙個組列表;否則,返回乙個列表。

如果模式包含多個組,則這將是乙個元組列表。

空匹配項將包括在結果中,除非它們碰到另乙個匹配項的開頭。

在這一點上,我們希望找到文件中每個單詞的出現頻率。 此處使用的合適概念是python的dictionaries ,因為我們需要key-value對,其中key是word ,並且value表示出現在文件中的頻率單詞。

假設我們宣告了乙個空的字典frequency =,則上段如下所示:

for word in match_pattern:

count = frequency.get(word,0)

frequency[word] = count + 1

現在,我們可以使用以下命令檢視金鑰:

frequency_list = frequency.keys()
for words in frequency_list:

print words, frequency[words]

讓我們在下一節中將程式放在一起,看看輸出是什麼樣子。

在逐步討論了程式之後,現在讓我們看一下程式的外觀:

import re

import string

frequency = {}

document_text = open('test.txt', 'r')

text_string = document_text.read().lower()

match_pattern = re.findall(r'\b[a-z]\b', text_string)

for word in match_pattern:

count = frequency.get(word,0)

frequency[word] = count + 1

frequency_list = frequency.keys()

for words in frequency_list:

print words, frequency[words]

如果您執行該程式,則應該得到如下內容:

讓我們回到我們的遊戲。 通過頻率一詞,您認為測試檔案(包含我其他python教程的內容)在談論什麼?

翻譯自:

python 計算檔案中總行數

計算檔案的行數 最簡單的辦法是把檔案讀入乙個大的列表中,然後統計列表的長度.如果檔案的路徑是以引數的形式filepath傳遞的,那麼只用一行 就可以完成我們的需求了 count len open filepath,ru readlines 如果是非常大的檔案,上面的方法可能很慢,甚至失效.此時,可以...

Python中配置檔案的使用

因為專案的需要,要用到python載入配置檔案。本文主要參考了 a 配置檔案中包含乙個或多個 section,每個 section 有自己的 option b section 用 sect name 表示,每個option是乙個鍵值對,使用分隔符 或 隔開 c 在 option 分隔符兩端的空格會被...

python中的單繼承

一 介紹 python 同樣支援類的繼承,如果一種語言不支援繼承,類就沒有什麼意義。派生類的定義如下所示 class derivedclassname baseclassname1 需要注意圓括號中基類的順序,若是基類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋 即方法在子類中未...