APP下载

基于Web平台的智能对话机器人研发

2021-06-16刘子晗

电子制作 2021年4期
关键词:代码引擎聊天

刘子晗

(北京师范大学良乡附属中学,北京,102488)

0 引言

在目前的互联网时代,人们查找信息的手段和速度已经有了质的飞跃,更容易实现一个智能化的聊天机器人,它可以自动化识别发出的指令,并且自己在网络上寻找匹配的答案。现在计算机的计算力成熟,有许多对话模型已经相对完善比如NLP、Seq2Seq,同时只要进行长时间的训练,笔者相信机器人可以完美做到与人交流基本无障碍。网络上面的API就提供了不用自主训练的捷径,这个捷径大大缩短了研发的时间和精力,让笔者可以把更多的精力投入到更加有用的地方。

目前这个智能机器人前景广大,比如空巢老人陪伴问题,当老人们独居的时候,容易出现老年痴呆症和抑郁症,这款机器人很好的解决了老人想说会话,但是没有机会没有说话对象的烦恼。也解决了小孩子们的语言习得问题,当小孩在与语音聊天机器人对话时,聊天机器人会构建第二语言学习环境,让孩子更加快速和体系地学习另一种语言。

在特定的专业领域,成本会大大削减,因为特定词汇的存在,所以几乎不用太多的训练,相对应的信息很好发掘。同时优势还在于对话模式的固定,当一个关键词出现,那么捕捉它对于机器人来说就是轻而易举。这个的案例主要应用在淘宝京东等网购平台的客服专线,大大节约了成本,使其商业价值大增。

本文实现的目标很明确,就是实现一款可以实时聊天的机器人。笔者先了解了机器人的对话模型主要分为NLP和Seq2Seq两个模型。所以笔者就尝试了一下在两个模型下实现对话功能,两个模型各有优缺点,总的比较笔者选择了后者。随后便决定在HTML平台上落成项目。

最终的成果包括一个主页面和花边,最核心的内容是聊天模型的运用,笔者在后台连接了网络上的api,利用其现有的对话规则来完善笔者机器人的运行。当指令输出者输出任意指令时,机器人都能根据他们的特点在自己的资料库中寻找匹配的答案,进行回答。

1 实现过程

■1.1 模型实现

关于聊天机器人的实现,笔者调研了各个云服务的开发平台,选定了青云客智能聊天机器人API作为本项目的主要聊天引擎。青云客智能聊天机器人API是开放在互联网上的免费服务,可以方便地进行智能聊天机器人的服务调用,用于研究和学习。该API的接口形式是:

http://api.qingyunke.com/api.php?key=free&appid=0&msg=关键词

通过Http Get请求就可以访问该API并且得到Json格式的回复,效果如图1所示。

图1 青云客智能聊天机器人API

■1.2 模型开发

因为聊天机器人服务是运行在Html平台的,笔者选取了目前Html开发最为常用的框架之一—Vue来作为本项目的开发框架。Vue作为最流行的前端开发框架之一,能够做到高性能渲染页面结构,并且解耦了开发过程中涉及的各个元素,让开发可以更快、质量更高地完成。

图2是机器人的HTML部分代码,在这部分代码中,界面一共分为四个大的部分,分别是引擎选取部分、页头部分、主要内容部分以及页脚部分。引擎选取部分是供用户选择不同的聊天引擎使用的,这是为了未来的扩展开发而预留的功能接口。页头部分主要包含标题提示以及时间提醒。主要内容就是上文提到的聊天区域。页脚负责编辑和发送消息。

图2 聊天机器人Html部分代码

要想界面按照一定的规则和样式组织起来,还需要css代码的配合,图3是截选的部分css代码。

图3 聊天机器人css部分代码

CSS代码可以用于定义页面样式,使得整体的页面呈现出最完美的效果。经过Html定义以及CSS框规之后的程序界面如图4所示。

图4 聊天机器人基本样式

可以看到上文提到的四个主要部分呈垂直结构显现,同时各个部分中又各自有比较精细的细节内容排布。

除了Html代码和CSS代码之外,还有最重要的一部分控制代码,即JavaScript代码。首先需要定义的是数据部分,即整个程序运行过程中所需要的主要数据,这部分需要单独定义并交由Vue统一进行生命周期的管理,避免了散乱定义数据导致的结构混乱和功能失控,数据定义部分的程序如图5所示。

图5 聊天机器人JavaScript数据部分

在数据部分中,笔者定义了头像列表、消息列表、当前(正在编辑的)消息内容、消息总数、当前时间、引擎列表、当前引擎等多个数据源。

有了数据,下边需要定义操作数据的程序,实际上这部分程序就是对用户操作的响应。如当用户打开程序之后,程序需要在页头部分自动更新并显示时间,这部分的操作如图6所示。

图6 聊天机器人JavaScript时间更新部分

当用户点击发送按钮之后,程序会把用户编辑好的消息发送到用户指定的聊天机器人引擎中。同时还需要做例如空消息监测、发送消息之后的编辑框清空等工作,这部分工作的操作如图7所示。

图7 聊天机器人JavaScript消息发送部分

用户点击发送按钮请求聊天机器人引擎的操作因为设计的要素和操作过多,所以单独抽取出来成一个单独的函数,这部分的函数如图8所示。

图8 聊天机器人JavaScript引擎请求部分

无论是用户编辑发送消息还是聊天机器人回复一条消息,都需要创建一条新的消息,并存储下来,还要在屏幕上绘制出来,因此这部分重复操作也单独抽取出来成为一个函数,这部分的函数如图9所示。

图9 聊天机器人JavaScript消息创建部分

有了Html、CSS以及JavaScript的配合,一个完整的聊天机器人就可以开始使用了,通过Vue框架的运行命令即可在本地运行并查看效果。

■1.3 部署服务

本地服务可以成功地运行并查看程序效果,但这只能笔者自己使用,不能分享出去让别人也享受聊天机器人服务,因此笔者还将服务部署到了互联网上。因为本服务是纯静态网站,所以可以方便地部署在阿里云虚拟主机上。首先将本地的服务打包,使用Vue的build命令,即可通过内建的Webpack工具将编辑好的Vue项目打包为典型的Html静态页面,打包后的效果如图10所示。

图10 聊天机器人本地打包结果

打包之后,通过FileZilla将文件上传到阿里云虚拟主机。等待几分钟,当阿里云刷新了服务之后,就可以通过云虚拟主机绑定的域名加上指定的子目录来访问服务了,访问链接是https://thuer.cn/chat-bot/。

至此笔者就完成了全部的开发工作。

2 总结

■2.1 全文总结

本文以现实中的无法被满足作为出发点,总结了自己制作开发一款对话机器人的过程。旨在帮助所有有需要的人,因为在笔者身边能有个人说句话有时真的太困难了。所以笔者想研发一款聊天机器人。

在研究之前先参考了文献,主要是现有的关于聊天机器人的文献,当文献中指出Seq2Seq模型和NLP模型的时候,也要自己去学习这两个模型。了解他们的优缺点,并且综合比较,笔者选择了使用成熟的API作为数据来源,选择了web平台作为自己的研发平台,在论文写作期间做了大量的了解和调查,最终实现了本系统。

主要的成果就是现在在网络上的聊天机器人模型,它能满足日常所需的对话功能,切实解决了笔者提出的没人说话这个问题,笔者对此还是比较满意

■2.2 未来展望

由于对知识的了解不足,导致在很多方面上,都有所欠缺,尤其在知识运用上和代码书写上。呈现出来的机器人还不够“智能”。在其语言表达的过程中,由于使用的是网络上的API,所以对训练机器人的工作不是很了解,导致仍然有许多生硬的语句。整体的网页呈现效果也不够美观,语音系统需要对接转换器,这些都是笔者在后续需要加强的内容。

猜你喜欢

代码引擎聊天
点燃企业发展的“引擎”
打造信息化建设的“党建引擎”
车坛往事4:引擎进化之屡次失败的蒸汽机车
我就是不想跟你聊天了
敞开门聊天
神秘的代码
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
近期连续上涨7天以上的股
One Engine Left只剩下一个引擎