Bing Yazım Denetimi API'sini Kullanarak Yazım Denetimi

Bing Yazım Denetimi, metin için bağlamsal yazım denetimi gerçekleştirir ve yanlış yazılmış sözcükler için satır içi öneriler sağlar. Bu makalede, bir Xamarin.Forms uygulamadaki yazım hatalarını düzeltmek için Bing Yazım Denetimi REST API'sinin nasıl kullanılacağı açıklanmaktadır.

Genel bakış

Bing Yazım Denetimi REST API'sinde iki işletim modu vardır ve API'ye istekte bulunurken bir mod belirtilmelidir:

  • Spell kısa metni (en fazla 9 sözcük) büyük/küçük harf değişikliği olmadan düzelter.
  • Proof uzun metni düzeltir, büyük/küçük harf düzeltmeleri ve temel noktalama işaretleri sağlar ve agresif düzeltmeleri bastırır.

Not

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Bing Yazım Denetimi API'sini kullanmak için bir API anahtarı alınmalıdır. Bu, Bilişsel Hizmetleri Dene sayfasından edinilebilir

Bing Yazım Denetimi API'sinin desteklediği dillerin listesi için bkz . Desteklenen diller. Bing Yazım Denetimi API'si hakkında daha fazla bilgi için bkz . Bing Yazım Denetimi Belgeleri.

Kimlik Doğrulaması

Bing Yazım Denetimi API'sine yapılan her istek, üst bilgi değeri Ocp-Apim-Subscription-Key olarak belirtilmesi gereken bir API anahtarı gerektirir. Aşağıdaki kod örneği, API anahtarının isteğin Ocp-Apim-Subscription-Key üst bilgisine nasıl ekleneceğini gösterir:

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

Bing Yazım Denetimi API'sine geçerli bir API anahtarı geçirilememesi 401 yanıt hatasına neden olur.

Yazım Denetimi Gerçekleştirme

Yazım denetimi, adresinde https://api.cognitive.microsoft.com/bing/v7.0/SpellCheckAPI'ye SpellCheck bir GET veya POST isteği gönderilerek elde edilebilir. GET isteğinde bulunurken, yazım denetimi yapılacak metin sorgu parametresi olarak gönderilir. POST isteği yapılırken, yazım denetimi yapılacak metin istek gövdesinde gönderilir. SORGU parametresi dize uzunluğu sınırlaması nedeniyle GET istekleri 1500 karakter yazım denetimiyle sınırlıdır. Bu nedenle, kısa dizeler yazım denetimi yapılmadığı sürece POST istekleri genellikle yapılmalıdır.

Örnek uygulamada yöntemi yazım SpellCheckTextAsync denetimi işlemini çağırır:

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

SpellCheckTextAsync yöntemi bir istek URI'sini oluşturur ve ardından isteği API'ye SpellCheck gönderir ve sonucu içeren bir JSON yanıtı döndürür. JSON yanıtı seri durumdan çıkarılır ve sonuç görüntülenmek üzere çağrı yöntemine döndürülür.

Yazım Denetimini Yapılandırma

Yazım denetimi işlemi HTTP sorgu parametreleri belirtilerek yapılandırılabilir:

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

Bu yöntem, yazım denetimi yapılacak metni ve yazım denetimi modunu ayarlar.

Bing Yazım Denetimi REST API'si hakkında daha fazla bilgi için bkz . Yazım Denetimi API'sine v7 başvurusu.

İstek Gönderme

SendRequestAsync yöntemi, Bing Yazım Denetimi REST API'sine GET isteğinde bulunur ve yanıtı döndürür:

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

Bu yöntem, çevrilecek metni ve yazım denetimi modunu belirten istek URL'si ile GET isteğini SpellCheck API'ye gönderir. Yanıt daha sonra okunur ve çağıran yönteme döndürülür.

API, isteğin SpellCheck geçerli olması koşuluyla, isteğin başarılı olduğunu ve istenen bilgilerin yanıtta olduğunu gösteren HTTP durum kodu 200 (Tamam) gönderir. Yanıt nesnelerinin listesi için bkz . Yanıt nesneleri.

Yanıt İşleniyor

API yanıtı JSON biçiminde döndürülür. Aşağıdaki JSON verileri, yanlış yazılmış metin Go shappin tommorowiçin yanıt iletisini gösterir:

{  
   "_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"
}

Dizi, flaggedTokens metinde doğru yazılmıyor olarak işaretlenen veya dil bilgisi yanlış olan bir sözcük dizisi içerir. Yazım veya dil bilgisi hatası bulunmazsa dizi boş olur. Dizideki etiketler şunlardır:

  • offset – metin dizesinin başından bayrak eklenmiş sözcüye sıfır tabanlı bir uzaklık.
  • token – metin dizesinde doğru yazılmayan veya dil bilgisi yanlış olan sözcük.
  • type – sözcüğün bayrakla işaretlenmesini sağlayan hatanın türü. İki olası değer vardır: RepeatedToken ve UnknownToken.
  • suggestions – yazım veya dil bilgisi hatasını düzeltecek bir dizi sözcük. Dizi, önerilen düzeltmenin doğru olduğuna ilişkin güvenilirlik düzeyini gösteren ve suggestionscore'lerinden oluşur.

Örnek uygulamada JSON yanıtı bir SpellCheckResult örneğe seri durumdan çıkarılır ve sonuç görüntüleme için çağrı yöntemine döndürülür. Aşağıdaki kod örneği, örneğin görüntülenmek üzere nasıl SpellCheckResult işlendiğini gösterir:

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

Bu kod koleksiyonda FlaggedTokens yinelenir ve kaynak metindeki yanlış yazılmış veya dil bilgisi yanlış sözcükleri ilk öneriyle değiştirir. Yazım denetiminden önce ve sonra aşağıdaki ekran görüntüleri gösterilir:

Yazım Denetimi öncesinde

Yazım Denetimi'nin Ardından

Not

Yukarıdaki örnekte kolaylık sağlamak için kullanılır Replace , ancak büyük miktarda metinde yanlış belirtecin yerini alabilir. API, bir güncelleştirmeyi gerçekleştirmek için kaynak metindeki doğru konumu belirlemek için üretim uygulamalarında kullanılması gereken değeri sağlar offset .

Özet

Bu makalede, uygulamadaki Xamarin.Forms yazım hatalarını düzeltmek için Bing Yazım Denetimi REST API'sinin nasıl kullanılacağı açıklanmıştır. Bing Yazım Denetimi, metin için bağlamsal yazım denetimi gerçekleştirir ve yanlış yazılmış sözcükler için satır içi öneriler sağlar.