Python 从文本文件构建马尔可夫模型?

Python 从文本文件构建马尔可夫模型?,python,Python,我有一项任务,要构建一个程序,该程序基于输入文件读取文本,然后生成新文本。字典应该根据输入文件中的文本,将n个字母字符串映射到可以跟随该字符串的字母列表。到目前为止,我已经 def create_dic(): n = order_entry.get() inputfile = file_entry.get() #name of input file lines = open(inputfile,'r').read() #reads input file into stri

我有一项任务,要构建一个程序,该程序基于输入文件读取文本,然后生成新文本。字典应该根据输入文件中的文本,将n个字母字符串映射到可以跟随该字符串的字母列表。到目前为止,我已经

def create_dic():
    n = order_entry.get()
    inputfile = file_entry.get() #name of input file
    lines = open(inputfile,'r').read() #reads input file into string
    model = {} #empty dictionary to build Markov model

对于输入中的每个n字符序列,我必须“在字典中查找它,以获得可能的后续字符列表并获得下一个字符。”我对字典开始为空时在字典中查找字符串的指令感到困惑?字典里不是什么都没有吗?

既然这是一项作业,我就给你一些引导性的问题,而不是答案。正如@Quilliom所说,“填充字典。”

当您想要使用马尔可夫模型时,您希望在字典中搜索哪个键

当你搜索那把钥匙时,你想取回什么


“字典应该根据输入文件中的文本,将n个字母串映射到字符串后面的字母列表”这句话回答了这些问题。这意味着您必须对输入文件做一些工作,以确定如何提取字典键以及它们应该映射到什么

这肯定不是最好的方法,但你可以从这个开始

  • 字母基础:哪个字母排在第一位最多(对于整个数据)
单词的第一个字符(字母)是可数实体。检查哪个字符(字母)记录最多是合理的。用这个开始生成的文本。然后看看哪个字母最成功这个等等。还可以取平均单词长度,并围绕该长度分布生成的单词

为了获得更好的结果:

  • 基于n-gram:哪一个n-gram最有可能位于其他n-gram之前(您也可以将其扩展为句子)

这可能是你的工作:填充字典。这本书有一章介绍如何实现类似的程序。不同之处在于,它是用文字而不是字符来工作的,但在其他方面,工作是非常相似的。(AFAICT,贝尔实验室的网站-----自2015-04-04年以来一直处于擅离职守状态。)当您使用马尔可夫模型时,您将搜索n个字符的字符串,该值将是可能的后续字母列表,对吗?之后的说明如下:“从输入中获取序列后面的下一个字符,将该字符添加到后续字符列表中,然后将该列表放回字典。”因此,看起来这就是填充字典的方式。我很难理解你是如何得到任何列表的。对于n=1,当您查找字典时,它是空的,因此没有可能的继承者列表。所以字典还是空的。