上面两个字符段是接口的输入,text 字数小于 5 个,是春联的主题。 index 可以用来指定生成的对联,不同的 index 可能会生成不同的对联。

智能春联的返回参数如下表:

其输出为 json 字符串。例如:“春节”对应的一个输出为

{'couplets': {'center': '迎春接福', 'first': '春节迎春新世纪', 'second': '福音报福小康年'}}

智能写诗接口

智能写诗是指根据用户输入的命题关键词自动生成一首7言绝句。

智能写诗的请求参数如下表:

这两个输入字段和智能春联的两个输入字段相同,只是,text 代表诗的主题

智能写诗的返回参数如下表:

其输出也是 json 字符串,例如:“百度”对应的一个输出为

{'poem': [{'content': '神州崛起宏图展\t华夏腾飞巨浪狂\t万里江山添锦绣\t千秋百度铸辉煌\t', 'title': '百度'}]}

错误码说明

代码实现

本文使用 python3 来调用智能春联和智能写诗接口,接下来一步一步进行说明。

创建应用

首先进入到控制台,然后在“总览”下找到“产品服务” -> “人工智能” -> “自然语言处理”。

然后点击创建应用,填写好“应用名称”、“应用描述”,其他默认就行,然后点击“创建”。

创建好应用之后,进入“应用列表”,就能看到应用的相关信息,我们需要的是 API Key 和 Secret Key。

获取 access token

通过 API Key 和 Secret Key 获取的 access_token。更多关于 access_token 的获取方法参考 http://ai.baidu.com/docs#/Auth/top

下面代码是 python3 获取 access_token 的代码

# 获取 token

def get_token_key():

token_key = ''

# client_id 为官网获取的AK, client_secret 为官网获取的SK

client_id = '【百度云应用的AK】'

client_secret = '【百度云应用的SK】'

host = f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials' \

f'&client_id={client_id}&client_secret={client_secret}'

request = Request(host)

request.add_header('Content-Type', 'application/json; charset=UTF-8')

response = urlopen(request)

token_content = response.read()

if token_content:

token_info = json.loads(token_content)

token_key = token_info['access_token']

return token_key

token_content 中包含很多信息,例如输出如下(为了我个人信息安全,部分内容 用 * 代替):

{'access_token': '****************************************',

'expires_in': 2592000,

'refresh_token': '*******************************************',

'scope': 'brain_nlp_sentiment_classify_custom public nlp_simnet nlp_wordemb '

'nlp_comtag nlp_dnnlm_cn brain_nlp_lexer brain_all_scope '

'brain_nlp_comment_tag brain_nlp_dnnlm_cn brain_nlp_word_emb_vec '

'brain_nlp_word_emb_sim brain_nlp_sentiment_classify '

'brain_nlp_simnet brain_nlp_depparser brain_nlp_wordembedding '

'brain_nlp_dnnlm_cn_legacy brain_nlp_simnet_legacy '

'brain_nlp_comment_tag_legacy brain_nlp_lexer_custom '

'brain_nlp_keyword brain_nlp_topic brain_nlp_ecnet brain_nlp_emotion '

'brain_nlp_comment_tag_custom wise_adapt lebo_resource_base '

'lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian '

'ApsMisTest_Test权限 vis-classify_flower lpq_开放 cop_helloScope '

'ApsMis_fangdi_permission smartapp_snsapi_base iop_autocar '

'oauth_tp_app smartapp_smart_game_openapi oauth_sessionkey '

'smartapp_swanid_verify smartapp_opensource_openapi',

'session_key': '*****************************',

'session_secret': '*******************************'}

而我们需要的只是 access_token,因此只需获取该字段就行。

调用智能春联接口

调用智能春联接口的 python3 实现代码如下:

# 调用百度 AI 智能春联接口(用于测试)

def get_couplets(text, token_key, index=0):

"""

调用百度AI智能春联接口,并生成横批、上联和下联

:param text: 智能春联的主题(官方限制不超过5个字)

:param token_key: 通过调用 get_token_key() 获取的 token

:param index: 不同的 index 会生成不同的春联

:return: 调用智能春联生成的数据

"""

request_url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/couplets'

params_d = dict()

params_d['text'] = text

params_d['index'] = index

params = json.dumps(params_d).encode('utf-8')

access_token = token_key

request_url = request_url + "?access_token=" + access_token

request = Request(url=request_url, data=params)

request.add_header('Content-Type', 'application/json')

response = urlopen(request)

content = response.read()

if content:

data = json.loads(content)

return data

# 解析生成的春联

def parse_couplets(data):

"""

解析调用智能春联生成的数据

:param data: 调用智能春联生成的有效数据

:return: 横批(center)、上联(first)和下联(second)

"""

center = data['couplets']['center']

first = data['couplets']['first']

second = data['couplets']['second']

# print(f'上联:{first}')

# print(f'下联:{second}')

# print(f'横批:{center}')

return center, first, second

get_couplets 函数调用接口得到返回的值,parse_couplets 函数解析调用智能春联生成的有效数据。这里所说的有效数据是指调用接口没有发生错误的情况。在正确调用接口时,data 输出示例如下:

{'couplets': {'center': '迎春接福', 'first': '春节迎春新世纪', 'second': '福音报福小康年'}}

是一个字典型数据,直接进行解析就能得到横批、上联和下联。如果想要获取同一主题不同的对联,可以尝试不同的 index。

当调用接口失败时,就会得到无效的 data,通过解析 data,能够获得错误信息,下面是解析错误的代码,能够返回对应错误的中文描述。

# 错误代码

ERROR_DICT = {

'2': '后端连接超时请重试',

'52001': '请求超时请重试',

'52002': '系统错误请重试',

'52003': '未授权用户',

'52004': '输入解析失败',

'52005': '输入字段有误',

'52006': '输入文本长度不超过5',

'52007': '输入文本包含政治&黄色内容',

'52008': '后台服务返回错误请重试',

'54003': '访问频率受限',

'54100': '查询接口参数为空',

'54102': '无写诗结果请重试'

}

# 解析是否调用接口错误,如果有返回对应的提示,没有返回None

def parse_error(data):

"""

解析是否调用接口错误

:param data: 调用接口生成的数据

:return: 如果出错,返回对应的错误信息,否则返回None

"""

if 'error_code' in data:

code = data['error_code']

error = ERROR_DICT[str(code)]

return error

return None

调用智能写诗接口

调用智能写诗接口的 python3 实现代码如下:

# 调用百度 AI 智能写诗接口(用于测试)

def get_poem(text, token_key, index=0):

"""

调用百度AI智能写诗接口,并生成七言诗

:param text: 智能写诗的主题(官方限制不超过5个字)

:param token_key: 通过调用 get_token_key() 获取的 token

:param index: 不同的 index 会生成不同的七言诗

:return: 调用智能写诗生成的数据

"""

request_url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/poem'

params_d = dict()

params_d['text'] = text

params_d['index'] = index

params = json.dumps(params_d).encode('utf-8')

access_token = token_key

request_url = request_url + "?access_token=" + access_token

request = Request(url=request_url, data=params)

request.add_header('Content-Type', 'application/json')

response = urlopen(request)

content = response.read()

if content:

data = json.loads(content)

return data

# 解析生成的诗句

def parse_poem(data):

"""

解析调用智能写诗生成的数据

:param data: 调用智能写诗生成的有效数据

:return: 诗的题目(title)和诗的内容(content)

"""

title = data['poem'][0]['title']

poem = data['poem'][0]['content'].replace('\t', '\n')

# print(title)

# print(poem)

return title, poem

在正确调用接口时,data 输出如下:

{'poem': [{'content': '神州崛起宏图展\t华夏腾飞巨浪狂\t万里江山添锦绣\t千秋百度铸辉煌\t', 'title': '百度'}]}

是一个字典型数据,直接进行解析就能得到题目和内容。如果想要获取同一主题不同的诗,可以尝试不同的 index。

实例应用

本文进一步通过网页的形式将上述功能进行实现,使用Flask来部署。

首先创建一个文件夹 flaskr,该文件夹下有一个名为 static 的文件夹,用于存放css样式和背景图片,还有一个文件夹名为templates用于存放html网页,另外还有一个python文件,用于执行flask。

以下是 Flask 相关代码

from flask import Flask, render_template, request, redirect, url_for, session

from flaskr.poem import nlp_result, parse_error, parse_couplets, parse_poem

import random

app = Flask(__name__)

token_key = '【你获取的token】'

@app.route("/", methods=('GET', 'POST'))

def index():

if request.method == 'POST':

couplets = request.form.get('couplets')

if couplets is not None:

return redirect(url_for('get_couplets'))

poem = request.form.get('poem')

if poem is not None:

return redirect(url_for('get_poem'))

return render_template('couplets/index.html')

@app.route("/couplets", methods=('GET', 'POST'))

def get_couplets():

if request.method == 'POST':

center = None

first = None

second = None

title = request.form.get('theme')

back = request.form.get('back')

if back == '返回':

return redirect(url_for('index'))

index = random.randint(0, 10)

data = nlp_result(title, token_key, index, way='couplets')

error = parse_error(data)

if not error:

center, first, second = parse_couplets(data)

return render_template('couplets/show.html',

center=center,

first=first,

second=second,

title=title,

error=error)

return render_template('couplets/base.html')

@app.route("/poem", methods=('GET', 'POST'))

def get_poem():

if request.method == 'POST':

title = None

poem = None

title = request.form.get('theme')

back = request.form.get('back')

if back == '返回':

return redirect(url_for('index'))

index = random.randint(0, 10)

data = nlp_result(title, token_key, index, way='poem')

error = parse_error(data)

if not error:

title, poem = parse_poem(data)

return render_template('couplets/poem_show.html',

title=title,

poem=poem,

error=error)

return render_template('couplets/poem_index.html')

if __name__ == '__main__':

app.run(debug=True)

该代码中有三个函数,分别对应三个界面,如果运行地址为 http://127.0.0.1:5000/ ,那么三个界面对应的网址分别为 http://127.0.0.1:5000/  、http://127.0.0.1:5000/couplets  和 http://127.0.0.1:5000/poem 表示主页、对联页和写诗页。

其效果展示如下:

处理错误信息的效果展示如下:

完整代码请移步 https://github.com/busyboxs/couplet-and-poem

python智能写诗的程序_【百度大脑新品体验】智能写诗与智能春联相关推荐

  1. 【百度大脑新品体验】手势识别

    [百度大脑新品体验]手势识别 作者:才能我浪费99 1.功能描述: 识别图片中的手部位置和手势类型,可识别24种常见手势,包括拳头.OK.比心.作揖.作别.祈祷.我爱你.点赞.Diss.Rock.竖中 ...

  2. 【百度大脑新品体验】新版增值税发票识别

    [百度大脑新品体验]新版增值税发票识别 作者:才能我浪费99 1.功能描述: 在日常工作中经常要用到增值税发票.在使用的时候需要对增值税发表进行检查,验真,录入等很多工作.使用增值税发票识别技术,实现 ...

  3. 【百度大脑新品体验】人体关键点识别

    [百度大脑新品体验]人体关键点识别 作者:才能我浪费99 1.功能描述: 检测图像中的人体并返回人体矩形框位置,精准定位21个核心关键点,包含头顶.五官.颈部.四肢主要关节部位,支持多人检测.大动作等 ...

  4. 【百度大脑新品体验】人脸情绪实时识别

    [百度大脑新品体验]人脸情绪实时识别 作者:才能我浪费99 首先认证授权: 在开始调用任何API之前需要先进行认证授权,具体的说明请参考: http://ai.baidu.com/docs#/Auth ...

  5. 【百度大脑新品体验】人脸面部动作识别

    [百度大脑新品体验]人脸面部动作识别 作者:busyboxs 最近在尝试做一个类似于 Facedance challenge 的应用,这个应用需要识别人脸五官的动作.目前可能的解决方法就是通过对关键点 ...

  6. 【百度大脑新品体验】,人脸检测,轮廓测试建议

    [百度大脑新品体验],人脸检测,轮廓测试建议 作者:worddict 近日,备受关注的人脸关键点检测从72个升级至150个,对用户的眼睛.嘴唇.眉毛的描述更加细腻,可以更好地应用于互联网娱乐.营销等场 ...

  7. python智能写诗的程序_百度AI攻略:智能写诗

    首先还是认证 认证授权: 在开始调用任何API之前需要先进行认证授权,具体的说明请参考: 获取Access Token grant_type:?必须参数,固定为client_credentials: ...

  8. python百度手势识别_【百度大脑新品体验】手势识别

    总感觉积分涨得好慢啊,我又来了混积分了! 上次我尝试做了一个给眼镜加特效,针对的是静态图像,具体文章参考 https://ai.baidu.com/forum/topic/show/942890 . ...

  9. 全国首家百度大脑创新体验中心启动,中关村创业大街AI产业创新生态再升级...

    12月26日,由百度.中关村创业大街联合打造的全国首家"百度大脑创新体验中心"在中关村创业大街揭幕启动. 海淀区区长助理上官伟.科技部火炬中心孵化器管理处处长陈晴.海淀园管委会常务 ...

  10. python无法在终端运行程序_解决项目pycharm能运行,在终端却无法运行的问题

    解决项目pycharm能运行,在终端却无法运行的问题 报 ModuleNotFoundError: No module named '****' 错误. 运行的文件夹又不在根目录下, 在python ...

最新文章

  1. unity android本地推送,Unity安卓本地推送
  2. CentOS下tftp 安装配置使用
  3. 关于ansible 创建目录安装redis、nginx
  4. Vcastr 3.0 - flash video(flv) player (开源 Open Source)
  5. ion-nav-view的学习 和理解
  6. 这样的递归调用,你看出来了?
  7. 【飞控理论】从零开始学习Kalman Filters之三:非线性状态估算器
  8. 怎么把 html做成雪花特效,CSS3 HTML5下雪特效 雪花飘飘
  9. 机房收费系统个人重构版:透过文档谈文档驱动开发
  10. node.js 初体验(转载)
  11. 基本类型,指针,双指针作为函数参数
  12. oracle物理结构视频教学,教你轻松掌握Oracle数据库中的物理结构
  13. 苹果cmsv10仿爱客影视搜索自适应模板
  14. opencv3/C++ 机器学习-EM算法/Expectation Maximization
  15. 计算机网络笔记 韩立刚(物理层+数据链路层+网络层+传输层已完成)
  16. mysql大于小于索引问题
  17. Introduction to Robotics 总结1~6
  18. 小程序云开发之--微信公众号文章采集篇
  19. 【游戏】任天堂Nintendo Switch超详细购买/使用指南以及注意事项(根据自己使用持续更新中...)
  20. lincx Shell脚本编程之字符串的截取,替换,按条件掐头去尾

热门文章

  1. Julia Pro国内下载地址
  2. 青龙脚本--今日头条极速版
  3. Word交叉引用连续引用多个参考文献
  4. WPS JS 宏搜索带颜色的字的笔记
  5. html+英文什么字体好看的,10个非常漂亮的英文字体分享
  6. 90%人不知道的大厂面试流程和技巧
  7. vs2015如何安装vsix扩展工具
  8. redis,ruby安装
  9. 计算机网络经过了几个阶段,计算机网络的发展经过哪几个阶段?
  10. ps4html5播放器,PS4终获得全新媒体播放器 允许从PC或U盘串流媒体