Kontrola pravopisu pomocí rozhraní API bingu pro kontrolu pravopisu
Kontrola pravopisu Bingu provádí kontextovou kontrolu pravopisu pro text a poskytuje vložené návrhy pro chybně napsaná slova. Tento článek vysvětluje, jak pomocí rozhraní REST API Bingu pro kontrolu pravopisu opravit pravopisné chyby v Xamarin.Forms aplikaci.
Přehled
Rozhraní REST API Bingu pro kontrolu pravopisu má dva režimy provozu a při vytváření požadavku na rozhraní API je nutné zadat režim:
Spell
opraví krátký text (až 9 slov) bez jakýchkoli změn velikosti písmen.Proof
opravuje dlouhý text, poskytuje opravy písmen a základní interpunkci a potlačí agresivní opravy.
Poznámka:
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Aby bylo možné používat rozhraní API Bingu pro kontrolu pravopisu, musíte získat klíč rozhraní API. To je možné získat na webu Try Cognitive Services.
Seznam jazyků podporovaných rozhraním API Bingu pro kontrolu pravopisu najdete v tématu Podporované jazyky. Další informace o rozhraní API Bingu pro kontrolu pravopisu najdete v dokumentaci ke kontrole pravopisu Bingu.
Ověřování
Každý požadavek rozhraní API Bingu pro kontrolu pravopisu vyžaduje klíč rozhraní API, který by se měl zadat jako hodnota hlavičky Ocp-Apim-Subscription-Key
. Následující příklad kódu ukazuje, jak přidat klíč rozhraní API do Ocp-Apim-Subscription-Key
hlavičky požadavku:
public BingSpellCheckService()
{
httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", Constants.BingSpellCheckApiKey);
}
Neúspěšné předání platného klíče rozhraní API do rozhraní API Bingu pro kontrolu pravopisu způsobí chybu odpovědi 401.
Provádění kontroly pravopisu
Kontrolu pravopisu lze dosáhnout provedením požadavku GET nebo POST do SpellCheck
rozhraní API na adrese https://api.cognitive.microsoft.com/bing/v7.0/SpellCheck
. Při vytváření požadavku GET se text ke kontrole pravopisu odešle jako parametr dotazu. Při vytváření požadavku POST se v textu požadavku odešle text, který se má kontrolovat pravopisem. Požadavky GET jsou omezené na kontrolu pravopisu 1500 znaků kvůli omezení délky řetězce parametru dotazu. Požadavky POST by proto měly být obvykle provedeny, pokud nejsou kontrolovány krátké řetězce.
V ukázkové aplikaci SpellCheckTextAsync
metoda vyvolá proces kontroly pravopisu:
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;
}
Metoda SpellCheckTextAsync
vygeneruje identifikátor URI požadavku a odešle požadavek do SpellCheck
rozhraní API, který vrátí odpověď JSON obsahující výsledek. Odpověď JSON je deserializována s výsledkem vráceným do volající metody pro zobrazení.
Konfigurace kontroly pravopisu
Proces kontroly pravopisu lze nakonfigurovat zadáním parametrů dotazu 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;
}
Tato metoda nastaví text na kontrolu pravopisu a režim kontroly pravopisu.
Další informace o rozhraní REST API bingu pro kontrolu pravopisu najdete v referenčních informacích k rozhraní API kontroly pravopisu v7.
Odeslání požadavku
Metoda SendRequestAsync
provede požadavek GET na rozhraní REST API Bingu pro kontrolu pravopisu a vrátí odpověď:
async Task<string> SendRequestAsync(string url)
{
var response = await httpClient.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
Tato metoda odešle požadavek GET do SpellCheck
rozhraní API s adresou URL požadavku, která určuje text, který se má přeložit, a režim kontroly pravopisu. Odpověď se pak přečte a vrátí do volající metody.
Rozhraní SpellCheck
API odešle v odpovědi stavový kód HTTP 200 (OK) za předpokladu, že požadavek je platný, což znamená, že požadavek byl úspěšný a že požadované informace jsou v odpovědi. Seznam objektů odpovědi najdete v tématu Objekty odpovědi.
Zpracování odpovědi
Odpověď rozhraní API se vrátí ve formátu JSON. Následující data JSON zobrazují zprávu odpovědi pro chybně napsaný text 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"
}
Pole flaggedTokens
obsahuje matici slov v textu, která byla označena jako neoznačovaná správně nebo jsou gramačně nesprávná. Pole bude prázdné, pokud nejsou nalezeny žádné pravopisné nebo gramatické chyby. Značky v poli jsou:
offset
– posun založený na nule od začátku textového řetězce na slovo, které bylo označeno příznakem.token
– slovo v textovém řetězci, které není správně napsané nebo je gramaticky nesprávné.type
– typ chyby, která způsobila označení slova příznakem. Existují dvě možné hodnoty –RepeatedToken
aUnknownToken
.suggestions
– pole slov, která opraví pravopisnou nebo gramatickou chybu. Matice se skládá z asuggestion
a ,score
což označuje úroveň jistoty, že navrhovaná oprava je správná.
V ukázkové aplikaci se odpověď JSON deserializuje do instance s výsledkem vráceným SpellCheckResult
do volající metody pro zobrazení. Následující příklad kódu ukazuje, jak je instance zpracována SpellCheckResult
pro zobrazení:
var spellCheckResult = await bingSpellCheckService.SpellCheckTextAsync(TodoItem.Name);
foreach (var flaggedToken in spellCheckResult.FlaggedTokens)
{
TodoItem.Name = TodoItem.Name.Replace(flaggedToken.Token, flaggedToken.Suggestions.FirstOrDefault().Suggestion);
}
Tento kód prochází FlaggedTokens
kolekcí a nahradí chybně napsaná nebo gramatická nesprávná slova ve zdrojovém textu prvním návrhem. Následující snímky obrazovky ukazují před a po kontrole pravopisu:
Poznámka:
Výše uvedený příklad se používá Replace
pro jednoduchost, ale ve velkém množství textu by mohl nahradit nesprávný token. Rozhraní API poskytuje offset
hodnotu, kterou byste měli použít v produkčních aplikacích k identifikaci správného umístění ve zdrojovém textu pro provedení aktualizace.
Shrnutí
Tento článek vysvětluje, jak pomocí rozhraní REST API Bingu pro kontrolu pravopisu opravit pravopisné chyby v Xamarin.Forms aplikaci. Kontrola pravopisu Bingu provádí kontextovou kontrolu pravopisu pro text a poskytuje vložené návrhy pro chybně napsaná slova.