【Python】deep-translatorを使ってcsvファイルのテキストを翻訳する方法
![](https://tech.aru-zakki.com/wp-content/uploads/2023/12/deeptranslator.001.jpeg)
データファイル(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はインストールのバージョンを指定しないとエラーが発生していたので、こちらも紹介することにしました。
![](https://tech.aru-zakki.com/wp-content/uploads/2023/06/tabbycat.png)
py-googletransについてはこちらの記事を参照してください
![【Python】py-googletransを使ってcsvファイルのテキストを翻訳する方法](https://tech.aru-zakki.com/wp-content/uploads/2023/12/googletrans.001-320x180.jpeg)
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)
![](https://tech.aru-zakki.com/wp-content/uploads/2023/06/tabbycat.png)
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列があるデータになります。
![データの中身](https://tech.aru-zakki.com/wp-content/uploads/2023/12/image-45-1024x419.png)
以下が、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()
で出力しています。
![日本語の列を追加](https://tech.aru-zakki.com/wp-content/uploads/2023/12/image-46-1-1024x611.jpg)
その他の機能
サポートするサービス
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は動作させるのにトラブりましたが、こちらはトラブルなく動作するのでとりあえずこちらを使うことをおすすめします。