ChatGPTやBing_AI-Chatに自動翻訳プログラムを書いてもらった

ChatGPTやBing_AI-Chatに自動翻訳プログラムを書いてもらいました。googletransやDeepLのAPIを利用して翻訳文を取得するものです。

結論からいうと、googletransを利用する場合、ChatGPTでもBing_AI-Chatでも同じようなコードを提示されたのですが、どちらもエラーが出て、エラーメッセージをつけて再質問を続けても解決まで出来ませんでした。

問題はgoogletransモジュール側にあるようで、PRE-RELEASE で回避可能という記事を見つけて、それで解決しましたが、あくまで対処療法ですね。

DeepLのAPIを利用する場合は成功しましたが、APIキーを取得するためにクレカの登録などが必要です。無料で一か月50万文字までは翻訳できるそうです。

ChatGPT/Bing_AI-Chatへの指示文:

pythonで英語から日本語に翻訳したテキストを出力するプログラムを提示してください。

回答:

import requests
from googletrans import Translator

# 翻訳したい英語のテキスト
text_to_translate = "Hello, how are you?"

# トークンを取得
url = "https://translate.google.com/"
response = requests.get(url)
token_start = response.text.find("tkk:") + len("tkk:'")
token_end = response.text.find(",", token_start)
tkk = response.text[token_start:token_end].replace("'", "")
if not tkk:
    raise ValueError("Unable to retrieve token from google translate")

# 翻訳するためのTranslatorオブジェクトを作成
translator = Translator(service_urls=['translate.google.com'])

# 翻訳を実行
translation = translator.translate(text_to_translate, dest='ja', timeout=None, proxies=None, retries=10, raise_exception=True, tk=tkk)

# 結果を出力
print(translation.text)

    
結果:

以下のエラーが出てうまくいきません。


AttributeError: 'NoneType' object has no attribute 'group'
    
ChatGPT/Bing_AI-Chatへの訂正した指示文:

pythonで英語から日本語に翻訳したテキストを出力するプログラムを提示してください。DeepL APIを使用してください。

回答:

import requests
import json

def translate_text(text):
    url = 'https://api-free.deepl.com/v2/translate'
    params = {
        'auth_key': 'YOUR_AUTH_KEY',
        'text': text,
        'source_lang': 'EN',
        'target_lang': 'JA'
    }
    response = requests.post(url, data=params)
    result = json.loads(response.text)
    return result['translations'][0]['text']

text = "ここに翻訳したい英文が入る"
print(translate_text(text))        
    
結果:

補足:

一応、googletransのPRE-RELEASE版 で回避した場合の結果はこちらです。


from googletrans import Translator

translator = Translator()

string_ja = "ここに翻訳したい英文が入る"

#src引数は無くても良い
trans_en = translator.translate(string_ja, src="en", dest="ja")

print(trans_en.text)