Verificação ortográfica usando a API de Verificação Ortográfica do Bing

Baixar exemplo Baixar o exemplo

A Verificação Ortográfica do Bing executa verificação ortográfica contextual de texto, fornecendo sugestões embutidas para palavras incorretas. Este artigo explica como usar a API REST de Verificação Ortográfica do Bing para corrigir erros de ortografia em um Xamarin.Forms aplicativo.

Visão geral

A API REST de Verificação Ortográfica do Bing tem dois modos operacionais e um modo deve ser especificado ao fazer uma solicitação para a API:

  • Spell corrige texto curto (até 9 palavras) sem alterações de maiúsculas e minúsculas.
  • Proof corrige texto longo, fornece correções de maiúsculas e minúsculas e pontuação básica e suprime correções agressivas.

Observação

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Uma chave de API deve ser obtida para usar a API de Verificação Ortográfica do Bing. Isso pode ser obtido em Experimentar serviços cognitivos

Para obter uma lista dos idiomas compatíveis com a API de Verificação Ortográfica do Bing, confira Idiomas com suporte. Para obter mais informações sobre a API de Verificação Ortográfica do Bing, consulte Documentação de Verificação Ortográfica do Bing.

Autenticação

Cada solicitação feita à API de Verificação Ortográfica do Bing requer uma chave de API que deve ser especificada como o valor do Ocp-Apim-Subscription-Key cabeçalho. O exemplo de código a seguir mostra como adicionar a chave de API ao Ocp-Apim-Subscription-Key cabeçalho de uma solicitação:

public BingSpellCheckService()
{
    httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", Constants.BingSpellCheckApiKey);
}

A falha ao passar uma chave de API válida para a API de Verificação Ortográfica do Bing resultará em um erro de resposta 401.

Executando verificação ortográfica

A verificação ortográfica pode ser obtida fazendo uma solicitação GET ou POST para a SpellCheck API em https://api.cognitive.microsoft.com/bing/v7.0/SpellCheck. Ao fazer uma solicitação GET, o texto a ser verificado ortográfico é enviado como um parâmetro de consulta. Ao fazer uma solicitação POST, o texto a ser verificado ortográfico é enviado no corpo da solicitação. As solicitações GET são limitadas à verificação ortográfica de 1500 caracteres devido à limitação de comprimento da cadeia de caracteres do parâmetro de consulta. Portanto, as solicitações POST normalmente devem ser feitas, a menos que cadeias de caracteres curtas estejam sendo verificadas ortográficas.

No aplicativo de exemplo, o SpellCheckTextAsync método invoca o processo de verificação ortográfica:

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;
}

O SpellCheckTextAsync método gera um URI de solicitação e envia a solicitação para a SpellCheck API, que retorna uma resposta JSON que contém o resultado. A resposta JSON é desserializada, com o resultado sendo retornado ao método de chamada para exibição.

Configurando a verificação ortográfica

O processo de verificação ortográfica pode ser configurado especificando parâmetros de consulta 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;
}

Esse método define o texto a ser verificado ortográfico e o modo marcar ortográfico.

Para obter mais informações sobre a API REST de Verificação Ortográfica do Bing, consulte Referência da API de Verificação Ortográfica v7.

Enviando a solicitação

O SendRequestAsync método faz a solicitação GET para a API REST de Verificação Ortográfica do Bing e retorna a resposta:

async Task<string> SendRequestAsync(string url)
{
    var response = await httpClient.GetAsync(url);
    return await response.Content.ReadAsStringAsync();
}

Esse método envia a solicitação GET para a SpellCheck API, com a URL de solicitação especificando o texto a ser traduzido e o modo de marcar ortográfico. Em seguida, a resposta é lida e retornada ao método de chamada.

A SpellCheck API enviará HTTP status código 200 (OK) na resposta, desde que a solicitação seja válida, o que indica que a solicitação foi bem-sucedida e que as informações solicitadas estão na resposta. Para obter uma lista de objetos de resposta, consulte Objetos de resposta.

Como processar a resposta

A resposta da API é retornada no formato JSON. Os seguintes dados JSON mostram a mensagem de resposta para o texto Go shappin tommorowcom ortografia incorreta:

{  
   "_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"
}

A flaggedTokens matriz contém uma matriz de palavras no texto que foram sinalizadas como não sendo escritas corretamente ou estão gramaticalmente incorretas. A matriz estará vazia se nenhum erro ortográfico ou gramatical for encontrado. As marcas dentro da matriz são:

  • offset – um deslocamento baseado em zero do início da cadeia de caracteres de texto para a palavra que foi sinalizada.
  • token – a palavra na cadeia de caracteres de texto que não está escrita corretamente ou está gramaticalmente incorreta.
  • type – o tipo do erro que fez com que a palavra fosse sinalizada. Há dois valores possíveis – RepeatedToken e UnknownToken.
  • suggestions – uma matriz de palavras que corrigirá o erro ortográfico ou gramatical. A matriz é composta por um suggestion e um score, que indica o nível de confiança de que a correção sugerida está correta.

No aplicativo de exemplo, a resposta JSON é desserializada em uma SpellCheckResult instância, com o resultado sendo retornado ao método de chamada para exibição. O exemplo de código a seguir mostra como a SpellCheckResult instância é processada para exibição:

var spellCheckResult = await bingSpellCheckService.SpellCheckTextAsync(TodoItem.Name);
foreach (var flaggedToken in spellCheckResult.FlaggedTokens)
{
  TodoItem.Name = TodoItem.Name.Replace(flaggedToken.Token, flaggedToken.Suggestions.FirstOrDefault().Suggestion);
}

Esse código itera pela coleção e substitui todas as FlaggedTokens palavras incorretas incorretas ou incorretas incorretas ou incorretas incorretas no texto de origem pela primeira sugestão. As capturas de tela a seguir mostram antes e depois da marcar ortográfica:

Antes da Verificação Ortográfica

Após verificação ortográfica

Observação

O exemplo acima usa Replace para simplificar, mas em uma grande quantidade de texto ele pode substituir o token errado. A API fornece o offset valor que deve ser usado em aplicativos de produção para identificar o local correto no texto de origem para executar uma atualização.

Resumo

Este artigo explicou como usar a API REST de Verificação Ortográfica do Bing para corrigir erros de ortografia em um Xamarin.Forms aplicativo. A Verificação Ortográfica do Bing executa verificação ortográfica contextual de texto, fornecendo sugestões embutidas para palavras incorretas.