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 问题。