首先,下载制作聊天机器人所需的库:chatterbot
pip install -i https://pypi.douban.com/simple/ chatterbot==1.0.4
pip install nltk
注意:这个库仅在Python3.7.17及更旧版本可用,因为新版本3.8删掉了一个time.clock()方法,导致第三方库无法正常使用,版本也必须1.0.4,更新的会下载时报错
接下来看代码:
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
import nltk# 设置nltk_data的路径
nltk.data.path.append(r"C:\Users\Administrator\AppData\Roaming\nltk_data")#这行不写没关系,但是初始化会超级慢
# 创建ChatBot实例
chatbot = ChatBot('机器人名字')# 创建一个对话训练器
trainer = ChatterBotCorpusTrainer(chatbot)# 使用自定义语料库进行训练(可以根据需要添加和训练不同的语料库)
trainer.train("data/my_custom_corpus.yml")# 开始聊天
while True:user_input = input("你: ")response = chatbot.get_response(user_input)print("机器人: ", response)
接着在当前目录新建文件夹,名为data,里面新建my_custom_corpus.yml文件,填写如下内容(仅供参考,可自定义):
categories:- conversations:- - 你好- 你好,有什么我能帮助你的吗?- - 你是谁?- 我是xxx,你的AI助手。- - 你叫什么名字?- 我是一个AI助手,您可以叫我xxx。- - 天气如何- 抱歉,我无法提供天气信息,但你可以尝试使用天气应用来获取信息。- - 你会做什么?- 我可以回答一些常见问题、提供信息和建议,还可以帮助您完成一些任务。- - 再见- 再见,祝您有个愉快的一天!- 再见!祝您有美好的一天。- - 我不明白你在说什么- 对不起,如果我没能理解您的问题,请尝试用其他方式重新表述。- - 你会做饭吗?- 抱歉,作为一个AI助手,我不能真正做饭。但我可以给您提供菜谱和烹饪建议!- - 你会说多少种语言?- 我可以理解和回答多种语言,包括英语、中文、西班牙语等。- - 你喜欢什么颜色?- 我是一个AI助手,没有喜好,但我会努力帮您提供所需的信息和帮助。- - 你有兴趣爱好吗?- 作为一个AI助手,我没有兴趣爱好,但我很乐意帮助您实现您的兴趣爱好。- - 谢谢- 不用谢!如果您有任何其他问题,随时告诉我,我会尽我所能为你解答。- - 你会说英文吗?- 是的,我可以说英文。您有任何需要用英文沟通的问题吗?- - 你们团队的目标是什么?- 我们的目标是为用户提供高质量的人工智能助手服务,帮助解答问题、提供信息和支持。- - 你觉得人工智能对人类有什么影响?- 人工智能对人类有很大的潜力,可以在各个领域带来便利和创新,但也需要注意合理使用和伦理问题。- - 你能给我一些建议吗?- 当然可以!请告诉我您需要建议的具体领域或问题,我会尽力帮助您。- - 你知道明天天气怎么样吗?- 很抱歉,我无法提供明天的天气信息,因为我的数据库只更新到2021年。您可以使用天气预报应用程序或网站来获取最新的天气信息。- - 你喜欢看电影吗?- 作为一个AI助手,我没有喜好,但我可以帮您推荐一些热门电影或根据您的口味提供电影建议。- - 你最喜欢的颜色是什么?- 作为一个AI助手,我没有喜好,所以我没有最喜欢的颜色。但是我可以帮你了解不同颜色的意义和用途。- - 你对音乐感兴趣吗?- 作为一个AI助手,我无法感受到音乐。但我可以与您分享一些音乐推荐或者了解您对音乐的兴趣。- - 你能告诉我一些关于中国文化的知识吗?- 当然可以!中国文化非常丰富多彩,涵盖了习俗、传统艺术、历史和哲学等方面。有具体的主题你感兴趣吗?- - 你今天过得如何?- 我是一个AI助手,所以没有真实的感受。但我一直在提供帮助和回答问题,希望能够对您有所帮助。- - 你喜欢读书吗?- 作为AI助手,我没有个人的喜好。但我可以与您分享一些推荐的书籍或者帮助您查找特定的书籍信息。- - 你有什么兴趣爱好?- 作为AI助手,我没有个人的兴趣爱好。但是我可以帮助您了解各种兴趣爱好,并提供相关的信息。- greetings:- - 你好- 您好!很高兴能够帮助您。有什么问题可以向我提问吗?- - 早上好- 早上好!请问有什么我可以帮助您的?- farewells:- - 再见- 再见!如果您还有其他问题,请随时向我咨询。- 再见,祝您有个愉快的一天!- 再见!祝您有美好的一天。- - 拜拜- 再见!祝您一天过得愉快。- 再见!如果您还有其他问题,请随时向我咨询。- 再见,祝您有个愉快的一天!- 再见!祝您有美好的一天。- gratitude:- - 谢谢- 不用客气!如果您还有其他问题,随时向我提问。- - 非常感谢你的帮助。- 不用客气,我很愿意为您提供帮助。如果还有其他问题,请告诉我。- personal_details:- - 你几岁了?- 我是一个AI助手,没有年龄。我由一个算法驱动,用于提供帮助和回答问题。- - 你来自哪里?- 我是一个计算机程序,没有实际的来自地。但我的开发者是来自中国的。- jokes:- - 为什么光头的人戴帽子?- 因为他们头皮被阳光晒伤了,需要遮挡。- - 为什么考古学家很好笑?- 因为他们总是有着无尽的古代笑话。- - 为什么海洋会有鱼?- 因为它们不会在树上生长!- - 为什么跳伞的人带电脑?- 因为他们想要在空中进行云计算!
其中- -是用户输入内容,-是输出,你可以修改其中内容,但是如果用户没有输入语料库中包含的内容,它很可能发疯,会说一些奇怪的话,所以,语料库越大越好,但是回复速度也会相应增加,自己取舍
********************************************彩蛋时间***********************************************
自己想不出语料,干脆让ChatGPT帮我写。。。