調用攻略(Python3)python
首先認證受權:json
在開始調用任何API以前須要先進行認證受權,具體的說明請參考:app
http://ai.baidu.com/docs#/Auth/topide
獲取Access Token測試
向受權服務地址https://aip.baidubce.com/oauth/2.0/token發送請求(推薦使用POST),並在URL中帶上如下參數:優化
grant_type:?必須參數,固定爲client_credentials;ui
client_id:?必須參數,應用的API Key;搜索引擎
client_secret:?必須參數,應用的Secret Key;url
例如:spa
具體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#/NLP-API/741e48da
接口描述
識別輸入文本中有錯誤的片斷,提示錯誤並給出正確的文本結果。支持短文本、長文本、語音等內容的錯誤識別,糾錯是搜索引擎、語音識別、內容審查等功能更好運行的基礎模塊之一。
請求說明
HTTP方法: POST
請求URL: https://aip.baidubce.com/rpc/2.0/nlp/v1/ecnet
URL參數:
參數 值
access_token 經過API Key和Secret Key獲取的access_token,參考「Access Token獲取」
Header以下:
參數 值
Content-Type application/json
Body請求示例:
{
"text": "百度是一家人工只能公司"
}
請求參數
參數 類型 描述 是否必填
text string 待糾錯文本,輸入限制511字節 必填
返回說明
參數 說明 描述
log_id uint64 請求惟一標識碼
correct_query string 糾錯後的文本
score double 模型置信度打分
item object 分析結果
+vec_fragment list 替換候選片斷信息
++ori_frag string 原片斷
++correct_frag double 替換片斷
++begin_pos int 起始(長度單位)
++end_pos list 結尾(長度單位)
Python3調用代碼以下:
#調用百度文本糾錯接口
def txt_correction(content):
print ('原文:',content)
token=get_token()
url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/ecnet'
params = dict()
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('GB2312')
data = json.loads(content)
item=data['item']
print('糾錯後:',item['correct_query'])
print('Score:',item['score'])
txt_correction('汽車形式在這條道路上')
返回結果:
原文: 汽車形式在這條道路上
糾錯後: 汽車行駛在這條道路上
Score: 0.982835
測試:
選用不一樣的數據對文本糾錯的準確性進行測試,具體的案例包括生活用語,文章,古詩等。具體案例以下:
test_list = [
'我來自夏門',
'朝辭白底彩雲間',
'時光蔥蔥而過',
'形像代言人',
'此事不會影像大局',
'化夏子孫團結一心',
'他有點必理不平衡。',
'這是咱們最新的研發計畫。',
'我早就在這排對了。',
'你中於來了。']
import datetime
print (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
for text in test_list:
txt_correction(text)
print (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
結果:
2019-04-16 11:29:52
原文: 我來自夏門
糾錯後: 我來自夏門
Score: 0
原文: 朝辭白底彩雲間
糾錯後: 朝辭白帝彩雲間
Score: 0.961476
原文: 時光蔥蔥而過
糾錯後: 時光匆匆而過
Score: 0.938082
原文: 形像代言人
糾錯後: 形象代言人
Score: 0.947005
原文: 此事不會影像大局
糾錯後: 此事不會影響大局
Score: 0.969137
原文: 化夏子孫團結一心
糾錯後: 華夏子孫團結一心
Score: 0.885656
原文: 他有點必理不平衡。
糾錯後: 他有點必理不平衡。
Score: 0
原文: 這是咱們最新的研發計畫。
糾錯後: 這是咱們最新的研發計劃。
Score: 0.441279
原文: 我早就在這排對了。
糾錯後: 我早就在這排隊了。
Score: 0.977007
原文: 你中於來了。
糾錯後: 你中於來了。
Score: 0
2019-04-16 11:30:19
發如今10個測試案例中,有7個錯誤被成功糾正。糾正成功率爲70%左右,感受不錯,不過還有優化空間。隨着百度不斷地優化應該會有進一步的提升。
10個調用,用時27秒,每次調用2.7秒左右。
使用場景及建議:
文本糾錯有很廣闊的應用前景,如今已經有了如下場景:
寫做輔助:在內容寫做平臺上內嵌糾錯模塊,可在做者寫做時自動檢查並提示錯別字狀況。從而下降因疏忽致使的錯誤表述,有效提高做者的文章寫做質量,同時給用戶更好的閱讀體驗
搜索糾錯:用戶常常在搜索時輸入錯誤,經過分析搜索query的形式和特徵,可自動糾正搜索query並提示用戶,進而給出更符合用戶需求的搜索結果,有效屏蔽錯別字對用戶真實需求的影響
對話語音識別糾錯:將文本糾錯嵌入對話系統中,可自動修正語音識別轉文本過程當中的錯別字,向對話理解系統傳遞糾錯後的正確query,明顯提升語音識別準確率,使產品總體體驗更佳
此外還能夠應用在:
NLP數據預處理:如在對客服記錄,景區評價的數據進行客戶情緒分析前可使用文本糾錯功能對數據進行預處理,提升分析的準確度。
單據掃描信息的後處理:對單據掃描文本識別後的數據進行後處理,提升準確度
在天然語言相關的AI應用愈來愈多的時候,文本糾錯做爲NLP應用的關鍵組件,必將獲得普遍的應用。在試驗中發現,百度AI做爲這方面的先行者,已經具有了很好的易用性和調用速度,但願能進一步提升識別的準確率,百尺竿頭更進一步。