import random infile = open ('source.txt', 'r' ) wholetext=[] for line in infile: wholetext.extend(line.split()) infile.close() lookup={} for i in range(0,len(wholetext)-2): key = (wholetext[i],wholetext[i+1]) if not key in lookup.keys(): lookup[key]=[] lookup[key].append(wholetext[i+2]) if i % 1000 == 0: print str(i) + ' of ' + str(len(wholetext)) + ' done' outfile = open('output','w') w1=wholetext[0] w2=wholetext[1] outfile.write(w1 + ' ' + w2 + ' ') while 1: key=(w1,w2) poss = lookup[key] x = random.randint(0,len(poss)-1) w3 = poss[x] outfile.write(w3 + ' ') w1=w2 w2=w3 outfile.close()