百度API实现自动写诗

news/2024/11/9 10:08:29/

作者介绍

张琪,男,西安工程大学电子信息学院,2022级研究生
研究方向:机器视觉与人工智能
电子邮件:3126743452@qq.com

王泽宇,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:2717124491@qq.com

一. 百度API实现自动写诗

1.1 百度智能写诗API接口

百度智能写诗技术是在神经网络机器翻译技术(Neural Machine Translation,简称 NMT)基础上的研发结果。结合 NMT 技术,百度工程师提出了一套基于主题规划的诗歌生成框架,有效地提升了主题相关性,大幅提高了自动生成的诗歌质量。

主题规划技术首先根据用户 Query(诗歌题目)对要生成诗歌的内容进行规划,预测得到每一句诗的子主题,每一个子主题用一个单词来表示。这个过程和人类创作诗歌比较相似,诗人在创作之前往往会列出提纲,规划出每一句诗要描写的核心内容,然后再进行每句诗的创作。主题规划模型在生成每一句诗的时候,同时把上文生成的诗句和主题词一起输入来生成下一句诗。在这里,主题词的引入可以让生成的诗句不偏离主题,从而使整首诗都做到主题明确,逻辑顺畅。

例如:
在这里插入图片描述
用户 Query 是「春天的桃花开了」。在主题规划阶段,经过主题词抽取和主题词扩展两个步骤,得到了要生成诗歌的四个主题词「春天」、「桃花」、「燕」和「柳」,这里限定每个词对应一句诗。利用 NMT 技术可以根据第一个主题词「春天」直接生成首句诗,在本例中得到「春天丽日照晴川」。在依次生成第二、三、四句诗歌的过程中,会考虑所有已生成的历史上文以及指定的主题词。具体地,用第一句诗句加主题词「桃花」生成得到第二句诗「十里桃花映满山」;用第一、二句诗加上主题词「燕」生成得到第三句诗「燕子呢喃寻旧梦」;用第一、二、三句诗加上主题词「柳」生成得到第四句诗「清风拂面柳如烟」。

百度智能写诗基于文心千亿大模型与神经网络序列生成技术,提供可直接进行场景应用的NLP语言生成能力,实现根据用户输入的任意主题词,自动生成与主题相关的七言绝句。

1.2 请求说明

HTTP 方法:POST。HTTP是超文本传输协议(Hyper Text Transfer Protocol)的缩写,其用于从服务器传输超文本到本地浏览器的传送协议,本实验采取POST请求方法。
请求URL:(https://aip.baidubce.com/rpc/2.0/creation/v1/poem)

1.3 部分参数说明

在这里插入图片描述

二.实验过程及测试结果

2.1 获得API Key

1. 注册百度智能云

注册并登录百度智能云账号,选择控制台。
请添加图片描述

2. 创建应用

产品服务——人工智能类——自然语言处理。

请添加图片描述

创建应用

请添加图片描述

选择自然语言处理接口

请添加图片描述

3. 在应用列表中查看应用并获取个人应用的API Key和Secret Key

请添加图片描述

2.2 代码实现

import requests
import json
API_KEY = "自己的api key"
SECRET_KEY = "自己的secret key"
def GetAccessToeken():
token_host='https://aip.baidubce.com/oauth/2.0/token?grant_type=
client_credentials&client_id={ak}&client_ secret={sk}'.format(ak=API_KEY, sk=SECRET_KEY)header = {'Content-Type': 'application/json; charset=UTF-8'}response = requests.post(url=token_host, headers=header)content = response.json()access_token = content.get("access_token")return access_token
request_url = 'https://aip.baidubce.com/rpc/2.0/creation/v1/poem'  # 智能写诗
access_token = GetAccessToeken()
print(access_token)
datamsg = {"text": "编程学习","index": 1,}
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/json'}
response = requests.post(request_url, data=json.dumps(datamsg), headers=headers)
if response:ans = response.json()print(ans)

2.3 结果

在这里插入图片描述

2.4 调用出错(错误代码)

‘2’: ‘后端连接超时请重试’,
‘52001’: ‘请求超时请重试’,
‘52002’: ‘系统错误请重试’,
‘52003’: ‘未授权用户’,
‘52004’: ‘输入解析失败’,
‘52005’: ‘输入字段有误’,
‘52006’: ‘输入文本长度不超过5’,
‘52007’: ‘输入文本包含政治&黄色内容’,
‘52008’: ‘后台服务返回错误请重试’,
‘54003’: ‘访问频率受限’,
‘54100’: ‘查询接口参数为空’,
‘54102’: ‘无写诗结果请重试’

2.5 在线调试示例

在百度智能云网站中直接体验写诗结果:在创建应用后获取个人应用的API Key和Secret Key,并填入。在Body的text中输入诗题(5字内)

请添加图片描述

输出结果

在这里插入图片描述


http://www.ppmy.cn/news/85121.html

相关文章

IOC初始化 IOC启动阶段 (Spring容器的启动流程)

[toc](IOC初始化 IOC启动阶段 (Spring容器的启动流程)) IOC初始化 IOC启动阶段 (Spring容器的启动流程) Resource定位过程:这个过程是指定位BeanDefinition的资源,也就是配置文件(如xml)的位置,并将其封装成Resource对…

ROS学习——rviz打开bag文件

一、首先可以在这个网站中下载.bag文件用于学习。 二、显示.bag文件信息 在终端1中启动&#xff1a; roscore 在终端2中输入&#xff1a; rosbag info <bag_file_name> 这里要把<bag_file_name>换成你自己的bag文件名字&#xff0c;之后在终端就会显示出bag文件…

水下图像0

d_r_1_.jpg 一个拖着电线的水下六足机器人在海水中作业 A robot is exploring the reef on the sea floor A hexapod robot works next to reef at the bottom of the sea A rectangular deep-sea robot swims past a patch of reef An underwater robot is detecting coral …

比赛记录:Codeforces Round 874 (Div. 3) A~G

传送门:CF 前题提要:赛时A出了5道题,并且都是一遍过的,F题也已经找到了解决方法,但是没时间完成了.以为应该能上分,但是没想到赛后E题被hack掉了…绝了.然后打完这场 d i v 3 div3 div3后立马阳了,加上一大堆烦心事(包括但不限于各类考试).就导致现在才写出这篇题解. A题:A. …

自学软件测试怎么学?新增软件测试(全栈),笔试及面试全套方法

既然是自学&#xff0c;那就如下方面着手吧。 1、面试(此篇文章的重磅) 2、思路 3、心态 4、技能 真所谓&#xff0c;“面试造飞机&#xff0c;工作拧螺丝”。咱们先从第一个&#xff0c;面试着手&#xff0c;这就好比写文章先列好提纲一样&#xff0c;要知道你这个行业具体有那…

五、AOP(1)

一、AOP基本概念 1.什么是AOP 面向切面编程&#xff08;方面&#xff09;&#xff0c;利用AOP可以对业务逻辑的各个部分进行隔离&#xff0c;从而使得业务逻辑各部分之间的耦合度降低&#xff0c;提高程序的可重用性&#xff0c;同时提高了开发的效率。不通过修改源代码方式添…

CVE-2018-2894WebLogic未授权任意文件上传

CVE-2018-2894WebLogic未授权任意文件上传 这个洞的限制就比较多了 限制版本 Oracle WebLogic Server版本 10.3.6.0 12.1.3.0 12.2.1.2 12.2.1.3 限制配置 该漏洞的影响模块为web服务测试页&#xff0c;在默认情况下不启用。 /ws_utc/config.do /ws_utc/begin.do 默认情况下不…

UnityVR--组件3--Line Renderer--线性渲染

目录 线性渲染组件简介 绘制线条Line Renderer组件介绍 绘制拖尾Trail Renderer组件介绍 应用1&#xff1a;使用Line Renderer绘制线段 应用1实现&#xff1a;使用系统工具或自定义工具绘制线段 应用2&#xff1a;Trail Renderer简单制作子弹拖尾效果 应用3&#xff1a;…