You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用googletrans翻译Twitter数据集报NotValidPayload错误求助

错误根因定位
  • 你当前的NaN值校验逻辑仅处理了空值场景,未覆盖user_description字段长度超过5000字符的情况,这是触发报错的核心原因
  • 全空白字符、不可见特殊字符也可能被翻译API判定为无效载荷,现有逻辑未做对应处理
修复后代码
import pandas as pd
import pickle
import time
from deep_translator import GoogleTranslator

batch_1 = no_eng_data.iloc[0:1000]
batch_2 = no_eng_data.iloc[1000:2000]

def batch_translation(batch):
    data_list = []
    translator = GoogleTranslator(source='auto', target='en')
    for index, row in batch.iterrows():
        # 预处理:处理NaN+清理空白+超长截断
        text = row["user_description"]
        if pd.isna(text):
            data_list.append("")
            continue
        text = text.strip()
        if len(text) == 0:
            data_list.append("")
            continue
        # 超过5000字符就截断,保留前4990个字符留冗余
        if len(text) > 5000:
            text = text[:4990]
        # 加异常捕获避免单条异常打断整个批次
        try:
            translated = translator.translate(text=text)
            data_list.append(translated)
        except Exception as e:
            # 报错时保留原文本或者填空,可按需调整
            data_list.append(text)
        # 单条请求间隔1秒,降低限流风险
        time.sleep(1)
    return data_list

data_list_1 = batch_translation(batch_1)
with open('data_list_1.pkl', 'wb') as f:
    pickle.dump(data_list_1, f)
# 批次间休眠可保留,时长按需调整
time.sleep(60)
优化建议
  • 批次大小建议调整为100-200条,单批次运行时间更短,出错后重试成本更低
  • 可以先对全量数据集的user_description字段做统一预处理,再拆分批次,减少运行时的重复判断开销
  • 可以对报错的文本单独存日志,后续可针对性处理特殊内容

内容的提问来源于stack exchange,提问作者Lippi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:54:06