对话机器人---智能客服

https://blog.csdn.net/qq_40027052/article/details/78723576

详细的介绍了对话机器人涉及到的所有知识和技术。

整个对话机器人涉及到的知识点,本人属于自然语言处理的研究方向,所以还要很多需要学习的地方。

在实现一个对话机器人的过程中,常用的一些工具:

  • Jieba: 中文分词和词性标注Python包
  • CoreNLP: 斯坦福的NLP工具(Java)
  • NLTK: 自然语言工具包
  • TextGrocery:高效的短文本分类工具(注:只适用于 Python2)
  • LTP: 哈工大的中文自然语言处理工具
  • Gensim:文本分析工具,包含了多种主题模型
  • Word2vec: 高效的词表示学习工具
  • GloVe:斯坦福的词表示学习工具
  • Fasttext : 高效的词表示学习和句子分类库
  • FuzzyWuzzy: 计算文本之间相似度的工具
  • CRF++: 轻量级条件随机场库(C++)
  • Elasticsearch: 开源搜索引擎

下面介绍几种不同类型的机器人,根据不同的应用场景。

1.对话机器人创建平台

2.检索型单轮对话机器人

     检索型单轮机器人(FQA-Bot)涉及到的技术和信息检索类似,流程图如下所示。

              

因为query和候选答案包含的词都很少,所以会利用同义词和复述等技术对query和候选答案进行扩展和改写。词表示工具Word2vec、GloVe、Fasttext等可以获得每个词的向量表示,然后使用这些词向量计算每对词之间的相似性,获得同义词候选集。当然同义词也可以通过已经存在的结构化知识源如WordNet、HowNet等获得。复述可以使用一些半监督方法如DIRT在单语语料上进行构建,也可以使用双语语料进行构建。PPDB网站包含了很多从双语语料构建出来的复述数据集。

3.知识图谱型机器人

知识图谱型机器人(KG-Bot,也称为问答系统),利用知识图谱进行推理并回答一些事实型问题。知识图谱通常把知识表示成三元组—— (主语、关系、宾语) ,其中关系表示主语和宾语之间存在的某种关系。

构建通用的知识图谱非常困难,不建议从0开始构建。我们可以直接使用一些公开的通用知识图谱,如YAGO、DBpedia、CN-DBpedia、Freebase等。特定领域知识图谱的构建可参考“知识图谱技术原理介绍”( http://suanfazu.com/t/topic/13105),“最全知识图谱综述#1: 概念以及构建技术”( https://mp.weixin.qq.com/s/aFjZ3mKcJGszHKtMcO2zFQ)等文章。知识图谱可以使用图数据库存储,如Neo4j、OrientDB等。当然如果数据量小的话MySQL、SQLite也是不错的选择。

为了把用户query映射到知识图谱的三元组上,通常会使用到实体链接(把query中的实体对应到知识图谱中的实体)、关系抽取(识别query中包含的关系)和知识推理(query可能包含多个而不是单个关系,对应知识图谱中的一条路径,推理就是找出这条路径)等技术。

4.任务多轮对话机器人

任务型多轮机器人(Task-Bot)通过多次与用户对话交互来辅助用户完成某项明确具体的任务,流程图见下图

        

除了与语音交互的ASR和TTS部分,它包含以下几个流程:

    • 语言理解(SLU):把用户输入的自然语言转变为结构化信息——act-slot-value三元组。例如餐厅订座应用中用户说“订云海肴中关村店”,我们通过NLU把它转化为结构化信息:“inform(order_op=预订, restaurant_name=云海肴, subbranch=中关村店)”,其中的“inform”是动作名称,而括号中的是识别出的槽位及其取值。
      NLU可以使用语义解析或语义标注的方式获得,也可以把它分解为多个分类任务来解决,典型代表是Semantic Tuple Classifier(STC)模型。

    • 对话管理(DM):综合用户当前query和历史对话中已获得的信息后,给出机器答复的结构化表示。对话管理包含两个模块:对话状态追踪(DST)和策略优化(DPO)。
      DST维护对话状态,它依据最新的系统和用户行为,把旧对话状态更新为新对话状态。其中对话状态应该包含持续对话所需要的各种信息。
      DPO根据DST维护的对话状态,确定当前状态下机器人应如何进行答复,也即采取何种策略答复是最优的。这是典型的增强学习问题,所以可以使用DQN等深度增强学习模型进行建模。系统动作和槽位较少时也可以把此问题视为分类问题。

    • 自然语言产生(NLG):把DM输出的结构化对话策略还原成对人友好的自然语言。简单的NLG方法可以是事先设定好的回复模板,复杂的可以使用深度学习生成模型,如“Semantically Conditioned LSTM”通过在LSTM中加入对话动作cell辅助答复生成。
      任务型对话机器人最权威的研究者是剑桥大学的Steve Young教授,强烈推荐他的教程“Statistical Spoken Dialogue Systems”。他的诸多博士生针对上面各个流程都做了很细致的研究,想了解细节的话可以参考他们的博士论文。相关课程可参考Milica Gašić的“Speech and Language Technology”。
      除了把整个问题分解成上面几个流程分别优化,目前很多学者也在探索使用端到端技术整体解决这个问题,代表工作有Tsung-Hsien Wen等人的“A Network-based End-to-End Trainable Task-Oriented Dialogue System”和Xiujun Li等人的“End-to-End Task-Completion Neural Dialogue Systems”。后一篇的开源代码https://github.com/MiuLab/TC-Bot,非常值得学习。

5.闲聊型机器人

真实应用中,用户与系统交互的过程中不免会涉及到闲聊成分。闲聊功能可以让对话机器人更有情感和温度。闲聊机器人(Chitchat-Bot)通常使用机器翻译中的深度学习seq2seq框架来产生答复,如图:

 

转载于:https://www.cnblogs.com/maowuyu-xb/p/9287132.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值