如何计算句子级TF-IDF得分并为DataFrame新增对应列
实现方案
你已经生成的tf_idf_vector是行对应句子、列对应特征词的稀疏矩阵,每一行的数值就是对应句子里每个词的TF-IDF得分,对每行做聚合即可得到句子级得分,两种常用的计算方式如下:
方式1:计算句子所有单词TF-IDF得分总和
适合不需要过滤长句权重的场景
# 对TF-IDF矩阵每行求和,通过.A1将矩阵转为一维数组后赋值给新列 df['tf-idf score'] = tf_idf_vector.sum(axis=1).A1
方式2:计算句子有效单词(TF-IDF不为0)的平均得分
可以避免长句天然得分更高的偏差
import numpy as np # 统计每行非零元素的数量(即句子包含的特征词数量) non_zero_count = np.diff(tf_idf_vector.indptr) # 总得分除以特征词数量得到平均得分 df['tf-idf score'] = tf_idf_vector.sum(axis=1).A1 / non_zero_count
结果验证
执行后可输出前5行验证结果:
print(df[['message', 'tf-idf score']].head())
内容的提问来源于stack exchange,提问作者Divyank
相关产品推荐
相关产品推荐

