分享

如何用Python做一个聊天机器人!

 江海博览 2022-10-07 发布于浙江
随着人工智能技术的发展,聊天机器人的生态也日趋成熟与完善,为了让聊天机器人可以更加“智能”,交互体验更加拟人化,可以更好的理解用户的真实意图,最终更好地服务用户,还需要继续优化聊天机器人的相关功能,当前聊天机器人在技术方面还面临多重挑战。

01.

自然语言多种表达方式的挑战

       由于语言本身的多样性及复杂性,对于同一件事情的描述,不同的人往往有不同的表达方式,比如当一个用户想预定一张明天去上海的机票,则表达方式主要有以下几种方式。

我要定一张去上海的机票

去上海明天几点有航班

我明天要去魔都出差,帮我订票

我明天去上海出差

去上海,明天

      我们人类可以快速并准确地理解这些表达所包含的意思是相同或一致的,而聊天机器人对这些不同表达的理解就比较困难了,同时由于用户输入过程中可能出现的口语化的输入、不符合语法规范的输入、错别字的输入等都会对聊天机器人理解用户意图造成困扰。

02.

语义差异性的挑战

       聊天机器人除了要准确理解用户输入的意图,而且需要对类似输入的细微差异之处进行识别,我们在实际生活的场景中,往往会有这样的生活经验,有的时候仅需要修改一两个字符就会造成语义极大的改变。比如“你能干嘛?”是在询问对方具备的能力或技能,而“你干嘛的?”则是询问对方的身份或名称,“你在干嘛?”是在询问对方当前的状态。

      聊天机器人对这些自然语言表达非常相似而语义差异较大的情况需要有一定的识别能力,才可以在提升其与用户交互的满意度。

03.

整合语境信息的挑战

      前面的两个难点主要体现在单轮对话过程中,在应用更广泛的多轮对话系统中,我们面临的挑战更多,其中典型的问题有上下文关联、中途打断回溯及指代识别。

      上下文关联的问题是指对于用户的输入,聊天机器人需要整合历史对话语境及物理语境,这种情况尤其在长对话过程中,系统对用户当前输入的信息进行反馈时,需要考虑前几轮对话过程中已经获取的信息,这就需要系统“记忆”整个对话过程中的全部信息。

      常用的方法是将获取到的对话信息都拼接到一个向量中,但在长对话上进行这样的操作是极富挑战性的。

     此外在对话过程中也需要整合其他类型的语境数据,例如日期/时间、位置或用户信息,例如当用户询问“明天天气怎么样?”,聊天机器人需要结合当前用户的询问时间信息及所在位置信息进行相应的回复。比如当用户在公众号与聊天机器人进行对话,那么聊天机器人可以通过公众号的信息获取到当前用户的地理位置,当用户想预定一张上海的机票后,可以直接获取到用户的订票要求是从当地出发并前往上海。

       同时聊天机器人还面临聊天中途发生打断的情况,并提供对话回溯的能力,方便用户快速完成原来的任务。

      指代识别是指聊天机器人需要在对话过程中正确理解用户的指代输入,比如“这个”、“最后一个”、“他”等情况。

04.

回复多样性的挑战

       为了让聊天机器人更具有智能性,也就是我们常说的“更像一个人”,我们希望聊天机器人的回复尽可能具有多样性,避免回答相同的答案,然而当前聊天机器人尤其是闲聊系统,由于数据和训练目标的原因,往往会使用像“太好了!”或“我不知道”这样的“万能回答”作为其回复,但这种无效回复会严重降低聊天机器人的交互体验。

      要让聊天机器人的回复具有多样性,更重要的是让聊天机器人可以快速构建用户画像,针对用户的背景给出个性化的回答反馈。

05.

人格一致性的挑战

       除了上面的挑战,当我们构建完成一个聊天机器人后,往往还面临人格一致性的挑战。比如当我们询问聊天机器人 “你多大了?”和“你的年龄是多少?”的时候,如果每次回答都得到不同的答案,那么会让我们的聊天机器人显得很笨,因此对于每个聊天机器人,需要保证其“人格”信息是一致的,也就是说维持一个稳定的“人设”。

       这个问题在闲聊机器人的研究中尤其重要,当前聊天机器人的研究中主要集中在让聊天机器人学习生成语义合理的回复,但是由于训练中使用的语料数据往往是基于不同用户而采集的,因此将固定的知识或者人格整合进模型变得非常困难。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多