Python 2.7 文本预测算法中的程序错误
Program error in text prediction algorithm in Python 2.7
我从 this question 中看到了以下代码:
from collections import defaultdict
import random
class Markov:
memory = defaultdict(list)
separator = ' '
def learn(self, txt):
for part in self.breakText(txt):
key = part[0]
value = part[1]
self.memory[key].append(value)
def ask(self, seed):
ret = []
if not seed:
seed = self.getInitial()
while True:
link = self.step(seed)
if link is None:
break
ret.append(link[0])
seed = link[1]
return self.separator.join(ret)
def breakText(self, txt):
#our very own (ε,ε)
prev = self.getInitial()
for word in txt.split(self.separator):
yield prev, word
prev = (prev[1], word)
#end-of-sentence, prev->ε
yield (prev, '')
def step(self, state):
choice = random.choice(self.memory[state] or [''])
if not choice:
return None
nextState = (state[1], choice)
return choice, nextState
def getInitial(self):
return ('', '')
当我 运行 我系统上的代码时,示例不起作用。
当我 运行 bob.ask() 行时,我收到一条错误消息,提示 ask() 需要 2 个参数,而它只有一个。此外,当我 运行 bob.ask("Mary had") 部分时,我得到 ' ' 作为输出。
P.S 我 运行 代码与答案中的完全一样。
有人能帮忙吗?谢谢!
我认为你是对的。它不起作用,因为 ask
需要一个参数 (seed
),如
所定义
def ask(self, seed):
这一行
if not seed:
seed = self.getInitial()
建议您可以通过为 seed
设置默认参数来解决此问题。试试这个:
def ask(self, seed=False):
这对我有用。
我从 this question 中看到了以下代码:
from collections import defaultdict
import random
class Markov:
memory = defaultdict(list)
separator = ' '
def learn(self, txt):
for part in self.breakText(txt):
key = part[0]
value = part[1]
self.memory[key].append(value)
def ask(self, seed):
ret = []
if not seed:
seed = self.getInitial()
while True:
link = self.step(seed)
if link is None:
break
ret.append(link[0])
seed = link[1]
return self.separator.join(ret)
def breakText(self, txt):
#our very own (ε,ε)
prev = self.getInitial()
for word in txt.split(self.separator):
yield prev, word
prev = (prev[1], word)
#end-of-sentence, prev->ε
yield (prev, '')
def step(self, state):
choice = random.choice(self.memory[state] or [''])
if not choice:
return None
nextState = (state[1], choice)
return choice, nextState
def getInitial(self):
return ('', '')
当我 运行 我系统上的代码时,示例不起作用。
当我 运行 bob.ask() 行时,我收到一条错误消息,提示 ask() 需要 2 个参数,而它只有一个。此外,当我 运行 bob.ask("Mary had") 部分时,我得到 ' ' 作为输出。
P.S 我 运行 代码与答案中的完全一样。
有人能帮忙吗?谢谢!
我认为你是对的。它不起作用,因为 ask
需要一个参数 (seed
),如
def ask(self, seed):
这一行
if not seed:
seed = self.getInitial()
建议您可以通过为 seed
设置默认参数来解决此问题。试试这个:
def ask(self, seed=False):
这对我有用。