プログラミング
記事内に商品プロモーションを含む場合があります

【Python】CSVファイルの中身を簡単に翻訳する方法(deep-translator)

Aru

この記事では、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についてはこちらの記事を参照してください

【Python】py-googletransを使ってCSVファイルの中身を翻訳する方法
【Python】py-googletransを使ってCSVファイルの中身を翻訳する方法

deep-translatorの使い方を解説

ここでは、Google翻訳を利用する方法について説明します

インストール

deep-translatorのインストールには以下のコマンドを実行します。

pip install deep-translator

文字列を翻訳

英語→日本語

翻訳は簡単です。英語→日本語に翻訳したい場合は、以下のように書きます。

GoogleTranslatorをインポートし、targetja(日本語)を設定します。あとは、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キーなどが必要になります(キーの取得方法は、それぞれのサービスにより異なります)。

サービス名関数備考
GoogleGoogleTranslator
MyMemoryMyMemoryTranslator
DeeplDeeplTranslatorAPIキーが必要
QcriQcriTranslatorAPIキーが必要
LingueeLingueeTranslator
PONSPonsTranslator
YandexYandexTranslatorAPIキーが必要
MicrosoftMicrosoftTranslatorAPIキーが必要
ChatGPTChatGptTranslatorAPIキーが必要
PapagoPapagoTranslatorキーが必要
LibreLibreTranslator
TencentTencentTranslatorキーが必要
BauduBaiduTranslator

プロキシ(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は動作させるのにトラブりましたが、こちらはトラブルなく動作するのでとりあえずこちらを使うことをおすすめします。

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中
記事URLをコピーしました