[Python] 翻訳サービス DeepL : Web APIで翻訳

プログラミング

翻訳サービス DeepLとは

翻訳をするときには、googleで行う人が多いと思いますが、同様なサービスでDeepLという翻訳サービスがあります。

私はgoogle、DeepL、T-4OOの翻訳サービスを使っていて、翻訳文章のわかりやすさ、値段を考慮してDeepLの有料サービスをメインで使っています。

これらの翻訳サービスの比較は、わかりやすいサイトがありますのでそちらを参考になさってください。

ここでは、DeepLが提供しているサービス、Web APIについて説明します。

Web APIとは

Web APIを使うと、Webで提供されるサービスを自分のプログラムの中から操作することができます。
今回のDeepLのケースでは、Pythonのプログラムの中からDeepLの翻訳のサービスを使って翻訳をすることができます。

それだけだと普通にブラウザ上から翻訳させることと変わらないと感じますが、Pythonで使えるということは、Pythonで一度プログラムを組んでしまえば、自分の好きな形で翻訳前の文章を取り込み、自分の好きな形で翻訳結果を残すことができます。

今回やること

今回やることは、Pythonのプログラムから

① Excelに記載した日本語の文書を読み込む
② その読み込んだ日本語の文書をDeepLで翻訳する
③ 翻訳した結果を①のExcelに追記する

(実行前のExcelデータ)

(実行後)

(実行後)は、元の日本語の文書の後に「”[E]” + “翻訳した英語の文書”」を追記します。

プログラム

以下のプログラムはそのままでは動きませんが、実際に動作しているものから抜き出したので参考になると思います。Python初心者ですので無駄なコードがありますがご容赦ください。

import deepl

auth_key = "" 
fileName = '' # 翻訳ファイル名
sheetName = '' # 翻訳するシート名
translation_loc = [[2, 1]]
wb = openpyxl.load_workbook(fileName)
sheet = wb[sheetName]
nrow = sheet.max_row

translator = deepl.Translator(auth_key)

for loclist in translation_loc:
    startColumn = loclist[0]
    numberColumn = loclist[1]
    for i in range(numberColumn):
        for j in range(nrow):
            calColumn = i+startColumn
            calRow = j
            transdata = sheet.cell(column=calColumn, row=calRow).value
            if transdata == ' ':
                continue
            result = translator.translate_text(transdata, source_lang="JA", target_lang="EN-GB")
            write_data = transdata + ' [E] ' + result.text
            sheet.cell(column=calColumn, row=calRow).value = write_data
wb.save(fileName)

DeepL固有のコード (Web APIに関わるコード)を説明します。

import deepl

インストールは、以下で行ってください。

$ pip install --upgrade deepl

deeplのライブラリのインポートは以下です。

import deepl

auth_key = “”

APIのサービスを使うためには、DeepLでAPIを使うためのアカウントが必要です。
以下、無料版で月500,000文字使えますのでお試しの時にはこれで充分です。
https://www.deepl.com/ja/pro/change-plan#developer

アカウントを登録したらログインをして、以下の赤丸でマークした三本線を選びます。

以下のメニューが出ますので「アカウント」を選んでください。

ここで、APIを使うための情報、利用状況などがわかります。

[利用状況]

[認証キー]
プログラムでDeepLのAPIを使うためには、「アカウント」で「DeepL APIで使用する認証キー」を取得してください。
これを auth_key = “[認証キー]”に記載してください。

auth_key = "f63c02c5-f056-..."のような感じです。

result = translator.translate_text(transdata, source_lang=”JA”, target_lang=”EN-GB“)

実際に翻訳を行うAPIです。

[transdata] : 翻訳をしたい文書を与えます。今回の例ではExcelから読み取った日本語の文書を与えています。

[source_lang] : 翻訳前の言語です。今回は日本語(JE)を選びましたが、使える言語は以下に記載されています。
https://www.deepl.com/docs-api/translate-text/?utm_source=github&utm_medium=github-python-readme

[target_lang] : 翻訳後の言語です。英語に翻訳する場合、”EN”だけではエラーが出ますので、
“EN-GB” : イギリス英語

“EN-US” : アメリカ英語
を選んでください。

単語帳を使う (つづく)

APIの翻訳はこれだけで出来ます。
単語帳も使えるようになりましたので、別で使用方法を説明します。

コメント

タイトルとURLをコピーしました