.txt 파일의 서적 빈도를 사용하여 임의의 텍스트를 생성하여 각각의 새 문자 (string.lowercase + ' '
)가 이전 문자에 종속되도록하고 싶습니다.글자 크기와 임의 문자로 된 마코프 체인
마르코프 체인을 사용하려면 어떻게해야합니까? 또는 각 문자에 대해 조건부 주파수를 갖는 27 개의 배열을 사용하는 것이 더 간단합니까?
.txt 파일의 서적 빈도를 사용하여 임의의 텍스트를 생성하여 각각의 새 문자 (string.lowercase + ' '
)가 이전 문자에 종속되도록하고 싶습니다.글자 크기와 임의 문자로 된 마코프 체인
마르코프 체인을 사용하려면 어떻게해야합니까? 또는 각 문자에 대해 조건부 주파수를 갖는 27 개의 배열을 사용하는 것이 더 간단합니까?
내가 txt 파일에 책에서 편지 주파수를 사용하여 임의의 텍스트를 생성하고 싶은
축적하기 위해 주파수를 collections.Counter 사용을 고려 한 번에.
어떻게 마크로프 체인을 사용합니까? 아니면 2735 배열 을 각 문자에 대한 조건부 주파수와 함께 사용하는 것이 더 간단합니까?
두 문장은 동일합니다. 마르코프 체인은 무엇입니까하고 있습니다. 조건부 주파수가있는 27 개의 배열은 입니다. 어떻게 하시겠습니까?.
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))
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 qui_.ck brown fox')
print ''.join(genrandom(model, 20))
각 문자가 이전 문자에만 의존하는 경우 모든 27^2 쌍의 문자에 대한 확률을 계산할 수 있습니다. 텍스트 파일을 통해 두 글자를 반복 할 때
임의의 텍스트 또는 임의의 단어 : 여기
몇 가지 당신이 시작하는 사전 기반 코드는? 임의 텍스트 일 경우 마크로프 체인을 사용할 필요가 없습니다. – jknupp@jknupp 그것은 임의의 글자와 공백이며 단어가 아닙니다. 마크로프 체인없이 어떻게해야합니까? – Julia
문자 빈도가 같은지 신경 쓰지 않는다면 관심있는 인코딩 유형을 범위로 포함하는 난수 생성기를 사용하여 임의의 문자를 생성 할 수 있습니다. 주파수가 동일해야하는 경우, 이전 편지를 기반으로 한 편지 빈도가 가장 직접적인 방법 일 것입니다. – jknupp