任务型聊天机器人和闲聊类机器人的关键技术

今天给大家讲讲聊天机器人中的一些基本概念和关键技术。
所有的机器人都可以大致分为两类:任务型的机器人和闲聊型的机器人。

这两种机器人分别有一些特性。
对于任务型机器人呢,比如订书订餐订票等等,它需要比较精准的理解,另外,比较难以收集数据。
对于闲聊的机器人呢,语料比较好收集,一些电影台词,平时一些社交网络上的对话都可以,不过它的应用更多的是娱乐性质的,而且模型比较难评价。

基于任务型的聊天机器人主要包含四个模块:

  • Spoken Language Understanding(SLU) ,将自然语言转化为intent和slot-values,比如“我想吃中餐,有什么推荐的吗”,intent是‘推荐餐厅’, slot-values是‘菜系-中餐’。
  • Dialogue State Tracking(DST),跟踪对话状态并且输出当前对话状态。这个模块是任务型对话中最核心的模块。它描述的是其于多个slot-values值的多元状态分布。而且这个值是会随着状态的进行产生变化。比如,有如下的用户行为:“我想吃日菜…额,如果没有的话,法餐也可以…不行的话就中餐吧”,随着对话进行,用户的行为是可能变化的。slot分为informable slot,以及request slot。前者是会变化的,比如用户选餐厅给的约束条件,而后者是固定的,比如某家餐厅的位置。
  • Dialogue Policy Learning(DPL),根据当前对话状态决定机器的行为,输出一个向量。它有三个输入,用户的intention,对话的state,根据state从数据库中查找的info,然后生成一个行为输出。
  • Natural Language Generation(NLG),机器的对话生成模板。

基于检索类的闲聊机器人:

  • 当我们有了一个input,我们就去语料库里去找similarity(相似的)问题。这里的feature可以用多种方法来计算,比如tfidf,
    w2v, rnn, cnn, etc.
  • 在实现的闲聊场景中,还需要结合语境的闲聊机器人,这就是retrieal-based方法。简单来说,我们每次有一个input的时候,还要考虑之前多句话的信息。

基于生成的闲聊机器人:

  • 这里用到的就是seq2seq模型,包含一个encoder和一个decoder。一般encoder和decoder是循环神经网络。
  • 缺点是,对于长句处理地不太好;生成的句子语法不一定正确;会经常性地出现一些模板化的句子。一般常见的改进方案是增加attention机制。

你可能感兴趣的:(深度学习,机器学习,算法,人工智能)