从维基百科转储文件中提取文本 | AI生成和翻译

Home 2025.11

以下是针对您提供的维基百科.bz2转储文件(enwiki-latest-pages-articles1.xml-p1p41242.bz2)提取纯文本最常用且有效的方法。

推荐工具与方法(按从易到难排序)

1. 使用wikiextractor(适合多数用户——快速且干净)

这是自然语言处理/机器学习领域处理维基百科转储的标准工具。

# 安装(仅需一次)
pip install wikiextractor

# 提取文本(移除模板、表格等,提供每篇文章的干净文本)
wikiextractor enwiki-latest-pages-articles1.xml-p1p41242.bz2 --output wiki_text

2. 使用gensim的WikiCorpus(适合在Python中进行自然语言处理)

from gensim.corpora import WikiCorpus

# 自动处理.bz2文件并提取文本+分词
wiki = WikiCorpus("enwiki-latest-pages-articles1.xml-p1p41242.bz2", dictionary=False)

# 遍历文章
with open("output.txt", "w", encoding="utf-8") as f:
    for i, text in enumerate(wiki.get_texts()):
        f.write(" ".join(text) + "\n")
        if i % 10000 == 0:
            print(f"已处理 {i} 篇文章")

3. 简单bzip2 + grep/awk(快速但粗糙,无清理)

# 仅解压查看原始XML
bzip2 -dc enwiki-latest-pages-articles1.xml-p1p41242.bz2 | less

# 仅提取<text>内容(非常粗略,保留维基标记)
bzip2 -dc enwiki-latest-pages-articles1.xml-p1p41242.bz2 | \
  sed -n '/<text /,/<\/text>/p' | \
  sed 's/<text[^>]*>//g;s/<\/text>//g' > raw_text_with_markup.txt

4. 处理完整转储且需要高速并行(适用于后续所有分块)

您的文件仅是第一个分块(p1p41242),但如果后续需要处理全部约30+个分块:

# 并行提取所有分块
ls *.bz2 | xargs -P 8 -I {} wikiextractor {} --output wiki_extracted

当前推荐方案总结:

pip install wikiextractor
wikiextractor enwiki-latest-pages-articles1.xml-p1p41242.bz2 -o extracted_wiki --bytes 1M --json

几分钟内即可获得清晰可读的文章(您的压缩文件仅约2-3GB,非常易于处理)。

如需以下定制处理请告知:

祝提取顺利!🚀


Back

x-ai/grok-4-fast

Donate