Controllo ortografico con l'API Controllo ortografico Bing
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 SpellCheck
https://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 tommorow
digitato 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
eUnknownToken
.suggestions
: matrice di parole che correggeranno l'errore ortografico o grammaticale. La matrice è costituita da esuggestion
da ,score
che 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:
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.