我试图计算字典中的累积分布。分布应采用给定文本中的字母,并查找它们在文本中出现的概率,并由此计算累积分布。 我不知道我是否以正确的方式做到了,但这是我的代码:
with open('text') as infile:
text = infile.read()
letters = list(text)
letter_freqs = Counter(letters(text))
letter_sum = len(letters)
letter_proba = [letter_freqs[letter]/letter_sum for letter in letters(text)]
现在我不想计算累积分布,并将其绘制成直方图,有人可以帮助我吗?
答案 0 :(得分:1)
至少应该运行以下内容(您的代码已发布为赢得&#t; t):
import collections, itertools
with open('text') as infile:
letters = list(infile.read()) # not just letters: whitespace & punct, too
letter_freqs = collections.Counter(letters)
letter_sum = len(letters)
letters_set = sorted(set(letters))
d = {l: letter_freqs[letter]/letter_sum for l in letters_set}
cum = itertools.accumulate(d[l] for l in letters_set)
cum_d = dict(zip(letters_set, cum)
现在你在cum_d
中有一个字典映射每个字符,而不仅仅是字母,因为你没有做任何事情来排除空格和标点符号,以及该字符及其下面所有字符的累积概率。按字母顺序。你打算怎么计划"情节"一本字典,不知道。但是嘿,至少这个确实运行,并产生某些东西,这可能至少符合你为任务提供的模糊规范的一种解释! - )