Я пытаюсь получить счетчик, который просматривает текст и возвращает частоту буквы относительно предыдущей пары букв.Например, часть вывода будет выглядеть так:
'th' : Counter ({'e':119, 'a':145 etc... })
Я хочу, чтобы он перебирал все возможные пары в нижнем регистре символов.
До сих пор я использовал следующий код для получениявывод, который учитывает только предыдущую букву:
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