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 SpellCheckhttps://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 und UnknownToken.
  • suggestions – ein Array von Wörtern, die den Rechtschreib- oder Grammatikfehler korrigieren. Das Array besteht aus einem und einem suggestionscore, 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:

Vor der Rechtschreibprüfung

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.