【发布时间】:2011-12-30 09:41:32
【问题描述】:
我正在使用这个生成文本:
for i in xrange(100):
sys.stdout.write(alphabet[bisect.bisect(f_list, random.random()) - 1])
我得到如下所示的输出:
fnhtlr hhub del tn eleo s d nerowepeldhoantah yf tr e saetenwgkoyears
oenooe urbmhonnrniwc iasseb
我想知道如何将输出存储为 TEXT,而不是列表,以便我可以在其上使用 fd.inc(word)。我基本上是在尝试用我的随机输出来绘制 Zipf 定律。
如果我使用这个:
text1 = [alphabet[bisect.bisect(f_list, random.random())] for i in xrange(300)]
我的输出存储为一个列表,fd 对其不起作用,因为它认为每个字符都是一个单独的单词。
for word in text1:
fd.inc(word)
print fd
<FreqDist: ' ': 1776, 'e': 1008, 'a': 752, 't': 750, 'n': 604, 'i': 586,
'o': 556, 'h': 542, 's': 528, 'r': 478, 'l': 388, 'd': 312, 'u': 242,
'm': 202, 'w': 192, 'g': 172, 'b': 152, 'p': 152, 'f': 150, 'c': 148, 'y': 120,
'k': 90, 'v': 66, 'q': 12, 'z': 10, 'x': 8, 'j': 4>
我希望将由空格分隔的每个字母序列视为一个单词,即将输出视为文本。
感谢您的帮助!
【问题讨论】:
-
当你说“文本”时,我相信你的意思是“字符串”:)
-
什么是
fd.inc?就此而言,alphabet和f_list是什么? -
对不起,让我更准确地说:字母表是 string.lowercase + ' ',f_list 是我在 Moby Dick 中找到的字母和空格的累积频率。然后我生成一个随机数,它与 f_list 匹配,这反过来又给了我一个“随机”字母。这就是我从白鲸中字母和空格的频率中获取“随机”文本的方式。 f_list = [0, 0.068, 0.083, 0.103 等...]
-
和
fd=FreqDist()for word in text1:fd.inc(word)