设计一个聊天机器人以提出正确的问题以便猜测对象

时间:2019-07-26 03:49:16

标签: chatbot

我正在尝试设计一个聊天机器人,以询问最少的问题来猜测人类用户所想的对象

假设我有一个这样的数据库

Q1 Q2 Q3 Q4 Label
1  0  0  1  Apple
0  0  0  1  Apple
0  1  1  1  Mango

在哪里Q1是“红色”,Q2是“柔软”吗,Q4是“甜”。在实际的数据库中可能有成千上万的问题,成千上万的标签。

聊天机器人会问一个问题
用户将回答是或否。

用户通过记住苹果开始游戏
聊天机器人问了第一个问题“它是红色的吗?”
人:是的
Chatbot计算到目前为止的概率。苹果60%,芒果0%
由于苹果现在具有最高的可能性,它将提出一个问题以帮助确认它是否真的是“甜”吗?
人:是的
Chatbot更新概率。苹果90%。芒果40%
一旦概率足够高,聊天机器人将停止并吐出它具有的所有概率

第一个问题:我只需要回答几个问题就可以得出每个标签的概率。在我问第一个问题“红色”之后说。鉴于我们到目前为止所知道的,聊天机器人需要知道每个项目的概率 60%= Prob(苹果,[1???])
我不太确定如何向模型输入未知的特征向量,并要求模型进行预测

第二个问题:我想问的问题最少,所以理想情况下,我想问一个真正有区别的问题。如何确定要问的下一个问题。

似乎传统的机器学习模型不起作用。您将如何设计这样的系统?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的办法。答案是幼稚的贝叶斯。 数学可以找到here
x是功能
y是有问题的对象

while (True):
  # sort the object based on probability
  # print out the objects with their probability
  # top_object = object with highest probability
  # Get the x such that P(x=1|top_object) is the highest, and ask "do that object have x"
  # Wait for input from user 
  # Then for each object, update probability prob = prob * P(x=input|y)
  # remove x from possible feature can ask
  # if no more feature left, quit