Bing Spell Check API の使用

警告

2020 年 10 月 30 日に、Bing Search API は Azure AI サービスから Bing Search サービスに移行されました。 このドキュメントは、参考用としてのみ提供されています。 更新されたドキュメントについては、Bing search API のドキュメントを参照してください。 Bing 検索用の新しい Azure リソースを作成する手順については、「Azure Marketplace から Bing Search リソースを作成する」を参照してください。

この記事では、Bing Spell Check API を使用して、コンテキストに応じた文法とスペルのチェックを実行する方法について説明します。 ほとんどのスペルチェック機能はディクショナリベースのルール セットに依存しますが、Bing のスペルチェック機能は、機械学習と統計的機械翻訳を活用することでコンテキストに応じた正確な修正を実現しています。

スペル チェック モード

API は、2 つの校正モード (ProofSpell) をサポートします。 こちらの例を参照してください。

Proof - ドキュメント用

既定のモードは Proof です。 Proof スペル チェック モードでは最も包括的なチェックが行われ、大文字と小文字の修正、基本的な句読点の調整、ドキュメントの作成を支援するその他の機能が提供されます。 ただし、これは、en-US (英語 (米国))、es-ES (スペイン語)、pt-BR (ポルトガル語) 市場でのみ利用できます (注: スペイン語とポルトガル語はベータ版です)。 その他のすべての市場では、mode クエリ パラメーターを Spell に設定してください。

Note

クエリ テキストの長さが 4,096 を超える場合は 4.096 文字に切り捨てられた後で処理されます。

Spell - Web 検索/クエリ用

Spell は、より良い検索結果を返すためにもっと積極的に機能します。 Spell モードは、ほとんどのスペル ミスを検出しますが、Proof ではキャッチされる一部の文法エラーは検出されません (大文字小文字エラーや単語の繰り返しなど)。

Note

  • サポートされるクエリの最大長は次のとおりです。 クエリが最大長を超えた場合、クエリとその結果は変更されません。
    • 言語コード en、de、es、fr、pl、pt、sv、ru、nl、nb、tr-tr、it、zh、ko では 130 文字。
    • それ以外はすべて 65 文字。
  • Spell モードでは、クエリに角かっこ文字 ([]) がサポートされておらず、矛盾した結果が生じることがあります。 Spell モードを使用するときは、これらをクエリから削除することをお勧めします。

市場の設定

要求には、mkt クエリ パラメーターで市場コードを指定する必要があります。 指定しなかった場合は、要求の IP アドレスに基づく既定の市場が使用されます。

HTTP POST と HTTP GET のサポート

この API は、HTTP POST と HTTP GET のどちらもサポートします。 どちらを使用するかは、校正する予定のテキストの長さによって決まります。 文字列が常に 1,500 文字未満の場合は、GET を使用します。 最大 10,000 文字の文字列をサポートする場合は、POST を使用します。 テキスト文字列には、任意の有効な UTF-8 文字を含めることができます。

次の例は、テキスト文字列のスペルと文法のチェックを要求する POST 要求を示しています。 この例には、すべてを網羅するために mode クエリ パラメーターが含まれています (mode の既定値は Proof であるため、除外される可能性があります)。 text クエリ パラメーターには、校正対象の文字列が含まれます。

POST https://api.cognitive.microsoft.com/bing/v7.0/spellcheck?mode=proof&mkt=en-us HTTP/1.1  
Content-Type: application/x-www-form-urlencoded  
Content-Length: 47  
Ocp-Apim-Subscription-Key: 123456789ABCDE  
X-MSEdge-ClientIP: 999.999.999.999  
X-Search-Location: lat:47.60357;long:-122.3295;re:100  
X-MSEdge-ClientID: <blobFromPriorResponseGoesHere>  
Host: api.cognitive.microsoft.com  
 
text=when+its+your+turn+turn,+john,+come+runing  

HTTP GET を使用する場合は、URL のクエリ文字列に text クエリ パラメーターを含めます。

前述の要求への応答は次のようになります。 応答には、SpellCheck オブジェクトが含まれます。

{  
    "_type" : "SpellCheck",  
    "flaggedTokens" : [{  
        "offset" : 5,  
        "token" : "its",  
        "type" : "UnknownToken",  
        "suggestions" : [{  
            "suggestion" : "it's",  
            "score" : 1  
        }]  
    },  
    {  
        "offset" : 25,  
        "token" : "john",  
        "type" : "UnknownToken",  
        "suggestions" : [{  
            "suggestion" : "John",  
            "score" : 1  
        }]  
    },  
    {  
        "offset" : 19,  
        "token" : "turn",  
        "type" : "RepeatedToken",  
        "suggestions" : [{  
            "suggestion" : "",  
            "score" : 1  
        }]  
    },  
    {  
        "offset" : 35,  
        "token" : "runing",  
        "type" : "UnknownToken",  
        "suggestions" : [{  
            "suggestion" : "running",  
            "score" : 1  
        }]  
    }]  
}  

API が text 文字列内で検出したスペルと文法のエラーが、flaggedTokens フィールドに一覧表示されます。 token フィールドには、置換される単語が含まれます。 offset フィールドの 0 から始まるオフセットを使用して、text 文字列内のトークンを検出します。 その後、その場所にある単語をsuggestion フィールド内の単語に置き換えます。

type フィールドが RepeatedToken の場合でも、トークンを suggestion に置き換えますが、おそらく末尾のスペースを削除する必要があります。

スロットル リクエスト

サービスとサブスクリプションの種類によって、1 秒あたりのクエリ数 (QPS) が決まります。 アプリケーションに、クォータ内に収めるロジックを含めるようにしてください。 QPS の上限に達するか超えた場合、要求は失敗し、HTTP 429 状態コードが返されます。 応答には、Retry-After ヘッダーが含まれています。これは、別の要求を送信できるようになるまでに待機する必要がある時間を示します。

サービス拒否とスロットリング

このサービスは、サービス拒否 (DoS) 攻撃と QPS 違反を区別しています。 サービスが DoS 攻撃を疑っている場合、要求は成功します (HTTP 状態コードは 200 OK)。 しかし、応答の本文は空になります。

次のステップ