我正试图设计一个聊天机器人,以尽量少地问一些问题来猜测一个对象--一个人类用户。
假设我有这样一个数据库
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%
一旦概率足够高,聊天机器人就会停下来,把所有的概率都吐出来。
第一个问题:我需要得到每个标签的概率,只回答几个问题。在我问完第一个问题后说:“它是红色的吗?”鉴于到目前为止我们所知道的60% = Prob(Apple,1??),聊天机器人需要知道每个项目的概率。
我不太清楚如何将未知的特征向量提供给模型,并要求它进行预测。
第二个问题:我想问的问题最少,所以理想情况下,我想问一个可以真正区分的问题。我该如何决定下一个问题。
似乎传统的机器学习模式不起作用。你会如何设计这样的系统?
发布于 2019-07-27 02:20:41
我找到了解决问题的办法。答案是朴素的贝斯。这个数学可以找到这里
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, quithttps://stackoverflow.com/questions/57212933
复制相似问题