马尔可夫模型(Markov Model)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域。经过长期发展,尤其是在语音识别中的成功应用,使它成为一种通用的统计工具。

以下利用一篇英文演讲来实现简单得文字生成器,结果其实是一个胡言乱语得结果,但我们可以通过这个类型粗略理解机器学习,首先英文演讲文章的链接:http://pythonscraping.com/files/inaugurationSpeech.txt

以及我上一篇处理该文章的博客链接:http://www.cnblogs.com/ybf-yyj/p/7399149.html

以下以生成100个单词的马尔科夫链为例:

#-*- coding:utf-8 -*-
from urllib2 import urlopen
from random import randint #统计所有单词出现的次数总和
def wordListSum(wordList):
sum=0
for word,value in wordList.items():
print word,value
sum+=value
return sum def retrieveRandomWord(wordList):
#在1到所有单词出现总和之间选着一个数字,保证每次输出句子不一样
randIndex=randint(1,wordListSum(wordList))
#通过randIndex随机选择一个字母返回
for word,value in wordList.items():
randIndex-=value
if randIndex<=0:
return word def buildWordDic(text):
#清洗\n和 "
text=text.replace("\n"," ")
text=text.replace("\"","")
#保证标点符号和前面的单词在一起,不被剔除
punctuation=[',','.',';',':']
for symbol in punctuation:
text=text.replace(symbol," "+symbol+" ")
#切割文章
words=text.split(" ")
#除去空单词
words=[word for word in words if word !=""]
#定义一个总词典
wordDict={}
for i in range(1,len(words)):
#为新单词再创一个新词典
# 比如句子为:How do you do.
if words[i-1] not in wordDict:
#结果应该为:{'How':{},'do':{}}
wordDict[words[i-1]]={} #将下一个单词加入前一个单词的词典中
if words[i] not in wordDict[words[i - 1]]:
# 结果应该为:{'How':{'do':0},'do':{'you':0,'.':0}}
wordDict[words[i-1]][words[i]]=0
# 结果应该为:{'How':{'do':1},'do':{'you':1,'.':1}}
wordDict[words[i - 1]][words[i]]=wordDict[words[i-1]][words[i]]+1
return wordDict text=str(urlopen('http://pythonscraping.com/files/inaugurationSpeech.txt').read().decode('utf-8'))
wordDict=buildWordDic(text) length=100
chain=''
#随便选择一个单词开头
currentword='I'
for i in range(0,length):
chain +=currentword+' '
currentword=str(retrieveRandomWord(wordDict[currentword])) print(chain)

N元马尔科夫链的实现的更多相关文章

  1. 从随机过程到马尔科夫链蒙特卡洛方法(MCMC)

    从随机过程到马尔科夫链蒙特卡洛方法 1. Introduction 第一次接触到 Markov Chain Monte Carlo (MCMC) 是在 theano 的 deep learning t ...

  2. 【HDOJ6229】Wandering Robots(马尔科夫链,set)

    题意:给定一个n*n的地图,上面有k个障碍点不能走,有一个机器人从(0,0)出发,每次等概率的不动或者往上下左右没有障碍的地方走动,问走无限步后停在图的右下部的概率 n<=1e4,k<=1 ...

  3. 蒙特卡洛马尔科夫链(MCMC)

    蒙特卡洛马尔科夫链(MCMC) 标签: 机器学习重要性采样MCMC蒙特卡洛 2016-12-30 20:34 3299人阅读 评论(0) 收藏 举报  分类: 数据挖掘与机器学习(41)  版权声明: ...

  4. MCMC(二)马尔科夫链

    MCMC(一)蒙特卡罗方法 MCMC(二)马尔科夫链 MCMC(三)M-H采样和Gibbs采样(待填坑) 在MCMC(一)蒙特卡罗方法中,我们讲到了如何用蒙特卡罗方法来随机模拟求解一些复杂的连续积分或 ...

  5. 《principles of model checking》中的离散时间马尔科夫链

    <principles of model checking>中的离散时间马尔科夫链 说明:此文为我自学<principles of model checking>第十章内容的笔 ...

  6. 13张动图助你彻底看懂马尔科夫链、PCA和条件概率!

    13张动图助你彻底看懂马尔科夫链.PCA和条件概率! https://mp.weixin.qq.com/s/ll2EX_Vyl6HA4qX07NyJbA [ 导读 ] 马尔科夫链.主成分分析以及条件概 ...

  7. 马尔科夫链蒙特卡洛(Markov chain Monte Carlo)

    (学习这部分内容大约需要1.3小时) 摘要 马尔科夫链蒙特卡洛(Markov chain Monte Carlo, MCMC) 是一类近似采样算法. 它通过一条拥有稳态分布 \(p\) 的马尔科夫链对 ...

  8. Chapter 4 马尔科夫链

    4.1 引言 现在要研究的是这样一种过程: 表示在时刻的值(或者状态),想对一串连续时刻的值,比如:,, ... 建立一个概率模型. 最简单的模型就是:假设都是独立的随机变量,但是通常这种假设都是没什 ...

  9. 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程

    写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...

随机推荐

  1. 简单的dialog,类似alert弹框

    function alertPop(content){ $.dialog({ title:"提示", width:400, height:100, padding:'5px', c ...

  2. 2018-01-13 view绘制流程-activity启动流程-window-decorView-ViewRootImpl关系

    1.activity启动流程: https://www.jianshu.com/p/927ca995bca6 http://blog.csdn.net/qian520ao/article/detail ...

  3. (转)MYSQL远程登录权限设置

    转自:http://blog.csdn.net/zhengnz/article/details/6308773 Mysql默认关闭远程登录权限,如下操作允许用户在任意地点登录: 1. 进入mysql, ...

  4. 20169207《Linux内核原理与分析》第三周作业

    这周主要对于以往的知识进行了复习,包括开始的Linux基础,以及对需要学习的新知识进行了复习,也对markdown的语法进行了初步的了解.开始学习markdown的一些基本语法和Linux的一些常用命 ...

  5. 配置SecureCRT密钥连接Linux

    SSH公钥加密的方式使得对方即使截取了帐号密码,在没有公钥私钥的情况下,依然无法远程ssh登录系统,这样就大大加强了远程登录的安全性. 1.        编辑配置文件 /etc/ssh/sshd_c ...

  6. HDOJ1024--Max Sum Plus Plus(动态规划)UnSolved

    Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we ...

  7. Python自动化开发 - select模块

    介绍: IO-多路复用:监听多个socker对象是否有变化,包括可读.可写.发送错误 Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个 ...

  8. hdu 1.2.4

    采用异或... #include<stdio.h> int main() { //freopen("input.txt","r",stdin); i ...

  9. Dacapao 实验集(9.12 版本) 能不能给个网址?【内存分析实验】

    网址 Dacapao 实验集 引用 以前看到的文章,如果使用这个基准程序,引用文献很多时候是一篇论文: Blackburn S M, Garner R, Hoffmann C, et al. The ...

  10. mysql 多个and的简写

    select * from test where name='zj' and sex='2'; 我以前也经常用这种写法,今天爬出去看了一下某位人写的,用了一下也挺好用的 下面这种写法,一一对应关系