Verificação ortográfica usando a API de verificação ortográfica do Bing
A Verificação Ortográfica do Bing executa a verificação ortográfica contextual do texto, fornecendo sugestões embutidas para palavras com erros ortográficos. 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 de operação e um modo deve ser especificado ao fazer uma solicitação à API:
Spell
corrige textos curtos (até 9 palavras) sem alterações no invólucro.Proof
corrige textos longos, fornece correções de caixa 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 Try Cognitive Services
Para obter uma lista dos idiomas suportados pela API de Verificação Ortográfica do Bing, consulte Idiomas suportados. 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 a 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 ortograficamente é enviado como um parâmetro de consulta. Ao fazer uma solicitação POST, o texto a ser verificado ortograficamente é enviado no corpo da solicitação. As solicitações GET são limitadas à verificação ortográfica de 1500 caracteres devido à limitação do 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 ortograficamente.
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, em seguida, envia a solicitação para a SpellCheck
API, que retorna uma resposta JSON contendo 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 ortograficamente e o modo de verificação ortográfica.
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 da solicitação especificando o texto a ser traduzido e o modo de verificação ortográfica. A resposta é então lida e retornada ao método de chamada.
A SpellCheck
API enviará o código de status HTTP 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 dados JSON a seguir mostram a mensagem de resposta para o texto Go shappin tommorow
incorreto :
{
"_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 ficará vazia se nenhum erro ortográfico ou gramatical for encontrado. As tags dentro da matriz são:
offset
– um deslocamento baseado em zero do início da cadeia de texto para a palavra que foi sinalizada.token
– a palavra na cadeia de texto que não está escrita corretamente ou está gramaticalmente incorreta.type
– o tipo de erro que fez com que a palavra fosse sinalizada. Há dois valores possíveis –RepeatedToken
eUnknownToken
.suggestions
– uma matriz de palavras que irá corrigir o erro ortográfico ou gramatical. A matriz é composta por asuggestion
e ascore
, 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 instância é processada SpellCheckResult
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 FlaggedTokens
coleção e substitui quaisquer palavras incorretas ou gramaticalmente incorretas no texto de origem pela primeira sugestão. As capturas de tela a seguir mostram antes e depois da verificação ortográfica:
Observação
O exemplo acima usa Replace
simplicidade, 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 a verificação ortográfica contextual do texto, fornecendo sugestões embutidas para palavras com erros ortográficos.