Tôi đang phân tích cú pháp chuỗi văn bản dài và tính số lần mỗi từ xuất hiện trong Python. Tôi có một chức năng hoạt động nhưng tôi đang tìm lời khuyên về việc liệu có cách nào tôi có thể làm cho nó hiệu quả hơn (về mặt tốc độ) và liệu có chức năng thư viện trăn có thể làm điều này cho tôi không, vì vậy tôi không phát minh lại bánh xe ?Tính toán hiệu quả tần số từ trong chuỗi
Bạn có thể đề xuất cách hiệu quả hơn để tính các từ phổ biến nhất xảy ra trong chuỗi dài (thường có hơn 1000 từ trong chuỗi) không?
Còn cách tốt nhất để sắp xếp từ điển thành danh sách trong đó phần tử thứ nhất là từ phổ biến nhất, phần tử thứ 2 là từ phổ biến thứ 2 và v.v.
test = """abc def-ghi jkl abc
abc"""
def calculate_word_frequency(s):
# Post: return a list of words ordered from the most
# frequent to the least frequent
words = s.split()
freq = {}
for word in words:
if freq.has_key(word):
freq[word] += 1
else:
freq[word] = 1
return sort(freq)
def sort(d):
# Post: sort dictionary d into list of words ordered
# from highest freq to lowest freq
# eg: For {"the": 3, "a": 9, "abc": 2} should be
# sorted into the following list ["a","the","abc"]
#I have never used lambda's so I'm not sure this is correct
return d.sort(cmp = lambda x,y: cmp(d[x],d[y]))
print calculate_word_frequency(test)
'has_key' bị phản đối. Thay vào đó, hãy sử dụng 'khóa trong d'. Ngoài ra, chức năng sắp xếp của bạn là khá sai. 'return sort (d, key = d .__ getitem__, reverse = True)' sẽ thực hiện sắp xếp giảm dần theo tần số và trả về các khóa. – agf