1 知識點from urllib.parse import urlencode
access_token = "YOUR_TOKEN" url = f"https://aip.baidubce.com/rpc/2.0/nlp/v1/news_summary" url_param = { "charset": "UTF-8", "access_token": access_token } url = f"{url}?{urlencode(url_param)}"
知識點1 f"" 代表字符串中的{}可以替換
2 錯誤碼信息
https://ai.baidu.com/ai-doc/NLP/Bk6z52e59
3 代碼
百度工程師答疑
這部分token都是相同的
我們一般是都在URL中發送
因為有部分API使用的是application/json
部分是application/x-www-form-urlencoded
將token放在url中,方便代碼抽象
調用api使用的方式為
對應application/x-www-form-urlencoded,是form表單提交
application/json 另外一種是url只是url,數據全部轉為json
本質:token寫在哪里是與api的開發者規定相關的,可以在url中?xxx&charset=UTF-8,也可以寫在body中。
4 新聞摘要的模型返回結果
大部分還是以 新聞中的語句摘抄為主,個別會有一些修改
主要展示場景為 新聞推送或新聞語音播報
若需要對新聞或文章做深層的含義分析,可以使用“詞向量表示”相關產品, 做定制化服務。
5 完整代碼
#!usr/bin/env python #-*- coding:utf-8 -*- import requests import json import time def getToken(client_id, client_secret): params = { 'grant_type': 'client_credentials', 'client_id': client_id, 'client_secret': client_secret, } response = requests.get( 'https://aip.baidubce.com/oauth/2.0/token', params=params) jsonres = json.loads(response.content) return jsonres.get('access_token') url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/news_summary' headers = { 'Content-Type': 'application/json', } print("token===",getToken('M003nYhuyX4F9cgsTtooApCY', 'blAU8YfUjm4IEGBG8dXHNDQROhOqySou')) def news_summary(title, content, max_summary_len): print('max_summary_len:', max_summary_len) url = "https://aip.baidubce.com/rpc/2.0/nlp/v1/news_summary?access_token=%s&charset=UTF-8" % getToken('M003nYhuyX4F9cgsTtooApCY', 'blAU8YfUjm4IEGBG8dXHNDQROhOqySou') params={} params['title'] = title # params['charset']='UTF-8' params['content'] = content params['max_summary_len'] = max_summary_len # params["access_token"]=getToken('M003nYhuyX4F9cgsTtooApCY', 'blAU8YfUjm4IEGBG8dXHNDQROhOqySou') params = json.dumps(params) begin = time.perf_counter() print("params=",params) response = requests.post(url, headers=headers, data=params) content = response.content.decode() end = time.perf_counter() print('處理時長:' + '%.2f' % (end - begin) + '秒') if content: data = json.loads(content) print("data=",data) summary = data['summary'] print('Summary:', summary) return summary title="星系團碰撞時可產生1億攝氏度高溫沖擊波" content="新浪科技訊 北京時間7月12日消息,據英國每日郵報報道,一支研究小組對兩個星系團觀測顯示,當星系團碰撞時會產生合並沖擊,將動能轉化為熱能,星系碰撞時可以產生高達1億攝氏度的高溫沖擊波。星系團是由數百個星系組成,每個星系通過引力作用將數千億顆恆星結合在一起。天文學家已經知道星系團之間會發生碰撞,此前已觀察到星系初始碰撞的前后過程,然而,拍攝到每個星系團碰撞過程是非常困難的,可能需要花費人們一生的時間去完成。來自國際射電天文研究中心(ICRARA)的研究小組希望建立一個關於這些星團如何融合的連續模型,他們觀察到兩個星系團的碰撞初期階段,與所有已觀測到的合並沖擊情況相反,最新觀測的沖擊沿着合並平面向外擴散。這一發現揭曉了大質量星系團形成的一個重要時期,當星系團快速接近時,會導致沿合並軸的氣體產生較強壓縮,根據當前理論模型預測稱,大部分激波能量可能會消失在星系團之外,最終轉化為熱氣體。在我們對宇宙結構形成的理解中,這一觀察可被看作是一塊缺失的“拼圖”,這與星系和星系團等大型天體結構主要通過碰撞和合並而增長的觀點相悖。星系團是已知最大的天體,是由數百個星系組成,每個星系都包含着數千億顆恆星,周圍環繞着一圈熾熱氣體,自從宇宙大爆炸以來,星系一直處於增長狀態,主要是通過相互碰撞和合並。由於它們具有較大體積,直徑可達到數百萬光年,此類碰撞可能需要大約10億年時間才能完成。當宇宙塵埃落定時,兩個相互碰撞的星系團將合並成為一個更大的星系團。" # 摘要取原文的30% # news_summary(title,content,int(len(content) * 0.50)) # 對文本的二次壓縮 content=news_summary(title,content,int(len(content) * 0.50)) news_summary(title,content,int(len(content) * 0.50))
6 完成一次百度api調用的完整過程
1)創建任務
2)任務中有 appkey secret等,為了獲取token,獲取token的函數可以復用
3)api的使用方法(需要攜帶參數)
技術文檔中包含nlp和智能創作等api的說明