LoginSignup
2
1

More than 3 years have passed since last update.

MSの機械翻訳[Microsoft Translator Text]と、機械学習で独自辞書を追加できる[Custom Translator]を知る

Last updated at Posted at 2019-03-03

はじめに

本記事は2019/03/03に執筆しました。
これ系の技術は常にアップデートされているため、将来的に古くなる可能性があります。

Translator TextとCustom Translator

Translator Textとは

Microsoftが展開している「Cognitive Services」の1つで、いわゆる機械翻訳です。
https://azure.microsoft.com/ja-jp/services/cognitive-services/
Cognitive Servicesの他には、音声解析や画像解析機能が提供されています。

Bing翻訳の内部も、どうやら同様のエンジンを使用していそうです。(推測)

基本的にTranslator Textは、Rest APIから実行します。
なので時折、「Translator Text API」と呼んでいたりもします。
https://azure.microsoft.com/ja-jp/services/cognitive-services/translator-text-api/

Translator Text APIは、Azureから設定を行います。
設定方法などは、公式のリファレンスを参照ください。
https://docs.microsoft.com/ja-jp/azure/cognitive-services/translator/translator-info-overview

Custom Translatorとは

上記のTranslator Text APIでは、一般的な翻訳の結果しか適用されません。
つまり、自社独自であったり、業界独特の文章や単語は、翻訳結果に反映されないわけです。

そこで登場するのが、この「Custom Translator」です。
https://www.microsoft.com/ja-jp/translator/business/customization/

Custom Translatorは「ニューラル機械翻訳(NMT:Neural Machine Translation)」という仕組みを採用しており、機械翻訳結果をより自然に、人の翻訳のように反映させるものです。(詳しくは後述)

Custom Translatorでは、人の手で行われた翻訳結果の対照テキスト一覧(例:日本語⇔英語)を、事前に管理者がシステムにアップロードし、学習させます。
これは各環境(プロジェクト)ごとに学習させるため、自社独自の辞書であったり、独自の業界の言葉や言い回しを、オンリーミーとして学習させる事ができるわけです。

システム連携をすることで、Translator Textには、Custom Translatorで学習させた内容が反映されます。
これで、Translator Text APIを、ほとんど変えることなく今まで通り(ちょこっと変わるけど)呼び出すだけで、独自の辞書結果を反映してくれます。

本投稿は、このCustom Translatorについて、さわりを超ざっくり解説していきます。

Custom Translatorの概要

ニューラル機械翻訳(NMT:Neural Machine Translation)

上記の通り、Custom Translatorは「ニューラル機械翻訳(NMT:Neural Machine Translation)」という仕組みを採用しております。
ニューラル機械翻訳(NMT:Neural Machine Translation)については、この記事が非常に分かりやすかったです。
超ざっくりいうと、

  • これまで(ルールベース機械翻訳):文法ルールと辞書情報を基に訳文を生成するので、翻訳結果が機械的になることが多かった
  • NMT:実際に人間が翻訳した文章で学習するので、結果も自然になる
  • ただし:学習させていない単語の翻訳にはとことん弱い

こんな特徴を持ちます。

Custom Translatorの使用まで

実際にCustom Translatorを使用するまでは、以下の内容を参考にしました。

実際に触ってみて、少しだけ補足したいことがあったので、こちらに記載します。

学習のためのsentenceは10,000文以上必要

まず、機械学習のための学習データを作成時に、翻訳前⇔翻訳後の文章をアップロードします。
その後、学習データのモデルを作成するのですが、文章が足りないと、
「Please select one or more parallel documents with a minimum of 10,000 sentences to start your training.」
と表示されます。
これは、「トレーニングを開始するには、少なくとも1万の文章を含む1つ以上の並列ドキュメントを選択してください。」ということです。要するにCustom Translatorの使用には、翻訳前⇔翻訳後の文章がそれぞれ1万文章以上必要ってことです。
「うちには少し、専門用語のAAAとBBBとCCCがあるから、それらを翻訳結果に反映させたいな!」ぐらいのニーズだと、とても実現ができなそうです。
まあ機械学習はデータ量が肝だから仕方ないね。このサービスは大企業向けの内容でしょう。

ちなみに自分は、検証用として、青空文庫の「吾輩は猫である」を、日本語と、機械翻訳した英語の本文をそれぞれ作成し、アップロードして試しています。機械翻訳した内容を再度NMTに学習させるという笑

Custom TranslatorのAPI

Custom TranslatorのAPIは用意されています。(ただし2019/03/03現在Preview版)
こちらがリファレンス・・・なのですが、どうもこのリファレンスは不足がけっこうありそうです。
色々探りまくったら、GitHubにサンプルソースがあったので、こちらをご参照ください。→CustomTranslatorApiSamples

Microsoft Graph APIでの認証方法とほとんど同じなのですが、注意するのが「resourceUri」が "https://graph.microsoft.com" ではなく "api://6981666b-e0e0-47d6-a039-35318677bf79/access_as_user" という文字列なことです。なんじゃそりゃ。
将来的にGAされたときに変わるんですかね?とりあえずこの文字列を使用すれば大丈夫そうですね。

APIがあれば、例えば各部署の担当者が、学習のための翻訳前⇔翻訳後ファイルアップロードを、Custom Translatorのサービスページにアクセスさせなくても実行できるようになるはずです。(Custom Translatorのサービスページにみんなをアクセスさせちゃうと、非常に危険ですよね)
また、翻訳機能を埋め込んだアプリを実行時に、ワークスペース一覧、カテゴリ一覧を表示し、
翻訳サービスの利用者に、ワークスペースやカテゴリなどを選んでもらって、翻訳させる・・・なんてことも出来るかもしれません。
(権限的に、管理者でないユーザーがワークスペース一覧、カテゴリ一覧を取得出来るか、未検証ですが・・・)

Translator Text APIにCustom Translatorの結果を反映

2020/01/22修正しました

Translator Text APIに、Custom Translatorの結果を反映させるためには、APIのTranslateのクエリ文字列に、「category=(カテゴリID)」を追加してあげます。

なおカテゴリIDは、Custom TranslatorのProjectに記載しております。
image.png
プロジェクトなのにカテゴリIDなんですね。分かりづらry

まとめ

  • Custom Translatorは、機械翻訳に独自の翻訳結果を追加できる機能
  • 方式はニューラル機械翻訳で、自然な翻訳結果には長けているが、学習していない言葉には弱い
  • 使用には10,000文以上必要。「この何個かの単語を結果に反映させてほしいな」ぐらいの用途には向かない
  • Custom Translator APIをうまく絡めれば、管理もしやすそう。ただし、現在プレビュー版
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1