使用 DeepL 翻译数据框

Translate dataframe with DeepL

我想翻译(使用 DeepL)df ["text"] 列中的文本,其中每一行都有一个句子。 文本不是用一种语言写的,所以我想自动检测文本的语言并将翻译放在一个名为 df ["translated"].

的新列中

谢谢

我有DeepL的免费认证密钥,但我不知道怎么用,我是菜鸟。

您可以使用 DeepL-Python library.

根据 documentation 你可以省略参数 source_lang 它会尝试自己检测语言。

import deepl
translator = deepl.Translator(auth_key)
result = translator.translate_text(text_to_translate)
translated_text = result.text

我无法测试它,因为我没有 API 密钥,但是通过阅读 free Deepl API 的文档,一切都很好地表明了,并带有一个 CURL 示例:

curl https://api.deepl.com/v2/translate \
    -d auth_key=[yourAuthKey] \
    -d "text=Hello, world!"  \
    -d "target_lang=DE"

文档指出 source_lang 参数是可选的,如果省略,API 将尝试检测文本的语言并进行翻译。

所以在python代码中,应该是

import requests
import json
url = "https://api-free.deepl.com/v2/translate"
data = f"auth_key={yourAuthKey}&text={YourText}&target_lang={LanguageCode}"
resp = requests.post(url, data=data)
translated_text = json.loads(resp.content)
print(translated_text)

与:

  • yourAuthKey - 你的 API 密钥。
  • YourText - 您要翻译的文本。
  • LanguageCode - 文本应翻译成的语言代码(参见 API 文档)。

像这样用标准库应该没问题。

或者你可以使用官方的 DeepL Python Library 更简单。

我需要为最近的项目翻译数据框中的一列,我想我会分享我使用 DeepL 的方法 Python client library 以防它有帮助。

import pandas as pd
import deepl
translator = deepl.Translator(auth_key)

d = {'Source': ['This is some English source text.', 'Another sentence in English.']}
df = pd.DataFrame(data=d)

df['Target'] = df['Source'].apply(lambda x: translator.translate_text(x,  
               target_lang="DE") if type(x) == str else x)

如上所述,如果您希望 DeepL 转为 auto-detect 源语言,则可以省略 source_lang 参数——这就是我在这里所做的。

你最终会得到:

    Source                              Target
0   'This is some English source text.' 'Dies ist ein englischer Ausgangstext.'
1   'Another sentence in English.'      'Ein weiterer Satz auf Englisch.'

if type(x) == str else x 不是必需的,但如果您希望跳过的源文本列中有空值或其他 non-string 值,则可能会有所帮助。)