natural born minority
最初は「gitの日本語ブランチ名むかつく!変換したろ」から「タダである程度使える翻訳APIを」と思ったのですが…なんかハマってしまいまして。
Microsoft Translator Text API(Azure:Cognitive Services)
の利用方法無料の翻訳APIを探して、 Microsoft Translator API
にたどり着いたのですが…
サンプルの通り書いても「翻訳できたりエラー起こしたり」となって…「これ、ホンマに信頼あるAPIなん?」と思ったんです。
ま、それは「やり方おかしい」のだろうとおもうのですが、どうやら…
Microsoft Translator API
は一旦廃止になる
Azure
の Cognitive Services
の一部に同等のサービスが組み込まれる
Microsoft Translator API
中の Text API
となる
Speech API
もあるのでこんな感じにという話なようです。
なので、新しい方のを試してみました。
Groovyにて実装した例を示します。
※上記の前提のため「極力原始的なJavaのAPIで組んで」ます。
import javax.net.ssl.HttpsURLConnection
import java.net.URLEncoder
def getToken(key) {
def authenticationUrl = "https://api.cognitive.microsoft.com/sts/v1.0/issueToken"
def conn = new URL(authenticationUrl).openConnection()
conn.setRequestMethod("POST")
conn.setDoOutput(true)
conn.setRequestProperty("Ocp-Apim-Subscription-Key", key)
conn.getOutputStream().write(0)
return conn.getInputStream().text
}
def translate(target, from, to, token) {
def appId = URLEncoder.encode("Bearer ${token}", "UTF-8")
def text = URLEncoder.encode(target, "UTF-8")
def translatorTextApiUrl = "https://api.microsofttranslator.com/v2/http.svc/Translate?appid=${appId}&text=${text}&from=${from}&to=${to}"
def conn = new URL(translatorTextApiUrl).openConnection()
conn.setRequestMethod("GET")
conn.setRequestProperty("Accept", "application/xml")
def withTag = conn.getInputStream().text
return withTag.replaceAll("<.+?>", "");
}
// 実行部
def SUBSCRIPTION_KEY = "[ご自身の取得されたサブスクリプションキーを設定]"
def from = "ja"
def to = "en"
def target = '日本語から英語へと訳すことは可能ですか?'
def token = getToken(SUBSCRIPTION_KEY)
def result = translate(target, from, to, token)
println "翻訳結果 : ${result}"
上記ソースのfrom
,to
は「翻訳言語の指定」です。
手続き的には
な感じです。
実行すると、
な感じ。
上記ソース内で「環境設定に類するもの」は SUBSCRIPTION_KEY
の「サブスクリプションキー」(サブスクリプションIDと言うハッシュっぽいやつとは別、ややこしい)だけです。
順序前後しますが「これを取得する方法」を説明します。
…と、言ってもリンクに丸投げなのですがw
※リンクの記事で示されてるのが、少し前のAzureですので、若干UIが異る&英語表示ですが、適宜なんとかしてください。
登録後、そのサブスクリプションを選び、 keys
をクリック、 key1
,key2
のどちらかの値をスクリプトに仕込んでください。
日付を限定してググっても「古い方の情報ばかり出てくる」ので、案外この情報にたどり着くのは困難なんだろうなーと思いました。
…使ってる人少ないんかな?
以下を参考にさせていただきました。感謝です。