クイック スタート: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 にこのパッケージをインストールするには

    1. ソリューション エクスプローラーで、ソリューション ファイルを右クリックします。
    2. [ソリューションの NuGet パッケージの管理] を選択します。
    3. Newtonsoft.json を探してパッケージをインストールします。
  • Linux または MacOS を使用している場合、このアプリケーションは Mono を使用して実行できます。

Azure リソースを作成する

次のいずれかの Azure リソースを作成して、Bing Spell Check API の使用を開始します。

Bing Spell Check リソース

  • ご自身でリソースを削除するまでは Azure portal からご利用いただけます。
  • Free 価格レベルを使ってサービスを試用し、後から運用環境用の有料レベルにアップグレードします。
  • Bing Spell Check API は、Bing Search v7 リソースのいくつかのレベルでも提供されています。

マルチサービス リソース

  • ご自身でリソースを削除するまでは Azure portal からご利用いただけます。
  • 複数の Azure AI サービス全体で同じキーとエンドポイントをアプリケーションに使用します。

プロジェクトの作成と初期化

  1. 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;
    
  2. 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!";
        }
    }
    
  3. 検索パラメーターの文字列を作成します。

    1. = 演算子を使用して、mkt パラメーターに市場コードを割り当てます。 市場コードは、要求の送信元となる国/地域のコードです。

    2. & 演算子を使用して mode パラメーターを追加し、スペルチェック モードを割り当てます。 モードは proof (スペルまたは文法のほとんどのエラーが検出されます)、または spell (スペル ミスはほとんど検出されますが、文法エラーの検出数は相対的に少なくなります) のいずれかにすることができます。

    static string params_ = "mkt=en-US&mode=proof";
    

スペル チェック要求を作成して送信する

  1. 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())...
    }
    
  2. ホスト、パス、およびパラメーターを追加して、要求の URI を作成します。

    string uri = host + path + params_;
    
  3. 対象テキストを含んだ 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
            }
         ]
      }
   ]
}

次のステップ