You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:45:01