基于华为云智能问答机器人的AI诗歌生成【我的华为云体验之旅】

网友投稿 782 2022-05-30

今天来体验一下华为云的对话机器人服务,调用了NLP的诗歌生成API接口,话不多说,走着!

那么,什么是对话机器人服务?

对话机器人服务(Conversational Bot Service) 是一款基于人工智能技术,针对企业应用场景开发的云服务,主要包括智能问答、智能质检、定制对话机器人和任务型对话等功能。对话机器人服务中的技能工坊是打造任务型对话技能的工具平台。通过创建管理不同技能和词典,满足不同的用户需求,实现不同场景下的多轮对话能力。

简单来说,就是训练了一个有指定功能的ai机器人,会根据你设置的词典和回复模板来操作,并随着问答能不断学习提升。

基础环境准备

在使用 ModelArts 进行 AI 开发前,需先完成以下基础操作哦(如有已完成部分,请忽略),主要分为4步(注册–>实名认证–>服务授权–>领代金券):

使用手机号注册华为云账号:点击注册

点此去完成实名认证,账号类型选"个人",个人认证类型推荐使用"扫码认证"。

准备数据

下载附件至本地,解压。可以看到 poetry_code 文件夹下有以下三个文件:

├── acrostic_dict.txt

├── poetry_demo.py

└── poetry_type_dict.txt

单击https://console.huaweicloud.com/cbs/?region=cn-north-4&&locale=zh-cn#/cbs/management/qabot/home进入,进入对话机器人服务智能问答机器人页面,点击右上角的购买问答机器人,进入问答机器人购买页面。如下所示

分别输入问答机器人名称,选择试用的计费模式,并点击立即购买完成支付,即完成试用专业版机器人创建

购买成功后如图所示:

添加诗歌类型词典

接着点击机器人管理按钮进入机器人管理页面,进入左侧标签栏中的词典管理。点击“创建词典”按钮,按照下图指导添加诗歌类型词典:

词典标注:POETRYY_TYPE

词典名称:诗歌类型

点击“确认并添加词条”按钮,创建该条词典,并进入添加词条页面。

点击页面上的“导入词条”按钮,然后点击“...”按钮,上传本地 poetry_code 文件夹下的 poetry_type_dict.txt 文件,导入模式选“追加”,最后点击“确定”按钮,即可完成诗歌类型词典词条导入。如下图所示:

导入成功后,可以看到如下词条:

添加藏头诗词典

参看上述创建诗歌类型词典的方式,创建藏头诗词典。点击“创建词典”按钮,填写内容如下:

词典标识:ACROSTIC 词典名称 :藏头诗判断

点击“确认并添加词条”按钮。

点击“导入词条”按钮,点击“...”按钮,选择本地 poetry_code 文件夹中的 acrostic_dict.txt 文件,导入模式选追加,最后点“确定”按钮,完成藏头诗判断词典词条导入,如下图所示:

至此,两条词典创建成功。词典因仅用于技能中,可暂时不发布。

这里将添加语料,并标注,配置作诗机器人的技能。

在机器人管理页面,进入左侧标签栏中的技能管理页面,新建写诗技能并进行技能配置。

创建技能

点击“创建技能”按钮,添加自定义技能,输入技能名称:作诗技能,如下图所示:

创建意图

技能创建完成后,点击进入写诗技能,在意图管理中点击“创建意图”按钮,如下图指导填写:

意图标识:poem

意图名称:作诗

然后点击“确认并继续设置”按钮,继续配置该意图。

添加用户问法语料

进入“poem”意图的“用户问法管理”,点击“用户问法语料”输入框下方的蓝色字体“批量添加用户问法语料”,复制下方的语料至弹出对话框,点击“确认”完成用户问法预料导入。

以秋思为题写首诗

作诗一首

写一首五言绝句

写一首诗

写个诗

写首七言绝句

来一个七言律诗

来首诗吧

用白云写一首诗

用秋思写个五言律诗

给我写个诗

语料添加完之后,可以得到如下结果:

添加槽位

往下滑动页面,找到“槽位管理”页面,分别创建槽位:poetryType(诗歌类型), poetryName(诗歌名称), acrostic(藏头诗)三个槽位。 槽位是触发意图的关键信息 。

然后点击“添加槽位”按钮,按照如下指导,添加poetryType槽位:

关联槽位:不关联

槽位标识:poetryType

槽位名称:诗歌类型

是否必须:是

输入框:请问诗歌类型是什么?

词典选择:POETRY_TYPE

答案候选:勾选

然后点击“确定”按钮。

再次点击“添加槽位”按钮,按照如下指导,添加poetryName槽位:

关联槽位:不关联

槽位标识:poetryName

槽位名称:诗歌名称

是否必须:是;

输入框:请问诗歌名称是什么?

词典选择:sys.any

答案候选:不勾选

然后点击“确定”按钮。

再次点击“添加槽位”按钮,按照如下指导,添加acrostic槽位:

关联槽位:不关联

槽位标识:acrostic

槽位名称:藏头诗

是否必须:是

输入框:请问需要藏头诗么?

词典选择:ACROSTIC

答案候选:不勾选

然后点击“确定”按钮。

三个槽位添加完成后,可以得到如下列表:

语料标注

往上滑动页面,回到“用户问法管理”,对“用户问法语料”列表中的语料进行标注。

选中关键词,然后使用槽位对关键词标注。例如:七言绝句——poetryType,秋思——poetryName。

标注完成后,如下图所示:

添加用户问法模板

在“用户问法管理”中的“用户问法模板”页面中添加模板。

点击“添加模板”按钮。模板内容如下图所示,在相应位置点击下方槽位名称插入相应槽位。完成配置后用户即可使用模板的问法与机器人进行对话。

添加第一个模板:

添加第二个模板:

两个问法模板添加完成后,可以看到如下列表:

机器人回复管理

配置通过函数的方式调用作诗接口。

向下滑动页面,找到“机器人回复管理”页面。

选择“调用函数回复”,并点击右侧“创建新函数”按钮进入函数工作流控制台,如下图所示:

按照如下指导,填写参数:

模板:使用空模板函数名称:poem

所属应用:default

委托名称:不使用任务委托

运行时语言:Python2.7

函数执行入口:index.handler

代码上传方式:默认代码。

# -*- coding:utf-8 -*- import json import sys import requests import json reload(sys) sys.setdefaultencoding("utf-8") type_dict = {"五言绝句":0,"七言绝句":1,"五言律诗":2,"七言律诗":3} def handler (event, context): token_response = requests.post("https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens", headers={"Content-Type": "application/json"}, json={"auth": {"identity":{"password": {"user": {"domain": {"name": "账号名"}, "name": "用户名", "password": "密码"}},"methods": ["password"]}, "scope": {"project": {"name": "cn-north-4"}}}}) token = token_response.headers.get("X-Subject-Token") project_id = json.loads(token_response.content).get("token").get("project").get("id") slot_temp = json.dumps(event, ensure_ascii=False) slot_info = json.loads(slot_temp) poem_name = slot_info["slots"]["poetryName"][0] poem_type = type_dict[slot_info["slots"]["poetryType"][0].encode("utf-8")] poem_acrostic = slot_info["slots"]["acrostic"][0] if (poem_acrostic == "true"): poem_acrostic = True else : poem_acrostic = False base_uri = "https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{}/nlg/poem" response = requests.post(base_uri.format(project_id), headers={"X-Auth-Token": token, "Content-Type": "application/json"}, json = {"type": poem_type, "title": poem_name, "acrostic": poem_acrostic}) if response.status_code == 200: poem = json.loads(response.text.encode("utf-8"))["poem"] return "\n".join(poem) else: return response.text

注意:

1. 需要修改代码中的账号名、用户名、密码为自己的真实信息(如果是主账号,用户名和账户名相同)

2. 代码中会调用自然语言处理服务的诗歌生成接口,该接口为收费接口,接口详情如下

https://apiexplorer.developer.huaweicloud.com/apiexplorer/debughistory?product=NLP&api=RunPoem

代码主要功能:获取槽位信息,调用写诗接口,返回接口调用结果。

最后点击“创建函数”按钮:

创建成功后,会自动跳转到函数配置页面。

配置函数的超时时间,点击“配置”页签, 然后将执行超时时间改为10,如下图所示:

点击右上角的“请选择测试事件”下拉框中的“配置测试事件”按钮,如下图所示:

在测试事件输入框中填入:

{"slots":{"poetryType":["五言绝句"],"poetryName":["秋思"],"acrostic":["true"]}}

保存测试事件后,点击“测试”按钮,查看测试结果,测试结果如下:

可以看见报错了,原因是我们还没订阅这个api,接下来去订阅一下

访问 https://console.huaweicloud.com/nlp/#/nlp/overview

基于华为云智能问答机器人的AI诗歌生成【我的华为云体验之旅】

找到下图的诗歌生成api,点击开通服务

继续测试就成功了!!!

选择函数回复返回 poem 意图管理页面,选择调用函数回复,在下拉框中选择已创建的函数  poem ,如下图所示:

然后点击页面下方的“保存”按钮,保存意图所有配置信息。

模型训练发布

在“写诗技能”页面中,进入“训练发布”页面,点击“训练新版本”按钮,勾选“用户常用问法”,技能阈值默认即可。点击确认开始模型训练,训练时长大概3-5分钟。

模型训练完成后,点击“发布”按钮发布模型。

体验作诗技能

模型发布完成后,即可通过点击机器人管理页面中右上角的“对话体验”按钮体验写诗机器人。(诗歌类型槽位已配置开启候选项,因此用户可通过点击响应类型进行自动回复。) 下图是一组对话样例:

{ "poem": [ "秋思", "秋色已寥落,客心空自惊。", "残荷余宿露,高柳失寒声。", "岁月悲欢异,山川今昔情。", "西风动归思,无复听砧声。" ] }

到这里,对话机器人可以生成诗歌了,接下来大家可以结合不同的需求为机器人配置各项技能,实现不同场景下的多轮对话能力。

总结

关于此次的对话机器人实操就到这里了,整个过程挺容易上手,遇到小问题也能自己看文档解决,整个配置和实现过程是非常有趣的,华为云社区的产品也非常强大,基本满足了开发者的需求,继续加油!!

【我的华为云体验之旅】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/309059

智能问答机器人 机器人

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Android 8.1 关机充电动画(一)模式选择
下一篇:测试效能平台最佳实践 | 解决用户痛点,比堆叠功能更重要!
相关文章