Sdílet prostřednictvím


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 a UnknownToken.
  • suggestions – pole slov, která opraví pravopisnou nebo gramatickou chybu. Matice se skládá z a suggestion a , scorecož 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:

Před kontrolou pravopisu

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.