使用Googletrans库翻译马来语评论遇AttributeError问题求助
问题排查与解决方案
错误原因分析
你遇到的AttributeError: 'NoneType' object has no attribute 'group'主要由以下几个问题导致:
- 未初始化翻译器实例:代码中调用
translator.translate但未创建Translator对象,导致请求逻辑异常。 - 谷歌翻译非官方API不稳定:
googletrans依赖谷歌翻译的非官方接口,容易因请求频率限制、网络波动返回None,触发内部正则解析失败。 - 未处理空评论:评论列存在空值时,翻译请求会返回异常结果。
修复后的代码
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import re import time from bs4 import BeautifulSoup from nltk.stem.porter import PorterStemmer from nltk.corpus import stopwords from wordcloud import WordCloud, STOPWORDS from sklearn.feature_extraction.text import CountVectorizer from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, confusion_matrix, classification_report %matplotlib inline reviews = pd.read_csv("/SentimentAnalysis/PROJECT_SENTIMENTANALYSIS/shopee_review.csv") # 去重并重置索引 reviews.drop_duplicates(['comment'], inplace=True) reviews.reset_index(drop=True, inplace=True) # 处理空评论:填充空值为空字符串 reviews['comment'] = reviews['comment'].fillna('') from googletrans import Translator, exceptions # 初始化翻译器实例 translator = Translator() def translatee(txt): # 跳过空文本 if not txt.strip(): return '' try: # 添加延时避免请求过于频繁被限制 time.sleep(0.5) translation = translator.translate(txt, dest="en") return translation.text except exceptions.GoogleTransError as e: print(f"翻译失败 [{txt[:20]}...]: {str(e)}") return txt except AttributeError: print(f"结果异常 [{txt[:20]}...]") return txt # 使用apply处理带异常的翻译逻辑 reviews['translated'] = reviews['comment'].apply(translatee)
关键修复点说明
- 初始化翻译器:新增
translator = Translator(),创建合法的翻译实例。 - 空值处理:将评论列的空值填充为空字符串,并在翻译函数中跳过空文本。
- 异常捕获:捕获翻译接口异常和返回值异常,避免程序崩溃,同时返回原文本保证数据完整性。
- 请求限流:添加
time.sleep(0.5)降低请求频率,减少被谷歌接口限制的概率。 - 替换
map为apply:apply更适配带异常处理的自定义函数,执行稳定性更高。
额外版本建议
如果当前googletrans版本仍存在兼容性问题,可安装指定稳定版本:
pip install googletrans==4.0.0-rc1
内容的提问来源于stack exchange,提问作者Sabx2x1x
相关产品推荐
相关产品推荐

