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

【Python】deep-translatorを使ってcsvファイルのテキストを翻訳する方法

tadanori

データファイル(CSVファイル)を受け取った時に、カラムの英語文を日本語に翻訳したいことがあります。deep_translatorを使えば、これを簡単に行うことができます。ここでは、deep_translatorを使ってCSVファイルの列を翻訳し、翻訳した列を追加する方法を解説します。

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

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

記事URLをコピーしました