京橋のバイオインフォマティシャンの日常

データ分析、コマンドライン、プログラミングについての技術資料・自己アップデート・悩み事などをまとめています。最近、ディープラーニング関連のR言語の資料をまとめるべく注力してます。

R言語で、現在最強の機械翻訳ツール「DeepL API」を使ってみた件

f:id:skume:20210613233909p:plain:w500

今回、画期的な機械翻訳ツールを紹介する。その名も、DeepL である。

DeepLのWebインターフェイスも中々使い勝手は良い

#RからWebページを開く
browseURL("https://www.deepl.com/translator")

f:id:skume:20210613233913p:plain:w500

DeepLの良さは、何と言っても、その翻訳精度である。 Google翻訳よりも自然なフレーズ選択をしてくれる。

悲しいことに、 自身の英語力をすでに超えている英訳・和訳なので、 使わないわけにはいかない。。

DeepL登録HP

DeepL APIを使うには、無料のdeveloper登録が必要である。

まず、DeepL APIの登録ページに移動する。

#RからWebページを開く
browseURL("https://www.deepl.com/pro?cta=header-prices/#developer")

f:id:skume:20210613233918p:plain:w500

DeepL API Freeの「無料で登録する」を選択して、次のページに進む。

そこで、アカウントの登録を行う。

f:id:skume:20210613233923p:plain:w500

登録時に、クレジットカード番号を聞かれるのがやや面倒

Pro版にしないと請求は来ないとのこと

これも無料で使えるので仕方ない。。。

登録が終われば、承認キーが発行される。

f:id:skume:20210613233927p:plain:w500

curlで問い合わせるときに、このキーが必要となるので、 コピーして保存しておく。

DeepL APIを使って、和訳・英訳をやってみる。

DeepLの練習(1)いつもの例題: 英語 to 日本語

source_langを"EN"、target_langを"JA"と設定する。

[Your Authentication Key]に承認キーを入力すること、また、[ ]は不要。

#入力文字列
Sentence <- "Hello, world"

#curlを用いて、DeepL API実行
a <- system(paste0('curl -s https://api-free.deepl.com/v2/translate -d "auth_key=[Your Authentication Key]" -d "text=', Sentence, '" -d source_lang="EN" -d "target_lang=JA"'), intern = T)

#前処理
result <- strsplit(strsplit(as.character(a), "\"text\":\"")[[1]][2], "\"}]}")[[1]][1]

#出力結果
result
#[1] "ハロー、ワールド"

DeepLの練習(2)専門的な文書の翻訳: 日本語 to 英語

source_langを"JA"、target_langを"EN"と設定する。

[Your Authentication Key]に承認キーを入力すること、また、[ ]は不要。

#入力文字列
Sentence <- "薬品とは、精製あるいは配合されて、何らかの用途に利用可能な状態とした化学物質のうち、少量で使用するものをいう。"

#curlを用いて、DeepL API実行
a <- system(paste0('curl -s https://api-free.deepl.com/v2/translate -d "auth_key=[Your Authentication Key]" -d "text=', Sentence, '" -d source_lang="JA" -d "target_lang=EN"'), intern = T)

#前処理
result <- strsplit(strsplit(as.character(a), "\"text\":\"")[[1]][2], "\"}]}")[[1]][1]

#結果
result
#[1] "A chemical is a chemical substance that has been refined or blended to make it usable for some purpose, and that is used in small quantities."

無料版APIオプションの説明

翻訳機能は、テキストの翻訳を可能にするもので、所定のAPI URL (https://api-free.deepl.com/v2/translate) で利用できる。この同期呼び出しは、以下の基本パラメータをサポートしている。

パラメータ オプション 説明
text Required 翻訳されるテキスト。UTF8エンコードのプレーンテキストのみ対応している。パラメータは複数回指定することができ、翻訳は要求された順に返す。それぞれのパラメータ値には、複数の文章を含めることができる。1回のリクエストで、最大50個のテキストを翻訳に送ることができる。
source_lang Optional 翻訳されるテキストの言語。現在利用可能なオプション
"DE" - ドイツ語
"EN」-英語
"ES" - スペイン語
"FR" - フランス語
"IT" - イタリア語
"JA」-日本語
"ZH" - 中国語
このパラメータが省略された場合、APIはテキストの言語を検出して翻訳を試す。
target_lang Required テキストを翻訳する言語。略語は同上。
split_sentences Optional 翻訳エンジンが入力を最初に文に分割するかどうかの設定。デフォルトでは、有効。設定可能な値は以下の通り。
"0" - 分割を行わず、入力全体を1つの文として扱う。
"1" (デフォルト) - 接続点と改行点で分割する。
"nonewlines" - 改行を無視して接続点のみで分割する。
テキストパラメータごとに1つの文を送信するアプリケーションでは、エンジンが意図せずに文を分割してしまうのを防ぐために、split_sentences=0を設定することを推奨。
preserve_formatting Optional 翻訳エンジンがオリジナルのフォーマットを尊重するかどうかの設定(通常は一部を修正する場合もある)。設定可能な値は次の通り。
"0" (デフォルト)
"1"
この設定で影響を受けるフォーマットの側面は次の通り。
文章の最初と最後の句読点
文章の先頭の大文字/小文字
formality Optional 翻訳された文章をフォーマルな表現にするか、インフォーマルな表現にするかの設定。この機能の現在の対象言語は、"DE"(ドイツ語)、"FR"(フランス語)、"IT"(イタリア語)、"ES"(スペイン語)、"NL"(オランダ語)、"PL"(ポーランド語)、"PT-PT"、"PT-BR"(ポルトガル語)、"RU"(ロシア語)の場合のみ動作する。
可能なオプションは
"default" (デフォルト)
"more" - よりフォーマルな言語にする
"less" (より少ない) - よりカジュアルな言語にする場合

また、以下のような拡張パラメータも用意されています。これらのパラメーターの使用方法については、後述の「XMLの取り扱い」をご参照ください。

パラメータ オプション 説明
tag_handling Optional どのような種類のタグを処理するかの設定。現在利用可能なオプション: "xml"
non_splitting_tags Optional 文章を分割しないXMLタグのコンマ区切りのリスト
outline_detection Optional 詳細については、"XMLの処理"セクションを参照
splitting_tags Optional 常に分割を引き起こす XMLタグのコンマ区切りリスト
ignore_tags Optional 翻訳されないテキストを示すXMLタグのコンマ区切りのリスト

原文は、以下のWebページで確認できる。

browseURL("https://www.deepl.com/docs-api/translating-text/")

DeePL関数(自作関数)

gist.github.com

まとめ

動作は少し遅いけど、、

この翻訳は素晴らしい。