【Python】py-googletransを使ってCSVファイルの中身を翻訳する方法
この記事では、py-googletrans
を使ってCSVファイル内のテキストを他の言語に翻訳し、翻訳結果を新しい列として追加して保存する方法を解説します。Pythonなどのプログラミング言語を使って作業を自動化すると、仕事が効率化できます。大量のテキストを翻訳したい場合にこの方法が活用できます。
py-googletransより、更新が行われているdeep-translatorをお勧めします。deep_translatorについては以下の記事を参照してください
py-googletransとは
py-googletransは、Google Translate APIを使って翻訳を行うpython用のライブラリです。
この記事では、このライブライの使い方と、このライブラリを使ってcsvファイルの列を翻訳し、翻訳結果を新しい列として追加・保存する方法を説明します。
py-googletransのGithubリポジトリは以下になります
Github: https://github.com/ssut/py-googletrans
py-googletransの使い方を解説
インストール
pip install googletrans
でインストールできるのですが、このバージョンでは”NoneType' object has no attribute
…”というエラーが出て動きません。
GithubのIssuesを見ると、以下のように指定してインストールすると動作するということです。
2023年12月時点では、この手順で動作していますが、動かない場合は最新版をチェックしてください。
pip install googletrans==4.0.0-rc1
文字列を翻訳
英語→日本語
翻訳は簡単です。英語→日本語に翻訳したい場合は、以下のように書きます。dest
は翻訳したい言語です。
言語一覧は以下のコードで確認できます。
import googletrans
googletrans.LANGUAGES
from googletrans import Translator
translator = Translator()
trans_ja = translator.translate(text='It is sunny today', dest="ja")
print(trans_ja.text)
日本語→英語
日本語から英語もdest="en"
に変更するだけでほぼ同じコードです。
from googletrans import Translator
translator = Translator()
trans_en = translator.translate(text='はじめまして。私の名前は太郎です。', dest="en")
print(trans_en.text)
サンプルからわかるように、元の言語は自動で検出します。もし、指定したい場合はsrc=xxx
で指定します。
csvファイルの列を翻訳して新しい列を作る
CVSファイルの列を翻訳し、新しい列を作る例を紹介します。
ここでは、text-document-classification-datasetデータセットを利用しました。
このデータは以下のように、TextとLabel列があるデータになります。
以下が、df_file.csv
を読み込んで、日本語の列を追加し、result.csv
に書き出すプログラムになります。df_file.csv
は、行数が多いのでとりあえず先頭から10行だけ取り出して変換しています。
翻訳する列は”Text
“列で、これをtarget
で指定しています。
from googletrans import Translator
import pandas as pd
from tqdm import tqdm
translator = Translator()
# https://www.kaggle.com/datasets/sunilthite/text-document-classification-dataset
df = pd.read_csv('df_file.csv')
df = df[:10]
target = 'Text'
result = []
for i in tqdm(range(len(df))):
txt = df[target][i]
trans_ja = translator.translate(text=txt, dest="ja")
result.append(trans_ja.text)
df['ja_text'] = result
df.to_csv('result.csv', index=False)
変換後のデータフレームは以下のようになり、これをdf.to_csv()
で出力しています。
まとめ
csvファイルの英文の列を翻訳したいことが結構あるので、自動化の方法を説明しました。入力ファイル名と出力ファイル名を引数で渡すようにすれば、ツール化することも可能です。