You need to enable JavaScript to run this app. 如何对两个独立文本列分别应用TF-IDF向量化完成分类(无需拼接特征)
优惠活动
大模型
产品
解决方案
定价
更多

如何对两个独立文本列分别应用TF-IDF向量化完成分类(无需拼接特征)

双列独立TF-IDF向量化实现方案

调整数据集拆分逻辑

原拆分仅传入单列文本作为特征,现在需要将两个待处理的文本列组成DataFrame后再传入拆分逻辑,标签列无需修改,stratify等原有参数保持不变。
假设你需要处理的第二个文本列名为YOUR_SECOND_COL,使用时替换为实际列名即可。

独立初始化向量化器

为保证两列的特征空间完全独立、不合并业务语义,需要为每个文本列单独创建TfidfVectorizer实例,不可共用同一个实例拟合两列语料。两个向量器的参数可根据各自列的文本分布单独调整,无需保持一致。

分别完成拟合与转换

每个向量器仅使用对应列的训练集语料完成fit,再分别转换对应列的训练集、测试集数据,最终得到4个互不干扰的独立特征矩阵。

完整可运行代码:

# 拆分数据集:特征为包含两个文本列的DataFrame,标签沿用原category_id
Train_X, Test_X, Train_Y, Test_Y = model_selection.train_test_split(
    Corpus[['VLOB_D&B', 'YOUR_SECOND_COL']],  # 替换为实际的两个文本列名
    Corpus['category_id'],
    test_size=0.3,
    stratify=Corpus['category_id']
)

# 为两列分别初始化独立的TF-IDF向量器
# 第一列VLOB_D&B的向量器,沿用原有参数
Tfidf_vect_vlob = TfidfVectorizer(sublinear_tf=True, min_df=2, ngram_range=(1, 2))
# 第二列的向量器,可单独调整参数,例如修改min_df、ngram_range等
Tfidf_vect_second = TfidfVectorizer(sublinear_tf=True, min_df=2, ngram_range=(1, 2))

# 处理第一列的训练、测试集
Tfidf_vect_vlob.fit(Train_X['VLOB_D&B'])
Train_X_Tfidf_vlob = Tfidf_vect_vlob.transform(Train_X['VLOB_D&B'])
Test_X_Tfidf_vlob = Tfidf_vect_vlob.transform(Test_X['VLOB_D&B'])

# 处理第二列的训练、测试集
Tfidf_vect_second.fit(Train_X['YOUR_SECOND_COL'])
Train_X_Tfidf_second = Tfidf_vect_second.transform(Train_X['YOUR_SECOND_COL'])
Test_X_Tfidf_second = Tfidf_vect_second.transform(Test_X['YOUR_SECOND_COL'])

注意事项

  • 上述流程未对两列的向量化结果做任何拼接,最终得到的Train_X_Tfidf_vlob、Train_X_Tfidf_second为完全独立的特征矩阵,分别对应两列的专属特征空间
  • 两个向量器的参数完全独立,可根据每列的文本长度、词汇量分布单独调整,无需保持一致
  • 后续可根据模型要求直接使用这两个独立矩阵:如果使用支持多输入的模型(如多分支神经网络、自定义多输入树模型),可直接传入双特征;如果需要分别验证两列的分类效果,也可单独调用对应矩阵训练模型

内容的提问来源于stack exchange,提问作者Isha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 17:36:05