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

Python生成TDM时表头存在无效低频词汇问题

Python词文档矩阵(TDM)表头残留零频词汇的解决方法

问题描述

我用Python开发了一个词文档矩阵(TDM)生成工具,功能是读取其他应用导出的CSV文件并生成对应的词文档矩阵。但目前遇到一个问题:字典中部分频率为0的词汇(如one、simply、focus、money等)仍会出现在矩阵表头中。我尝试过一些修复手段,但结果反而更糟。

当前输出截图:
[输出截图占位]

相关代码片段:

# 示例代码(请替换为你的实际代码)
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer

def build_tdm(csv_file):
    df = pd.read_csv(csv_file)
    # 假设使用了自定义词汇表
    custom_vocab = ["one", "simply", "focus", "money", ...]
    vectorizer = CountVectorizer(vocabulary=custom_vocab)
    tdm_matrix = vectorizer.fit_transform(df['content'])
    tdm_df = pd.DataFrame(tdm_matrix.toarray(), columns=vectorizer.get_feature_names_out())
    return tdm_df

解决思路

1. 从源头过滤零频词(推荐)

如果你的TDM基于自定义词汇表构建,问题核心在于词汇表本身包含了零频词。可以先从语料库中统计词频,再过滤掉全局出现次数为0的词:

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer

def build_clean_tdm(csv_file):
    df = pd.read_csv(csv_file)
    # 先拟合所有文本获取全局词频
    temp_vectorizer = CountVectorizer()
    temp_vectorizer.fit(df['content'])
    # 计算每个词的总出现次数
    total_word_counts = temp_vectorizer.transform(df['content']).sum(axis=0).tolist()[0]
    # 过滤出非零频词
    filtered_vocab = [
        word for word, idx in temp_vectorizer.vocabulary_.items() 
        if total_word_counts[idx] > 0
    ]
    # 用过滤后的词汇表生成TDM
    final_vectorizer = CountVectorizer(vocabulary=filtered_vocab)
    tdm_matrix = final_vectorizer.fit_transform(df['content'])
    tdm_df = pd.DataFrame(tdm_matrix.toarray(), columns=final_vectorizer.get_feature_names_out())
    return tdm_df

2. 生成TDM后直接清理零频列

如果已经生成了带零频词的TDM,可以直接删除所有行求和为0的列:

# 过滤所有值全为0的列
tdm_df = tdm_df.loc[:, (tdm_df != 0).any(axis=0)]

这个方法操作简单,但如果词汇表规模很大,效率不如提前过滤词汇表。

3. 检查CountVectorizer参数

如果你使用sklearn的CountVectorizer,注意vocabulary参数会强制保留传入的所有词汇,不管频率。如果必须用自定义词汇表,要先手动清理掉其中的零频词。

4. 排查之前修复失败的原因

如果之前的修复导致问题恶化,大概率是以下情况:

  • 错误过滤了非零频词,导致有用词汇被移除
  • 修改词汇表后没有重新拟合/转换数据,造成表头与矩阵不匹配
  • 误操作破坏了词汇表的索引映射

建议回滚到能正常生成TDM(仅存在零频词问题)的版本,再逐步应用上述过滤逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:05:08