【Python】CSVファイルの中身を簡単に翻訳する方法(deep-translator)
この記事では、deep_translator
を使ってCSVファイル内のテキストを他の言語に翻訳し、翻訳結果を新しい列として追加して保存する方法を解説します。大量のテキストを翻訳する場合、Pythonを使った自動化が便利です。紹介する方法は応用性が高く、大量のテキストファイルを翻訳して出力する際にも活用できます。
deep-translatorとは
deep-translatorは、言語間の翻訳を行うためのライブラリです。py-googletransと似たライブラリですが、こちらはgoogle翻訳以外のサービスにも対応しています。
github: https://github.com/nidhaloff/deep-translator
py-googletransが3年ほど前に更新が止まっていますが、こちらは2023年12月現在も更新されています。py-googletransはインストールのバージョンを指定しないとエラーが発生していたので、こちらも紹介することにしました。
py-googletransについてはこちらの記事を参照してください
deep-translatorの使い方を解説
ここでは、Google翻訳を利用する方法について説明します
インストール
deep-translator
のインストールには以下のコマンドを実行します。
pip install deep-translator
文字列を翻訳
英語→日本語
翻訳は簡単です。英語→日本語に翻訳したい場合は、以下のように書きます。
GoogleTranslator
をインポートし、target
にja
(日本語)を設定します。あとは、translate
に翻訳したい文字列を渡すだけです。
source
は問題がなければauto
を指定しておきます。
言語一覧は以下のコードで確認できます。
from deep_translator import GoogleTranslator
GoogleTranslator().get_supported_languages(as_dict=True)
from deep_translator import GoogleTranslator
translator = GoogleTranslator(source='auto', target="ja")
trans_ja = translator.translate('It is sunny today')
print(trans_ja)
日本語→英語
日本語から英語もdest="en"
に変更するだけでほぼ同じコードです
from deep_translator import GoogleTranslator
translator = GoogleTranslator(source='auto', target="en")
trans_en = translator.translate('はじめまして。私の名前は太郎です。')
print(trans_en)
csvファイルの列を翻訳して新しい列を作る
CVSファイルの列を翻訳し、新しい列を作る例を紹介します。
ここでは、text-document-classification-datasetデータセットを利用しました。
このデータは以下のように、TextとLabel列があるデータになります。
以下が、df_file.csv
を読み込んで、日本語の列を追加し、result.csv
に書き出すプログラムになります。df_file.csv
は、行数が多いのでとりあえず先頭から10行だけ取り出して変換しています。
翻訳する列は”Text
“列で、これをtarget
で指定しています。
from deep_translator import GoogleTranslator
import pandas as pd
from tqdm import tqdm
# https://www.kaggle.com/datasets/sunilthite/text-document-classification-dataset
df = pd.read_csv('df_file.csv')
df = df[:10]
target = 'Text'
trans = GoogleTranslator(source='auto', target="ja")
result = []
for i in tqdm(range(len(df))):
txt = df[target][i]
trans_ja = trans.translate(txt)
result.append(trans_ja)
df['ja_text'] = result
df.to_csv('result.csv', index=False)
変換後のデータフレームは以下のようになり、これをdf.to_csv()
で出力しています。
その他の機能
サポートするサービス
deep-translatorでは、Google翻訳以外にもいくつかのサービスをサポートしています。以下、一覧になります。なお、一部のサービスではAPIキーなどが必要になります(キーの取得方法は、それぞれのサービスにより異なります)。
サービス名 | 関数 | 備考 |
GoogleTranslator | ||
MyMemory | MyMemoryTranslator | |
Deepl | DeeplTranslator | APIキーが必要 |
Qcri | QcriTranslator | APIキーが必要 |
Linguee | LingueeTranslator | |
PONS | PonsTranslator | |
Yandex | YandexTranslator | APIキーが必要 |
Microsoft | MicrosoftTranslator | APIキーが必要 |
ChatGPT | ChatGptTranslator | APIキーが必要 |
Papago | PapagoTranslator | キーが必要 |
Libre | LibreTranslator | |
Tencent | TencentTranslator | キーが必要 |
Baudu | BaiduTranslator |
プロキシ(Proxy)経由でのアクセス
deep-translator は、プロキシ経由のアクセスをサポーtーしています。プロキシを設定する場合は以下のようにproxies
パラメータに設定します。
from deep_translator import GoogleTranslator
proxies_example = {
"https": "your https proxy",
"http": "your http proxy"
}
translated = GoogleTranslator(source='auto', target='de', proxies=proxies_example).translate("this package is awesome")
まとめ
py-googletransは動作させるのにトラブりましたが、こちらはトラブルなく動作するのでとりあえずこちらを使うことをおすすめします。