Azure AI Translator に組み込まれている Custom Translator をセットアップしてみた

## はじめに

「受注」を “Sales order” と訳したいのに、自動翻訳するといつも “Order” になってしまう。
そんなことありませんか？
Microsoft の Azure AI Translator に組み込まれている Custom Translator というツールを使うと、解決できます。

先日 Custom Translator をセットアップしたので、以下をメモとして残します。
- Custom Translator の概要
- セットアップ方法
- はまったところ
- 簡単に動作確認する方法

## Custom Translator の概要

Azure AI Translator とは、ディープラーニング機能を用いた自動翻訳システムです。
その中のツールとして提供されているのが、Custom Translator です。
Custom Translator をセットアップすることで、自分で用意したデータを学習させることができます。
（つまり、原文の長さや形にかかわらず、「受注」を"sales order"と訳してくれる自動翻訳システムを作れます。）

## セットアップ方法

詳しいセットアップ方法については、以下に記載があります。

https://learn.microsoft.com/ja-jp/azure/ai-services/translator/custom-translator/quickstart

セットアップのおおまかな流れは以下のとおりです。

１．アカウントを取得する
　・Microsoft アカウント
　・Azure サブスクリプション用アカウント
２．Azure portal で、Translator リソースを作成する
３．Custom Translator portal でワークスペースを作成する
　※ここで、２で作成したリソースのキーを設定する
４．ワークスペース内にプロジェクトを作成する
５．読み込ませるデータを登録する
　（日本語の文章と英語の文章が対になっているデータ）
６．データをもとに翻訳モデルをトレーニングする
７．翻訳モデルをデプロイする
８．翻訳に使用する

## はまったところ
以下は、上記手順でセットアップしている際にはまったところです。

### 思ったより時間がかかる
上記手順の６（データをもとにモデルをトレーニングする）と７（モデルをデプロイする）に予想以上の時間がかかりました。
おおむね、手順６で１２時間、７で１２時間でした。
最大で、各手順４８時間かかることもあるそうなので、あらかじめ作業スケジュールに組み込んでおくことをおすすめします。

### 作成済みの翻訳モデルにデータを登録できない
上記手順を最初から最後まで実施し、用意したデータを用いて翻訳ができるようになりました。
そのあと翻訳モデルに新規用語を追加しようと思い、手順５（読み込ませるデータを登録する）を再度実施しようとしたところ、作成後の翻訳モデルにはデータを追加できないことが分かりました。
Q&Aなどを調べたところ、そのような仕様のようです。
そのため、あらかじめ精度の高いデータを準備した上でモデルを作成し、必要に応じて半年や１年などのスパンでモデルを再作成していく、という運用になりそうです。

### 同じ言語ペアで別のプロジェクトを作成できない？
一度、「日本語→英語」用の翻訳モデルを作成したあとに、再度別のデータを用いて「日本語→英語」用の翻訳モデルを作成しようとしたところ、手順４（ワークスペース内にプロジェクトを作成）でエラーが出ました。
この場合、以下のプロジェクトラベルに任意の値を設定することで、「日本語→英語」用の別のプロジェクトを作成できました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641743/f390ccc2-9466-71c6-eed0-dbee0a7192c5.png" width=50%>

### 設定ミス…？
手順５（読み込ませるデータを登録する）の際に、データの登録も削除もできないことがありました。「どこか設定ミスったかな」と思ったのですが、Microsoft Q&A の英語版に現象を書き込んだところ早々に反応があり、Microsoft側の問題ということが分かりました。その後、３日ほどで問題は解消されました。


## 簡単に動作確認する方法

作成した翻訳モデルの動作を確認したい場合、無料の Document Translation というアプリを使うと便利です。
Document Translation は以下から取得できます。

https://github.com/MicrosoftTranslator/DocumentTranslation/releases

### Document Translation の設定方法

１．キー情報の設定
Azure portal > 作成したリソース > [エンドポイント]を選択すると、以下の画面が表示されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641743/0e6f8c24-16a2-583b-cc97-5639fdc0da88.png" width=70%>


この画面の情報を、Document Translation > [Settings] > [Authentication]タブの以下の項目に設定します。
- Resource Key: 　[キー１]の値
- Azure Region:　[場所/地域]の値
- Text Translation Endpoint:　[テキスト翻訳]の値
- Document Translation Endpoint:　[ドキュメントの翻訳]の値
- Storage Connection String: テキストではなくファイルの翻訳をしたい場合は、ここにAzure storage accountのStorage Connection Stringを設定します。なければデフォルト値のままでOK。

２．カテゴリーの設定
Custom Translator portal > [Model details] から、使いたい翻訳モデルを選択します。以下の画面が表示されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641743/870e94f7-f49f-d17a-fb15-e7358f0ac432.png" width=70%>

ここに記載されている [Category ID] を、Document Translation > [Settings] > [Categories]タブに登録します。
- Name: 任意の名称
- Custom Translator Category ID: [Category ID]の値
<br>

結果、「受注」が”Sales order”になりました！
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641743/30878ed6-9d20-ca8f-6050-e952a21b269f.png">

単語だけでなく、文章中に出てきても大丈夫です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641743/f71f87c4-9632-279d-7671-958e95d5ad9f.png">


## 最後に

登録したデータについて気になる方は、以下の記事をどうぞ！

https://qiita.com/kaho_sa/items/8f545eeb97b6ed8e025d