情感分析翻译场景下TextBlob报404与google_translator解析错误咨询
报错原因排查与最优方案建议
现有代码报错原因
TextBlob 404错误
TextBlob的翻译功能底层调用的是早已下线的谷歌无验证公共翻译API,目前该接口已完全不可用,所有直接调用该功能的代码都会返回404错误,无需尝试修复该方案。
google_translator JSONDecodeError错误
报错由三类问题导致:
- 变量名拼写错误:代码中初始化的结果存储变量为
texto_trad,赋值时错误写为text_trad,变量不匹配会触发额外异常 - 接口反爬限制:短时间内高频请求、传入空值/含特殊字符的评论内容时,会触发谷歌接口反爬策略,返回非标准JSON响应导致解析失败
- 依赖库版本bug:旧版本的
deep-translator库本身存在谷歌接口适配问题,也会导致JSON解析错误
适配快速跑代码的最优方案
推荐使用translate库实现翻译逻辑,无需申请官方API密钥,调用门槛低,适配小批量数据快速跑通的需求,实现代码如下:
- 先安装依赖
pip install translate pandas textblob
- 完整实现代码
import pandas as pd import time from translate import Translator from textblob import TextBlob # 初始化翻译器 translator = Translator(from_lang="es", to_lang="en") # 替换为你自己的数据源读取逻辑 df = pd.read_csv("你的评论数据路径.csv") texto_trad = pd.Series([None]*len(df["Comentarios"])) sentiment_res = pd.Series([None]*len(df["Comentarios"])) for idx, comment in enumerate(df["Comentarios"]): # 跳过空评论 if pd.isna(comment) or len(str(comment).strip()) == 0: continue try: # 执行翻译 translated_text = translator.translate(str(comment).strip()) texto_trad[idx] = translated_text # 计算情感值 sentiment_res[idx] = TextBlob(translated_text).sentiment # 加短延迟避免触发反爬,可根据实际运行情况调整 time.sleep(0.1) except Exception as e: # 单条翻译失败不中断全量任务,可根据需求调整为填充空值/原文本 print(f"第{idx}条内容处理失败,错误信息:{e}") continue # 结果写入原表 df["translated_text"] = texto_trad df["sentiment"] = sentiment_res print(df[["Comentarios", "translated_text", "sentiment"]])
如果数据量超过1000条,建议申请谷歌翻译/DeepL官方API密钥,调用官方接口稳定性更高,不会触发反爬限制。
内容的提问来源于stack exchange,提问作者Daniel Soto
相关产品推荐
相关产品推荐

