使用 Bing 拼字檢查 API 進行拼字檢查
Bing 拼字檢查會執行文字的內容拼字檢查,並提供拼字錯誤的內嵌建議。 本文說明如何使用 Bing 拼字檢查 REST API 來更正應用程式中的 Xamarin.Forms 拼字錯誤。
概觀
Bing 拼字檢查 REST API 有兩種作業模式,而且在向 API 提出要求時必須指定模式:
Spell
更正短文字(最多 9 個字),而不需要任何大小寫變更。Proof
更正長文字、提供大小寫更正和基本標點符號,並抑制激進的更正。
注意
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
必須取得 API 金鑰,才能使用 Bing 拼字檢查 API。 這可以在試用認知服務取得
如需 Bing 拼字檢查 API 支援的語言清單,請參閱 支援的語言。 如需 Bing 拼字檢查 API 的詳細資訊,請參閱 Bing 拼字檢查檔。
驗證
對 Bing 拼字檢查 API 提出的每個要求都需要指定為標頭值的 Ocp-Apim-Subscription-Key
API 金鑰。 下列程式代碼範例示範如何將 API 金鑰新增至 Ocp-Apim-Subscription-Key
要求的標頭:
public BingSpellCheckService()
{
httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", Constants.BingSpellCheckApiKey);
}
無法將有效的 API 金鑰傳遞至 Bing 拼字檢查 API 會導致 401 回應錯誤。
執行拼字檢查
透過對 SpellCheck
API https://api.cognitive.microsoft.com/bing/v7.0/SpellCheck
提出 GET 或 POST 要求,即可達成拼字檢查。 提出 GET 要求時,會以查詢參數的形式傳送要拼字檢查的文字。 提出POST要求時,系統會在要求本文中傳送要拼字檢查的文字。 GET 要求受限於拼字檢查 1500 個字元,因為查詢參數位符串長度限制。 因此,除非檢查短字串,否則POST要求通常應該進行。
在範例應用程式中, SpellCheckTextAsync
方法會叫用拼字檢查程式:
public async Task<SpellCheckResult> SpellCheckTextAsync(string text)
{
string requestUri = GenerateRequestUri(Constants.BingSpellCheckEndpoint, text, SpellCheckMode.Spell);
var response = await SendRequestAsync(requestUri);
var spellCheckResults = JsonConvert.DeserializeObject<SpellCheckResult>(response);
return spellCheckResults;
}
方法 SpellCheckTextAsync
會產生要求 URI,然後將要求傳送至 SpellCheck
API,以傳回包含結果的 JSON 回應。 JSON 回應會還原串行化,結果會傳回給呼叫方法以供顯示。
設定拼字檢查
您可以藉由指定 HTTP 查詢參數來設定拼字檢查程式:
string GenerateRequestUri(string spellCheckEndpoint, string text, SpellCheckMode mode)
{
string requestUri = spellCheckEndpoint;
requestUri += string.Format("?text={0}", text); // text to spell check
requestUri += string.Format("&mode={0}", mode.ToString().ToLower()); // spellcheck mode - proof or spell
return requestUri;
}
這個方法會將文字設定為拼字檢查,以及拼字檢查模式。
如需 Bing 拼字檢查 REST API 的詳細資訊,請參閱 拼字檢查 API v7 參考。
傳送要求
方法 SendRequestAsync
會向 Bing 拼字檢查 REST API 提出 GET 要求,並傳回回應:
async Task<string> SendRequestAsync(string url)
{
var response = await httpClient.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
這個方法會將 GET 要求傳送至 SpellCheck
API,並使用要求 URL 指定要翻譯的文字,以及拼字檢查模式。 接著會讀取回應並傳回至呼叫方法。
SpellCheck
API 會在回應中傳送 HTTP 狀態代碼 200 (確定),前提是要求有效,這表示要求成功,且要求的信息在回應中。 如需響應物件的清單,請參閱 響應物件。
處理回應
API 回應會以 JSON 格式傳回。 下列 JSON 數據顯示拼錯文字 Go shappin tommorow
的回應訊息:
{
"_type":"SpellCheck",
"flaggedTokens":[
{
"offset":3,
"token":"shappin",
"type":"UnknownToken",
"suggestions":[
{
"suggestion":"shopping",
"score":1
}
]
},
{
"offset":11,
"token":"tommorow",
"type":"UnknownToken",
"suggestions":[
{
"suggestion":"tomorrow",
"score":1
}
]
}
],
"correctionType":"High"
}
陣列 flaggedTokens
包含文字中的文字陣列,這些文字標示為未正確拼字或語法不正確。 如果找不到拼字或文法錯誤,陣列將會是空的。 陣列內的標籤如下:
offset
– 以零起始的位移,從文字字串開頭到標示的文字。token
– 文字字串中未正確拼字或文法不正確的文字。type
– 導致文字標示的錯誤類型。 有兩個可能的值 –RepeatedToken
和UnknownToken
。suggestions
– 字組陣列,可更正拼字或文法錯誤。 陣列是由和score
所組成suggestion
,表示建議的更正正確信賴等級。
在範例應用程式中,JSON 回應會還原串行化為 SpellCheckResult
實例,結果會傳回給呼叫方法以供顯示。 下列程式代碼範例示範 SpellCheckResult
如何處理 實例以顯示:
var spellCheckResult = await bingSpellCheckService.SpellCheckTextAsync(TodoItem.Name);
foreach (var flaggedToken in spellCheckResult.FlaggedTokens)
{
TodoItem.Name = TodoItem.Name.Replace(flaggedToken.Token, flaggedToken.Suggestions.FirstOrDefault().Suggestion);
}
此程式代碼會逐一查看集合, FlaggedTokens
並以第一個建議取代來源文字中任何拼錯或語法不正確的文字。 下列螢幕快照顯示拼字檢查前後:
注意
上述 Replace
範例會為了簡單起見,但在大量的文字中,可能會取代錯誤的令牌。 API 提供 offset
值,該值應該用於生產應用程式,以識別來源文字中用來執行更新的正確位置。
摘要
本文說明如何使用 Bing 拼字檢查 REST API 來更正應用程式中的 Xamarin.Forms 拼字錯誤。 Bing 拼字檢查會執行文字的內容拼字檢查,並提供拼字錯誤的內嵌建議。