如何解决Google自然语言API的sq语言不支持情感分析报错
解决Google情感分析API不支持语言的报错问题
你遇到的问题是因为部分推文虽被Twitter标记为英文,但实际内容(比如全是阿尔巴尼亚语标签)被Google自然语言API识别为不支持情感分析的语言(sq,阿尔巴尼亚语),导致报错。可以通过异常捕获或提前检测语言两种方式跳过这类文本,具体实现如下:
方法一:捕获API异常直接跳过
直接在调用情感分析的代码块中捕获InvalidArgument异常(语言不支持属于这类参数错误),遇到不支持的语言时返回标记值(比如None),后续逻辑可忽略这类结果。
修改后的代码:
from google.api_core.exceptions import InvalidArgument def get_single_sentiment(text): '''gets non-entity sentiment of text using GCP's api''' # Instantiates a client client = language_v1.LanguageServiceClient() # The text to analyze document = language_v1.Document(content = text , type_=language_v1.types.Document.Type.PLAIN_TEXT) try: # Detects the sentiment of the text sentiment = client.analyze_sentiment(request={"document": document}).document_sentiment return sentiment except InvalidArgument as e: # 捕获语言不支持的报错,返回None或自定义标记 print(f"跳过无法处理的文本:{text[:50]}... 报错信息:{e}") return None
方法二:提前检测语言再处理
先调用API的语言检测接口,判断文本语言是否在情感分析支持列表中,仅对支持的语言执行分析,更主动地过滤无效文本。
示例代码:
def get_single_sentiment(text): '''gets non-entity sentiment of text using GCP's api''' client = language_v1.LanguageServiceClient() document = language_v1.Document(content = text , type_=language_v1.types.Document.Type.PLAIN_TEXT) # 先检测文本语言 lang_response = client.detect_language(request={"document": document}) detected_lang = lang_response.language # 定义情感分析支持的语言列表(可根据官方支持范围调整) supported_langs = ["en", "zh", "es", "fr"] # 示例列表,需补充完整支持语言 if detected_lang not in supported_langs: print(f"跳过不支持的语言:{detected_lang},文本:{text[:50]}...") return None # 对支持的语言执行情感分析 sentiment = client.analyze_sentiment(request={"document": document}).document_sentiment return sentiment
两种方法各有优劣:
- 异常捕获实现简单,无需维护支持语言列表,但会产生少量无效API调用;
- 提前检测语言更高效,避免无效调用,但需要定期同步官方支持的语言列表。
内容的提问来源于stack exchange,提问作者dsx
相关产品推荐
相关产品推荐

