Googleスプレッドシート GASで翻訳関数を敢えて作る

Googleスプレッドシート(Google sheets)は無料で使えるWebアプリ。
従来の表計算ソフト(Excel,LibreOffice Calc,etc)のようにローカル環境にインストールする必要がなくウェブブラウザがあれば利用できる。
また、従来の表計算ソフトには無いGoogleならではの関数や機能がたくさんあり、表計算ソフトの新しい使い方を提示している。
特にウェブ関連の関数はとても便利だと感じる。
importxml関数は文字通りxmlを指定してシートにデータを挿入する関数であるが、これを使うとWikipediaの記事をAPIで取得してシートに貼り付けるといった事が簡単に実現できる。
また、googletranslate関数はセルの内容を指定した言語に翻訳する関数で、こちらもとても便利。
A2に『ドラえもん』と入っていたとして、英語に翻訳したければこうする。
=googletranslate(A2,"ja","en")
『Doraemon』と表示された。
もうちょっと長い文章を翻訳させてみよう。
A2に『宇宙船サジタリウス』と入っているとしてimportxmlでwikipedia APIを呼び出して要約を取得する。
=IMPORTXML("https://ja.wikipedia.org/w/api.php?format=xml&action=query&srlimit=10&list=search&srsearch="&A2,"//p/@snippet")
『"『宇宙船サジタリウス』(うちゅうせんサジタリウス)は、1986年1月10日から1987年10月3日までテレビ朝日系列で、毎週金曜19:30 -
20:00(JST)に全77話が放送された、日本アニメーション制作の日本のオリジナルSFアニメである。 藤倉電線(現・フジクラ) →"』
この文章をgoogletranslate関数で翻訳すると以下のようになる。
『"""Spaceship Sagittarius"" (spacecraft Sagittarius) is a TV Asahi series from January 10, 1986 to October 3, 1987, every Friday 19:30 -
20:00 all 77 episodes have been broadcast in (JST), it is the original SF Japanese animation Japanese animation production. Fujikura wire (now Fujikura) →"』
便利だ。便利だけども、現在のGoogle翻訳ほどの精度ではないと、何度も翻訳を使っていて気が付いた。
現在のGoogle翻訳で翻訳すると以下の内容になる。
"Spaceship Sagittarius" (Susita Susitarius) is a series of TV Asahi from January 10, 1986 to October 3, 1987, every Friday from 19:30 -
At the 20:00 (JST), 77 episodes were broadcast, Japan's original animated SF animation produced by Japanese animation. Fujikura Electric Wire (present · Fujikura) → "
 そこで私は、Google Apps Script(GAS)で関数を自作し翻訳したらどうなるのかを試した。
関数自体は実にシンプル。スクリプトエディタで以下のコードを貼れば誰でも使える。
function appstranslate(text, sourceLanguage, targetLanguage) {
  if (typeof text != 'string') return null;
  try {
    return LanguageApp.translate(text, sourceLanguage, targetLanguage);
  } catch(e) {
    return e.toString();
  }
}
自作関数の名前はappstranslate。使い方はgoogletranslate関数と同じ
=appstranslate(A2,"ja","en")
これで翻訳すると結果は以下のようになった。
"""Spaceship Sagittarius"" (Susita Susitariusu) is a series of TV Asahi from January 10, 1986 to October 3, 1987, every Friday 19: 30 -
At the 20:00 (JST), 77 episodes were broadcast, Japan's original animated SF animation produced by Japanese animation. Fujikura Electric Wire (present · Fujikura) →"
現在のGoogle翻訳とほぼ同じ結果となった。
(必ず同じになるわけではない)
標準関数であるgoogletranslate関数の翻訳精度が何故ニューラル機械翻訳採用前のような精度なのか、Google Apps Scriptで呼び出すLanguageApp.translateが現在のGoogle翻訳に近い仕様なのかはまったく不明であるが、状況によって使い分けるのも良いと思う。
ただ、自作関数の方は同時に1,000行とか10,000行とか貼り付けて翻訳させるとGoogleに怒られる(エラーが出る)ので要注意
(同時呼び出し数に制限があるようなので長文を翻訳したい場合は一つのセルに複数行入れたほうが良い)

importxmlでの取得とgoogletranslateでの翻訳、そして自作関数appstranslateでの翻訳サンプルとしてスプレッドシートを作成したので共有する。
A2に単語を入れればB列にその単語が含まれるWikipedia記事を表示し、C列に記事の要約を表示する。D列にはgoogletranslate関数の英訳結果、E列には自作関数の翻訳結果が自動的に表示される。
コピーは自由なので、本格的に色々試してみたい人はコピーして編集して欲しい。
appstranslate関数test←クリックするとサンプルスプレッドシートに遷移します。

コメント

このブログの人気の投稿

Googleスプレッドシートの正規表現置換で改行文字

Googleスプレッドシートのimportxml関数をhtmlに使う

名作と定評のあるスーパーファミコンの『ザ・モノポリーゲーム2』を今更ながら遊んでみた