Revisión ortográfica mediante Bing Spell Check API

Ejemplo de descarga Descarga del ejemplo

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

Información general

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

  • Spell corrige texto corto (hasta 9 palabras) sin cambios de mayúsculas y minúsculas.
  • Proof corrige el 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 Try Cognitive Services

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

Autenticación

Cada solicitud realizada a Bing Spell Check API requiere una clave de API que se debe especificar como el valor del Ocp-Apim-Subscription-Key encabezado. En el ejemplo de código siguiente se muestra cómo agregar la clave de API al Ocp-Apim-Subscription-Key encabezado 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 realizando 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 comprobar se envía como un parámetro de consulta. Al realizar una solicitud POST, el texto que se va a comprobar 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 estén revisando 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 método genera un URI de solicitud y, a continuación, envía la solicitud a la API, que devuelve una SpellCheckTextAsync respuesta JSON que contiene el SpellCheck resultado. La respuesta JSON se deserializa y el resultado se devuelve al método de llamada para su presentació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 la ortografía y el modo de revisión ortórquea.

Para más información sobre la API rest Bing Spell Check, consulte la referencia Spell Check API v7.

Envío de la solicitud

El SendRequestAsync método realiza la solicitud GET a la API REST Bing Spell Check rest 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 API, con la dirección URL de la solicitud que especifica el texto que se va a traducir y el SpellCheck modo de revisión ortótrea. A continuación, la respuesta se lee y se devuelve al método de llamada.

La API enviará el código de estado SpellCheck HTTP 200 (correcto) en la respuesta, siempre que la solicitud sea válida, lo que indica que la solicitud se ha hecho correctamente y que la información solicitada está en la respuesta. Para obtener una lista de objetos de respuesta, vea Objetos de 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 mal Go shappin tommorow 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 matriz contiene una matriz de palabras en el texto que se marcaron como no escritas correctamente flaggedTokens o son gramaticalmente incorrectas. La matriz estará vacía si no se encuentra ningún error ortográfico o gramatical. Las etiquetas dentro de la matriz son:

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

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

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 colección y reemplaza las palabras mal escritas o gramaticalmente incorrectas en el texto de origen FlaggedTokens por la primera sugerencia. Las capturas de pantalla siguientes muestran antes y después de la revisión ortótrea:

Antes de Spell Check

Después de Spell Check

Nota:

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

Resumen

En este artículo se explica cómo usar la API rest Bing Spell Check para corregir errores ortográficos en una Xamarin.Forms aplicación. Bing Spell Check realiza la revisión ortográfica contextual del texto, proporcionando sugerencias insertadas para palabras mal escritas.