如何制作一个聊天机器人？
题主的目标是想制作一个专属自己的聊天机器人。首先，对目标进行拆解，共有2点： 1、聊天机器人，即会聊天的机器人，你能像跟人聊天的方式，与它聊天（机器与人的区别在于人具有理解能力，有情感会思考） 2、属于自己的，即这个聊天机器人只跟题主说话同时只有题主可以教他说话，别人不可以 其次，对于这2点，会延伸出一系列的相关点。比如：当前聊天机器人的现状比如困境有哪些？需要用到什么技术，这些技术是怎样的，能支持到什么程度，是否达成目标？或者当前技术有什么挑战？有什么替代方案吗？ 当前由于技术不成熟，聊天机器人还无法完全做到和人一样的聊天方式，即使市面上有很多平台可以自建chatbot，如微软的小冰（闲聊目前最好）、苹果的Siri、亚马逊的Amazon echo等，他们都可以进行聊天，但整体体验下来以下现状： 大家常说人工智能的三大要素，包括数据、算法和算力。而在聊天机器人的技术体系下，最关键的三个因素应该是人工、数据和算法。在现阶段，人工是大于数据，更大于算法的。工程化才是一个产品成功的关键。接下来，我们讨论下现有聊天机器人所涉及的技术，但不会牵扯到技术细节。 聊天机器人一定是一个技术整合的产物，在一个有很多串行模块的系统中，有个很重要的问题是错误传递。比如说有 5 个串行模块，每个模块的性能都是 95%，最终的结果却只有 77%。所以，在设计一个聊天机器人架构的时候也需要尽可能避免模块的串行化。同时，对于多轮交互架构，也需要有更加成熟的设计。 普及完当前聊天机器人的困境和所需技术，言归正传，回到刚才目标拆解的2点： 1、做一个聊天机器人，毋庸置疑需要创建一个对话系统，对话系统由语音+NLP（自然语言理解）两部分组成（主要是上文的声学技术部分） 2、做一个属于自己的聊天机器人，这里涉及到你给机器人设置自定义问答。同时“只有题主可以教他说话，别人不可以”，需要运用声纹识别技术，即识别到特定人的声纹信息，这样聊天机器人就能与特定人对话或特定人能训练机器人的对话的回复策略。当前技术都是可做的，只需要设计一个自定义问答功能（优必选悟空机器人已有训练营功能，容许我偷偷卖个小广告哈哈）和接入对应的声纹识别sdk（后续规划会接入该能力到悟空机器人） 总的来说，在当前技术不成熟的阶段，要做一款让人稍微满意的聊天机器人，最关键的是人工，人工是大于数据，更大于算法的因素。那么，讲到落地，让我想起了一句流行的话「技术不够，产品来凑；产品不够，运营来凑」。 既然聊天机器人受限于技术无法达到人类期望值，那么是否可以从产品设计的角度上，让用户不去关注技术表现本身，而是从其他维度对产品产生粘性？答案是肯定的。做产品的关键在于「高出用户期望值」，这显然对于AI产品是不友好的，因为用户期望值太高了，所以要在其他层面上去想办法，比如产品策略：让聊天机器人具有生命感，让其被人格化、IP化后，这样用户不仅仅关注对话，而是会从更多的需求层面产生对产品的粘性和更好的用户体验 接下来，结合我自己在做优必选悟空机器人聊天模块的实际案例，给大家分享我是如何从0开始构建悟空机器人的聊天体系。 首先给大家介绍悟空机器人：悟空机器人的定位是一款由优必选打造的具有生命感、人格和孙悟空IP的便携式智能机器人，可应用于家庭、社交、教育、办公等多个场景 既然悟空机器人是一款具有生命感、人格化、IP化的机器人，那体现在哪里呢？ 由于大众免费IP家喻户晓，且孙悟空神通广大能力强的特点符合产品定位，于是我们采用孙悟空的IP，将悟空机器人塑造成型。我从点，线，面三块脑爆丰富悟空的人设，同时在丰富人设时，分析并参考了市面上其他机器人的性格特点（如小米小爱同学很皮、微软小冰毒蛇性格等） 这里的点指的是悟空的性格、名字背后等的具体细节 作为具有人格的人物，他的过去发生了什么？有什么故事？生产的过程中是否加入了什么新东西？ 我设定：有那么一块来自外太空，被赋予了外星力量的陨石坠落在地球。 来自中国的科学家发现这块陨石经过复杂的自然变化，有着极其精密的纹路，是做机器人的最好材料，随后科学家们在实验室中将这块陨石的精华雕琢成机器人的智慧之源，再结合了优必选科学家们的各种零件技术，最终科学家做出了【悟空】。 例子： 机器人怕闪电：有一次科学家在给【悟空】测试智商的时候，不慎闪电击中了实验室的避雷针，当时科学家们还没有给【悟空】装上电路保护的设备，所以【悟空】当时直接短路了，昏迷了很久，虽然后来科学家们终于给【悟空】装上了电路保护装置，但【悟空】从那之后就一直比较害怕闪电了。 同时机器人因为没有散热风扇但需散热，所以怕热。同时也怕水，因为悟空没有防水装置，易沾水使得短路而昏迷，所以【悟空】除了害怕闪电以外还很怕水。 问机器人：你喜欢看什么电影？ 答：《变形金刚》《机械姬》《西部世界》，因为里面可以看到很多未来机器人的世界： 有趣的事情还有很多，比如：你对他说脏话时，悟空会傲娇地说：优必选的科学家在打造我的时候，没给我植入骂人的芯片，所以暂时斗不过你，不要太嚣张哼(体现他傲娇，不服输的特点） 即社交，悟空的社交关系，我们认为作为人，应该有自己的社交关系，比如爸爸是谁，妈妈是谁，姐姐是谁等，以及和其余机器人关系（优必选的jimu机器人、cruzr机器人等） 最终将点、线、面结合起来，造就了悟空是一个傲娇、机智聪明、好胜心强不愿意轻易服输的6岁小男孩 其核心在于模拟生命的主要特征，以多形态和多模态进行交互。 在不同的性格和人设下，悟空机器人的交互体验变得更为丰富。比如多模态交互能力会进一步增强悟空机器人对用户的认知和表现力。悟空机器人能够通过麦克风阵列、摄像头听得到、看得见，使其能够综合感知用户意图。同时，利用知识图谱，悟空机器人能够和人以及周围环境进行「真实自然」的交流，包括规划、推理、联想、情感和学习能力，具有非常强的可用性和可交互性。再进一步，悟空机器人可以在不同场景比如开机活跃状态下展示不同的形象，除了自然语言交流，还可以进行各种小动作、舞蹈、唱歌等更多样的体现，从而给用户超预期的体验感。 讲完悟空机器人整体的特点，接下来聊聊具体怎么做聊天模块的 根据业务的不同，悟空机器人聊天模块分为以下三种类型： 悟空机器人的语音服务接的是腾讯叮当，因此，任务完成类型除了接入叮当自带的天气、音乐等服务技能，结合机器人本体的特点，我也会在腾讯叮当开放平台自定义技能并制定交互策略，比如： 让悟空跳舞，需要设计技能对应的领域（机器人控制）、用户问法的语料（如“给我跳个舞”），用户意图信息（跳舞），最后在用户触发这个跳舞意图的语音指令后，机器人与人之间时如何交互呢？如何结合人设去设计回复策略呢？比如，为了增加悟空的趣味性和人性，我会加上“瞧我的”，“看好啦”等回复语，并使其随机触发，让用户觉得，哟，这小机器人这么傲娇爱耍酷，然后开始机器人的表演。 问答类型主要是百科问答和定制问答，比如定制问答：给悟空植入知乎优秀问答，用户根据固定的语料触发，就可以听到悟空播报知乎大咖的精华内容 闲聊类型主要用于解决用户的情感倾诉需求，由于其开放性，其技术难度和挑战性要远高于其它类型对话，目前主要是检索和生成两种方案。 与机器人闲聊的场景主要出现在：人当下具有特定的情感诉求如不开心、无聊、孤独寂寞时，但又不想与身边的人倾诉，此时，人与机器人之间是一个平等且互信任的关系，且人想从这种关系中获取调节剂等。 其实闲聊也可以当作是产品设计，在什么样的场景下，用户有哪些需求，怎么通过语义设计的应答帮助用户解决问题。我的思路是：先通过竞品分析调研好的语义理解怎么样，总结好的语义理解评判标准，接着根据场景分析用户需求，并学以致用，以好的语义理解评判标准作为指导思路，最后设计语义。 1、 竞品分析 （1）好的语义理解评判标准 （2）设计语义的具体建议 2、 用户需求 即在什么样的场景下，用户有哪些需求，怎么通过语义设计的应答帮助用户解决问题。 举例：系统出现故障的场景 当用户在机器人无法正常提供语音服务时，比如在“叮当服务器异常”、“连不上叮当服务器造成语音服务用不了”或“叮当域名解析失败”的场景下，用户无法通过语音方式让悟空执行用户意图，这时的语义设计需满足： 原始wording不符合以上要求，需让用户思考。因此，修好并设计出图中蓝色部分的系统wording语料“哎呀，我突然短路了，要不你再给我说一次吧”、“重试一下吧，不行的话，就换个WIFI或移动网络” 为了快速让悟空机器人显得更智能、趣味性和个性化，从而提升用户对智能产品的满意度，最简单高效且效果好的措施是，从网上爬取语料审核以及人工撰写。于是我从网上采集了很多段子或者与意思的句子，结合悟空人设，放在悟空身上试验效果。最后出乎意料，很多种子用户体验后，认为悟空语出惊人，超出预期，得到了一致好评！ 有意思的闲聊得到用户好评： 人工优化闲聊后的效果对比： 语义理解的实质其实就是对意图的解析，如何做好意图的解析，需要从以下三点考虑： 我认为将来的人机交互将会越来越融合，运用各种多模态情感计算，让人机对话像真人一样，不断拟合，进行全方位的意图分析，甚至达到无法辨别你到底是跟人还是机器人说话的地步，同时能与人自由对话一样，懂你所说，能够挖掘用户深层意图，从而主动提供服务（包括情感）。悟空机器人正在慢慢变强大，希望他以后能： 以上，是悟空机器人从0构建聊天模块的些许经验，希望对题主有用 聊天机器人这条道，道阻且长，任重道远。欢迎大家多交流，谢谢。  特别鸣谢本文作者： 优必选产品经理 Sherry 作者微信号：sherryzhang9498 