Pandas 专栏需要很长时间才能翻译
Pandas column taking very long time to translate
我有一个包含大约 20 万条记录的 pandas 数据框。它有两列;英文文本和分数。我想 t运行slate 从英语到其他几种语言的专栏。为此,我使用了来自 Google 的 GCP 的 Cloud T运行slation API。然而,t运行花了很长的时间来确定它们。我的代码基本上是这样的:
def translate_text(text, target_language):
from google.cloud import translate_v2 as translate
try:
translate_client = translate.Client(credentials=credentials)
result = translate_client.translate(text, target_language=target_language)
return result['translatedText']
except Exception as e:
print(e)
还有这个:
df['X_language'] = df['text'].apply(lambda text: translate_text(text, '<LANG CODE>'))
我看到 apply()
相当慢,再加上 API 的响应可能是它慢的另一个因素,但是有什么办法可以让它更有效率吗?我尝试了更快,但几乎没有减少几秒钟(当针对数据帧的一个子集进行测试时)。
请注意,数据框中的某些文本字段包含大约 300 个字符。数量不多,但数量还不错。
编辑:
从 google.cloud
导入 translate
并在函数外定义客户端后,代码 运行 快多了。但是,出于某种原因,当我尝试传递列表('text' 列的行)时,它不会 return t运行 指定的文本;它运行很快,return列表本身是英文的。
这可能与我使用的凭据有关,还是?我正在传递您在 GCP 中创建项目时获得的服务帐户 JSON 文件。
编辑 2:
我将我的数据框分成 4 个,每个都有大约 50k 条记录。这仍然需要太多时间。我什至删除了所有超过 250 个字符的文本..
我认为这是一个 t运行slation API 问题?我想 t运行slate 花费的时间太长了。
为了修复慢速代码,我只是在函数外初始化了一次导入和翻译客户端。
在 403 POST 错误的情况下,我不得不创建另一个 GCP 帐户。当我在旧帐户(试用)中看到配额时,没有超过或接近配额,但试用期显然已经结束,我不再有免费积分(400 美元)了。我尝试为 API 启用计费(并检查我的卡没有失效),但这并没有太大变化。批量翻译在我的新帐户中工作。
所以,这只是一个帐户问题,而不是 API 问题。
我有一个包含大约 20 万条记录的 pandas 数据框。它有两列;英文文本和分数。我想 t运行slate 从英语到其他几种语言的专栏。为此,我使用了来自 Google 的 GCP 的 Cloud T运行slation API。然而,t运行花了很长的时间来确定它们。我的代码基本上是这样的:
def translate_text(text, target_language):
from google.cloud import translate_v2 as translate
try:
translate_client = translate.Client(credentials=credentials)
result = translate_client.translate(text, target_language=target_language)
return result['translatedText']
except Exception as e:
print(e)
还有这个:
df['X_language'] = df['text'].apply(lambda text: translate_text(text, '<LANG CODE>'))
我看到 apply()
相当慢,再加上 API 的响应可能是它慢的另一个因素,但是有什么办法可以让它更有效率吗?我尝试了更快,但几乎没有减少几秒钟(当针对数据帧的一个子集进行测试时)。
请注意,数据框中的某些文本字段包含大约 300 个字符。数量不多,但数量还不错。
编辑:
从 google.cloud
导入 translate
并在函数外定义客户端后,代码 运行 快多了。但是,出于某种原因,当我尝试传递列表('text' 列的行)时,它不会 return t运行 指定的文本;它运行很快,return列表本身是英文的。
这可能与我使用的凭据有关,还是?我正在传递您在 GCP 中创建项目时获得的服务帐户 JSON 文件。
编辑 2:
我将我的数据框分成 4 个,每个都有大约 50k 条记录。这仍然需要太多时间。我什至删除了所有超过 250 个字符的文本..
我认为这是一个 t运行slation API 问题?我想 t运行slate 花费的时间太长了。
为了修复慢速代码,我只是在函数外初始化了一次导入和翻译客户端。
在 403 POST 错误的情况下,我不得不创建另一个 GCP 帐户。当我在旧帐户(试用)中看到配额时,没有超过或接近配额,但试用期显然已经结束,我不再有免费积分(400 美元)了。我尝试为 API 启用计费(并检查我的卡没有失效),但这并没有太大变化。批量翻译在我的新帐户中工作。
所以,这只是一个帐户问题,而不是 API 问题。