聊天机器人,也称为聊天机器人,是一种基于人工智能的软件,旨在使用自然语言与人类进行交流。这些聊天机器人通常通过音频或文本方式进行交互,并模仿人类语言以类似人类的方式与人类建立联系。聊天机器人无疑是自然语言处理最重要的应用之一。
聊天机器人主要分为两大类:基于规则的和自学习的。基于规则的技术教会聊天机器人使用一组预定义的规则来响应查询,这些规则是在它最初引入时建立的。这些既定的规范可能是基础的或相对复杂的。虽然基于规则的聊天机器人可以处理简单的查询,但它们经常无法处理日益复杂的查询/请求。
顾名思义,自学习聊天机器人是能够自学的聊天机器人。这些系统通过使用现代技术如人工智能和机器学习,从事件和行为中学习。当然,这些聊天机器人比基于规则的聊天机器人要复杂得多。自学习聊天机器人进一步分为两种类型:检索型和生成型。
检索型聊天机器人
检索型聊天机器人被编程为响应特定的输入模式。一旦输入问题/模式,聊天机器人就会使用启发式技术适当地做出响应。检索型方法经常创建目标导向的聊天机器人,具有可定制元素,如机器人的流程和语调,以提高客户体验。
生成型聊天机器人
与检索型聊天机器人不同,生成型聊天机器人不依赖于预先准备好的回复;相反,它们使用seq2seq神经网络。这基于机器翻译,涉及将源代码从一种语言翻译成另一种语言。seq2seq技术将输入转换为输出。
1966年,Joseph Weizenbaum构建了一个名为ELIZA的聊天机器人,它能够在不到200行代码的情况下模仿精神病医生的话语。然而,由于技术的快速发展,已经从书面聊天机器人发展到今天的基于Python的聊天机器人。
当今时代的聊天机器人
今天,拥有智能的AI驱动的聊天机器人,它们使用自然语言处理(NLP)来解释和学习人类命令(文本和语音)。聊天机器人已经成为企业和品牌与消费者联系的标准方式,这些企业和品牌在网站和社交网络平台上拥有活跃的在线存在。
基于Python的聊天机器人是一个宝贵的工具,因为它们允许品牌和客户之间进行即时消息传递。想想苹果的Siri,亚马逊的Alexa和微软的Cortana。这些难道不令人惊叹吗?难道不立即被学习如何创建Python聊天机器人的前景所吸引吗?
本质上,基于Python的聊天机器人旨在接受提供的信息,然后使用复杂的人工智能算法进行评估,以书面或语音回答的形式返回给。因为这些机器人可以从他们的行为和经验中学习,所以它们可以响应各种请求和命令。
尽管用Python编写的聊天机器人已经开始主导IT行业,但Gartner估计到2020年,聊天机器人将管理大约85%的客户-品牌互动。鉴于聊天机器人在商业中的日益普及和使用,可以通过学习如何用Python创建聊天机器人来提高市场价值,Python是世界上使用最广泛的编程语言之一。
使用ChatterBot库创建Python聊天机器人
今天,将展示如何使用ChatterBot Python包创建一个基本的Python聊天机器人。让开始吧!
ChatterBot是一个Python包,用于自动化对用户输入的反应。它通过使用机器学习算法的混合,生成各种不同类型的回复。这种能力使开发人员能够创建能够与人类交谈并提供可接受和相关回复的基于Python的聊天机器人。不仅如此,机器学习算法还帮助机器人随着时间的推移提高其性能。
ChatterBot的另一个杰出特性是其多语言能力。该库的结构使其能够让用多种编程语言训练机器人。
ChatterBot如何工作?
当用户向基于ChatterBot构建的聊天机器人提交特定输入时,机器人会记住输入和答案以供将来使用。这些数据(累积的经验)使聊天机器人能够为每个新信息开发自动化解决方案。
计算机从最接近输入的陈述中选择最合适的答案,然后使用以前的评论和回复来交付它,随着聊天机器人参与更多的互动,其响应准确性会提高。
如何在Python中创建聊天机器人?
将采取逐步的方法,分解Python聊天机器人开发过程。要创建Python聊天机器人,必须导入所有必需的包并初始化在聊天机器人项目中使用的变量。此外,要记住,在处理文本数据之前,必须对数据集进行数据准备,同时开发机器学习模型。
这里文本数据分词非常有用 - 它允许将一个庞大的文本数据集分割成更小、更易读的部分(如单词)。之后,可以选择词形还原,它将评论转换为其词元形式。然后它会产生一个pickle文件,其中存储了预测机器人回复所需的Python对象。
开发聊天机器人的另一个关键步骤是创建训练和测试数据集。
现在已经涵盖了Python聊天机器人编程的基础知识,让进入实际过程!
步骤1:准备依赖项
在机器上安装ChatterBot库是使用该库开发Python聊天机器人的第一步。建议在一个新的Python虚拟环境中构建并运行安装。要这样做,请在Python终端中键入并执行以下命令:
pip install chatterbot
pip install chatterbot_corpus
步骤2:导入类
导入类是创建Python聊天机器人的第二阶段。只需要从chatterbot.trainers导入两个类:ChatBot和ListTrainer。使用以下命令实现这一点:
from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
这是构建Python聊天机器人过程中的第三阶段。聊天机器人将是一个“ChatBot”类的子类。可以在启动一个新的ChatterBot实例后训练机器人以提高其性能。训练确保机器人有足够的知识来响应特定的输入。现在必须运行以下命令:
my_bot = ChatBot(name='PyBot', read_only=True, logic_adapters=['chatterbot.logic.MathematicalEvaluation', 'chatterbot.logic.BestMatch'])
参数(对应于参数名称)用于指定Python聊天机器人的名称。为了防止机器人在训练后学习,可以包含“read_only=True”命令。“logic_adapters”命令返回在聊天机器人训练期间使用的适配器列表。
“chatterbot.logic.MathematicalEvaluation”帮助机器人解决数学问题,“chatterbot.logic.BestMatch”帮助它从之前提供的回复列表中选择最佳匹配。
鉴于需要提供一系列回复,可以通过提供将用于训练Python聊天机器人并为每个问题找到最佳匹配的字符串列表来实现这一点。以下是一些可以教给基于Python的聊天机器人学习的回复示例:
small_talk = ['hi there!', 'hi!', 'how do you do?', 'how are you?', 'i'm cool.', 'fine, you?', 'always cool.', 'i'm ok', 'glad to hear that.', 'i'm fine', 'glad to hear that.', 'i feel awesome', 'excellent, glad to hear that.', 'not so good', 'sorry to hear that.', 'what's your name?', 'i'm pybot. ask me a math question, please.']
math_talk_1 = ['pythagorean theorem', 'a squared plus b squared equals c squared.']
math_talk_2 = ['law of cosines', 'c**2 = a**2 + b**2 - 2 * a * b * cos(gamma)']
此外,可以通过创建一个“ListTrainer”的实例并传递给它一个字符串列表来构建和训练机器人:
list_trainer = ListTrainer(my_bot)
for item in (small_talk, math_talk_1, math_talk_2):
list_trainer.train(item)