首頁 > 後端開發 > Python教學 > Python程式取得單字頻率的百分比

Python程式取得單字頻率的百分比

王林
發布: 2023-09-08 18:29:02
轉載
1856 人瀏覽過

Python程式取得單字頻率的百分比

在本文中,我們將學習如何在Python中以百分比形式取得詞頻。

假設我們已經取得了一個字串輸入清單。現在,我們將找到給定輸入字串清單中每個單字的百分比。

公式

(Occurrence of X word / Total words) * 100
登入後複製

使用的方法

  • 使用sum()、Counter()、join()和split()函數

  • #使用 join()、split() 和 count() 函數

  • #使用operator模組的countOf()函數。

方法一:使用 sum()、Counter()、join() 和 split() 函數

join() 是Python中的字串函數,用於將由字串分隔符號分隔的序列元素連接起來,形成一個字串。

Counter() 函數是計算可雜湊物件數的子類別。它在調用/調用時隱式創建可迭代對象的哈希表。

演算法(步驟)

以下是要執行所需任務的演算法/步驟:

  • 使用 import 關鍵字從集合模組匯入 Counter 函數。

  • 建立一個變數來儲存輸入清單字串並列印該清單。

  • 使用join()函數連接輸入清單的所有字串元素。

  • 使用split() 函數(將字串分割為列表。可以定義分隔符號;預設分隔符號為任意空白字元)將連接的字串分割為單字列表,並使用Counter() 函數取得單字頻率作為鍵值對

  • #使用values()函數從Counter中取得所有值(頻率/計數),並使用sum()函數取得它們的總和(傳回所有值的總和)可迭代中的專案).

  • 使用items()函數取得上述計數器單字中每個單字的百分比(傳回一個視圖對象,即它包含字典的鍵值對,作為元組在列表中)。

  • 列印輸入清單中每個單字的百分比。

Example

的中文翻譯為:

範例

以下程式使用 sum()、Counter()、join() 和 split() 函數傳回給定輸入字串清單中每個單字的百分比 –

# importing a Counter function from the collections module
from collections import Counter

# input list of strings
inputList = ["hello tutorialspoint", "python codes", "tutorialspoint for python", "see python codes tutorialspoint"]
print("Input list:\n", inputList)

# Joining all the string elements of the list using the join() function
join_string = " ".join(i for i in inputList)

# splitting the joined string into a list of words and getting the

# frequency of words as key-value pairs using Counter() function

counter_words = Counter(join_string.split())
# getting all the values(frequencies/counts) from counter and

# finding the total sum of them
total_sum = sum(counter_words.values())

# getting the percentage of each word from the above counter words
res_percentage = {key: value / total_sum for key,
value in counter_words.items()}

# printing the percentage of each word from the input list
print("Percentage of each word from the input list:\n", res_percentage)
登入後複製

輸出

執行時,上述程式將產生以下輸出 -

Input list:
['hello tutorialspoint', 'python codes', 'tutorialspoint for python', 'see python codes tutorialspoint']
Percentage of each word from the input list:
{'hello': 0.09090909090909091, 'tutorialspoint': 0.2727272727272727, 'python': 0.2727272727272727, 'codes': 0.18181818181818182, 'for': 0.09090909090909091, 'see': 0.09090909090909091}
登入後複製

方法2:使用join()、split()和count()函數

演算法(步驟)

以下是要執行所需任務的演算法/步驟:

  • 建立一個空字典來儲存結果百分比/詞頻。

  • 使用for循環遍歷單字清單。

  • 使用 if 條件語句 來檢查目前元素是否不在字典的鍵中,使用 keys() 函數。

  • 如果上述條件為真,則使用count()函數取得該鍵(單字)的計數。

  • 將其除以單字數即可取得當前單字頻率,並將其作為鍵儲存在上面建立的新字典中。

  • 列印輸入清單中每個單字的百分比。

Example

的中文翻譯為:

範例

以下程式使用 join()、split() 和 count() 函數傳回給定輸入字串清單中每個單字的百分比 –

# input list of strings
inputList = ["hello tutorialspoint", "python codes", "tutorialspoint for python", "see python codes tutorialspoint"]

# joining all the elements of the list using join()
join_string = " ".join(i for i in inputList)

# splitting the joined string into a list of words
listOfWords = join_string.split()

# Creating an empty dictionary for storing the resultant percentages
resDict = dict()

# traversing through the list of words
for item in listOfWords:
   
   # checking whether the current element is not in the keys of a dictionary
   if item not in resDict.keys():
      
      # getting the percentage of a current word if the condition is true
      resDict[item] = listOfWords.count(item)/len(listOfWords)

# printing the percentage of each word from the input list
print("Percentage of each word from the input list:\n", resDict)
登入後複製

輸出

執行時,上述程式將產生以下輸出 -

Percentage of each word from the input list:
{'hello': 0.09090909090909091, 'tutorialspoint': 0.2727272727272727, 'python': 0.2727272727272727, 'codes': 0.18181818181818182, 'for': 0.09090909090909091, 'see': 0.09090909090909091}
登入後複製
登入後複製

方法三:使用operator模組的countOf()函數

Example

的中文翻譯為:

範例

以下程式使用 countOf() 函數傳回給定輸入字串清單中每個單字的百分比 -

import operator as op
# input list of strings
inputList = ["hello tutorialspoint", "python codes", "tutorialspoint for python", "see python codes tutorialspoint"]

# joining all the elements of list using join()
join_string = " ".join(i for i in inputList)

# splitting the joined string into list of words
listOfWords = join_string.split()
resDict = dict()
for item in listOfWords:
   
   # checking whether the current element is not in the keys of dictionary
   if item not in resDict.keys():
      resDict[item] = op.countOf(listOfWords,   item)/len(listOfWords)
print("Percentage of each word from the input list:\n", resDict)
登入後複製

輸出

執行時,上述程式將產生以下輸出 -

Percentage of each word from the input list:
{'hello': 0.09090909090909091, 'tutorialspoint': 0.2727272727272727, 'python': 0.2727272727272727, 'codes': 0.18181818181818182, 'for': 0.09090909090909091, 'see': 0.09090909090909091}
登入後複製
登入後複製

結論

在本文中,我們學習了三種不同的 Python 方法來計算百分比詞頻。我們也學習如何使用運算元模組的新函數 countOf() 來取得清單元素的頻率。

以上是Python程式取得單字頻率的百分比的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板