Alibaba Cloud Machine Translation を使ってみる #2

前回の記事に続いて Alibaba Cloud Machine Translation を使ってみた話です。 今回は API から Machine Translation を利用してみます。

1. REST API のドキュメント

REST API に関する情報は公式のDocument Center を参考にします。

2. OpenAPI Explorer による動作テスト

2.1. OpenAPI Explorer の準備

OpenAPI Explorer の画面に移動します。

検索ボックスから “Machine Translation” を検索します。

言語が中国語だったので英語に変更します。

API の実行の準備が整いました。

2.2. GetDetectLanguage API のテスト

このAPI は SourceText で指定された文字列の言語を識別するAPI です。

左のAPI の一覧から “GetDetectLanguage” をクリックします。

Source Text に英文を入力します。 今回はAlibaba Cloud のDocument Center から Machine Translation の .NET SDK に関する文章をサンプルとして指定します。

The Machine Translation . NET SDK allows developers of the Windows platform to use Alibaba Cloud Machine Translation conveniently through the .NET platform. Currently, the SDK supports . NET Framework 3.5, 4.0, and 4.5. SDK files vary with different .NET Framework versions, but the interfaces and functions are the same.

“Submit Request” でAPI を実行します。

しかし、失敗しました。 Debugging Result は以下。 “InvalidAccountStatus” とのことでAPI を呼び出す際の認証に失敗した模様。

{
“RequestId”: “BBFAE0F9-EC4F-4982-A3AC-B04B1A9CF03F”,
“HostId”: “mt.cn-hangzhou.aliyuncs.com”,
“Code”: “InvalidAccountStatus”,
“Message”: “账号没有开通服务”,
“Recommend”: “https://error-center.aliyun.com/status/search?Keyword=InvalidAccountStatus&source=PopGw”
}

Recommend にあるURL を確認します。

“The Machine Translation service has not been activated.” とのことで Machine Translation がActivate されていないことが原因とのこと。 しかし、前の記事で紹介した通りすで Activate は完了しています。

ちなみにここから Product 列の “alimt” をクリックすると Machine Translation に関する Error Code の一覧を確認可能です。 他のエラーが発生した場合はこちらから確認してみることにします。 一部、中国語が混ざっていますけど。

Access Key の指定に原因がありそうです。 セキュリティ上の都合もありこのテストで使っているアカウントにAccessKeyは生成していませんでした。 

一度生成し再実行します。 エラーは解消されません。 最終的、一度、Alibaba Cloud コンソールからログアウトし、再度ログインしても実行には同じエラーで失敗します。 

2.3. TranslateGeneral API のテスト

TranslateGenaral API は問題なく実行出来ました。

Translated として出力された日本語の翻訳結果は以下になります。 日本語としては読みづらい部分はありますが、OpenAPI Explorer から実行することが出来ました。

機械翻訳。Net sdkを使用すると、windowsプラットフォームの開発者は、Netプラットフォーム。現在、sdkはサポートしています。Net framework 3.5 、 4.0 、および 4.5。Sdkファイルは異なります。Net frameworkのバージョンですが、インターフェイスと機能は同じです。

以下は原文です。

The Machine Translation . NET SDK allows developers of the Windows platform to use Alibaba Cloud Machine Translation conveniently through the .NET platform. Currently, the SDK supports . NET Framework 3.5, 4.0, and 4.5. SDK files vary with different .NET Framework versions, but the interfaces and functions are the same.

3. .NET SDK からのAPI 実行

前の章でテストしようとした “GetDetectLanguage” を .NET SDK からAPI にアクセスします。

3.1. GetDetectLanguage API のテスト

3.1.1. サンプルコードの入手

まずは OpenAPI Explorer からサンプルコードを入手します。

API に”GetDetectLanguage” を指定し、SourceText に2.2. で指定したサンプル英文 を指定します。 そのあとに右のExample Code からGo のサンプルコードをコピー&ペーストすることが可能です。

3.1.2. サンプルコードの実行

今回は Go の実行環境に Visual Studio Code を利用します。 OpenAPI Explorer から入手したサンプルコードを貼り付けます。

<accessKeyId> と <accessSecret> は別途変更が必要なことがわかります。

<accessKeyId> と <accessSecret> に実際の環境の値を指定します。 そのあとVisual Studio Code 上でソースファイルを保存します。

それでは実行します。 今回、Visual Studio Code と Go の実行環境をを初めて利用します。Go SDK を組み込んでいないので失敗すると思います。

案の定、失敗しました。

DEBUG CONSOLE の出力は以下。 やはりSDK が見つからないことが原因です。

API1.go:6:2: cannot find package “github.com/aliyun/alibaba-cloud-sdk-go/services/alimt” in any of: c:\go\src\github.com\aliyun\alibaba-cloud-sdk-go\services\alimt (from $GOROOT) C:\Users\XXXXXXX\go\src\github.com\aliyun\alibaba-cloud-sdk-go\services\alimt (from $GOPATH) exit status 1 Process exiting with code: 1

Alibaba Cloud のSDK のホームページを参考にGo SDK と alimt (Machine Translation)の2つのSDK をインストールします。

  • github.com/aliyun/alibaba-cloud-sdk-go
  • github.com/aliyun/alibaba-cloud-sdk-go/services/alimt

再度実行します。 今度は正常に実行することが出来ました。

ただし、”DetectLanguage” の結果はNULL です。本当はここに”en”なり”English”なり英語と判別した結果が出力されることを期待していました。

ソースコードにある一番最後のPrintf で出力される “response is XXX” も出力されていないため、Machine Translation からのエラーコードを見て”Process exiting with code: 0″を出力したようです。

fmt.Printf(“response is %#v\n”, response)}

Code: 0 をAPI Error Center のサイトから確認します。 しかし、Code: 0 は見つかりません。

エラーコードの一覧はDocument Center にもありますが Code :0 は見つかりません。

どこに原因があるかわからないため、他のAPI を試してみることにします。

3.2. TranslateGeneral API のテスト

3.2.1. サンプルコードの入手

OpenAPI Explorer からサンプルコードを入手します。

3.2.2. サンプルコードの実行

Visual Studio Code にサンプルコードをコピー&ペーストします。

accessKeyId と accessSecret を実際の環境の値に変更します。

実行します。 正常に機械翻訳の結果が出力されました。

4. まとめ

簡単にではありますが Machine Translation が提供するAPI のうちの2つについてテストすることが出来ました。 “TransferGeneral” はOpenAPI Explorer および .NET SDK からの正常に機能することが確認出来ました。 しかし、”GetDetectLanguage” はOpenAPI Explorer からも.NET SDK からも本来確認したかった言語の判別の出力は得られませんでした(原因不明)。 

API は今回試した2つを含め以下のものが提供されています。 それぞれどんな役割を持つAPI を確認できる資料は Document Center では見つかりませんでした。 

API
GetDetectLanguage
CreateDocTranslateTask
GetDocTranslateTask
GetImageDiagnose
GetImageTranslate
GetTitleDiagnose
GetTitleGenerate
Translate
TranslateCertificate
TranslateECommerce
TranslateGeneral

ドキュメントが無いと言ってもソースコードはGitHub から確認可能です。 ドキュメントが無い現状、ソースを見るしかありません。 まあ、オープンソースソフトウェアであればよくある話で更新されていないドキュメントを見るくらいならソースコードを見るのがもっとも単純といえます。

ちなみに今回テストした”get_detect_language.go” の中身を見てみると 24行目にドキュメントのURLが見つかります。 ただし、このURLにアクセスしても中国サイトのAlibaba Cloud のドキュメントセンターのトップページにジャンプするだけです。 こちらも探してみましたが情報レベルは国際サイトとあまり変わらずでした。 やはりソースコードで何をどうしているのか確認するのが一番よさそうです。

今回、Alibaba Cloud Machine Translation に興味を持った理由はこのブログサイトを多言語対応したいという漠然とした思いがありました。 英語や中国語でも公開することでより多くの人と情報を交換できるのではと考え、その翻訳ツールとしてせっかくであれば Alibaba Cloud を活用しようと考えました。 中国語の翻訳の精度も高いだろうという期待もあり(自分自身、中国語がわからないので精度が高いかどうかの判別も出来ないのですが)。 ただ、すでにCMS としてWordpress を使っている現状、Machine Translation と WordPress を連携して作るのはかなり大変そうというか私のスキルでは無理です。 今までの記事をCMS ではなく 静的なHTML コンテンツとして公開する、その際にMachine Translation を利用し翻訳する、というのが現実的な進め方になりそうです。 お金があれば誰かに委託した方が早そうですがチャレンジとしてブログの多言語化は引き続き考えていきます。

AccessKey は無効化しテストはいったん終了です。今回の記事は以上です。