- deepRstudio: DeepL API および rstudioapi を使用した RStudio でのシームレスな言語翻訳 (2023年8月24日 更新)
- はじめに
- DeepL登録HP
- DeepL APIを使って、和訳・英訳をやってみる。
- DeePL関数(自作関数)を作ってみました!
- まとめ
deepRstudio: DeepL API および rstudioapi を使用した RStudio でのシームレスな言語翻訳 (2023年8月24日 更新)
RStudio上で、DeepL APIをGUIで操作(RStudio addins)で使用して、シームレスな言語間翻訳が行えるRパッケージ、deepRstudio
を作成しました。現在、CRANパッケージとして登録されています。
使用には、DeepL APIが必要ですが、無料登録で、月50万文字まで無料で使用できます。有料プランに登録しないと、変な課金はいっさい発生しません。
開発ページは以下を参照してください。
また、YouTubeで、deepRstudioのデモをご覧いただけます。
はじめに
今回、画期的な機械翻訳ツールを紹介します。その名も、DeepL です。
DeepL翻訳は、2017年8月28日にサービスを開始した無償のニューラル機械翻訳サービスです。
Google 翻訳よりも精度が高く、微妙なニュアンスのある翻訳ができると肯定的な報告があります。
正直な大学院生「謝辞:最後に,執筆を支えてくれたDeepLに感謝したい.深く御礼申し上げる.」
— 父 (@fushiroyama) 2022年7月25日
まじでそれ
— さんご@ログア (@Coral_43_) 2022年7月24日
deeplの性能すごいよねw
DeepLのWebインターフェイスも中々使い勝手は良いです。
#RからWebページを開く browseURL("https://www.deepl.com/translator")
DeepLの良さは、何と言っても、その翻訳精度です。 Google翻訳よりも自然なフレーズ選択をしてくれて、結果を見るとスゲーと声が出るほどです。
悲しいことに、 自身の英語力をすでに超えている英訳・和訳なので、 使わないわけにはいきません。。
DeepL登録HP
DeepL APIを使うには、無料のdeveloper登録が必要です。
まず、DeepL APIの登録ページに移動します。
#RからWebページを開く browseURL("https://www.deepl.com/pro?cta=header-prices/#developer")
DeepL API Freeの「無料で登録する」を選択して、次のページに進みます。
そこで、アカウントの登録を行います。
登録時に、クレジットカード番号を聞かれるのがやや面倒です。
Pro版に変更しないと請求は来ないので安心してください。
これも、素晴らしい翻訳機が無料で使えるので仕方ない。。。
登録が終われば、承認キーが発行されます。
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."
DeePL関数(自作関数)を作ってみました!
上記のcurlコマンドをRの関数として実装して、DeePL関数を作成しました。
この関数をソースしてみらえれば、Rの関数として、DeePL翻訳が実行できます。
#ソース source("https://gist.githubusercontent.com/kumeS/26a7a602070365595a0b552e201079d5/raw/6629ad3663ee2f952a66c9e00df90935dce45d35/DeePL.R") #実行 DeePL(Sentence="Hello", EN2JA=TRUE, Auth_Key="Your Authentication Key")
まとめ
関数の動作はやや遅いけど、、DeepLの翻訳は素晴らしいです。
無料版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/")