对话机器人
最近原本想整一个对话机器人的,但是后续没有时间,记录一下踩过的一些坑和学到的一些知识吧。
安装ChatterBot
github链接:https://github.com/gunthercox/ChatterBot
1.创建anaconda环境,python3.8以下
我是直接用3.7,原因是源码中用了time.clock。
而从python3.8开始,time模块下不支持clock了。
所以如果用3.8以上运行代码就会报错。
2.先手动安装scapy
不要直接pip install chatterbot,因为里面有个难缠的scapy。
如果你直接安装他也是卡在安装scapy那里,然后满屏报错,不断降版本。
所以干脆我们先把低版本安装了,使用
conda install spacy==2.0.12
3.安装ChatterBot
pip install chatterbot
运行程序,解决报错
库安装好了,README有运行demo,如下。
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
chatbot.get_response("Hello, how are you today?")
错误1
OSError: [E050] Can’t find model ‘en’. It doesn’t seem to be a shortcut link, a Python package or a valid path to a data directory.
报错原因:没有en
解决办法:
python -m spacy download en
Tips:
1.强调!用管理员权限打开anaconda,不然下好了也会出现Error: Couldn’t link model to 'en’的情况。
2.会报连接错误的,多试几次多换网试一下。
3.试过将文件下载到本地然后pip下载,会报错,不知道为什么不行。链接如下
错误2
chatterbot.exceptions.OptionalDependencyImportError: Unable to import “yaml”.
Please install “pyyaml” to enable chatterbot corpus functionality:
pip3 install pyyaml
报错原因:没有pyyaml
解决办法:
pip3 install pyyaml
错误3
FileNotFoundError: [Errno 2] No such file or directory: ‘你的路径\chatterbot_corpus\data\english’
报错原因:没有训练的数据。需要去下载,
解决方法:手动去链接下载,然后放到你的路径或者代码运行路径
链接:https://github.com/gunthercox/chatterbot-corpus
代码运行路径可以通过以下方式获取
import os
abspath = os.getcwd() # 获取当前路径
print(abspath)
搞定了√ 可以正常运行。
不够这个语音助手特别依赖语料库,语料库质量不好就…很人工智障。
但是我也没有找到特别好的语料库,点进去质量都不是很好,很多答非所问。
原理参考:https://blog.csdn.net/langsiming/article/details/103838855
改进参考:https://zhuanlan.zhihu.com/p/34927757
语料参考:https://github.com/candlewill/Dialog_Corpus 和 https://github.com/codemayq/chinese_chatbot_corpus
关于多种语音助手可以参考:https://blog.csdn.net/tian_panda/article/details/80664578
关于语音助手好像都是比较老的文章了,看到的都是2017附近的文章。
找到了一个较新的,2021年5月份还有更新的。
看了一下README,好像效果也不错的,未来有需要的话可以试一试。