統計中文句子中的詞頻

2021-10-03 21:50:00 字數 1708 閱讀 2589

題目內容:

對於乙個已分詞的句子(可方便地擴充套件到統計檔案中的詞頻):

我/是/乙個/測試/句子/,/大家/趕快/來/統計/我/吧/,/大家/趕快/來/統計/我/吧/,/大家/趕快/來/統計/我/吧/,/重要/事情/說/三遍/!

可以用collections模組中的counter()函式方便地統計詞頻,例如可用如下**:

import collections

import copy

s = "我/是/乙個/測試/句子/,/大家/趕快/來/統計/我/吧/,/大家/趕快/來/統計/我/吧/,/大家/趕快/來/統計/我/吧/,/重要/事情/說/三遍/!/"

s_list = s.split('/')

# 為避免迭代時修改迭代物件本身,建立乙個列表的深拷貝,也可用淺拷貝s_list_backup = s_list[:]

s_list_backup = s_list[:]

[s_list.remove(item) for item in s_list_backup if item in ',。!」「']

collections.counter(s_list)

這個問題也可以通過字典來解決,請編寫用字典解決本問題的程式,為便於oj系統自動判斷,程式最後輸出某個單詞的詞頻。

程式參考框架

def countfeq(s):

... ...

return a dict

if __name__ == "__main__":

s = "not clumsy person in this world, only lazy people, only people can not hold out until the last."

s_dict = countfeq(s.lower())

word = input()

基於s_dict判斷word的詞頻並輸出(可能是0次)

輸入格式:

字串輸出格式:

整數輸入樣例(因為oj系統限制,測試用例設為判斷英文單詞個數(不區分大小寫,全部轉換成小寫字元處理),請注意英文標點,假設僅包含,和.):

not輸出樣例:

from collections import counter

def countfeq(s):

s_list=s.split(" ")

s_list_copy=[item for item in s_list ]

for index,item in enumerate(s_list_copy):

if '.' in item:

item=item.replace('.','')

if ',' in item:

item=item.replace(',','')

s_list_copy[index]=item

return counter(s_list_copy)

if __name__ == "__main__":

s = "not clumsy person in this world, only lazy people, only people can not hold out until the last."

s_dict = countfeq(s.lower())

word = input()

print(s_dict[word])

英文句子的逆序

說聲悄悄話,可以很自然的聯想到向量這種增強版的陣列這種資料結構來嘞!less words,and more codes first use vector includeusing namespace std int main 14 third 用reverse,先整體反轉再區域性反轉。我還沒沒有理解...

中文詞頻統計

2.從檔案讀取待分析文字。3.安裝並使用jieba進行中文分詞。4.更新詞庫,加入所分析物件的專業詞彙。5.生成詞頻統計 排序 排除語法型詞彙,代詞 冠詞 連詞等停用詞 輸出詞頻最大top20,把結果存放到檔案裡 源 import jieba fo open r d 三體.txt encoding ...

中文詞頻統計

從檔案讀取待分析文字。news open gzccnews.txt r encoding utf 8 安裝與使用jieba進行中文分詞。pip install jieba import jieba list jieba.lcut news 生成詞頻統計 排序排除語法型詞彙,代詞 冠詞 連詞 輸出詞頻...