kontrola pravopisu pomocí rozhraní API Bingu pro kontrolu pravopisu
Kontrola pravopisu Bingu provádí kontextovou kontrolu pravopisu textu a poskytuje vložené návrhy na slova s chybnými pravopisy. tento článek vysvětluje, jak pomocí Kontrola pravopisu Bingu REST API opravit pravopisné chyby v Xamarin.Forms aplikaci.
Přehled
REST API Kontrola pravopisu Bingu má dva operační režimy a při vytváření požadavku na rozhraní API se musí zadat režim:
Spellopravuje krátký text (až 9 slov) bez jakýchkoli změn v malých písmenech.Proofopraví dlouhý text, zajišťuje opravy velikosti písmen a základní interpunkci a potlačuje 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žít rozhraní API Bingu pro kontrolu pravopisu, je nutné získat klíč rozhraní API. To lze získat při pokusu o Cognitive Services
seznam jazyků podporovaných v rozhraní API Bingu pro kontrolu pravopisu najdete v tématu podporované jazyky. další informace o rozhraní API Bingu pro kontrolu pravopisu najdete v dokumentaci k Kontrola pravopisu Bingu.
Authentication
každý požadavek na rozhraní API Bingu pro kontrolu pravopisu vyžaduje klíč rozhraní API, který by měl být zadán jako hodnota Ocp-Apim-Subscription-Key záhlaví. Následující příklad kódu ukazuje, jak přidat klíč rozhraní API do Ocp-Apim-Subscription-Key hlavičky žádosti:
public BingSpellCheckService()
{
httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", Constants.BingSpellCheckApiKey);
}
nepovedlo se předat platný klíč rozhraní API k rozhraní API Bingu pro kontrolu pravopisu dojde k chybě 401 odezvy.
Provádění kontroly pravopisu
Kontrolu pravopisu lze dosáhnout vytvořením požadavku GET nebo POST do SpellCheck rozhraní API na adrese https://api.cognitive.microsoft.com/bing/v7.0/SpellCheck . Při vytvoření žádosti GET se text, který má být kontrolován pravopis, pošle jako parametr dotazu. Při podání žádosti POST se text, který má kontrolovat pravopis, pošle v textu žádosti. Požadavky GET jsou omezené na kontrolu pravopisu 1500 znaků z důvodu omezení délky řetězce parametru dotazu. Požadavky POST by tedy 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;
}
SpellCheckTextAsyncMetoda vygeneruje identifikátor URI žádosti a pak odešle požadavek do SpellCheck rozhraní API, které vrátí odpověď JSON obsahující výsledek. Odpověď JSON je deserializovaná a výsledek se vrátí do volající metody pro zobrazení.
Konfigurace kontroly pravopisu
Proces kontroly pravopisu se dá 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í kontrolu pravopisu textu a režim kontroly pravopisu.
další informace o REST API Kontrola pravopisu Bingu najdete v tématu rozhraní API pro kontrolu pravopisu v7 reference.
Odesílá se žádost.
SendRequestAsyncmetoda vytvoří požadavek GET na Kontrola pravopisu Bingu REST API 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 určující text, který se má přeložit, a režim kontroly pravopisu. Odpověď se pak přečte a vrátí volající metodě.
SpellCheckRozhraní API pošle v odpovědi stavový kód HTTP 200 (ok) za předpokladu, že žádost je platná, což indikuje, že požadavek byl úspěšný a že požadované informace jsou v odpovědi. Seznam objektů odpovědí naleznete v tématu objekty Response.
Zpracování odpovědi
Odpověď rozhraní API se vrátí ve formátu JSON. Následující data JSON zobrazují odpověď pro text s chybou pravopisu 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"
}
flaggedTokensPole obsahuje pole slov v textu, které bylo označeno jako nepsané správně nebo je gramaticky nesprávné. Pole bude prázdné, pokud nebyly nalezeny žádné pravopisné nebo gramatické chyby. Značky v poli jsou:
offset– posun od nuly od začátku textového řetězce k slovu, které bylo označeno příznakem.token– slovo v textovém řetězci, které není správně zadané nebo je gramaticky nesprávné.type– typ chyby, která způsobila označení slova příznakem. Existují dvě možné hodnoty –RepeatedTokenaUnknownToken.suggestions– pole slov, která budou opravovat chybu pravopisu nebo gramatiky. Pole se skládá zsuggestiona ascore, což označuje úroveň spolehlivosti, kterou je navrhovaná oprava správná.
V ukázkové aplikaci je odpověď JSON deserializována do SpellCheckResult instance, přičemž výsledek je vrácen do volající metody pro zobrazení. Následující příklad kódu ukazuje, jak SpellCheckResult je instance zpracována 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 provede iteraci v FlaggedTokens kolekci a nahradí všechna nesprávně napsaná nebo gramatická nesprávná slova ve zdrojovém textu s prvním návrhem. Následující snímky obrazovky se zobrazí před kontrolou pravopisu a po ní:


Poznámka
Výše uvedený příklad používá Replace pro jednoduchost, ale napříč velkým množstvím textu může nahradit nesprávný token. Rozhraní API poskytuje offset hodnotu, která se má použít v produkčních aplikacích k identifikaci správného umístění ve zdrojovém textu k provedení aktualizace.
Souhrn
tento článek vysvětluje, jak pomocí Kontrola pravopisu Bingu REST API opravit pravopisné chyby v Xamarin.Forms aplikaci. Kontrola pravopisu Bingu provádí kontextovou kontrolu pravopisu textu a poskytuje vložené návrhy na slova s chybnými pravopisy.
Stažení ukázky