安装chatterbot 框架
chatterbot 的原理,是基于数据库关键字搜索,优点是训练快,只要进行关键字索引就好,缺点是只能对应出结果,对话的空间在语料空间内。
就chatterbot 安装问题,依赖搞的头疼。
环境是Ubuntu16.04, pyenv, python 3.7.0
pip install chatterbot 会有版本依赖
Chatterbot(1.1.0) => spacy (2.1.9)
Chattterbot=>en 要改成依赖 en-core-web-sm
安装步骤
首先下载 https://github.com/explosion/spacy-models/releases//tag/en_core_web_sm-2.1.0
最底下有gz 可下载
https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.1.0/en_core_web_sm-2.1.0.tar.gz 只有这个可用,其他和chatterbot,spacy冲突
pip install en_core_web_sm-2.1.0.tar.gz
pip install chatterbot
修改chatterbot中语言依赖,这一步很关键
vi ~/.pyenv/versions/3.7.0/lib/python3.7/site-packages/chatterbot/languages.py
修改584行 ISO_639_1 = 'en'
为ISO_639_1 = 'en_core_web_sm'
其他问题
遇到 import sqlite3 无法到导入问题 ,需要重新编译python, 这个没法绕道而行,因为sqlite3必须为python 编译时候支持
其中pyenv install 3.7.0 之前必须安装依赖包
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils
pyenv install 3.7.0
下太慢,自己下好 Python-3.7.0.tar.xz 放在 ~/.pyenv/cache/ 底下
最后进行测试
测试spacy对于en_core_web_sm的依赖是否正常
import spacy
en = spacy.load('en_core_web_sm')
测试chatterbot 对于spacy, en 是否正常
from chatterbot import ChatBot
# from chatterbot.trainers import ChatterBotCorpusTrainer
#
chatbot = ChatBot('Ron Obvious')
# Create a new trainer for the chatbot
trainer = ChatterBotCorpusTrainer(chatbot)
# Train the chatbot based on the english corpus
trainer.train("chatterbot.corpus.english")
# Get a response to an input statement
res=chatbot.get_response("Hello, how are you today?")
print(res)