首页 > 解决方案 > 设计一个聊天机器人来提出正确的问题以猜测一个对象

问题描述

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

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

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

其中 Q1 是“它是红色的吗”,Q2 是“它柔软吗?”,Q4 是“它是否甜美”。在真实数据库中可能有数千个可能的问题,并且可能有数千个标签。

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

用户通过想到苹果来开始这个游戏
聊天机器人问了第一个问题“它是红色的吗?”
人类:是
的,聊天机器人计算到目前为止的概率。苹果 60%,芒果 0%
既然苹果现在的概率最高,它会问一个有助于判断它是否真的是苹果的问题,“甜吗”?
人类:是
的聊天机器人更新概率。苹果 90%。芒果 40%
一旦概率足够高,聊天机器人就会停下来吐出它所有的概率

第一个问题:我需要得到每个标签的概率,只回答几个问题。在我问第一个问题“它是红色的”之后说。鉴于我们目前所知道的,Chatbot 需要知道每个项目的概率 60% = Prob(Apple, [1 ? ? ?])
我不太确定如何将具有未知数的特征向量输入模型并要求它进行预测

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

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

标签: chatbot

解决方案


我找到了问题的解决方案。答案是朴素贝叶斯。数学可以在这里
找到 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

推荐阅读