Rechtschreibprüfung mithilfe der Bing-Rechtschreibprüfungs-API
Die Bing-Rechtschreibprüfung führt eine kontextbezogene Rechtschreibprüfung für Text durch und macht Inlinevorschläge für falsch geschriebene Wörter. In diesem Artikel wird erläutert, wie Sie die Rest-API der Bing-Rechtschreibprüfung verwenden, um Rechtschreibfehler in einer Xamarin.Forms-Anwendung zu korrigieren.
Übersicht
Die REST-API für die Bing-Rechtschreibprüfung verfügt über zwei Betriebsmodi, und beim Senden einer Anforderung an die API muss ein Modus angegeben werden:
Spell
korrigiert kurzen Text (bis zu 9 Wörter) ohne Groß-/Kleinschreibung.Proof
korrigiert langen Text, stellt Groß-/Kleinschreibungskorrekturen und einfache Interpunktion bereit und unterdrückt aggressive Korrekturen.
Hinweis
Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.
Ein API-Schlüssel muss abgerufen werden, um die Bing-Rechtschreibprüfungs-API zu verwenden. Dies kann bei Try Cognitive Services abgerufen werden
Eine Liste der sprachen, die von der Bing-Rechtschreibprüfungs-API unterstützt werden, finden Sie unter "Unterstützte Sprachen". Weitere Informationen zur Bing-Rechtschreibprüfungs-API finden Sie in der Dokumentation zur Bing-Rechtschreibprüfung.
Authentifizierung
Jede Anforderung an die Bing-Rechtschreibprüfungs-API erfordert einen API-Schlüssel, der als Wert des Ocp-Apim-Subscription-Key
Headers angegeben werden soll. Das folgende Codebeispiel zeigt, wie der API-Schlüssel dem Ocp-Apim-Subscription-Key
Header einer Anforderung hinzugefügt wird:
public BingSpellCheckService()
{
httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", Constants.BingSpellCheckApiKey);
}
Fehler beim Übergeben eines gültigen API-Schlüssels an die Bing-Rechtschreibprüfungs-API führt zu einem 401-Antwortfehler.
Rechtschreibprüfung wird ausgeführt
Die Rechtschreibprüfung kann erreicht werden, indem sie eine GET- oder POST-Anforderung an die API annimmt SpellCheck
https://api.cognitive.microsoft.com/bing/v7.0/SpellCheck
. Beim Erstellen einer GET-Anforderung wird der zu überprüfende Text als Abfrageparameter gesendet. Beim Senden einer POST-Anforderung wird der zu überprüfende Text im Anforderungstext gesendet. GET-Anforderungen sind aufgrund der Einschränkung der Länge der Abfrageparameterlänge auf 1500 Zeichen beschränkt. Daher sollten POST-Anforderungen in der Regel erfolgen, es sei denn, kurze Zeichenfolgen werden rechtschreibprüfung.
In der Beispielanwendung ruft die SpellCheckTextAsync
Methode den Rechtschreibprüfungsprozess auf:
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;
}
Die SpellCheckTextAsync
Methode generiert einen Anforderungs-URI und sendet dann die Anforderung an die SpellCheck
API, die eine JSON-Antwort mit dem Ergebnis zurückgibt. Die JSON-Antwort wird deserialisiert, wobei das Ergebnis an die aufrufende Methode für die Anzeige zurückgegeben wird.
Konfigurieren der Rechtschreibprüfung
Der Rechtschreibprüfungsprozess kann durch Angeben von HTTP-Abfrageparametern konfiguriert werden:
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;
}
Mit dieser Methode wird der Text als Rechtschreibprüfung und der Rechtschreibprüfungsmodus festgelegt.
Weitere Informationen zur REST-API der Bing-Rechtschreibprüfung finden Sie in der Referenz zur Rechtschreibprüfungs-API v7.
Senden der Anforderung
Die SendRequestAsync
Methode stellt die GET-Anforderung an die REST-API der Bing-Rechtschreibprüfung und gibt die Antwort zurück:
async Task<string> SendRequestAsync(string url)
{
var response = await httpClient.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
Diese Methode sendet die GET-Anforderung an die SpellCheck
API, wobei die Anforderungs-URL den zu übersetzenden Text und den Rechtschreibprüfungsmodus angibt. Die Antwort wird dann gelesen und an die aufrufende Methode zurückgegeben.
Die SpellCheck
API sendet den HTTP-Statuscode 200 (OK) in der Antwort, vorausgesetzt, die Anforderung ist gültig, was angibt, dass die Anforderung erfolgreich war und dass die angeforderten Informationen in der Antwort enthalten sind. Eine Liste der Antwortobjekte finden Sie unter Response-Objekte.
Verarbeiten der Antwort
Die API-Antwort wird im JSON-Format zurückgegeben. Die folgenden JSON-Daten zeigen die Antwortnachricht für den falsch geschriebenen Text Go shappin tommorow
:
{
"_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"
}
Das flaggedTokens
Array enthält ein Array von Wörtern im Text, die als nicht richtig geschrieben gekennzeichnet wurden oder grammatikalisch falsch sind. Das Array ist leer, wenn keine Rechtschreib- oder Grammatikfehler gefunden werden. Die Tags innerhalb des Arrays sind:
offset
– ein nullbasierter Offset vom Anfang der Textzeichenfolge zum gekennzeichneten Wort.token
– das Wort in der Textzeichenfolge, das nicht richtig geschrieben ist oder grammatikalisch falsch ist.type
– der Typ des Fehlers, der dazu führte, dass das Wort gekennzeichnet wurde. Es gibt zwei mögliche Werte –RepeatedToken
undUnknownToken
.suggestions
– ein Array von Wörtern, die den Rechtschreib- oder Grammatikfehler korrigieren. Das Array besteht aus einem und einemsuggestion
score
, das das Konfidenzniveau angibt, dass die vorgeschlagene Korrektur korrekt ist.
In der Beispielanwendung wird die JSON-Antwort in eine SpellCheckResult
Instanz deserialisiert, wobei das Ergebnis an die aufrufende Methode für die Anzeige zurückgegeben wird. Das folgende Codebeispiel zeigt, wie die SpellCheckResult
Instanz zur Anzeige verarbeitet wird:
var spellCheckResult = await bingSpellCheckService.SpellCheckTextAsync(TodoItem.Name);
foreach (var flaggedToken in spellCheckResult.FlaggedTokens)
{
TodoItem.Name = TodoItem.Name.Replace(flaggedToken.Token, flaggedToken.Suggestions.FirstOrDefault().Suggestion);
}
Dieser Code durchläuft die FlaggedTokens
Auflistung und ersetzt falsch geschriebene oder grammatikalisch falsche Wörter im Quelltext durch den ersten Vorschlag. Die folgenden Screenshots zeigen vor und nach der Rechtschreibprüfung:
Hinweis
Im obigen Beispiel wird der Einfachheit halber verwendet Replace
, aber über eine große Textmenge könnte das falsche Token ersetzt werden. Die API stellt den Wert bereit, der offset
in Produktions-Apps verwendet werden soll, um den richtigen Speicherort im Quelltext zu identifizieren, um eine Aktualisierung durchzuführen.
Zusammenfassung
In diesem Artikel wird erläutert, wie Sie die Rest-API für die Bing-Rechtschreibprüfung verwenden, um Rechtschreibfehler in einer Xamarin.Forms Anwendung zu beheben. Die Bing-Rechtschreibprüfung führt eine kontextbezogene Rechtschreibprüfung für Text durch und macht Inlinevorschläge für falsch geschriebene Wörter.