forked from xianhu/LearnPython
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpython_markov_chain.py
More file actions
34 lines (26 loc) · 794 Bytes
/
python_markov_chain.py
File metadata and controls
34 lines (26 loc) · 794 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# _*_ coding: utf-8 _*_
import nltk
import random
file = open('Text/Walden.txt', 'r')
walden = file.read()
walden = walden.split()
def makePairs(arr):
pairs = []
for i in range(len(arr)):
if i < len(arr) - 1:
temp = (arr[i], arr[i + 1])
pairs.append(temp)
return pairs
def generate(cfd, word='the', num=500):
for i in range(num):
# make an array with the words shown by proper count
arr = []
for j in cfd[word]:
for k in range(cfd[word][j]):
arr.append(j)
print(word, end=' ')
# choose the word randomly from the conditional distribution
word = arr[int((len(arr)) * random.random())]
pairs = makePairs(walden)
cfd = nltk.ConditionalFreqDist(pairs)
generate(cfd)