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

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

tadanori

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

py-googletransより、更新が行われているdeep-translatorをお勧めします。deep_translatorについては以下の記事を参照してください

あわせて読みたい
【Python】deep-translatorを使ってcsvファイルのテキストを翻訳する方法
【Python】deep-translatorを使ってcsvファイルのテキストを翻訳する方法

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ファイルの英文の列を翻訳したいことが結構あるので、自動化の方法を説明しました。入力ファイル名と出力ファイル名を引数で渡すようにすれば、ツール化することも可能です。

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

記事URLをコピーしました