我正在尝试设计一个聊天机器人,以询问最少的问题来猜测人类用户所想的对象
假设我有一个这样的数据库
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???])
我不太确定如何向模型输入未知的特征向量,并要求模型进行预测
第二个问题:我想问的问题最少,所以理想情况下,我想问一个真正有区别的问题。如何确定要问的下一个问题。
似乎传统的机器学习模型不起作用。您将如何设计这样的系统?
答案 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