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

如何利用给定代码遍历文档文件夹并计算文档向量整体平均值?

遍历文档文件夹计算向量平均值的实现方案

我来帮你把这段代码扩展成能遍历指定文件夹里的所有文档、计算所有文档向量整体平均值的版本,咱们一步步拆解来做:

1. 先搞定基础依赖和初始化

首先得确保你已经安装了spacy和numpy,并且下载了对应的语言模型(比如英文的en_core_web_md)。如果还没弄,先跑这几个命令:

pip install spacy numpy
python -m spacy download en_core_web_md

然后初始化spacy的nlp模型:

import spacy
import os
import numpy as np

# 加载预训练模型,这里用英文模型,根据你的文档语言换对应的
nlp = spacy.load("en_core_web_md")

2. 遍历文件夹读取所有文档

接下来写代码遍历目标文件夹,这里以遍历指定文件夹下所有.txt文件为例(如果你的文档是其他格式,比如.docx,需要额外处理,但先从最通用的文本文件入手):

# 替换成你的文档文件夹路径
target_folder = "./your_documents_folder"
document_vectors = []

# 遍历文件夹里的所有文件(包括子文件夹)
for root, dirs, files in os.walk(target_folder):
    for file in files:
        # 只处理txt文件,可根据需要修改后缀
        if file.endswith(".txt"):
            file_path = os.path.join(root, file)
            try:
                # 读取文件内容,用utf-8编码,忽略编码错误
                with open(file_path, "r", encoding="utf-8", errors="ignore") as f:
                    doc_content = f.read().strip()
                # 跳过空文档
                if not doc_content:
                    print(f"跳过空文档:{file_path}")
                    continue
                # 用spacy处理文档,获取文档向量
                doc_nlp = nlp(doc_content)
                doc_vector = doc_nlp.vector
                # 将向量添加到列表中
                document_vectors.append(doc_vector)
                print(f"已处理文档:{file_path}")
            except Exception as e:
                print(f"处理文档{file_path}时出错:{str(e)}")

3. 计算所有文档向量的整体平均值

当我们收集到所有有效文档的向量后,就可以用numpy来计算平均值了:

if document_vectors:
    # 计算所有向量的平均值,axis=0表示按列求平均(对应向量的每个维度)
    average_vector = np.mean(document_vectors, axis=0)
    print("\n所有文档的向量平均值:")
    print(average_vector)
else:
    print("没有找到有效文档,无法计算平均值")

关键细节说明

  • 文档格式适配:如果你的文档不是.txt,比如.pdf或.docx,需要安装对应的库(比如python-docx、PyPDF2)来读取内容,替换掉上面的文件读取部分即可。
  • 空文档处理:跳过空文档可以避免引入无效的零向量,影响最终平均值的准确性。
  • 模型选择:如果是中文文档,记得换成spacy的中文模型(比如zh_core_web_md),提前用python -m spacy download zh_core_web_md下载。
  • 向量维度:不同的spacy模型输出的向量维度不同,比如en_core_web_md是300维,这个不用管,numpy会自动处理维度一致的向量求平均。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:58:15