如何用NLP从评论中提取颜色,解决tuple无lower属性报错问题
问题原因
- pandas
Series.iteritems()遍历返回的每个元素是(行索引, 列值)的二元元组,你直接将整个元组作为string参数传入get方法,调用string.lower()时就会触发「tuple没有lower属性」的报错。 - 额外隐性风险:评论列可能存在空值、数字等非字符串类型内容,就算解决了元组问题,这类值调用
lower()也会报错。
修复方案
- 首先修改遍历逻辑,拆分元组得到评论内容,同时提前实例化提取工具避免重复加载spacy模型浪费性能:
colours = ['blue', 'pink', 'lavender', 'heather'] # 全局实例化一次即可 extractor = ColourExtractorStrict(colours=colours) for idx, review_text in fashion_data['review_text'].iteritems(): # 仅处理字符串类型的评论内容 if isinstance(review_text, str): extract_result = extractor.get(string=review_text) # 后续可添加结果存储逻辑,比如写入新列 if extract_result: print(f"行{idx}提取结果:{extract_result}")
- 可选增强:在
get方法开头加参数类型校验,避免后续传错参数引发同类报错:
def get(self, string): # 新增类型校验 if not isinstance(string, str): return False extracted = set() doc = self.tagger(string.lower()) # 原有逻辑保持不变
内容的提问来源于stack exchange,提问作者user15212303
相关产品推荐
相关产品推荐

