首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计一个聊天机器人来提出正确的问题来猜测一个对象

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

Stack Overflow用户
提问于 2019-07-26 03:49:16
回答 1查看 66关注 0票数 1

我正试图设计一个聊天机器人,以尽量少地问一些问题来猜测一个对象--一个人类用户。

假设我有这样一个数据库

代码语言:javascript
复制
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??),聊天机器人需要知道每个项目的概率。

我不太清楚如何将未知的特征向量提供给模型,并要求它进行预测。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-27 02:20:41

我找到了解决问题的办法。答案是朴素的贝斯。这个数学可以找到这里

X是一个特征

Y是问题中的对象。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57212933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档