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

Gensim中使用TaggedDocument及循环处理Doc2Vec语料出现重复内容问题

问题原因
  • 核心错误是循环逻辑重复遍历了文件列表:你外层已经在逐文件读取文本生成分词结果,但是内层的列表推导式又完整遍历了一次全量文件名列表,用当前单次循环拿到的分词结果给所有文件名都生成了TaggedDocument,最终导致所有条目都复用了最后一次循环读取到的文本内容,仅标签不同。
  • 额外存在两个不规范写法:一是使用str作为变量名会覆盖Python内置的字符串类,可能引发后续逻辑异常;二是直接调用open()读取文件后没有手动关闭,存在IO资源泄露风险。
  • 补充优化点:路径拼接建议使用os.path.join(FILEPATH, brief)替代手动字符串拼接,避免不同操作系统的路径分隔符差异引发的读取错误。
修正后代码
import os
import re
from gensim.models.doc2vec import TaggedDocument

briefs = []
FILEPATH = "替换为你的实际文件目录路径"
BriefList = [p for p in os.listdir(FILEPATH) if p.endswith('.txt')]
for brief in BriefList:
    # with语句会自动管理文件IO,读取完成后自动释放资源
    with open(os.path.join(FILEPATH, brief), 'r', encoding='utf-8') as f:
        content = f.read()
    tokens = re.findall(r"[\w']+|[.,!?;]", content)
    # 直接为当前单个文件生成TaggedDocument加入结果列表即可
    briefs.append(TaggedDocument(tokens, [brief]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:24:04