markovgen生成伪随机文本

Generating pseudo random text with Markov chains using Python相应的文件可以在对应的链接中找到

Wolfram给出的定义

 

 

markovgen算法是

  1. 有一个文本将用作语料库,供我们选择下一个转换。
  2. 从文本中的两个连续单词开始。 最后两个词构成当前状态。
  3. 产生下一个单词是马尔科夫转换。 要生成下一个单词,请查看语料库,并找出在给定两个单词之后出现的单词。 随机选择其中之一。
  4. 重复2,直到生成所需大小的文本。

安装: 

pip install markovgen

In [3]:

import markovgen
In [4]:

file_ = open(r'G:\jeeves.txt')
In [5]:

markov = markovgen.Markov(file_)
In [6]:

markov.generate_markov_text()
Out[6]:
"no doubt that Rocky's correspondence was hot stuff. I called to George, and I--when\n"

 

马尔可夫算法怎样呢?

  • 最后两个单词是当前状态。
  • 接下来的单词仅仅依赖最后两个单词,也就是当前状态。
  • 接下来的单词是从语料库的统计模型中随机选择的。

 

 这个文本对应的语料库为

{('The', 'quick'): ['brown'],
 ('brown', 'fox'): ['jumps', 'who', 'who'],
 ('fox', 'jumps'): ['over'],
 ('fox', 'who'): ['is', 'is'],
 ('is', 'slow'): ['jumps'],
 ('jumps', 'over'): ['the', 'the'],
 ('over', 'the'): ['brown', 'brown'],
 ('quick', 'brown'): ['fox'],
 ('slow', 'jumps'): ['over'],
 ('the', 'brown'): ['fox', 'fox'],
 ('who', 'is'): ['slow', 'dead.']}

提示:

  • 我们选择的文本越大,每次转换的选择就越多,并且生成的文本越好。
  • 可以将状态设置为取决于一个单词,两个单词或任意数量的单词。 随着每种状态中单词的数量增加,生成的文本的随机性会降低。
  • 不要删除标点符号等。它们会导致更具代表性的语料库和更好的随机文本。 

 

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页