概要
Microsoft Translator API v2が2019年4月にCloseされ、v3に移行する必要があるようです。
いままでGASで動いていたv2のSlack翻訳botをv3にしたので、そのコードを晒しておきます。
関連記事
v1: https://qiita.com/kemayako/items/21fe36005e6e729aff77
v2(GAS): https://qiita.com/sosuke/items/ece4aee023fade0c2d23
ソースコード
https://docs.microsoft.com/en-us/azure/cognitive-services/translator/migrate-to-v3 に従い、認証方法やレスポンスの構造(xml→json)をv2実装から変更しています。
↓の記事の内容から translate()
の実装を以下のものと置き換えれば、そのまま動作するはずです。
var MS_API_TOKEN="鍵";
var PRIMARY_LANGUAGE="ja";
var SECONDARY_LANGUAGE="ko";
function translate_v3(text) {
var detect_url = "https://api.cognitive.microsofttranslator.com/detect?api-version=3.0";
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"Ocp-Apim-Subscription-Key": MS_API_TOKEN
},
};
options["payload"] = JSON.stringify([{"text":text}]);
var detect_resp_raw = UrlFetchApp.fetch(detect_url, options).getContentText("UTF-8");
var detect_resp = JSON.parse(detect_resp_raw);
var language = detect_resp[0]["language"];
var from = language;
var to = PRIMARY_LANGUAGE;
if (language.indexOf(PRIMARY_LANGUAGE) >= 0) {
to = SECONDARY_LANGUAGE;
}
var translate_url = 'https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&To='+to;
options["payload"] = JSON.stringify([{"text":text}]);
var translate_resp_raw = UrlFetchApp.fetch(translate_url, options).getContentText();
var translate_resp = JSON.parse(translate_resp_raw);
return translate_resp[0]["translations"][0]["text"];
}
Microsoft Translator API v3の所感
Microsoft Translator API v3に関するQiita記事はまだ無いようなので、多少所感を書いておきます。
v2からv3に上げたことで、翻訳の内容が変わり、
やや韓→日、日→韓の翻訳精度が上がったように思います。
例えば、
네, 알겠습니다.
という文は、v2の翻訳だと
私の、サー。
などという、「同音異義語間違え」「英語等の他の言語を経由した形跡」が見られましたが、
v3では、
はい、わかりました。
と正確に訳されるようになりました。
その他、丁寧語の訳も正確に出るようになった気がします。