数据集:

Cohere/wikipedia-22-12

英文

这个数据集包含了经过预处理的维基百科内容,适用于语义搜索。

你可以像这样加载数据集:

from datasets import load_dataset
lang = 'en'
data = load_dataset(f"Cohere/wikipedia-22-12", lang, split='train', streaming=True)
for row in data:
   print(row)
   break

这将以流式模式加载数据集(这样你就不需要下载整个数据集),并且可以逐行处理。

文章被分割成段落。此外,对于每篇文章,我们还添加了2022年页面访问量以及文章在多少种其他语言中可用的统计数据。数据集按照页面访问量排序,因此最受欢迎的维基百科文章排在前面。因此,如果你阅读前10万行,你将得到关于广泛受人们关注的主题的相当好的涵盖范围。

语义搜索嵌入

我们还提供了使用语义搜索嵌入技术对文档进行嵌入的版本,例如, wikipedia-22-12-en-embeddings 包含英文段落及其相应的嵌入。您可以在数据集wikipedia-22-12-{lang}-embeddings中找到其他语言的嵌入数据集。

数据集创建

使用2022年12月20日的维基百科数据集(下称 XML data dumps ) ,并使用 wikiextractor (版本:2.75)进行处理。处理命令如下:

python WikiExtractor.py --json -s --lists ../dumps/dewiki-20210101-pages-articles.xml.bz2 -o text_de

为了计算每篇文章可用的语言数量,我们从以下链接下载了语言链接的SQL文件:

https://dumps.wikimedia.org/{lang}wiki/{datestr}/{filename}

并处理SQL文件以读取每篇文章的出站链接。

页面访问量从以下链接下载:

https://dumps.wikimedia.org/other/pageviews/{year}/{year}-{month_str}/pageviews-{year}{month_str}{day_str}-{hour_str}0000.gz

我们每天随机选择一个小时下载页面访问量。然后计算页面访问量的调和平均值。我们使用对数分数来增加数字的稳定性。

计算页面访问量的代码如下:

import gzip
import sys
from collections import Counter, defaultdict
import math
import tqdm
import json


title_views = {}

#Score: Harmonic mean  (View_Day_1 * View_Day_2 * View_day_3)
# Add log for better numerical stabilitiy
# Add +1 to avoid log(0)
# Compare the sum, so that days without view are counted as 0 views
for filepath in tqdm.tqdm(sys.argv[1:]):
    with gzip.open(filepath, "rt") as fIn:
        for line in fIn:
            splits = line.strip().split()
            if len(splits) == 4:
                lang, title, views, _ = line.strip().split()
                lang = lang.lower()

                if lang.endswith(".m"): #Add mobile page scores to main score
                    lang = lang[0:-2]
                
                if lang.count(".") > 0:
                    continue

                if lang not in title_views:
                    title_views[lang] = {}
                if title not in title_views[lang]:
                    title_views[lang][title] = 0.0

                title_views[lang][title] += math.log(int(views)+1)



#Save results
for lang in title_views:
    with open(f"pageviews_summary/{lang}.json", "w") as fOut:
        fOut.write(json.dumps(title_views[lang]))

筛选以BULLET::::、Section::::、<templatestyles、或[[File:开头的段落。此外,我们还仅包括至少包含100个字符的段落(使用Python len方法进行判断)。