百度AI攻略:智能春聯

首先認證受權:python

在開始調用任何API以前須要先進行認證受權,具體的說明請參考:json

http://ai.baidu.com/docs#/Auth/topapp

獲取Access Tokenide

向受權服務地址https://aip.baidubce.com/oauth/2.0/token發送請求(推薦使用POST),並在URL中帶上如下參數:ui

grant_type:?必須參數,固定爲client_credentials;編碼

client_id:?必須參數,應用的API Key;url

client_secret:?必須參數,應用的Secret Key;spa

例如:code

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&orm

具體Python3代碼以下:

# -*- coding: utf-8 -*-

#!/usr/bin/env python

import urllib

import json

#client_id 爲官網獲取的AK, client_secret 爲官網獲取的SK

client_id =【百度雲應用的AK】

client_secret =【百度雲應用的SK】

#獲取token

def get_token():

    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret

    request = urllib.request.Request(host)

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

    response = urllib.request.urlopen(request)

    token_content = response.read()

    if token_content:

        token_info = json.loads(token_content)

        token_key = token_info['access_token']

    return token_key

智能春聯:

具體說明請參考:http://ai.baidu.com/docs#/IntelligentWriting-API/f85d34cc

接口描述

根據用戶輸入的命題關鍵詞自動生成一副春聯,包括上聯、下聯和橫批。

注:請使用方注意接口使用的合規性,不得利用該接口從事不合規場景的應用;若有違規使用,一經發現,AI開放平臺有權當即中止提供服務

請求說明

HTTP方法: POST

請求URL: https://aip.baidubce.com/rpc/2.0/nlp/v1/couplets

URL參數:

參數 值

access_token 經過API Key和Secret Key獲取的access_token,參考「Access Token獲取」

Header以下:

參數 值

Content-Type application/json

Body請求示例:

{

"text": "百度",

"index": 0

}

請求參數

參數 是否必選 類型 描述

text 是 string 字符串(限5字符數之內)即春聯的主題

Index 否 int 整數 默認爲數值爲0,即第一幅春聯。每換一次,數值加1便可,必定數量後會返回以前的春聯結果。

返回參數

參數 類型 描述

log_id uint64 請求惟一標識碼

first string 春聯上聯:成7-9個字的上聯

second string 春聯下聯:生成7-9個字的春聯下聯

center string 春聯橫批:生成4個字的春聯橫批

提示: 請求body爲json字符串,無須對body進行urlencode(百分號編碼)

Python3調用代碼以下:

#調用百度智能春聯接口

def get_couplets(content):

    token=get_token()

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

    params = dict()

    params['index'] = 0

    params['text'] = content

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

    access_token = token

    url = url + "?access_token=" + access_token

    request = urllib.request.Request(url=url, data=params)

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

    response = urllib.request.urlopen(request)

    content = response.read()

    if content:

        content=content.decode('utf-8')

        #print (content)

        data = json.loads(content)

        data=data['couplets']

        print ('上聯:',data['first'])

        print ('下聯:',data['second'])

        print ('橫批:',data['center'])

get_couplets('社區') 

調用結果:

上聯: 和諧社會春光好

下聯: 富貴人家福祉多

橫批: 大好春光

建議:

1,建議統一文本處理返回的編碼,如今有的是UTF-8(好比春聯)有的是GB2312(好比文本糾錯),使用起來不太方便。

2,實際返回JSON爲:{"couplets":{"center":"大好春光","first":"和諧社會春光好","second":"富貴人家福祉多"}}與API幫助給的例子Json:

{

"log_id": 7310552510652020090,

"first": "喜氣千年千里新",

"second": "清風百度百花豔",

"center": "千雲祥集"

}

不太同樣,建議修改API幫助

相關文章
相關標籤/搜索