私はランダムなテキストを生成するためにこのコードを使用しています:しかし、私はキツネがフェンスを飛び越えた代わりに」の入力として、txtファイルを使用したいインポート.txtファイルや使用マルコフモデルで
from collections import defaultdict, Counter
from itertools import ifilter
from random import choice, randrange
def pairwise(iterable):
it = iter(iterable)
last = next(it)
for curr in it:
yield last, curr
last = curr
valid = set('abcdefghijklmnopqrstuvwxyz ')
def valid_pair((last, curr)):
return last in valid and curr in valid
def make_markov(text):
markov = defaultdict(Counter)
lowercased = (c.lower() for c in text)
for p, q in ifilter(valid_pair, pairwise(lowercased)):
markov[p][q] += 1
return markov
def genrandom(model, n):
curr = choice(list(model))
for i in xrange(n):
yield curr
if curr not in model: # handle case where there is no known successor
curr = choice(list(model)) #i.e. letter appears for first time at end of text
d = model[curr]
target = randrange(sum(d.values()))
cumulative = 0
for curr, cnt in d.items():
cumulative += cnt
if cumulative > target:
break
model = make_markov(**'the fox jumped over the fence'**)
print ''.join(genrandom(model, 280))
を「 は私がしようとしている:
text=open('moby.txt','r+').read()
、その後:
model = make_markov(text)
しかし、それは思えます私は何かが間違っている、私はどのようにこれを処理するか分からない。
「間違っている」という説明が必要です。エラーメッセージはありますか?電子サティス@ –
: 'トレースバック(最新の呼び出しの最後): プリント 'で ファイル "/Users/python/Documents/markov.py"、45行、' はい、これはエラーメッセージです。 ファイル "/Users/python/Documents/markov.py"、行30、genrandom curr = choice(list(model)) ファイル "/Library/Frameworks/Python.framework /versions/2.7/lib/python2.7/random.py "、line 274、select return seq [int(self.random()* len(seq))] seqが空の場合にIndexErrorを発生させます。 IndexError:listインデックスが範囲外にある " –
Julia
" curr not in model: "を" model in curr not "と置き換えようとしましたか?あなたのスクリプトの30行目は、 "curr = choice(list(model))"の最初か2番目の出現ですか? – jimifiki