調用百度API進行文本糾錯


  畢設做的是文本糾錯方面,然后今天進組見研究生導師 。老師對我做的東西蠻感興趣。然后介紹自己現在做的一些項目,其中有個模塊需要有用到文本糾錯功能。

要求1:有多人同時在線編輯文檔,然后文檔功能有類似Word中的在疑似錯誤下標浪線,或者標記高亮,並且要推薦修改選項

要求2:語料數據的獲取、處理以及完善

要求3:文章寫完后要有生成keyword 

根據老師所講要查閱文獻,以及已有項目來分析可行性,首先想到之前曾有同學調用百度API來進行文檔的糾錯,然后在這里試了一下。

API描述

識別輸入文本中有錯誤的片段,提示錯誤並給出正確的文本結果。支持短文本、長文本、語音等內容的錯誤識別,糾錯是搜索引擎、語音識別、內容審查等功能更好運行的基礎模塊之一。

 

Step 1  獲取assess_token

根據百度開發手冊 ,我們需要進行獲取assess_token(用戶身份驗證和授權的憑證)

詳細請見百度開發手冊 

因為百度所給的實例中是python2    然后我用的是python3  會有一些變化  這里只貼python3代碼供自己回憶參考

import urllib.request
import urllib,sys
import ssl

# client_id 為官網獲取的AK, client_secret 為官網獲取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?' \
       'grant_type=client_credentials&client_id=**********&client_secret=**************'
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
content = response.read()
if (content):
    print(content)

 

執行代碼后  可在控制台中看到所要的token_key

另附實例

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

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

 

Step 2 文本糾錯應用部分

POST方式調用

注意:要求使用JSON格式的結構體來描述一個請求的具體內容。

body整體文本內容可以支持GBK和UTF-8兩種格式的編碼。

URL參數:參數 值

access_token 通過API Key和Secret Key獲取的access_token,參考“Access Token獲取”

Header如下:參數 值

Content-Type application/json

返回說明

 

# -*- coding: utf-8 -*-
#!/usr/bin/env python

import urllib
import json
#Access Token的有效期為30天(以秒為單位),請您集成時注意在程序中定期請求新的token

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

client_id ='***********'
client_secret ='*************'

#獲取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


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM