您可能想调查一下马尔可夫链 http://en.wikipedia.org/wiki/Markov_chain作为机器人人工智能的基础。我很久以前写过一些东西(我对这些代码一点也不感到自豪,并且需要一些 mods 才能在 Python > 1.5 上运行),这对您来说可能是一个有用的起点: http://sourceforge.net/projects/benzo/http://sourceforge.net/projects/Benz/ http://sourceforge.net/projects/benzo/
编辑:这是 Python 中马尔可夫链的一个最小示例,它接受来自 stdin 的输入,并根据输入中单词连续的概率输出文本。它针对 IRC 风格的聊天日志进行了优化,但通过它运行任何合适大小的文本都应该演示以下概念:
import random, sys
NONWORD = "\n"
STARTKEY = NONWORD, NONWORD
MAXGEN=1000
class MarkovChainer(object):
def __init__(self):
self.state = dict()
def input(self, input):
word1, word2 = STARTKEY
for word3 in input.split():
self.state.setdefault((word1, word2), list()).append(word3)
word1, word2 = word2, word3
self.state.setdefault((word1, word2), list()).append(NONWORD)
def output(self):
output = list()
word1, word2 = STARTKEY
for i in range(MAXGEN):
word3 = random.choice(self.state[(word1,word2)])
if word3 == NONWORD: break
output.append(word3)
word1, word2 = word2, word3
return " ".join(output)
if __name__ == "__main__":
c = MarkovChainer()
c.input(sys.stdin.read())
print c.output()
从这里可以很容易地插入持久性和 IRC 库,并拥有您正在谈论的机器人类型的基础。