Rechtschreibprüfung mithilfe der Bing-Rechtschreibprüfungs-API

Beispiel herunterladen Das Beispiel herunterladen

Die Bing-Rechtschreibprüfung führt eine kontextbezogene Rechtschreibprüfung für Text durch und bietet Inlinevorschläge für falsch geschriebene Wörter. In diesem Artikel wird erläutert, wie Sie die Bing-REST-API für die Rechtschreibprüfung verwenden, um Rechtschreibfehler in einer Xamarin.Forms Anwendung zu korrigieren.

Übersicht

Die Bing-REST-API für die Rechtschreibprüfung verfügt über zwei Betriebsmodi, und bei der Anforderung an die API muss ein Modus angegeben werden:

  • Spell korrigiert kurzen Text (bis zu 9 Wörter) ohne Änderungen an der Groß- und Kleinschreibung.
  • Proof korrigiert langen Text, bietet Groß- und Kleinschreibungskorrekturen und grundlegende Interpunktion und unterdrückt aggressive Korrekturen.

Hinweis

Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.

Für die Verwendung der Bing-Rechtschreibprüfungs-API muss ein API-Schlüssel abgerufen werden. Dies finden Sie unter Testen von Cognitive Services.

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 sollte. 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 Antwortfehler 401.

Durchführen der Rechtschreibprüfung

Die Rechtschreibprüfung kann erreicht werden, indem Sie eine GET- oder POST-Anforderung an die SpellCheck API unter https://api.cognitive.microsoft.com/bing/v7.0/SpellChecksenden. Beim Ausführen einer GET-Anforderung wird der zu überprüfende Text als Abfrageparameter gesendet. Beim Stellen einer POST-Anforderung wird der zu überprüfende Text im Anforderungstext gesendet. GET-Anforderungen sind aufgrund der Längenbeschränkung der Abfrageparameter auf 1500 Zeichen für die Rechtschreibprüfung beschränkt. Daher sollten POST-Anforderungen in der Regel gestellt werden, es sei denn, kurze Zeichenfolgen werden rechtschreibungsgeprüft.

In der Beispielanwendung ruft die Methode den SpellCheckTextAsync Prozess der Rechtschreibprüfung 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 die Anforderung dann an die SpellCheck API, die eine JSON-Antwort mit dem Ergebnis zurückgibt. Die JSON-Antwort wird deserialisiert, wobei das Ergebnis zur Anzeige an die aufrufende Methode 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 für die Rechtschreibprüfung und den Rechtschreibprüfungsmodus festgelegt.

Weitere Informationen zur Rest-API der Bing-Rechtschreibprüfung finden Sie unter Referenz zur Rechtschreibprüfungs-API v7.

Senden der Anforderung

Die SendRequestAsync -Methode sendet die GET-Anforderung an die Bing-REST-API für die 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 HTTP-status Code 200 (OK) in der Antwort, sofern die Anforderung gültig ist, 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 Antwortmeldung 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 oder grammatikalisch falsch gekennzeichnet wurden. 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 bis zum markierten Wort.
  • token – das Wort in der Textzeichenfolge, das nicht richtig geschrieben oder grammatikalisch falsch ist.
  • type – Der Typ des Fehlers, der dazu geführt hat, dass das Wort gekennzeichnet wurde. Es gibt zwei mögliche Werte – RepeatedToken und UnknownToken.
  • suggestions – Ein Array von Wörtern, das den Rechtschreib- oder Grammatikfehler korrigiert. Das Array besteht aus einem suggestion und einem score, was die Zuverlässigkeit angibt, dass die vorgeschlagene Korrektur richtig ist.

In der Beispielanwendung wird die JSON-Antwort in eine SpellCheckResult instance deserialisiert, wobei das Ergebnis zur Anzeige an die aufrufende Methode zurückgegeben wird. Das folgende Codebeispiel zeigt, wie die instance für die SpellCheckResult 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 alle falsch geschriebenen oder grammatikalisch falschen 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 bei einer großen Textmenge könnte es das falsche Token ersetzen. 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 wurde erläutert, wie Sie die Bing-REST-API für die Rechtschreibprüfung verwenden, um Rechtschreibfehler in einer Xamarin.Forms Anwendung zu korrigieren. Die Bing-Rechtschreibprüfung führt eine kontextbezogene Rechtschreibprüfung für Text durch und bietet Inlinevorschläge für falsch geschriebene Wörter.