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

如何让gensim.WikiCorpus在词表达到2000000个token时停止构建?

解决方案

提前终止WikiCorpus运行的方案

你不需要使用WikiCorpus默认的全量语料遍历逻辑,手动控制遍历过程即可在达到阈值时直接终止:

from gensim.corpora import WikiCorpus
from gensim.corpora import Dictionary

# 初始化语料对象,不会立即读取全量文件
wiki_corpus = WikiCorpus("你的维基转储文件路径.bz2")
dictionary = Dictionary()
# 定义你的停止阈值
MAX_TOKEN_NUM = 2000000
MAX_DOC_NUM = 90000
processed_doc = 0

for text in wiki_corpus.get_texts():
    dictionary.add_documents([text])
    processed_doc += 1
    # 满足任意停止条件直接跳出循环,终止处理
    if processed_doc >= MAX_DOC_NUM or len(dictionary) >= MAX_TOKEN_NUM:
        break

原来的WikiCorpus默认构建词典时会遍历全量语料统计词频,手动遍历迭代器可以随时中断进程,不会再继续读取后续的压缩文件内容。

拆分多流bz2维基转储为子集的方案

维基多流bz2格式是分块存储的,可以不处理全量文件直接提取指定数量的样本:

  • 使用wikiextractor工具提取指定数量的文档,通过-n参数控制提取的文档总数,示例命令:
    wikiextractor -o 输出目录 --processes 4 -n 100000 你的维基转储文件路径.bz2
    上述命令会直接提取前10万篇文档到指定输出目录,不需要读取全量转储文件。
  • 也可以直接用Python的bz2模块读取多流文件,按XML的<page>标签切分内容,读取到指定数量的页面后直接终止写入即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:39:05