MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Power Automate で Microsoft Translatorを使って英→日変換する場合の注意事項

はじめに

Power Automate + Microsoft Translator でツイートを自動翻訳 する場合、日本語から英語だとそれほど気にならないのですが、英語から日本語の場合にうまくいかないことがあります。

それが今回とりあげるハッシュタグ消えちゃう問題」です。

f:id:mofumofu_dance:20201009100749p:plain

英語は単語の間がスペースで区切られているのに対して、日本語は単語間を区切らないので、ハッシュタグを元ツイートで入れていてもただの固有名詞として認識され、翻訳語のテキストではハッシュタグが消えてしまいます。

言語の問題なので、どうしようもないのですが、少し工夫するとハッシュタグだった部分を戻す (前後の文章とスペースをあける)ことができますのでご紹介です。

翻訳&置き換えフロー

それほど難解ではないので、パラパラと各ステップを紹介します。 まずフローの全体は下図の通り。今回はテストなので固定の文字列を使って実験しています。

f:id:mofumofu_dance:20201009101727p:plain
フロー全体

最終的には以下のように入力の文字列から自動翻訳して、ハッシュタグ入りのツイートができました。

f:id:mofumofu_dance:20201009102014p:plain
今回のフローで成功した例

ハッシュタグ抽出

まずはハッシュタグを特定する必要があります。これには

  1. 元の英文を半角スペースで分割
  2. 分割した各行が#で始まるか でフィルター

を行います。

f:id:mofumofu_dance:20201009102319p:plain

この処理でハッシュタグが抽出できました。

f:id:mofumofu_dance:20201009102429p:plain

※これだけでも使えそう。例えばツイートの自動収集をしている場合には、カテゴリー付けするのにハッシュタグを使うようなケース。

翻訳文章の置き換え

あとはMicrosoft Translatorで翻訳した文章をループ処理で置き換えるだけです。

まずツイートの本文をMicrosoft Translatorで翻訳し、翻訳結果を使って変数を初期化します。

f:id:mofumofu_dance:20201009102657p:plain

「Apply to each」のアクションを追加し、ループ対象には先ほど抽出したハッシュタグを指定します。

ループ内の最初の「作成」(Compose) アクションで文字列の置き換えをします。

replace(variables('tweetbody'),item(),concat(' ',item(),' '))

この操作で翻訳語のテキストの中でハッシュタグに該当する部分が (半角スペース)ハッシュタグ(半角スペース) の形式に置換されます。

あとはループの直前で初期化しておいた変数を更新して完了です。

f:id:mofumofu_dance:20201009102757p:plain

おわり

英→日は、自分で英文をツイートすることはないかもしれませんが、サービスの公式アカウントなどのツイートを翻訳する場合には、ハッシュタグとそれ以外を見分けられるといいですよね。

そんな時は今回ご紹介した方法を使ってみてください。