数据集

注意

sentence_transformers.datasets 类已被弃用,仅为与已弃用的训练兼容而存在。

sentence_transformers.datasets 包含用于组织训练输入样本的类。

ParallelSentencesDataset (平行句子数据集)

ParallelSentencesDataset 用于多语言训练。详情请见多语言训练

class sentence_transformers.datasets.ParallelSentencesDataset(student_model: SentenceTransformer, teacher_model: SentenceTransformer, batch_size: int = 8, use_embedding_cache: bool = True)[源码]

该数据集读取器可用于读入平行句子,即读取一个包含以制表符分隔的不同语言的相同句子的文件。例如,文件可以如下所示 (EN DE ES): hello world hallo welt hola mundo second sentence zweiter satz segunda oración

第一列中的句子将被给定的嵌入器(embedder)映射为句子嵌入。例如,嵌入器是一个针对英语的单语种句子嵌入方法。其他语言的句子也将被映射到这个英语句子嵌入。

从数据集中获取样本时,我们会得到一个句子及其对应的句子嵌入。

teacher_model 可以是任何实现了 encode 函数的类。该 encode 函数接收一个句子列表,并返回一个句子嵌入列表。

用于在给定教师模型的情况下训练学生模型的平行句子数据集读取器

参数:
  • student_model (SentenceTransformer) – 需要训练的学生句子嵌入模型。

  • teacher_model (SentenceTransformer) – 为数据集文件中第一列提供句子嵌入的教师模型。

  • batch_size (int, 可选) – 训练的批量大小。默认为 8。

  • use_embedding_cache (bool, 可选) – 是否使用嵌入缓存。默认为 True。

SentenceLabelDataset (句子标签数据集)

如果您有带标签的句子并希望使用三元组损失进行训练,可以使用 SentenceLabelDataset

class sentence_transformers.datasets.SentenceLabelDataset(examples: list[InputExample], samples_per_label: int = 2, with_replacement: bool = False)[源码]

此数据集可用于某些特定的三元组损失,如 BATCH_HARD_TRIPLET_LOSS,它要求一个批次中有多个具有相同标签的样本。

它一次从一个标签中抽取 n 个连续、随机且唯一的样本。对每个标签重复此操作。

唯一样本数少于 n 的标签将被忽略。这也适用于不放回抽样,一旦某个标签的剩余样本少于 n 个,该标签将被跳过。

这*不会*检查标签数量是否多于批次大小,或者批次大小是否能被每个标签抽取的样本数整除。

为 SentenceLabelDataset 创建一个 LabelSampler。

参数:
  • examples (List[InputExample]) – InputExample 列表。

  • samples_per_label (int, 可选) – 每个标签抽取的连续、随机、唯一样本的数量。批次大小应为 samples_per_label 的倍数。默认为 2。

  • with_replacement (bool, 可选) – 如果为 True,则每个样本最多被抽取一次(取决于每个标签的总样本数)。如果为 False,一个样本可以在多次抽取中被抽到,但不能在同一次抽取中多次出现。默认为 False。

DenoisingAutoEncoderDataset (降噪自编码器数据集)

DenoisingAutoEncoderDataset 用于 TSDAE 方法的无监督训练。

class sentence_transformers.datasets.DenoisingAutoEncoderDataset(sentences: list[str], noise_fn=<function DenoisingAutoEncoderDataset.<lambda>>)[源码]

DenoisingAutoEncoderDataset 以以下格式返回 InputExamples:texts=[noise_fn(sentence), sentence]。它与 DenoisingAutoEncoderLoss 结合使用:在这里,解码器尝试重建不含噪声的句子。

参数:
  • sentences – 句子列表

  • noise_fn – 一个噪声函数:给定一个字符串,返回一个带噪声的字符串,例如删除了一些单词。

NoDuplicatesDataLoader (无重复数据加载器)

NoDuplicatesDataLoader可以与 MultipleNegativeRankingLoss 一起使用,以确保同一批次内没有重复项。

class sentence_transformers.datasets.NoDuplicatesDataLoader(train_examples, batch_size)[源码]

一个特殊的数据加载器,与 MultipleNegativesRankingLoss 一起使用。该数据加载器确保同一批次内没有重复的句子。