使ってみよう! Windows Live SDK/API

第38回 使ってみようMicrosoft Translator

この記事を読むのに必要な時間:およそ 5 分

翻訳の取得

Translateメソッドはひとつの翻訳結果を返します。機械翻訳を含むデータベースに登録された複数の翻訳情報を取得したい場合は,GetTranslationsメソッドを使用します。パラメーターは次の通りです。

パラメーター名 説明
appId AppID
text 翻訳するテキスト
from< 翻訳前の言語コード
To 翻訳後の言語コード
maxTranslations 取得する翻訳の最大数
options (後述)

optionsにはAddTranslationメソッドで使用したcategory, user, uriなどの情報を指定し,特定の翻訳情報を取得するために使用します。optionsに使用できるパラメーターは次の通りです。

パラメーター名 説明
Category 翻訳のカテゴリー(省略時はgeneral)
ContentType テキストのContent-type(text/plainまたはtext/html 省略時はtext/plain)
Uri 翻訳の場所(省略可能)
User ユーザー名(省略可能)
State 状態オブジェクト(指定した値が応答時に返ってきます。プログラムが要求と応答を対応付ける場合などのために任意で使用します)

パラメーターはすべて省略可能ですので,AddTranslationメソッドで各パラメーターに対応する値を使用していなければoptionsパラメーターを使う必要はありません。optionsの値は,{"User": "admin", "State": "uniqueId"} のようにJSON形式で表します。

JavaScriptのコードは次のようになります。


$(function () {
    $.ajax({
        type: "GET",
        url: "http://api.microsofttranslator.com/V2/Ajax.svc/GetTranslations",
        dataType: "jsonp",
        data: {
            appId: appId,
            text: "where do you eat a choco-coronet from?",
            from: "en",
            to: "ja",
            maxTranslations: 5,
            options: "{\"State\": \"someUniqueStateId\"}"
        },
        jsonp: "oncomplete",
        success: function (data, dataType) {
            for (var i = 0; i < data.Translations.length; ++i) {
                alert("TranslatedText: " + data.Translations[i].TranslatedText + "\n" +
                      "MatchDegree: " + data.Translations[i].MatchDegree + "\n" +
                      "Rating: " + data.Translations[i].Rating);
            }
        }
    });
});

戻り値は,次の値が返ってきます。

キー名 説明
Translations 翻訳情報を含むオブジェクト(後述)の配列
From 翻訳前の言語コード
State optionsパラメーターのStateの値

Translationsは配列になっており,各オブジェクトは,次のキーと値を持っています。

Error

もしエラーの場合はErrorというキー名を含み,その値はエラーコードです。

MatchDegree

翻訳の際に使用したデータベースの元のテキストが,メソッドに入力された翻訳対象のテキストとどの程度一致しているかを示す0〜100の整数です。0は完全に不一致,100は完全に一致を示します。英語の場合,大文字と小文字の違いなどでこの値が減少します。

MatchedOriginalText

翻訳の際に使用したデータベースの元のテキストです。機械翻訳や完全に一致している場合は,この値はありません。

Rating

翻訳の登録時に付けたratingの値です。機械翻訳の結果は5になります。

Count

このオブジェクトの翻訳が,ユーザーにより選択された回数を示します。APIにはそのようなUIはないため,ratingを1以上で複数回 同じ翻訳を登録すると,その分このCount値が増えていることがわかります。ratingが-1で登録されるとCount値は減ります。機械翻訳の結果は0になります。

TranslatedText

翻訳したテキストです。

参考までに戻り値をVisual Studioで表示したものを図6に示します。

図6 オブジェクトの構造

図6 オブジェクトの構造

これらのメソッドにも一括で複数のテキストを処理するメソッドが用意されていますAddTranslationArrayGetTranslationsArrayメソッド⁠⁠。こちらも詳しくはMSDN Libraryを参照してください。

AppIDトークンの利用

これまで,各メソッドの呼び出しにはAppIDを使用してきましたが,翻訳の登録など誰でも自由にできては困る場合があります。そのような場合にAppIDを使用せず代わりにAppIDトークンと呼ばれる値を使う方法も用意されています。

AppIDトークンはAppIDを元に作成します。作成するときに,このトークンによって翻訳の登録時に指定できるratingの最大値と,翻訳の取得時に取得できるratingの最小値を指定できます。また,トークンの有効期間の設定も可能です。これによって匿名ユーザーが登録する翻訳のrating値を5未満に制限したり,翻訳を取得したとき低いratingのものは取得できないようにしたりします。

AppIDトークンはGetAppIdTokenメソッドを使います。パラメーターは次の通りです。

キー名 説明
appId AppID
minRatingRead 取得可能な翻訳のrating最小値
maxRatingWrite 登録可能な翻訳のrating最大値
expireSeconds トークンの有効期間(秒)
最大86400秒

JavaScriptのコードは次のようになります。実行結果は図7のようになります。

$(function () {
    $.ajax({
        type: "GET",
        url: "http://api.microsofttranslator.com/V2/Ajax.svc/GetAppIdToken",
        dataType: "jsonp",
        data: {
            appId: appId,
            minRatingRead: 5,
            maxRatingWrite: 4,
            expireSeconds: 300
        },
        jsonp: "oncomplete",
        success: function (data, dataType) {
            alert("AppIdToken = " + data);
        }
    });
});

図7 AppIDトークンの取得

図7 AppIDトークンの取得

取得できたトークンの値は,GetAppIdTokenメソッドを除くすべてのメソッドのAppIDパラメーターの値として使用できます。


いかがでしたでしょうか。今回は以上です。Microsoft TranslatorウィジットおよびAPIは,商用・非商用に関わらず無償で利用できます。ぜひWebサイトやアプリケーションに活用してみてください。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp