Краткое руководство. Проверка орфографии с помощью REST API проверки орфографии Bing и C#
Предупреждение
30 октября 2020 г. API Поиск Bing перенесены из служб ИИ Azure в Поиск Bing Services. Эта документация приводится только для справки. Обновленную информацию см. в документации по API Поиска Bing. Инструкции по созданию ресурсов Azure для Поиска Bing приведены в статье Создание ресурса для Поиска Bing с помощью Azure Marketplace.
В этом кратком руководстве показано, как отправить первый вызов к REST API "Проверка орфографии Bing". Это простое приложение C# отправляет запрос к API и возвращает список предлагаемых исправлений.
Это приложение написано на C#. Но API представляет собой веб-службу RESTful, совместимую с большинством языков программирования. Исходный код этого приложения доступен на GitHub.
Предварительные требования
Любой выпуск Visual Studio 2017 или более поздней версии.
Пакет NuGet Newtonsoft.Json.
Чтобы установить этот пакет в Visual Studio, сделайте следующее:
- Щелкните правой кнопкой мыши файл решения в обозревателе решений.
- Выберите Управление пакетами NuGet для решения.
- Найдите пакет Newtonsoft.Json и установите его.
Если вы используете Linux или MacOS, это приложение можно запустить с помощью Mono.
Создание ресурса Azure
Чтобы начать работу с API Проверки орфографии Bing, создайте один из следующих ресурсов Azure.
Ресурс проверки орфографии Bing
- доступен на портале Azure до удаления.
- Используйте бесплатную ценовую категорию, чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.
- API Проверки орфографии Bing также предоставляется на некоторых уровнях ресурса Поиска Bing версии 7.
- доступен на портале Azure до удаления.
- Используйте один ключ и конечную точку для приложений в нескольких службах ИИ Azure.
Создание и инициализация проекта
Создайте консольное решение SpellCheckSample в Visual Studio. Затем добавьте следующие пространства имен в основной файл кода:
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using Newtonsoft.Json;
Создайте переменные для конечной точки API, ключа подписки и текста, в котором нужно проверить орфографию. Вы можете использовать глобальную конечную точку, указанную в коде ниже, или конечную точку личного поддомена, которая отображается на портале Azure для вашего ресурса.
namespace SpellCheckSample { class Program { static string host = "https://api.cognitive.microsoft.com"; static string path = "/bing/v7.0/spellcheck?"; static string key = "<ENTER-KEY-HERE>"; //text to be spell-checked static string text = "Hollo, wrld!"; } }
Создайте строку для параметров поиска:
Назначьте код рынка для параметра
mkt
с помощью оператора=
. Код рынка — это код страны или региона, из которого выполняется запрос.Добавьте параметр
mode
с оператором&
и назначьте режим проверки орфографии. Можно указать режимproof
(выявляет большинство орфографических и грамматических ошибок) илиspell
(выявляет большинство орфографических ошибок, но не так много грамматических ошибок).
static string params_ = "mkt=en-US&mode=proof";
Создание и отправка запроса на проверку орфографии
Создайте асинхронную функцию
SpellCheck()
для отправки запроса в API. СоздайтеHttpClient
и добавьте ключ подписки в заголовокOcp-Apim-Subscription-Key
. В функции выполните описанные ниже действия.async static void SpellCheck() { var client = new HttpClient(); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", key); HttpResponseMessage response = null; // add the rest of the code snippets here (except for main())... }
Создайте URI для запроса путем, добавив узел, путь и параметры.
string uri = host + path + params_;
Создайте список с объектом
KeyValuePair
, в котором содержится текст, и используйте его для создания объектаFormUrlEncodedContent
. Задайте данные заголовка и используйтеPostAsync()
для отправки запроса.var values = new Dictionary<string, string>(); values.Add("text", text); var content = new FormUrlEncodedContent(values); content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); response = await client.PostAsync(uri, new FormUrlEncodedContent(values));
Получение и вывод ответа API
Получение заголовка идентификатора клиента
Если в ответе содержится заголовок X-MSEdge-ClientID
, получите значение и выведите его.
string client_id;
if (response.Headers.TryGetValues("X-MSEdge-ClientID", out IEnumerable<string> header_values))
{
client_id = header_values.First();
Console.WriteLine("Client ID: " + client_id);
}
Получение ответа
Получите ответ от API. Десериализируйте объект JSON и выведите его в консоли.
string contentString = await response.Content.ReadAsStringAsync();
dynamic jsonObj = JsonConvert.DeserializeObject(contentString);
Console.WriteLine(jsonObj);
Вызов функции проверки орфографии
В функции Main()
проекта вызовите SpellCheck()
.
static void Main(string[] args)
{
SpellCheck();
Console.ReadLine();
}
Выполнение приложения
Выполните сборку проекта и запустите его. Если вы используете Visual Studio, то для отладки файла нажмите клавишу F5.
Пример ответа в формате JSON
Успешный ответ возвращается в формате JSON, как показано в примере ниже.
{
"_type": "SpellCheck",
"flaggedTokens": [
{
"offset": 0,
"token": "Hollo",
"type": "UnknownToken",
"suggestions": [
{
"suggestion": "Hello",
"score": 0.9115257530801
},
{
"suggestion": "Hollow",
"score": 0.858039839213461
},
{
"suggestion": "Hallo",
"score": 0.597385084464481
}
]
},
{
"offset": 7,
"token": "wrld",
"type": "UnknownToken",
"suggestions": [
{
"suggestion": "world",
"score": 0.9115257530801
}
]
}
]
}