使用SciKit-Learn的CountVectorizer将评论文本转化为数值向量的问题咨询
CountVectorizer评论文本向量化解决方案
现有代码的核心问题
- 词汇表拟合逻辑错误:
CountVectorizer的fit方法需要基于全量文本语料生成全局统一的词汇表,逐句调用fit会反复覆盖已生成的词汇表,无法得到一致的向量化结果 - 入参格式不符合要求:
fit/transform方法要求接收字符串序列(如列表、pandas Series),传入单个字符串会被识别为字符序列,导致分词完全失效 - 冗余迭代逻辑:
for循环会自动遍历索引值,手动添加i=i+1属于无效代码,还可能引发逻辑错误
正确实现代码
假设你已经将数据集读取为pandas DataFrame,字段名为Sentiment和Review,参考代码如下:
import pandas as pd from sklearn.feature_extraction.text import CountVectorizer # 1. 实例化CountVectorizer,可根据需求添加参数 # 可选参数示例:stop_words='english' 移除英文停用词,ngram_range=(1,2) 同时统计单字和二元词组,min_df=2 过滤仅出现1次的低频次 cv = CountVectorizer(stop_words='english', min_df=2) # 2. 对全量评论文本一次性完成词汇表拟合和向量化转换 # 得到的count_matrix是稀疏矩阵,存储所有评论的向量结果 count_matrix = cv.fit_transform(df['Review']) # 3. 可选:将向量结果转为DataFrame,和原数据拼接 vector_df = pd.DataFrame(count_matrix.toarray(), columns=cv.get_feature_names_out()) # 拼接原标签字段 result_df = pd.concat([df[['Sentiment']], vector_df], axis=1) # 查看词汇表和向量结果 print("词汇表:", cv.vocabulary_) print("向量化结果维度:", count_matrix.shape)
补充说明
如果需要先做文本清洗再向量化,可以在拟合前对df['Review']做预处理,比如统一转小写、移除特殊符号、去除多余空格等,提升向量化质量。
内容的提问来源于stack exchange,提问作者N K
相关产品推荐
相关产品推荐

