BEACHSIDE BLOG

Azure と GitHub と 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万文章用意して動作確認しよう...)

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

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

  • 原文と翻訳文の二つのファイルをペアでアップロード可能。原文のファイルと翻訳文のファイルで行があってなくても、頑張って翻訳してくれる。word とか html も頑張って翻訳してくれる(頑張ってって表現おかしいか..)。
    What are parallel documents? - Custom Translator - Azure Cognitive Services | Microsoft Docs

  • 原文のファイルと翻訳文のファイルを、それぞれ1行1文章として構成して一致させてあるなら、拡張子を .align することで学習しやすくなる(alignment processが省略される?つまり行を間違えると地獄...)
    Sentence pairing and alignment - Custom Translator - Azure Cognitive Services | Microsoft Docs

  • フレーズ辞書/文章の辞書登録機能がある。NMT の学習ではなく、ほぼ置換機能("ほぼ"の意味はドキュメントに記載ある)。この機能だけでも十分おいしい気がする。辞書のフォーマットはトレーニング用のファイルのフォーマットと同様。
    What is a dictionary? - Custom Translator - Azure Cognitive Services | Microsoft Docs

  • トレーニングとは別に、チューニング用データをアップロードしてチューニングが可能。ファイルフォーマットはトレーニング用と一緒。トレーニングデータよりも重みが重く、品質に大きく影響する。どんな感じになるかは、Try and Error で学習モデル作ってく感じですが、面白そうですね。
    テスト専用のデータもアップロードできる。テストデータをアップロードしてないときは、トレーニングデータからMLでやるようなごねごねをしてくれる。
    What is training and model? - Custom Translator - Azure Cognitive Services | Microsoft Docs


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

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文章くらいのコーパスは集めたんですが、心が折れた...)。

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




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