Проверка орфографии с помощью API проверки орфографии Bing

Download Sample Скачайте пример

Проверка орфографии Bing выполняет контекстную орфографию проверка для текста, предоставляя встроенные предложения для слов с ошибками. В этой статье объясняется, как использовать REST API проверки орфографии Bing для исправления ошибок орфографии в Xamarin.Forms приложении.

Обзор

REST API проверки орфографии Bing имеет два режима работы, а при выполнении запроса к API необходимо указать режим:

  • Spell исправляет короткий текст (до 9 слов) без каких-либо изменений в регистре.
  • Proof исправляет длинный текст, предоставляет исправления регистра и основные знаки препинания и подавляет агрессивные исправления.

Примечание.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.

Ключ API должен быть получен для использования API проверки орфографии Bing. Это можно получить в Try Cognitive Services

Список языков, поддерживаемых API проверки орфографии Bing, см . на поддерживаемых языках. Дополнительные сведения об API проверки орфографии Bing см . в документации по проверке орфографии Bing.

Проверка подлинности

Для каждого запроса, сделанного в API проверки орфографии Bing, требуется ключ API, который должен быть указан в качестве значения заголовка Ocp-Apim-Subscription-Key . В следующем примере кода показано, как добавить ключ API в Ocp-Apim-Subscription-Key заголовок запроса:

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

Сбой передачи допустимого ключа API в API проверки орфографии Bing приведет к ошибке ответа 401.

Проверка орфографии

Возможность проверка орфографии может быть достигнута путем выполнения запроса GET или POST к SpellCheck API по адресуhttps://api.cognitive.microsoft.com/bing/v7.0/SpellCheck. При выполнении запроса GET текст, который должен быть орфографическим проверка, отправляется в качестве параметра запроса. При выполнении запроса POST текст, который должен быть орфографическим проверка, отправляется в тексте запроса. Запросы GET ограничены орфографическими проверка 1500 символов из-за ограничения длины строки параметра запроса. Таким образом, запросы POST обычно должны быть сделаны, если короткие строки не проверка.

В примере приложения SpellCheckTextAsync метод вызывает процесс проверка орфографии:

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 создает универсальный код ресурса (URI) запроса, а затем отправляет запрос SpellCheck в API, который возвращает ответ JSON, содержащий результат. Ответ JSON десериализирован, при этом результат возвращается в вызывающий метод для отображения.

Настройка проверки орфографии

Процесс орфографии проверка можно настроить, указав параметры 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;
}

Этот метод задает текст для проверка орфографии и режим орфографии проверка.

Дополнительные сведения о REST API проверки орфографии Bing см . в справочнике по API проверки орфографии версии 7.

Отправка запроса

Метод SendRequestAsync выполняет запрос GET к REST API проверки орфографии Bing и возвращает ответ:

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

Этот метод отправляет запрос SpellCheck GET в API с URL-адресом запроса, указывающим текст для перевода, и режим орфографии проверка. Затем ответ считывается и возвращается в вызывающий метод.

SpellCheck API отправит код состояния HTTP 200 (ОК) в ответе, при условии, что запрос действителен, что указывает, что запрос выполнен успешно, и что запрошенные сведения отображаются в ответе. Список объектов ответа см. в разделе "Объекты ответа".

Обработка ответа

Ответ API возвращается в формате JSON. В следующих данных JSON отображается сообщение ответа для неправильного текста 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"
}

Массив flaggedTokens содержит массив слов в тексте, помеченный как неправильный или грамматически неверный. Массив будет пустым, если ошибки орфографии или грамматики не найдены. Теги в массиве:

  • offset — отсчитываемое от нуля смещение от начала текстовой строки к слову, которое было помечено.
  • token — слово в текстовой строке, которая неправильно написана или грамматично неправильно.
  • type — тип ошибки, вызвавшей флаг слова. Существует два возможных значения — RepeatedToken и UnknownToken.
  • suggestions — массив слов, который исправит ошибку орфографии или грамматики. Массив состоит из a suggestion и a score, который указывает уровень достоверности, что предлагаемое исправление правильно.

В примере приложения ответ JSON десериализуется в SpellCheckResult экземпляр с результатом, возвращаемым методом вызова для отображения. В следующем примере кода показано, как SpellCheckResult экземпляр обрабатывается для отображения:

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

Этот код выполняет итерацию по FlaggedTokens коллекции и заменяет любые грамматические или грамматически неправильные слова в исходном тексте первым предложением. На следующих снимках экрана показано до и после проверка орфографии:

Before Spell Check

After Spell Check

Примечание.

Приведенный выше пример используется Replace для простоты, но в большом количестве текста он может заменить неправильный маркер. API предоставляет offset значение, которое следует использовать в рабочих приложениях для определения правильного расположения в исходном тексте для выполнения обновления.

Итоги

В этой статье объясняется, как использовать REST API проверки орфографии Bing для исправления ошибок орфографии в Xamarin.Forms приложении. Проверка орфографии Bing выполняет контекстную орфографию проверка для текста, предоставляя встроенные предложения для слов с ошибками.