一.分类
1. 依照应用场景的不同,Chatbot可以分为开放域chatbot和封闭域chatbot,也可以说是开放领域和垂直领域;
2. 按照问答轮次的不同,Chatbot能够分为单轮bot和多轮bot,当然单轮bot更像是检索了;
2. 根据技术方案的不同,Chatbot也可以分为检索式Chatbot和生成式Chatbot.
二.中文语料
中文公开聊天语料库: https://github.com/codemayq/chinese_chatbot_corpus
baidu_qa数据集: http://research.baidu.com/Downloads
或者是根据一些英文语料,翻译过来。
三.项目
首先当然是自己的项目啦(一些简单的demo):https://github.com/yongzhuo/nlp_xiaojiang/tree/master/ChatBot
自己动手做聊天机器人(第一次用的): https://github.com/warmheartli/ChatBotCourse
基于向量匹配的情景式聊天机器人(台湾佬的感觉还不错): https://github.com/zake7749/Chatbot
seq2seq(用起来很舒服,尤其是tricks):https://github.com/qhduan/just_another_seq2seq
seqGan(起码能跑起来不是): https://github.com/zhaoyingjun/chatbot
四.技术
1.模板匹配,
你还别嫌弃,在与规则匹配工业界,匹配的方式还是应用最广的,什么seq2seq、GAN还是太遥远了一些。
1. AIML便很出名啦,基于xml直接匹配的,可以看看这里,github地址: https://github.com/andelf/PyAIML;
2. java的话,我推荐一个项目,anbf文法,当初用起来还不错,github地址: https://github.com/nradov/abnffuzzer;
3. 当然,用的多的,似乎还是根据正则re定义的一些规则,像那些天气、音乐、笑话这样的技能领域,业界用的多是规
则匹配,像构建[北京][天气][怎么样]这样的模板来维护,也没你想象的那么困难。
2. 检索式chatbot
检索式chatbot有很多实现方式方法。
1. 关键词、同义词、主题
2. 搜索引擎技术
3. 构建句向量匹配等(词向量word2vec、glove,句向量bert)
.........
这种方式,主要是先维护一个预先构建好的问答库,
好处是专业领域问答比较精准,域值比较好控制;
我觉得近来比较火的知识图谱聊天机器人,别看它自动推理看起来很牛气,
我觉得他的本质还是个数据库,脱不了检索式chatbot的范畴。
3. 生成式chatbot
生成式chatbot也有很多技术实现哇,
各种encode-decode模型(cnn、rnn、bilstm、transformer)
seqGan
原文链接:https://blog.csdn.net/rensihui/article/details/89418850