【发布时间】:2011-02-09 03:03:09
【问题描述】:
我正在考虑编写一个程序,让用户思考一个对象(一个物理对象),然后询问有关该对象的问题并试图弄清楚用户在想什么。 (类似于http://20q.net)
我尝试在 Python 中执行此操作,但认为我的方法很幼稚并且效率非常低。你们会怎么做呢?
【问题讨论】:
我正在考虑编写一个程序,让用户思考一个对象(一个物理对象),然后询问有关该对象的问题并试图弄清楚用户在想什么。 (类似于http://20q.net)
我尝试在 Python 中执行此操作,但认为我的方法很幼稚并且效率非常低。你们会怎么做呢?
【问题讨论】:
要有效地做到这一点,需要一种称为Kullback-Liebler Divergence 的更高级的概率方法。应用于决策树(这是您想要做的)它通常称为 Information Gain。
但不要让这阻止你!对决策树的实现样本进行一些搜索,然后从那里开始。在你解决 20 个问题之前,我会编写一个更简单的程序。
另外,看看http://www.20q.net/。单击“用英语思考”,然后单击“经典 20Q”。有时候,这很可怕。
【讨论】:
听起来你想制作一个计算机化的 21 题游戏。我会用问题和答案树来做。
这是一篇关于在 python 中实现树的不错的 stackoverflow 文章 How can I implement a tree in Python? Are there any built in data structures in Python like in Java?
【讨论】:
2^21 - 1 问题和2^21 答案保存在内存中,更重要的是写在某个地方。