【发布时间】:2018-07-14 12:12:00
【问题描述】:
我有这段代码,旨在通过马尔可夫链/进程生成文本。它编译得很好,没有错误,在终端上运行没有错误,但不产生任何响应/返回?
我通过进入保存 Markov.py 文件的目录并在终端上运行 Python3 Markov.py 来执行此操作,如下所示
我知道我做错了,但不确定是什么,我还需要调用这些函数吗?
import random
class Markov (object):
def __init__(self,order):
self.order = order
self.group_size = self.order + 1
self.text = "testFile.txt" #The training text
self.graph = {} #Holds the information learnt
return
def train (self,filename):
self.text = file (testFile.txt).read () .split()
self.text = self.text + self.text [ : self.order]
for i in range (0, len (self.text) - self.group_size):
key = tuple (self.text [i : i + self.order])
value = self.text[i + self.order]
if key in self.graph:
self.graph [key].append (value)
else:
self.graph [key] = [value]
def generate (self, length):
index = random.randint (0, len(self.text) - self.order)
result = self.text[index : index + self.order]
for i in range (length):
state = tuple(result[len(result) - self.order:])
next_word = random.choice(self.graph[state])
result.append(next_word)
return " ".join (result[self.order : ])
x = Markov(2)
files = open("testFile.txt", "r")
filename = files
x.train(filename)
print(x.generate(10))
【问题讨论】:
-
是的,你需要调用函数。现在没有“主”程序。但这你真的会在 Python 速成课程中学到。投入一些时间可能是件好事......
-
当然它不会打印任何东西,因为您只定义了一些类。需要在代码末尾创建类的实例
-
你这里的代码只有一个导入、一个类定义和两个函数定义。但是没有执行任何语句,因为从未调用函数并且从未实例化该类。添加一些实际执行某些命令和/或使用类的行。
标签: python markov-chains markov