使用 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 值,则可能会有所帮助。)
我想翻译(使用 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 值,则可能会有所帮助。)