Проверка орфографии с помощью API проверки орфографии Bing
Проверка орфографии 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
— массив слов, который исправит ошибку орфографии или грамматики. Массив состоит из asuggestion
и ascore
, который указывает уровень достоверности, что предлагаемое исправление правильно.
В примере приложения ответ 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
коллекции и заменяет любые грамматические или грамматически неправильные слова в исходном тексте первым предложением. На следующих снимках экрана показано до и после проверка орфографии:
Примечание.
Приведенный выше пример используется Replace
для простоты, но в большом количестве текста он может заменить неправильный маркер. API предоставляет offset
значение, которое следует использовать в рабочих приложениях для определения правильного расположения в исходном тексте для выполнения обновления.
Итоги
В этой статье объясняется, как использовать REST API проверки орфографии Bing для исправления ошибок орфографии в Xamarin.Forms приложении. Проверка орфографии Bing выполняет контекстную орфографию проверка для текста, предоставляя встроенные предложения для слов с ошибками.