Controllo ortografico con l'API Controllo ortografico Bing

Download Sample Scaricare l'esempio

Controllo ortografico Bing esegue il controllo ortografico contestuale per il testo, fornendo suggerimenti inline per le parole con errori di ortografia. Questo articolo illustra come usare l'API REST Controllo ortografico Bing per correggere gli errori ortografici in un'applicazione Xamarin.Forms .

Panoramica

L'API REST Controllo ortografico Bing ha due modalità operative e una modalità deve essere specificata quando si effettua una richiesta all'API:

  • Spell corregge il testo breve (fino a 9 parole) senza modifiche maiuscole/minuscole.
  • Proof corregge il testo lungo, fornisce correzioni di maiuscole e minuscole e punteggiatura di base e elimina le correzioni aggressive.

Nota

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Per usare l'API Controllo ortografico Bing, è necessario ottenere una chiave API. Questa operazione può essere ottenuta all'indirizzo Try Cognitive Services

Per un elenco delle lingue supportate dall'API Controllo ortografico Bing, vedere Lingue supportate. Per altre informazioni sull'API Controllo ortografico Bing, vedere La documentazione controllo ortografico Bing.

Autenticazione

Ogni richiesta inviata all'API Controllo ortografico Bing richiede una chiave API che deve essere specificata come valore dell'intestazione Ocp-Apim-Subscription-Key . L'esempio di codice seguente illustra come aggiungere la chiave API all'intestazione Ocp-Apim-Subscription-Key di una richiesta:

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

Se non si passa una chiave API valida all'API Controllo ortografico Bing, si verificherà un errore di risposta 401.

Esecuzione del controllo ortografico

Il controllo ortografico può essere ottenuto effettuando una richiesta GET o POST all'API all'indirizzo SpellCheckhttps://api.cognitive.microsoft.com/bing/v7.0/SpellCheck. Quando si effettua una richiesta GET, il testo da controllare ortografico viene inviato come parametro di query. Quando si effettua una richiesta POST, il testo da controllare ortografico viene inviato nel corpo della richiesta. Le richieste GET sono limitate al controllo ortografico di 1500 caratteri a causa della limitazione della lunghezza della stringa del parametro di query. Pertanto, le richieste POST devono essere in genere effettuate a meno che le stringhe brevi non vengano controllate in modo ortografico.

Nell'applicazione di esempio il SpellCheckTextAsync metodo richiama il processo di controllo ortografico:

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

Il SpellCheckTextAsync metodo genera un URI della richiesta e quindi invia la richiesta all'API SpellCheck , che restituisce una risposta JSON contenente il risultato. La risposta JSON viene deserializzata, con il risultato restituito al metodo chiamante per la visualizzazione.

Configurazione del controllo ortografico

Il processo di controllo ortografico può essere configurato specificando i parametri di query 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;
}

Questo metodo imposta il testo da controllare ortografico e la modalità di controllo ortografico.

Per altre informazioni sull'API REST Controllo ortografico Bing, vedere Informazioni di riferimento sull'API Controllo ortografico v7.

Invio della richiesta

Il SendRequestAsync metodo effettua la richiesta GET all'API REST Controllo ortografico Bing e restituisce la risposta:

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

Questo metodo invia la richiesta GET all'API SpellCheck , con l'URL della richiesta che specifica il testo da tradurre e la modalità di controllo ortografico. La risposta viene quindi letta e restituita al metodo chiamante.

L'API SpellCheck invierà il codice di stato HTTP 200 (OK) nella risposta, purché la richiesta sia valida, che indica che la richiesta è riuscita e che le informazioni richieste sono nella risposta. Per un elenco di oggetti risposta, vedere Oggetti response.

Elaborazione della risposta

La risposta API viene restituita in formato JSON. I dati JSON seguenti mostrano il messaggio di risposta per il testo Go shappin tommorowdigitato in modo non corretto:

{  
   "_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 matrice contiene una matrice di parole nel testo contrassegnate come non digitate correttamente o sono grammaticalmente errate. La matrice sarà vuota se non vengono trovati errori ortografici o grammaticali. I tag all'interno della matrice sono:

  • offset : offset in base zero dall'inizio della stringa di testo alla parola contrassegnata.
  • token : la parola nella stringa di testo non digitata correttamente o è grammaticalmente errata.
  • type : tipo dell'errore che ha causato la segnalazione della parola. Esistono due valori possibili: RepeatedToken e UnknownToken.
  • suggestions : matrice di parole che correggeranno l'errore ortografico o grammaticale. La matrice è costituita da e suggestion da , scoreche indica il livello di attendibilità che la correzione suggerita è corretta.

Nell'applicazione di esempio la risposta JSON viene deserializzata in un'istanza SpellCheckResult , con il risultato restituito al metodo chiamante per la visualizzazione. Nell'esempio di codice seguente viene illustrato come viene elaborata l'istanza per la SpellCheckResult visualizzazione:

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

Questo codice scorre la FlaggedTokens raccolta e sostituisce eventuali parole digitate o grammaticalmente non corrette nel testo di origine con il primo suggerimento. Gli screenshot seguenti mostrano prima e dopo il controllo ortografico:

Before Spell Check

After Spell Check

Nota

L'esempio precedente usa Replace per semplicità, ma in una grande quantità di testo potrebbe sostituire il token errato. L'API fornisce il offset valore che deve essere usato nelle app di produzione per identificare la posizione corretta nel testo di origine per eseguire un aggiornamento.

Riepilogo

Questo articolo ha illustrato come usare l'API REST Controllo ortografico Bing per correggere gli errori ortografici in un'applicazione Xamarin.Forms . Controllo ortografico Bing esegue il controllo ortografico contestuale per il testo, fornendo suggerimenti inline per le parole con errori di ortografia.