BEACHSIDE BLOG

MicrosoftとかC#を好むレンジャーの個人メモ

Custom Translator をちょっとさわってみた

Microsoft Translator Text API とその一部である Custom Translator について、以前からある機能とConnect 2018前後でアップデート含め、ざっくりまとめるとこんな感じになりました。

  • Microsoft Translator Text API は Neural Machine Translation ベースでの翻訳
  • Custom Translatorで独自に学習モデルを構築できる
    • 文書を学習させることができる。ルールベースではないので、学習したからと言って必ず学習した結果がでるわけではない。
    • フレーズや文章の辞書機能: 学習させたフレーズや文章を辞書として登録することで、ルールベースな感じで翻訳(むしろ置換に近い)してくれる。
  • REST API (Microsoft Translator Text API V3) 経由でアクセス可能(SDK もある)
  • 新しい料金(Custom Translator の GA 価格)は、2019/2より適用
    ちょっとお高いイメージですが、ビジネス的に考えると全然悪くない価格な気がする

このブログでは、Custom Translator で学習~デプロイしてRESTでアクセスしてみるところを試そうと思っていましたが、学習の最低ライン(1万文章)を作る前に心が折れました。

ということで、ちょっといじって気になる点の自分用メモとなってしましたが、自分のために書き進めます。

自分用メモ

(動作確認できてないので、英文を読み違えてるかもしれない...近いうちに1万文章用意して動作確認しよう...)

プロジェクトの設定について

学習用のドキュメントについて


ここからは学習データをアップロードするところまでを試します。

Translator Text API のキーの取得

まずは Azure Portal でキーを取得が必要です。キーのリソースを作成しましょうと言った方が正しいですかね。

ちょっと話を脱線しますが...

Cognitive Services では、今回の Translator Text API のような機能に応じたキーと、All in One のキーがあります。All in One はこんなサービスが一つのキーで利用できるものです。

f:id:beachside:20181208173747p:plain

「Custom Translator (preview) Porta」記載がありますが、このAll-in-One キーだと、この後の作業で利用する Custom Translator のポータルでキーが使えなかったです。Translator Text API v3.0 の利用可能リージョンであるWestUS2と、Translator Text API v3.0 の利用対象外のリージョン 東日本でキーを使って試してみましたが以下のようなエラーが出てだめだった....

f:id:beachside:20181208175007p:plain

現時点では何が正しいのかよくわかっていないですが、All in One のキーではなく、Translator Text のキーを作って試したら正常に登録できたので、それで話を進めます。
使えるべきなのか使えないのか、今後どうなるかはわからんので必要に応じて試してみましょうね。

では、本題に戻り...

キーの取得

Azure Portalリソースの作成 > 検索に「Translator Text」と入力してエンターキーを押します。

f:id:beachside:20181208230730p:plain


Translator Textをクリック > 作成 をクリックします。

f:id:beachside:20181208181220p:plain


入力項目を適当に入力します。「価格レベル」は、無料プランがあります。サブスクリプションごとに1つしか作れないようですね。
入力が完了したら、作成 をクリックします。

f:id:beachside:20181208181829p:plain


キーは、作成されたリソースの Keys で確認することができます。このあとすぐ利用しますので、コピーしておきましょうかね。

f:id:beachside:20181208182118p:plain


Custom Translator ポータルでの操作

Custom Translator のポータル でサインインします。既存の Microsoft Account あたりでのサインインですね。日本語の翻訳が変だったら嫌なので English のまま突入します。

f:id:beachside:20181208182545p:plain


サブスクリプションキーの設定

サインインしたら、Settings をクリック > Add Key をクリックします。

f:id:beachside:20181208183021p:plain


ダイアログが表示されます。先ほど Azure Portal で取得したキーを入力します。正常に登録できるとこんな感じになります。

f:id:beachside:20181208183349p:plain


プロジェクトの作成

Projects をクリック > Create Project をクリックします。

f:id:beachside:20181208183557p:plain


ダイアログが表示されます。ここで重要なのは、

  • Language Pair: 翻訳言語の指定
  • Category: どのカテゴリーに属するか。カテゴリーごとに専用のベースとなるカスタムモデルが利用されるといいたいところですが、現時点ではまだそうなっていないそうです。今後そうなるかも程度。ただし、ここに書いてあるように適切なカテゴリーをつけておきましょう。

Category descriptor は、ただの説明文を書くだけの欄で、学習モデルの精度には無関係です。

f:id:beachside:20181208184037p:plain


レーニングデータのアップロード

作成プロジェクトを開き、Upload files をクリックします。

f:id:beachside:20181208195634p:plain


学習させるためのデータをアップロードするには、ソースの言語と翻訳言語のファイルをペアでアップロードすればよいです。 今回は、Custom Translator の公式ドキュメントから Parallel document のページをテキストに張り付けてみました。

f:id:beachside:20181208210320p:plain


フレーズ辞書/文章辞書もトレーニングデータと同様のフォーマットでアップロードできます。
ファイルをアップロードするときに、「Document Type」の指定を変えるだけです。
これはNMT の学習には使われず、ほぼ置換するだけの機能のようなので専門用語が多い分野だと役立ちますね。翻訳しない固有名詞のフレーズにも使えますね。ただし、使いすぎるとNMT 自体の精度おちるかもねーって懸念もあります。どう考えるべきかはドキュメントをみておくとよいと思います。

辞書とは - Custom Translator - Azure Cognitive Services | Microsoft Docs

で学習の成果を見てみたいところなんですが、1万文章が最低必要だったので、今回はここで検証は諦めました(1000文章くらいのコーパスは集めたんですが、心が折れた...)。

(そして、このブログの上の方で概要を書き始めた....)




ということで中途半端になってしまいモヤモヤしか残ってないですが、今回はここまでとします。