クイック スタート:Bing Spell Check REST API と C# を使用してスペルをチェックする
警告
2020 年 10 月 30 日に、Bing Search API は Azure AI サービスから Bing Search サービスに移行されました。 このドキュメントは、参考用としてのみ提供されています。 更新されたドキュメントについては、Bing search API のドキュメントを参照してください。 Bing 検索用の新しい Azure リソースを作成する手順については、「Azure Marketplace から Bing Search リソースを作成する」を参照してください。
このクイック スタートを使用して、Bing Spell Check の REST API を呼び出してみましょう。 このシンプルな C# アプリケーションは、API に要求を送信して、一連の修正候補を返します。
このアプリケーションは C# で記述されていますが、この API はほとんどのプログラミング言語と互換性のある RESTful Web サービスです。 このアプリケーションのソース コードは、GitHub で入手できます。
前提条件
Visual Studio 2017 またはそれ以降の任意のエディション。
Newtonsoft.Json NuGet パッケージ。
Visual Studio にこのパッケージをインストールするには
- ソリューション エクスプローラーで、ソリューション ファイルを右クリックします。
- [ソリューションの NuGet パッケージの管理] を選択します。
- Newtonsoft.json を探してパッケージをインストールします。
Linux または MacOS を使用している場合、このアプリケーションは Mono を使用して実行できます。
Azure リソースを作成する
次のいずれかの Azure リソースを作成して、Bing Spell Check API の使用を開始します。
- ご自身でリソースを削除するまでは Azure portal からご利用いただけます。
- Free 価格レベルを使ってサービスを試用し、後から運用環境用の有料レベルにアップグレードします。
- Bing Spell Check API は、Bing Search v7 リソースのいくつかのレベルでも提供されています。
- ご自身でリソースを削除するまでは Azure portal からご利用いただけます。
- 複数の Azure AI サービス全体で同じキーとエンドポイントをアプリケーションに使用します。
プロジェクトの作成と初期化
Visual Studio で、SpellCheckSample という新しいコンソール ソリューションを作成します。 次に、メイン コード ファイルに次の名前空間を追加します。
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 portal に表示される、対象のリソースのカスタム サブドメイン エンドポイントを使用することができます。
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";
スペル チェック要求を作成して送信する
API に要求を送信するための
SpellCheck()
という非同期関数を作成します。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 の応答を取得して出力する
クラアント ID ヘッダーを取得する
応答に 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
}
]
}
]
}