软件研发

如何在Python上开发Telegram聊天机器人

2020-09-27 15:21:28 | 来源:中培企业IT培训网

技术进步和自动化开始影响人类经济和日常生活的各个领域。人工智能的飞速发展要求训练计算机完成人工工作,并在业务中实现其用途。聊天机器人是人工智能在商业中的主要应用之一。NLP与聊天机器人一起在客户服务领域具有巨大的潜力,并且可以轻松接受客户的订单并向他们提供有关司服务的咨公询。可以在公司官方网站上或在其他等流行的Messenger中借助bot自动化支持中心的工作。在本文中,将为您提供有关聊天机器人开发的简短教程,并分享在Python中构建Telegram聊天机器人的经验。

项目简介

如今,NLP变得非常重要,因为它可以理解非结构化文本数据。例如,它可以用于商业用途,并创建可以根据客户的需求,兴趣和特征对客户进行分类并同时处理数百万个请求的智能机器人。

我们的项目允许创建聊天机器人,该聊天机器人能够分析客户与顾问之间的实时对话。可以教一个机器人以提高答案的质量,并训练他处理更多个案的情况。

在线咨询意味着与客户进行面对面的咨询,并影响其作为潜在买家的影响。为此,顾问应了解客户的个人资料。大多数在线对话是通过电话或消息来处理的。该应用程序具有多个库,用于理解人的语音并将其转换为文本数据。

据此,该项目的想法是建立一个能够自学习的交互式系统,同时通过分类和处理客户的词汇形式与客户进行交流。我们的AI机器人的主要目的是识别实体集群-相关实体的组。实体群集对于许多活动可能非常有用。例如,我们可以分析客户需求,并根据兴趣组对需求进行识别甚至分类。

  技术栈

  前端:

· Javascript编程语言;

· JSON对象可视化工具JSON模式查看器;

· 前端框架Twitter Bootstrap;

· 用于实时客户端-服务器连接的SocketIO。

  技术选择

该项目的体系结构基于Telegram,其后端部分以Python编程语言编写。由于Web客户端是项目的主要组成部分,因此最重要的决定之一就是选择合适的框架来实现Web应用程序。有几种用于Python语言的“全栈”框架:Django,Grok,web2py,Giotto。

该应用程序用Python编程语言编写,以统一开发和机器学习的过程。选择Django和Web2py框架进行开发。为了制作Telegram机器人并将其与Telegram服务集成,使用了Telegram Bot API。

为了实现项目的AI部分,使用了以下Python库:

· NumPy —支持大型多维数组和矩阵的库。

· SciPy—用于Python编程语言的科学仪器的开源库,其中包含用于优化和遗传算法的模块。

· NLPK库 —在Python上用于符号和统计自然语言处理的一组库和程序。

· Gensim Python库 -一种流行的工具,用于基于机器学习的自动语言处理。在该库中,实现了聚类和分布式语义算法(word和doc)。它可以解决主题建模的问题,并区分文本或文档的主要主题。

· Scrapy- 用于从网页接收数据的生产力最高的Python库之一。

选择工具的关键是选择机器学习库。在形态分析方面,我们决定选择Pyromorphy2,因为它支持俄语。选择TeleBot库以使用Telegram Bot API。Web套接字的客户端实现是通过SocketIO库处理的。Flask-SocketIO库用于建立实时的客户端-服务器通信。它是用于将SocketIO库与Flask结合使用的工具-Flask是用于处理Web套接字的便捷框架。

  资料库

为了创建一个基于AI的机器人,有必要使用问题和答案数据库。客户的查询与漫游器的回复之间的时间间隔应尽可能小。为了实现此目标,我们决定选择Redis-一个高效的非关系数据库。有关问题和答案的信息存储为对话中的消息块。这种方法的优点是:

· 它使人们可以方便地找到记录的必要元素。

· 通过使用这种存储数据的方式,可以记录任意长度的对话,而对哈希表中字段或键的数量没有任何限制。

由于开发的主要目标是创建实时应用程序,因此使用了网络套接字技术。它们将暗示允许实时客户端-服务器交互的交互式连接。与HTTP/HTTPS相比,Web套接字能够与双向流一起使用,这将加速应用程序的工作。它们对于创建任何类型的实时软件都是很有用的:聊天机器人,物联网应用程序或多人在线游戏。

  实施机器学习

在任何智能系统的开发中,选择合适的机器学习算法是重要的一点。机器学习的所有算法可以分为三种类型:

· 如果存在具有特定明显属性的数据块,而另一块块尚不清楚,则使用受控学习,并且有必要在工作时对其进行预测。

· 不受控制的学习用于找出未标记的数据集中的隐式关系。

· 强化学习是上述类别的共生关系,意味着存在某种特定类型的反馈,当没有标记或错误消息时,该反馈可用于每个步骤或操作。

该项目的任务之一是根据数据库中的问题对答案进行分类。根据答案与相应类别的关系对其进行分类。

借助决策树来处理机器学习。其中之一代替了随机森林。它是处理投票的几棵经过训练的树的集合。根据其结果,随机林根据指定的选择准备答复。为了选择合适的设备,使用了执行图备忘录。它是由Microsoft设计的模型,用于为特定任务选择机器学习算法。

基于该方案,我们得出结论:当学习的精度和速度是最高优先级时,随机森林算法是最适合解决多类分类任务的算法。

  机器人培训过程

机器人学习的过程包括以下几个阶段:

· 对话数据库预处理 -在完成此阶段之后,仅保留与对话当前阶段相对应的那些集合。

· 选择问题 -完成上一个阶段后,系统创建了学习的核心。在此阶段之前,将每个问题的文本简化为通用形式。此外,借助词法分析仪Pymorphy2对所有单词进行了归一化处理。这样,每个单词都恢复为其初始形式,并且分词简化为不定式。尽管上下文不同,但它允许以相同的方式处理相同的单词。

· 创建TF-IDF矢量化器以对问题进行规范化选择 -基于矢量化器,整个问题数据库的处理以及对随机森林的学习均基于矢量化器。

  应用程序的工作流程

该应用程序由一个Web客户端和一个基于Python的Telegram聊天机器人组成。该应用程序的主要功能是:

· 实时处理客户信息;

· 提供机器人回复的可能变体;

· 机器人决策的实时处理并将回复发送给客户端。

Web客户端包括用于对话图工作的界面和用于发送消息的键盘。与机器人的客户端交互是使用Telegram机器人的经典选择。启动应用程序后,还将启动两个流程。其中一项是维护Telegram bot的工作,另一项是维护应用程序的工作。通过TeleBot库的“消息处理程序”工具处理客户消息。

在图的顶部,找到用户的问题和答案的可能选项。单击答案之一后,其文本将自动显示在答案的空间中。

然后,系统正在等待客户端对已发送消息的答复。当它收到它时,通过将用户的答案与所选消息一起添加到分支中来重新组织图形。应用程序准备了新的答复。

项目的主要挑战

在进行该项目时,我们面临以下挑战:

· 实施客户消息的实时处理;

· 实时介绍顾问答案的可能变体;

· 实时处理顾问的决定并将答复发送给客户;

· 系统运行时动态扩展对话数据库。

  为了解决这些挑战,我们实现了以下功能:

· 预处理客户的答案-创建词汇频率矩阵以从最常用的单词中找出。

· 在自组织映射的帮助下,搜索将具有相似含义的单词组合在一起的有义聚类。这是一种人工神经网络,经过训练后可以生成训练样本输入空间的低维离散化表示,称为地图。自组织图不同于其他人工神经网络,因为它们应用竞争性学习而不是纠错学习。

· 使用Redis进行数据存储,可以快速处理查询。

上述就是关于如何在Python上开发Telegram聊天机器人的全部内容,想了解更多关于Python的信息,请继续关注中培伟业。

标签: Python 软件研发