2012-01-07 3 views
0

텍스트를 살펴보고 이전 글자 쌍과 관련하여 글자의 빈도를 반환하려고하는 중입니다. 출력의 예를 들어 일부는 다음과 같습니다후속 글자의 세 쌍에 대한 카운터 만들기

'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 
+0

당신이 그 코드에 들여 쓰기를 고칠 수

지금까지 난 단지 계정으로 이전 편지를 취하는 출력을 얻기 위해 다음 코드를 사용하고있다 ? – DaedalusFall

+0

@DaedalusFall 죄송합니다. – Julia

답변

1

테스트되지 않은 :

def pairwise(iterable): 
    it = iter(iterable) 
    last = next(it)+next(it) 
    for curr in it: 
     yield last, curr 
     last = last[1]+curr 


def valid_pair((last, curr)): 
    return last[0] in valid and last[1] in valid and curr in valid 
관련 문제