关于聊天机器人
ChatterBot是一个 Python 库,可以轻松生成对用户输入的自动响应。ChatterBot 使用一系列机器学习算法来生成不同类型的响应。这使开发人员可以轻松创建聊天机器人并自动与用户对话。有关 ChatterBot 背后的想法和概念的更多详细信息,请参阅流程图。
安装中
如果您刚刚开始使用 ChatterBot,建议您从安装 Python Package Index (PyPi) 的最新版本开始。要使用 pip 从 PyPi 安装 ChatterBot,请在终端中运行以下命令。
pip install chatterbot 复制代码
创建您的第一个聊天机器人
创建一个名为 chatbot_basic.py 的新文件。然后在您选择的编辑器中打开 chatbot_basic.py。
在我们做任何其他事情之前,需要导入 ChatterBot。ChatterBot 的导入应类似于以下行。
from chatterbot import ChatBot 复制代码
创建 ChatBot 类的新实例。
bot = ChatBot('Dev.to') 复制代码
这行代码创建了一个名为Dev.to的新聊天机器人
设置存储适配器
ChatterBot 带有内置的适配器类,允许它连接到不同类型的数据库。在本教程中,我们将使用允许聊天机器人连接到 SQL 数据库的 SQLStorageAdapter。默认情况下,此适配器将创建一个 SQLite 数据库。
数据库参数用于指定聊天机器人将使用的数据库路径。对于这个例子,我们将调用数据库 sqlite:///database.sqlite3。如果该文件不存在,将自动创建该文件。
bot = ChatBot( 'Dev.to', storage_adapter='chatterbot.storage.SQLStorageAdapter', database_uri='sqlite:///database.sqlite3' ) 复制代码
指定逻辑适配器
logic_adapters 参数是逻辑适配器列表。在 ChatterBot 中,逻辑适配器是一个接受输入语句并返回对该语句的响应的类。
您可以选择使用任意数量的逻辑适配器。在这个例子中,我们将使用两个逻辑适配器。TimeLogicAdapter 在输入语句要求时返回当前时间。MathematicalEvaluation 适配器解决使用基本运算的数学问题。
bot = ChatBot( 'Norman', storage_adapter='chatterbot.storage.SQLStorageAdapter', logic_adapters=[ 'chatterbot.logic.MathematicalEvaluation', 'chatterbot.logic.TimeLogicAdapter' ], database_uri='sqlite:///database.sqlite3' ) 复制代码
使用语料库数据进行训练
chatterbot.trainers.ChatterBotCorpusTrainer(chatbot, **kwargs)[source] 复制代码
允许使用来自 ChatterBot 对话语料库的数据训练聊天机器人。
ChatterBot 带有一个语料库数据和实用程序模块,可以轻松快速地训练您的机器人进行交流。为此,只需指定要使用的语料库数据模块。
from chatbot import chatbot from chatterbot.trainers import ChatterBotCorpusTrainer trainer = ChatterBotCorpusTrainer(chatbot) trainer.train("chatterbot.corpus.english") 复制代码
简单例子
from chatterbot.trainers import ChatterBotCorpusTrainer from chatterbot import ChatBot from chatterbot.trainers import ListTrainer # Create a new ChatBot with name Dev.to chatbot = ChatBot( 'Dev.to', storage_adapter='chatterbot.storage.SQLStorageAdapter', logic_adapters=[ 'chatterbot.logic.MathematicalEvaluation', 'chatterbot.logic.BestMatch' ], database_uri='sqlite:///database.sqlite3' ) # Create a new trainer for the chatbot trainer = ChatterBotCorpusTrainer(chatbot) # Train the chatbot based on the english corpus trainer.train("chatterbot.corpus.english") print("\nHello i'm Dev.to Bot\n") while True: try: bot_input = input() if bot_input.strip()=='Stop': print('Dev.to: Bye') break bot_response = chatbot.get_response(bot_input) print(bot_response) except(KeyboardInterrupt, EOFError, SystemExit): break 复制代码
Hello i'm Dev.to Bot Hi How are you doing? pretty good thanks That's good to hear. What is 4 + 13? 4 + 13 = 17 Stop Dev.to: Bye