Tareas de revisión ortográfica mediante la API de Bing Spell Check

Bing Spell Check revisa la ortográfica contextual del texto y ofrece sugerencias insertadas para palabras mal escritas. En este artículo se explica cómo usar la API de REST de Bing Spell Check para corregir errores ortográficos en una aplicación Xamarin.Forms.

Información general

Bing Spell Check REST API tiene dos modos operativos y se debe especificar un modo al realizar una solicitud a la API:

  • Spell corrige el texto corto (hasta 9 palabras) sin cambios de mayúsculas y minúsculas.
  • Proof corrige texto largo, proporciona correcciones de mayúsculas y minúsculas y puntuación básica, y suprime las correcciones agresivas.

Nota:

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Se debe obtener una clave de API para usar Bing Spell Check API. Esto se puede obtener en Probar Cognitive Services

Para obtener una lista de los idiomas admitidos por Bing Spell Check API, consulte Idiomas admitidos. Para más información sobre Bing Spell Check API, consulte La documentación de Bing Spell Check.

Autenticación

Cada solicitud realizada a Bing Spell Check API requiere una clave de API que se debe especificar como el valor del encabezado Ocp-Apim-Subscription-Key. En el ejemplo de código siguiente se muestra cómo agregar la clave de API al encabezado Ocp-Apim-Subscription-Key de una solicitud:

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

Si no se pasa una clave de API válida a Bing Spell Check API, se producirá un error de respuesta 401.

Realización de la revisión ortográfica

La revisión ortográfica se puede lograr mediante la realización de una solicitud GET o POST a la SpellCheck API en https://api.cognitive.microsoft.com/bing/v7.0/SpellCheck. Al realizar una solicitud GET, el texto que se va a revisar ortográficamente se envía como parámetro de consulta. Al realizar una solicitud POST, el texto que se va a revisar ortográfico se envía en el cuerpo de la solicitud. Las solicitudes GET se limitan a la revisión ortográfica de 1500 caracteres debido a la limitación de longitud de cadena del parámetro de consulta. Por lo tanto, las solicitudes POST normalmente se deben realizar a menos que se revisen las cadenas cortas.

En la aplicación de ejemplo, el SpellCheckTextAsync método invoca el proceso de revisión 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;
}

El SpellCheckTextAsync método genera un URI de solicitud y, a continuación, envía la solicitud a la SpellCheck API, que devuelve una respuesta JSON que contiene el resultado. La respuesta JSON se deserializa, con el resultado que se devuelve al método que realiza la llamada para su visualización.

Configuración de la revisión ortográfica

El proceso de revisión ortográfica se puede configurar 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;
}

Este método establece el texto que se va a comprobar con ortografía y el modo de revisión ortográfica.

Para obtener más información sobre la API REST de Bing Spell Check, consulte La referenciade Spell Check API v7.

Envío de la solicitud

El SendRequestAsync método realiza la solicitud GET a Bing Spell Check REST API y devuelve la respuesta:

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

Este método envía la solicitud GET a la SpellCheck API, con la dirección URL de solicitud que especifica el texto que se va a traducir y el modo de revisión ortográfica. A continuación, la respuesta se lee y se devuelve al método de llamada.

La API SpellCheck enviará el código de estado HTTP 200 (correcto) en la respuesta (siempre que la solicitud sea válida), lo que indicará que la solicitud se ha realizado correctamente y que la información solicitada está en la respuesta. Para obtener una lista de objetos de respuesta, vea Objetosde respuesta.

Procesamiento de la respuesta

La respuesta de la API se devuelve en formato JSON. Los siguientes datos JSON muestran el mensaje de respuesta del texto Go shappin tommorowmal escrito:

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

La flaggedTokens matriz contiene una matriz de palabras en el texto marcado como no escrito correctamente o son gramaticalmente incorrectos. La matriz estará vacía si no se encuentran errores ortográficos o gramaticales. Las etiquetas dentro de la matriz son:

  • offset : desplazamiento basado en cero desde el principio de la cadena de texto hasta la palabra que se marcó.
  • token : la palabra de la cadena de texto que no está escrita correctamente o es gramaticalmente incorrecta.
  • type : el tipo del error que provocó que se marcase la palabra. Hay dos posibles valores: RepeatedToken y UnknownToken.
  • suggestions : una matriz de palabras que corregirá el error ortográfico o gramatical. La matriz se compone de suggestion y score que indica el nivel de confianza de que la corrección sugerida es correcta.

En la aplicación de ejemplo, la respuesta JSON se deserializa en una instancia de SpellCheckResult, con el resultado que se devuelve al método de llamada para su presentación. En el ejemplo de código siguiente se muestra cómo se procesa la SpellCheckResult instancia para mostrar:

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

Este código recorre en iteración la FlaggedTokens colección y reemplaza las palabras mal escritas o gramaticalmente incorrectas en el texto de origen por la primera sugerencia. Las capturas de pantalla siguientes se muestran antes y después de la revisión ortográfica:

Antes del Spell Check

Después del Spell Check

Nota:

En el ejemplo anterior se usa Replace por motivos de simplicidad, pero en una gran cantidad de texto podría reemplazar el token incorrecto. La API proporciona el offset valor que se debe usar en las aplicaciones de producción para identificar la ubicación correcta en el texto de origen para realizar una actualización.

Resumen

En este artículo se explica cómo usar la API de REST de Bing Spell Check para corregir errores ortográficos en una aplicación Xamarin.Forms. Bing Spell Check revisa la ortográfica contextual del texto y ofrece sugerencias insertadas para palabras mal escritas.