文本分词触发Length mismatch错误:如何解决轴长度不匹配问题?
问题解决方法
错误原因
出现Length mismatch的核心问题是手动维护的tokenized_comments列表与处理后的DataFrame行数不一致,大概率是iterrows()遍历过程中因索引不连续、数据读取异常等隐性问题导致长度错位。
修复方案
放弃手动循环维护列表的方式,改用Pandas的apply方法直接处理列数据,既简洁又能避免长度匹配问题:
import pandas as pd from nltk.tokenize import word_tokenize # 读取CSV,确保数据仅含评论列 data = pd.read_csv("C:/Users/ASUS/preprocessed_comments.csv", error_bad_lines=False, header=None) # 重命名列(如果原CSV无表头) data.columns = ['comments'] # 去重 data.drop_duplicates(subset=['comments'], keep='first', inplace=True) # 定义分词函数,处理异常情况 def tokenize_text(text): try: return word_tokenize(str(text)) # 转为字符串避免非文本类型报错 except Exception as e: print(f"分词失败: {e}") return [] # 直接对列应用分词函数 data['tokenized_comments'] = data['comments'].apply(tokenize_text) # 保存结果 data.to_csv('tokenized_comments.csv', index=False)
额外检查点
- 执行代码前先打印
data.shape,确认数据是(N,1)的结构,避免原CSV因分隔符问题被拆成多列。 - 如果原CSV本身包含表头,去掉
header=None参数,避免把表头当成数据行。
内容的提问来源于stack exchange,提问作者Shine Crossifixio
相关产品推荐
相关产品推荐

