python实现马耳可夫链算法实例分析
本文实例讲述了python实现马耳可夫链算法的方法。分享给大家供大家参考。具体分析如下:
在《程序设计实践》(英文名《The Practice of Programming》)的书中,第三章分别用C语言,C++,AWK和Perl分别实现了马耳可夫链算法,来通过输入的文本,“随机”的生成一些有用的文本。
说明:
1. 程序使用了字典,字典和散列可不是一个东西,字典是键值对的集合,而散列是一种能够常数阶插入,删除,不过可以用散列来实现字典。
2. 字典的setdefault()方法使得程序少了许多条件判断。
3. random.choice()可以随机取出一个序列中的元素。
4. 每两个前缀词确定一个后缀。
实现代码:
import random
import sys
MAXGEN = 10000
NONWORD = '\n'
w1 = w2 = NONWORD
statetab = {}
text = sys.stdin.read()
words = text.split()
for word in words:
statetab.setdefault((w1, w2),[]).append(word)
w1, w2 = w2, word
# add tail
statetab.setdefault((w1, w2),[]).append(NONWORD)
# show mar words
w1 = w2 = NONWORD
for i in xrange(MAXGEN):
suf = statetab[(w1,w2)]
t = random.choice(suf)
if t == NONWORD:
break
print t
w1, w2 = w2, t
希望本文所述对大家的Python程序设计有所帮助。
相关文章
python 使用elasticsearch 实现翻页的三种方式
这篇文章主要介绍了python 使用elasticsearch 实现翻页的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-07-07
PyCharm:method may be static问题及解决
这篇文章主要介绍了PyCharm:method may be static问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-07-07
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
这篇文章主要介绍了为何人工智能(AI)首选Python,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04


最新评论