Microsoft Cognitive Servicesで人工知能を体験しよう! 年末特大号(Translator編)
みなさん、こんにちは。
2016年も残すとこあと僅かとなりました。2016年中は当ブログをご覧いただき、誠に有難うございました。
年内締めの投稿として今回は、Microsoft Cognitive Servicesで人工知能を体験しよう!の年末特大号をお送りします。年末特大号にふさわしいその中身は、テキストを自動翻訳(機械翻訳)するサービス『Microsoft Translator API』を『Dynamics 365(Dynamics CRM)』とつなげちゃいますスペシャルです。
もう一度言います、スペシャルで~す笑
なにがスペシャルか?
- 機能的な点がスペシャル:
Dynamics 365(Dynamics CRM)をお使いの方はお分かりいただけると思いますが、Dynamics 365(Dynamics CRM)には項目名(通称:ラベル)や項目説明文(項目名称にマウスをかぶせた際に表示される説明文)は翻訳インポート/エクスポート機能により多言語に対応するわけですが、皆さんが入力したテキスト情報は対応してくれません。自動翻訳の機能は、例えば受信メールを活動に変換したメール活動やお客様からの電話を記録した電話活動の“内容”について言語を指定し機械翻訳したものを表示することができます。 - 当ブログならではすぐ使えるサンプルソースを開示するところがスペシャル:
Dynamics 365(Dynamics CRM)に実装するための必要な要素をあますことなくご紹介します。
Microsoft Translator API
Microsoft Translator APIはクラウドベースの自動翻訳(機械翻訳)サービスで、約60種類の多言語をサポートしています。また、業界標準のRESTテクノロジを利用してサービスを使うことが可能なため、様々なアプリケーションから翻訳機能を実現することができます。また、月に200万字まで無償で利用することができるのも有益でしょう。
製品紹介ページはこちら。
https://www.microsoft.com/ja-jp/translator/translatorapi.aspx
API種類についてはHTTPサービスで接続を行いXMLで結果を取得します。
使える機能の紹介ページはこちら。
https://docs.microsofttranslator.com/text-translate.html
“Translate”がテキストを翻訳元の言語から別の言語へ翻訳する実行機能になります。
Dynamics 365(Dynamics CRM)での活用例
それでは今回のスペシャルコンテンツである、Dynamics 365(Dynamics CRM)でTranslator APIを使ってみましょう。
実現案はいくつかありますが、自動翻訳の実装に必要な技術要素は次の通りです。
-
- Dynamics 365(Dynamics CRM)の環境準備
Dynamics 365 Onlineを今回は使います。試用版を申込み、初回設定を行っておきます。
※ここでは試用版の手配方法は省略します - Microsoft Translator APIの認証キー(KEY1)の取得
AzureポータルからTranslator APIのサービスを登録しKEYを取得しておきます。
取得した値は後述するユーザー定義ワークフローアクティビティ(アセンブリ)で使用します。
※ここではキーの取得方法は省略します - ビジネスエンティティのカスタマイズ
サンプルではエンティティ「サポート案件」にある項目「説明」の内容を指定言語へ自動翻訳するものですので、エンティティ「サポート案件」に新規項目「LangFrom」(翻訳元の言語)、「LangTo」(翻訳後の言語)、「自動翻訳」(翻訳した結果を表示)を追加します。
下図のように新規項目の作成、メインフォームへの配置を行い、カスタマイズを保存して公開します。
- ユーザー定義ワークフローアクティビティ(アセンブリ)の実装
Microsoft Translator APIと認証&データ送受信を行うためのC#プログラムとなります。ソース抜粋は以下の通りです。
- Dynamics 365(Dynamics CRM)の環境準備
// Microsoft Translator APIのアクセストークンを取得します。
// { subscriptionKey }には取得した認証キー(KEY1)を設定しておきます。
using (var client = new HttpClient())
using (var request = new HttpRequestMessage())
{
request.Method = HttpMethod.Post;
request.RequestUri = new Uri("https://api.cognitive.microsoft.com/sts/v1.0/issueToken");
request.Content = new StringContent(string.Empty);
request.Headers.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
token = await response.Content.ReadAsStringAsync();
}
}
// Microsoft Translator API とデータ送受信を行います。
using (var client = new HttpClient())
using (var request = new HttpRequestMessage())
{
// URL につけて送信するのでエンコードする
var escapeText = Uri.EscapeDataString(text);
var uriStr = "https://api.microsofttranslator.com/V2/Http.svc/Translate?"
+ $"text={escapeText}&from={fromLang}&to={toLang}";
request.Method = HttpMethod.Get;
request.RequestUri = new Uri(uriStr);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var resultText = await response.Content.ReadAsStringAsync();
// <string>XXXXXX</string> 形式で取得されるため XDocument で操作する
XDocument xdoc = XDocument.Parse(resultText);
// XML エスケープ対象文字が正しく変換されない場合の対処
this.TranslatorText.Set(context, xdoc.Descendants().First().Value);
}
}
- ワークフローの作成
Dynamics 365(Dynamics CRM)が標準提供するプロセスの“ワークフロー”を使用し、下図のようにワークフローのステップでユーザー定義ワークフローアクティビティを呼び出します。
以上で実装は完了となります。お疲れ様です(≧▽≦)
完成形はこちらの図の通りです。
それでは動かしてみましょう。エンティティ「サポート案件」のレコードを作成し、項目「説明」に内容を入力します。すぐ下にある左:翻訳元の言語(日本語はja)、右:翻訳後の言語(英語はen)を指定し、ワークフローを動作させます。問題なければ、数秒して、自動翻訳されたテキストが表示されます。
まとめ
言語力があれば言語そのままに理解される方もいるかと思います。また日本企業もグローバル化/ダイバーシティ(働き方の多様性)により多言語をスキルアップや評価指標として設定していることもあります。ただ実態として多くの方は、わざわざGoogle翻訳を開き、内容をコピー&ペーストして訳を確認するのではないでしょうか。(言語力に自信がないので、私もその一人です)
Dynamics 365(Dynamics CRM)と今回ご紹介した『Microsoft Translator API』を使えば、システム上に記録した「日本語」テキスト情報を「英語」や「タイ語」に自動翻訳された情報を画面に表示できるようになります。
あくまでマイクロソフトのサービス品質として機械翻訳するわけなので、実際の業務や学習で使われるコンテキストを意図した訳に完全になるわけではありませんが、わざわざGoogle翻訳を開き、訳を確認する手間が大幅にはぶけると同時にニュアンスを理解できる時間が短縮され生産性の向上に貢献します。また、CRMは情報共有がポイントですので、一度翻訳した内容をあわせて保存しておくようにすれば、別の人が見た際にも実際の文章と翻訳された文章をパッと確認でき役立てることができます。
アーカス・ジャパンへご興味・ご関心ありましたら下記からCRM事業本部へお問い合わせください
※ 記事の内容は個人発信の参考情報です。記事内容のご利用は、ご自身の判断でお願いします。