はじめに
今回は、Pythonの自動翻訳ライブラリ「deep-translator」を紹介する。
deep-tranlatorとは
deep-tranlatorは、Nidhal Baccouri氏により開発されたPythonライブラリである。彼曰く「既存の翻訳ライブラリはバグが多い、無料でない、サポートが終了している、または使いにくいと感じ、これらの問題を解決するシンプルで無料、かつ全ての言語をサポートするツールとして作成した」(引用元)。このライブラリは、翻訳を受け持つバックエンドとして既存の自動翻訳サービスを利用し、フロントエンドとしてシンプルかつ統一されたインターフェースを提供する。サポートされる主な自動翻訳機は、Google Translate、DeeplTranslator、Microsoft Translator、ChatGpt Translatorである。その他にも複数の翻訳機をサポートしている。詳細はこちらを見てほしい。deep-translatorはMITラインセンスで提供されるが、バックエンドの翻訳機は課金が必要なものもあるので注意すること。以下に実際のPythonコードを示す。
サンプルプログラム(無料翻訳機の場合)
以下はGoogle翻訳を使った場合である。1行目でGoogleTranlator
をimportし、15行目でインスタンスtranslator
を作成する。そして、3行目と8行目の2つの英文(TEXT_1
とTEXT_2
)を翻訳する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
from deep_translator import GoogleTranslator TEXT_1 = ( "A meeting with the Alibaba co-founder and other prominent entrepreneurs" " signals Beijing’s endorsement for a long-marginalized private sector." ) TEXT_2 = ( "The departure of the acting commissioner is the latest backlash " " to the Department of Government Efficiency’s efforts to access sensitive data." ) def translate_text(target: str) -> None: tranlator = GoogleTranslator(source="auto", target=target) result = tranlator.translate(text=TEXT_1) print(f"{target}:{result}") result = tranlator.translate(text=TEXT_2) print(f"{target}:{result}") if __name__ == "__main__": # 日本語への翻訳 translate_text("ja") # 仏語への翻訳 translate_text("fr") # 独語への翻訳 translate_text("de") |
サンプルプログラム(有料翻訳機の場合)
以下はAzure Translator(Microsoft Translator)を使った場合である。あからじめ、Azureのリソース「Azure Translator」を作成し、アクセスキーとリージョン名を取得しておく必要がある。プログラムの構造は先と同じである。1行目でMicrosoftTranlator
をimportし、20行目でインスタンスtranslator
を作成する。そして、8行目と12行目の2つの英文(TEXT_1
とTEXT_2
)を翻訳する。英文の内容も先と同じである。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
from deep_translator import MicrosoftTranslator # Azure TranslatorのAPIキーとリージョンを設定 AZURE_TRANSLATOR_KEY = "xxx" AZURE_TRANSLATOR_REGION = "yyy" # 翻訳するテキスト TEXT_1 = ( "A meeting with the Alibaba co-founder and other prominent entrepreneurs " "signals Beijing’s endorsement for a long-marginalized private sector." ) TEXT_2 = ( "The departure of the acting commissioner is the latest backlash " "to the Department of Government Efficiency’s efforts to access sensitive data." ) def translate_text(target: str) -> None: """Azure Translatorを使って翻訳する""" translator = MicrosoftTranslator( api_key=AZURE_TRANSLATOR_KEY, region=AZURE_TRANSLATOR_REGION, source="en", target=target ) result = translator.translate(text=TEXT_1) print(f"{target}: {result}") result = translator.translate(text=TEXT_2) print(f"{target}: {result}") if __name__ == "__main__": # 日本語への翻訳 translate_text("ja") # フランス語への翻訳 translate_text("fr") # ドイツ語への翻訳 translate_text("de") |
翻訳結果
日本語
TEXT_1:Alibabaの共同設立者や他の著名な起業家との会談は、長年の民間部門に対する北京の支持を示しています。
TEXT_2:代理委員の退任は、機密データにアクセスするための政府効率省の取り組みにとって最新の反発です。
*TEXT_1の文章のmarginalized(疎外された、無視された)が訳されていない。
仏語
TEXT_1:Une rencontre avec le co-fondateur d’Alibaba et d’autres entrepreneurs éminents signalent l’approbation de Pékin pour un secteur privé à long marginalisé.
TEXT_2:Le départ du commissaire par intérim est la dernière réaction des efforts du ministère de l’efficacité du gouvernement pour accéder aux données sensibles.
独語
TEXT_1:Ein Treffen mit dem Mitbegründer von Alibaba und anderen prominenten Unternehmern signalisiert die Bestätigung von Peking für einen langmarginalisierten Privatsektor.
TEXT_2:Der Abgang des amtierenden Kommissars ist die jüngste Gegenreaktion der Bemühungen des Ministeriums für Regierungseffizienz, auf sensible Daten zuzugreifen.
日本語
TEXT_1:アリババの共同創業者や他の著名な起業家との会談は、中国政府が長い間疎外されてきた民間セクターを支持していることを示している。
TEXT_2:長官代行の辞任は、機密データにアクセスするための政府効率局の取り組みに対する最新の反動です。
仏語
TEXT_1:Une rencontre avec le cofondateur d’Alibaba et d’autres entrepreneurs de premier plan signale l’approbation de Pékin pour un secteur privé longtemps marginalisé.
TEXT_2:Le départ du commissaire par intérim est le dernier contrecoup des efforts du ministère de l’Efficacité gouvernementale pour accéder aux données sensibles.
独語
TEXT_1:Ein Treffen mit dem Alibaba-Mitbegründer und anderen prominenten Unternehmern signalisiert Pekings Befürwortung eines lange marginalisierten Privatsektors.
TEXT_2:Der Rücktritt des amtierenden Kommissars ist die jüngste Gegenreaktion auf die Bemühungen des Department of Government Efficiency, auf sensible Daten zuzugreifen.
無料版と有料版の日本語を比べると、後者の方がこなれていると感じた。独語と仏語についてはどちらが自然なのかは分からない(大学教養課程のころの第2外国語はフランス語であったがもう覚えていない)。
まとめ
今回は、自動翻訳ライブラリdeep-translatorを紹介した。バックエンドとして既存の自動翻訳機を使うという仕組みは良いアイデアだと思う。OCRについても同じ仕組み(既存のOCRサービスを使う仕組み)のライブラリがあると嬉しい。