基于ChatterBot的聊天机器人
前言:因为作者太无聊了所以想做个自动问答系统来消遣时间
才不是没朋友,也就是常说的聊天机器人
关键点
- 句意理解
系统接收到一句话,需要先通过语法分析,语义分析等来理解该句子,这样才能更好的给出回答。 - 文本信息摘取
系统需要有自己的语料库、知识库或者相关内容,并从中抽取出相应的回答。 - 知识推理
这个是更高一层的要求,系统应该可以通过上下文,或者接收到的句子的语义,通过知识推理的手段获取到知识库中不存在的答案。
可用技术栈
基于以上几点,可用基于现有的一些算法来训练自己的模型,也可用通过开源的框架来搭建。这里我采用的是基于开源框架ChatterBot来实现的方法
基于ChatterBot实现
ChatterBot 是一个功能强大的,基于 Python 的聊天机器人框架
其 GitHub 地址为:https://github.com/gunthercox/ChatterBot/tree/master
官方文档为:https://chatterbot.readthedocs.io
实战
1.获取语料
中文聊天语料这一块,我选择了网上大神整理的资料,这里附上github链接:
https://github.com/codemayq/chinese_chatbot_corpus
其中语料的使用大神有写了详尽的文档,务必仔细阅读后使用。
这里笔者遇到了一个比较奇怪的问题,使用pycharm运行文档里的main.py可以顺利进行语料转换,然而直接使用命令行会报错,暂时不清楚原理
2.使用Google Colab训练
- 上传语料到Colab
这里我采用的是将下载到的语料上传到Google Drive,然后挂载Google Drive硬盘到Colab来调用
- 在Colab上安装ChatterBot
|
|
- 创建一个ChatBot
|
|
- 载入语料
|
|
- 开始训练
|
|
这一步根据语料的数据量大小时间有长有短,个人测试为了不超过Colab的使用限制,尽量选择较小的语料库或者拆分为多个语料库多次训练比较好
等待训练完成后,记得将生成的db.sqlite3文件下载到本地