題目內容:
對於乙個已分詞的句子(可方便地擴充套件到統計檔案中的詞頻):
我/是/乙個/測試/句子/,/大家/趕快/來/統計/我/吧/,/大家/趕快/來/統計/我/吧/,/大家/趕快/來/統計/我/吧/,/重要/事情/說/三遍/!
可以用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 生成詞頻統計 排序排除語法型詞彙,代詞 冠詞 連詞 輸出詞頻...