数据集概览
您的数据集格式必须与您的损失函数匹配(或者您选择的损失函数必须与您的数据集格式匹配),这一点很重要。请参阅训练概览 > 数据集格式以了解如何验证数据集格式是否与损失函数兼容。
在实践中,大多数数据集配置将采用以下四种形式之一:
正样本对:一对相关的句子。这既可用于对称任务(语义文本相似度)也可用于非对称任务(语义搜索),例如释义对、全文及其摘要对、重复问题对、(
query
,response
) 对,或 (source_language
,target_language
) 对。自然语言推理数据集也可以通过配对蕴含句子来格式化。三元组:(锚点、正例、负例) 文本三元组。这些数据集不需要标签。
带相似度分数对:一对带有指示其相似度分数的句子。常见示例是“语义文本相似度”数据集。
带类别文本:一个文本及其对应的类别。这种数据格式可以很容易地被损失函数转换为三个句子(三元组),其中第一个是“锚点”,第二个是与锚点相同类别的“正例”,第三个是不同类别的“负例”。
示例: trec, yahoo_answers_topics。
请注意,将数据集从一种格式转换为另一种格式通常很简单,这样它就能与您选择的损失函数兼容。
提示
您可以使用mine_hard_negatives()
将正样本对数据集转换为三元组数据集。它使用SentenceTransformer
模型来查找难负样本:与第一个数据集列相似,但不如第二个数据集列文本相似的文本。包含难三元组的数据集通常优于仅包含正样本对的数据集。
例如,我们从sentence-transformers/gooaq挖掘了难负样本,生成了tomaarsen/gooaq-hard-negatives,并分别在两个数据集上训练了tomaarsen/mpnet-base-gooaq和tomaarsen/mpnet-base-gooaq-hard-negatives。遗憾的是,这两个模型使用了不同的评估拆分,因此它们的性能无法直接比较。
Hugging Face Hub 上的数据集
通过 Datasets 库(pip install datasets
),您可以使用 load_dataset()
函数从 Hugging Face Hub 加载数据集。
from datasets import load_dataset
# Indicate the dataset id from the Hub
dataset_id = "sentence-transformers/natural-questions"
dataset = load_dataset(dataset_id, split="train")
"""
Dataset({
features: ['query', 'answer'],
num_rows: 100231
})
"""
print(dataset[0])
"""
{
'query': 'when did richmond last play in a preliminary final',
'answer': "Richmond Football Club Richmond began 2017 with 5 straight wins, a feat it had not achieved since 1995. A series of close losses hampered the Tigers throughout the middle of the season, including a 5-point loss to the Western Bulldogs, 2-point loss to Fremantle, and a 3-point loss to the Giants. Richmond ended the season strongly with convincing victories over Fremantle and St Kilda in the final two rounds, elevating the club to 3rd on the ladder. Richmond's first final of the season against the Cats at the MCG attracted a record qualifying final crowd of 95,028; the Tigers won by 51 points. Having advanced to the first preliminary finals for the first time since 2001, Richmond defeated Greater Western Sydney by 36 points in front of a crowd of 94,258 to progress to the Grand Final against Adelaide, their first Grand Final appearance since 1982. The attendance was 100,021, the largest crowd to a grand final since 1986. The Crows led at quarter time and led by as many as 13, but the Tigers took over the game as it progressed and scored seven straight goals at one point. They eventually would win by 48 points – 16.12 (108) to Adelaide's 8.12 (60) – to end their 37-year flag drought.[22] Dustin Martin also became the first player to win a Premiership medal, the Brownlow Medal and the Norm Smith Medal in the same season, while Damien Hardwick was named AFL Coaches Association Coach of the Year. Richmond's jump from 13th to premiers also marked the biggest jump from one AFL season to the next."
}
"""
有关如何操作数据集的更多信息,请参阅数据集文档。
提示
Hugging Face 数据集通常包含多余的列,例如 sample_id、metadata、source、type 等。您可以使用 Dataset.remove_columns
删除这些列,否则它们将被用作输入。您也可以使用 Dataset.select_columns
仅保留所需的列。
现有数据集
Hugging Face Hub 托管了超过 15 万个数据集,其中许多可以转换为用于训练嵌入模型。我们的目标是将所有与 Sentence Transformers 无缝协作的 Hugging Face 数据集标记为 sentence-transformers
,这样您可以通过访问 https://huggingface.co/datasets?other=sentence-transformers 轻松找到它们。我们强烈建议您浏览这些数据集,以找到可能对您的任务有用的训练数据集。
以下是一些标记为 sentence-transformers
的流行现有数据集,可用于训练和微调 SentenceTransformer 模型:
数据集 | 描述 |
---|---|
GooAQ | 来自 Google 自动建议的(问题,答案)对 |
Yahoo Answers | 来自 Yahoo Answers 的(标题+问题,答案)、(标题,答案)、(标题,问题)、(问题,答案)对 |
MS MARCO 三元组 (msmarco-distilbert-base-tas-b) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (msmarco-distilbert-base-v3) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (msmarco-MiniLM-L6-v3) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (distilbert-margin-mse-cls-dot-v2) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (distilbert-margin-mse-cls-dot-v1) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (distilbert-margin-mse-mean-dot-v1) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (mpnet-margin-mse-mean-v1) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (co-condenser-margin-mse-cls-v1) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (distilbert-margin-mse-mnrl-mean-v1) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (distilbert-margin-mse-sym-mnrl-mean-v1) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (distilbert-margin-mse-sym-mnrl-mean-v2) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (co-condenser-margin-mse-sym-mnrl-mean-v1) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
MS MARCO 三元组 (BM25) | 来自 MS MARCO Passages 数据集的(问题、答案、负例)三元组,包含挖掘的负例 |
Stack Exchange 重复项 | 来自 StackExchange 的重复问题的(标题,标题)、(标题+正文,标题+正文)、(正文,正文)对 |
ELI5 | 来自 ELI5 数据集的(问题,答案)对 |
SQuAD | 来自 SQuAD 数据集的(问题,答案)对 |
WikiHow | 来自 WikiHow 的(摘要,文本)对 |
亚马逊评论 2018 | 来自亚马逊评论的(标题,评论)对 |
自然问题 | 来自自然问题数据集的(查询,答案)对 |
亚马逊问答 | 来自亚马逊的(问题,答案)对 |
S2ORC | 科学论文的(标题,摘要)、(摘要,引用)、(标题,引用)对 |
Quora 重复项 | 来自 Quora 的重复问题对 |
WikiAnswers | 来自 WikiAnswers 的重复问题对 |
AG新闻 | 来自 AG News 数据集的新闻文章的(标题,描述)对 |
AllNLI | 来自 SNLI + MultiNLI 的(锚点、蕴含、矛盾)三元组 |
NPR | 来自 npr.org 网站的(标题,正文)对 |
SPECTER | 来自 Specter 的科学出版物的(标题、正例标题、负例标题)三元组 |
简易维基 | 来自维基百科的(英语,简易英语)对 |
PAQ | 来自 Probably-Asked Questions 数据集的(查询,答案) |
altlex | 来自维基百科的(英语,简易英语)对 |
CC 新闻 | 来自 CC News 数据集的(标题,文章)对 |
CodeSearchNet | 来自 GitHub 开源库的(注释,代码)对 |
句子压缩 | 来自 Sentence Compression 数据集的(长文本,短文本)对 |
Trivia QA | 来自 TriviaQA 数据集的(查询,答案)对 |
Flickr30k 图像字幕 | 来自 Flickr30k 数据集的重复图像字幕 |
xsum | 来自 XSUM 数据集的(新闻文章,摘要)对 |
Coco 图像字幕 | 来自 Coco Captions 数据集的重复图像字幕 |
平行句子:Europarl | 跨多种语言的(英语,非英语)对 |
平行句子:Global Voices | 跨多种语言的(英语,非英语)对 |
平行句子:MUSE | 跨多种语言的(英语,非英语)对 |
平行句子:JW300 | 跨多种语言的(英语,非英语)对 |
平行句子:News Commentary | 跨多种语言的(英语,非英语)对 |
平行句子:OpenSubtitles | 跨多种语言的(英语,非英语)对 |
平行句子:Talks | 跨多种语言的(英语,非英语)对 |
平行句子:Tatoeba | 跨多种语言的(英语,非英语)对 |
平行句子:WikiMatrix | 跨多种语言的(英语,非英语)对 |
平行句子:WikiTitles | 跨多种语言的(英语,非英语)对 |
注意
我们建议用户通过添加 tags: sentence-transformers
来标记可用于训练嵌入模型的datasets。我们也乐意接受高质量数据集被添加到上述列表中,供所有人查看和使用。