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

求助:基于多Excel文件构建Python词袋矩阵的实现方法

基于多Excel文件构建词袋矩阵解决方案

核心思路

词袋矩阵的本质是每行对应一个文件,每列对应一个词汇,单元格值为该文件中对应词汇的出现次数。要实现这个目标,需要完成三个关键步骤:

  • 遍历所有Excel文件,提取文本内容并统计单个文件的词频
  • 统一所有文件的词汇集合,确保每个文件的词频数据维度一致
  • 将各文件的词频数据合并为规范的矩阵格式

完整代码实现

1. 依赖导入与工具函数

import os
import pandas as pd
from collections import Counter

def get_excel_files(dir_path):
    """获取指定目录下所有xlsx文件的完整路径"""
    return [os.path.join(dir_path, f) for f in os.listdir(dir_path) if f.endswith('.xlsx')]

def extract_text_from_excel(file_path, text_column='content'):
    """从Excel文件中提取指定列的文本内容,列名可根据实际情况修改"""
    df = pd.read_excel(file_path)
    # 拼接指定列的所有非空文本,若需按行处理可调整逻辑
    return ' '.join(df[text_column].dropna().astype(str))

def calculate_word_frequency(text):
    """统计文本词频,返回字典格式结果"""
    # 基础预处理:转小写、按空格分割词汇,可按需添加分词、去停用词等步骤
    words = text.strip().lower().split()
    # 用Counter替代手动计数,代码更简洁高效
    return dict(Counter(words))

2. 主流程:遍历文件并构建词袋矩阵

# 配置参数
DIR_IN = r"C:\Users\files_in_test"  # 替换为你的Excel文件目录
TEXT_COLUMN = 'content'  # 替换为Excel中存储文本的列名

# 1. 获取所有Excel文件路径
excel_files = get_excel_files(DIR_IN)

# 2. 遍历文件,收集每个文件的词频与文件名
file_word_counts = []
file_names = []

for file_path in excel_files:
    file_name = os.path.basename(file_path)
    file_names.append(file_name)
    
    # 提取文本并计算词频
    text = extract_text_from_excel(file_path, TEXT_COLUMN)
    word_count = calculate_word_frequency(text)
    
    file_word_counts.append(word_count)

# 3. 生成词袋矩阵:自动对齐所有词汇,缺失词频填充为0
bow_matrix = pd.DataFrame(file_word_counts, index=file_names).fillna(0).astype(int)

# 可选:转置矩阵(行=词汇,列=文件)
bow_matrix_transposed = bow_matrix.T

# 输出结果示例
print("词袋矩阵(行:文件,列:词汇):")
print(bow_matrix.head())

print("\n转置后的词袋矩阵(行:词汇,列:文件):")
print(bow_matrix_transposed.head())

针对你现有代码问题的说明

  1. 总字典处理问题:
    你之前定义的total_dict无需手动维护,pd.DataFrame会自动收集所有文件中出现过的词汇作为列,缺失的词频自动填充为0,比手动合并字典更高效且不易出错。

  2. Excel文件适配:
    现有代码处理的是CSV文件,而需求是Excel,因此需要用pd.read_excel读取文件,并指定文本所在的列,而非直接按行读取文件内容。

  3. 词频统计优化:
    使用collections.Counter替代手动的字典计数逻辑,代码更简洁;若需提升模型质量,可添加标点去除、停用词过滤(如加载停用词表过滤无意义词汇)、专业分词工具(如jieba)等预处理步骤。

可选优化建议

  • 预处理增强:添加标点去除、停用词过滤、专业分词等步骤,提升词袋模型的有效性
  • 内存优化:若文件或词汇量过大,可使用scipy.sparse稀疏矩阵存储,减少内存占用
  • 结果导出:将最终矩阵导出为Excel/CSV文件,方便后续分析:
    bow_matrix.to_excel("词袋矩阵.xlsx")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:20:29