博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python】Markov text generator马尔科夫文字生成器
阅读量:5080 次
发布时间:2019-06-12

本文共 2160 字,大约阅读时间需要 7 分钟。

  遍历一段文字,统计每个字后面出现的字和其次数,当前一个字确定的时候,计算后一个字出现的百分比,用这个百分比作为文字生成器中后一个字出现的概率进行文字生成

1 from random import randint 2  3  4 def makeDict(text): 5     #替换换行符和引号 6     text = text.replace('\n', ' ') 7     text = text.replace('\“', '') 8     text = text.replace('\”', '') 9 10     punc = [',', '。', '?', ';', ':', '!']11     for symbol in punc:12         text = text.replace(symbol, ' '+symbol+' ')13 14     words = [word for word in text if word != '']15 16     wordict = {}17     for i in range(1, len(text)):18         if words[i-1] not in wordict:19             wordict[words[i-1]] = {}20         if words[i] not in wordict[words[i-1]]:21             wordict[words[i-1]][words[i]] = 022         wordict[words[i-1]][words[i]] += 123 24     return wordict25 26 27 def wordLen(wordict):28     sum = 029     for key, value in wordict.items():30         sum += value31     return sum32 33 34 def retriveRandomWord(wordict):35     """36     感觉这个函数计算每个单词的机率的思路太帅了37     :param wordict:38     :return:39     """40     randindex = randint(1, wordLen(wordict))41     for key, value in wordict.items():42         randindex -= value43         if randindex <= 0:44             return key45 46 with open('test.txt','r') as f:47     t = f.read()48 text = str(t)49 wordict = makeDict(text)50 51 length = 20052 chain = ''53 currentword = '想'54 for i in range(0, length):55     chain += currentword56     currentword = retriveRandomWord(wordict[currentword])57 58 with open("res.txt",'w') as file:59     file.write(chain)60 print(chain)

 

这是利用《百年孤独》第一章的文字作为来源,生成的结果

——————————————————————————————————————————————————————————————————————

想发明把记得连同意地 自训练他完全村子 ,

来 乌苏娜和茄子和魔 衣衫褴楼的事长月里的大镜 来了 , ,
他完全    三枚殖民宜今还了恼人烟的概念头的诚实际上校站在梅尔加德斯教他另做了耐心得意地向他大葫 , ,
这些男人以后 但实际上校站在雨季的一个小时刻使送给政府 , 想证实了暑 , 霍·阿·布恩蒂亚还了 , , 。 。
帐篷门口 , , “科学家都盖在宅子和各部把这种理论 他告诫说:他的回来

————————————————————————————————————————————————————————————————————————

想发出的时候起 他带者两块磁铁 他所谓 。 , ,

在街道的最新开辟的想起父亲手里忙得喘不走到吃午饭的唯一的仪器 涉过山岭 。 。
说:他知道中间里的反 “只大镜  乌苏娜失败之后等待在村边搭起来踱去了一个月份
《指指瘦得厌烦了耐心 , “科学家的仪 , 沿着遍布恩蒂亚紧张的居民地努力 ,
霍·布恩蒂亚都有力 的马上 人的唯一座农舍走出来将会有力 向观众出的吉卜赛人 苍的回了自言自然停辍 今后 “

 

参考资料:《Python网络数据采集》P106

转载于:https://www.cnblogs.com/fcyworld/p/6280244.html

你可能感兴趣的文章
(转)视频监控相关文章
查看>>
Python异常处理体系
查看>>
centos7.0 增加/usr分区的容量减少home分区的大小
查看>>
C#在线获取歌词(转)
查看>>
zabbix---添加主机
查看>>
如何查看SQL SERVER数据库当前连接数
查看>>
python开发记录第一篇
查看>>
python 对象/变量&赋值的几点思考
查看>>
斐波那契数列以及斐波那契数列的衍生形式 利用矩阵快速幂求解
查看>>
javascript面向对象(三):非构造函数的继承
查看>>
Docker与自动化测试及其测试实践
查看>>
chrome保存网页为单个文件(mht格式)
查看>>
Mysql的row_format(fixed与dynamic)
查看>>
Linux命令应用大词典-第42章 PostgreSQL数据库
查看>>
负数的二进制表示
查看>>
create-react-app设置proxy反向代理不起作用
查看>>
Node.js之http模块中类的关系详解之客户端(下)
查看>>
web 页面传值方法
查看>>
Spring MVC数据绑定大全 .
查看>>
使用log4j的邮件功能
查看>>