开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15 天,点击查看活动详情
关于聊天机器人
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