Content Moderator (2.text - screen)apiを画面から叩いてみる。


Azure Content Moderator APIの概要

Azure Content Moderator API は、ユーザが入力したテキスト、画像、ビデオに不適切な内容、が含まれているかどうかを確認できるサービスです。一言で言うと検閲と言ったところでしょうか、ユーザに好き勝手に投稿させないように事前にコグニティブサービスによるチェックを入れて登録したい時等に利用できます。Content Moderatorはtextとimage、videoに分けられます。具体的には以下のようになります。

Image

前回記事参照

text

  • Detect Language(指定された文字列の言語を判定します)
  • Screen(短文の解析。公式サイトには「下品な言葉を探索する」とあります)

ちなみに送信方法はすべてPOSTです。

上記のうち、今回はContent Moderator - Moderate > text > screenを試してみたいと思います。

以下の記事を参考にContent Moderato(screen)の動作確認を行ってみます。
Content Moderator - Moderate > text > screen

目的

  • 不適切な言葉の検出
  • 個人情報の検出(メアド、住所、携帯電話番号) 

はまりどころ。

上記リンクが古いようです。そのままだと動かないので2点ほど修正が必須です。(2020/02/02現在)
1.エンドポイントが正しくない⇒ソースコード参照
2.パラメータのlanguageの指定内容Supported Languagesがリンク切れしてわからない
"ja","jp","ja-jp"などを試すがNG⇒結局日本語はjpnであることが判明

azure側の準備

"contentmoderator"で検索してMarketPlaceのcontent moderatorを選択します

適宜入力して作成を押下。

デプロイに成功したらリソースに移動します

遷移先のkey1が必要です。エンドポイントはソースコードを参照ください。

ソースコード

<!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {
        var params = {
            // Request parameters
            //"autocorrect": "{boolean}",
            //"PII": "{boolean}",
            //"listId": "{string}",
            "classify": "True",
            "language": "jpn",
        };

        $.ajax({
            url: "https://xxxxxxxxxxxxx.cognitiveservices.azure.com/contentmoderator/moderate/v1.0/ProcessText/Screen?" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("Content-Type","text/plain");
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","xxxxxxxxxxxxxxxxxxxxxxxxxx");
            },
            type: "POST",
            // Request body
            data: "私のおっぱい 080-1122-3344 東京都港区六本木3丁目2番  [email protected]に送信しないでください。",
        })
        .done(function(data) {
            alert("success");
        })
        .fail(function() {
            alert("error");
        });
    });
</script>
</body>
</html>

レスポンス

result.json
{"OriginalText":"私のおっぱい 080-1122-3344 東京都港区六本木3丁目2番  [email protected]に送信しないでください。",
"NormalizedText":"私のおっぱい 080-1122-3344 東京都港区六本木3丁目2番  [email protected]に送信しないでください。",
"Misrepresentation":null,
"PII":{"Email":[{"Detected":"[email protected]","SubType":"Regular",
"Text":"[email protected]","Index":36}],
"IPA":[],"Phone":[],"Address":[],"SSN":[]},
"Language":"jpn","Terms":null,"Status":{"Code":3000,"Description":"OK","Exception":null},"TrackingId":"USW2_ibiza_b0631b37-2d15-4d33-8d14-f18ba6eb0674_ContentModerator.F0_8439dfa1-0cfc-418f-a251-d67c4fe1b35c"}

結果

一部の検索が上手くいきませんでした。日本語対応がまだされてないようです。現時点ではTranslator Textと組み合わせるしかないか・・・。