在我的一个回答里,我提到了用 Python 搭建聊天机器人。从今天开始,我就带着大家从0开始搭建一个聊天机器人。
(顺便说一句,我喜欢把链接像上面这样加在文字里,如果找不到文中所说的资源,可以看看周围有没有链接。)
准备工作
首先,你要有一台安装了 Python 的电脑,推荐 Python3.6+。另外,系统最好使用 Windows 系统,因为把机器人和 QQ 对接的软件 CoolQ 只有 Windows 版,虽然使用 Docker 和 wine 可以在其它系统上运行,但不能保证稳定性。
然后,你需要在系统中安装并运行 MongoDB 数据库服务。安装方法可以看这里。记得安装完成之后运行 MongoDB 服务,也就是把 MongoDB 作为服务安装到系统中,以保持后台运行。
其次,你可能会需要一个好看的控制台,最好像 Conemu 一样既方便又美观的。毕竟写累了还可以舔舔老婆(划去
Chatterbot
Chatterbot 是一个 Python 库,我们的聊天机器人就是主要基于这一个库。
安装和其他的 Python 库一样简单:
pip3 install chatterbot chatterbot_corpus
其中 chatterbot_corpus 是 Chatterbot 自带的语料库。
现在简单说一下 Chatterbot 的原理。Chatterbot 是比较简单的聊天机器人,它需要大量对话语料来支撑它的运行。当用户给它一个输入时,它会在所有的语料库中寻找和这句话最相似的一句话,然后返回语料库中的下一句。
所以,在使用 Chatterbot 前,我们需要先进行训练。
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
bot = ChatBot(
'Sakura',
storage_adapter='chatterbot.storage.MongoDatabaseAdapter'
)
trainer = ChatterBotCorpusTrainer(bot)
trainer.train("chatterbot.corpus.chinese")
trainer.train("chatterbot.corpus.english")
我们分析一下这几行代码。
bot = ChatBot(
'Sakura',
storage_adapter='chatterbot.storage.MongoDatabaseAdapter'
)
这是创建一个聊天机器人,名字叫 Sakura(你也可以改成自己起的名字),使用 MongoDB 中的数据。(其实 Chatterbot 还支持 SQL,但是速度太慢了。)
这句代码里面有一个单词 adapter,官方翻译为“适配器”。其实它更准确的含义是“组件”。创建 Chatbot 时还有很多 xxx_adapter 这样的参数,可以为机器人开启各种各样的功能。不过有一点要注意,有些功能可能只对于英语进行了适配,对其他语言支持并不好。
trainer = ChatterBotCorpusTrainer(bot)
trainer.train("chatterbot.corpus.chinese")
trainer.train("chatterbot.corpus.english")
这几行就是具体的训练代码了。注意,这是最新版(2019/8/18)的写法,之前版本有所不同,使用的是bot.set_trainer(ChatterBo