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

如何提取TfidfVectorizer结果中低于指定tf-idf分数的词汇

筛选TF-IDF分数低于指定阈值词汇的实现方法

不需要将csr稀疏矩阵转换为稠密数组,直接操作稀疏矩阵的内置属性即可完成筛选,内存效率更高,不会出现转换失败的问题。

实现步骤

  • 保存TF-IDF计算结果,提取词汇映射关系
    先将拟合输出的矩阵存储为变量,同时通过向量化器的内置方法拿到词汇索引到实际词的映射:

    tfidf_vect = TfidfVectorizer(analyzer=clean)
    # 不要直接打印结果,将矩阵存为变量
    tfidf_matrix = tfidf_vect.fit_transform(df['text'])
    # 获取索引对应的词汇文本
    feature_names = tfidf_vect.get_feature_names_out()
    
  • 遍历稀疏矩阵筛选符合阈值的记录
    csr矩阵的非零值、对应词汇索引、文档分段信息都存在内置属性中,直接遍历非零元素即可,无需加载全量稠密数据:

    # 设定分数阈值
    score_threshold = 0.1
    filter_result = []
    
    for doc_id in range(tfidf_matrix.shape[0]):
        # 定位当前文档在稀疏矩阵存储结构中的起止位置
        start_pos = tfidf_matrix.indptr[doc_id]
        end_pos = tfidf_matrix.indptr[doc_id + 1]
        # 遍历当前文档下的所有TF-IDF计算值
        for ptr in range(start_pos, end_pos):
            current_score = tfidf_matrix.data[ptr]
            word_id = tfidf_matrix.indices[ptr]
            current_word = feature_names[word_id]
            if current_score < score_threshold:
                filter_result.append({
                    "文档索引": doc_id,
                    "词汇": current_word,
                    "词汇索引": word_id,
                    "TF-IDF分数": current_score
                })
    
    # 转换为表格格式方便查看
    result_df = pd.DataFrame(filter_result)
    

补充:筛选全局平均TF-IDF最低的词汇

如果需要筛选所有文档中平均TF-IDF分数低于阈值的词汇,而非单文档维度的低分词,可以使用以下逻辑:

import numpy as np
# 计算每个词汇的全文档平均TF-IDF值
word_avg_score = np.array(tfidf_matrix.mean(axis=0)).flatten()
# 生成筛选掩码
low_score_mask = word_avg_score < score_threshold
# 提取符合条件的词汇
global_low_score_words = [
    {
        "词汇": feature_names[idx],
        "词汇索引": idx,
        "平均TF-IDF分数": word_avg_score[idx]
    }
    for idx in np.where(low_score_mask)[0]
]
global_result_df = pd.DataFrame(global_low_score_words)

注意:不建议直接使用.toarray()将csr矩阵转为稠密数组,当语料规模大、词汇表维度高时,稠密数组会占用极高内存,极易触发内存溢出问题。

内容的提问来源于stack exchange,提问作者Nuri Taş

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:36:16