数据集
注意
sentence_transformers.datasets
类已弃用,仅为兼容已弃用训练而存在。
现在,您可以使用
BatchSamplers.GROUP_BY_LABEL
来使用GroupByLabelBatchSampler
,而非SentenceLabelDataset
。现在,您可以使用
BatchSamplers.NO_DUPLICATES
来使用NoDuplicatesBatchSampler
,而非NoDuplicatesDataLoader
。
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)[source]
该数据集读取器可用于读取平行句,即读取一个以制表符分隔的、包含相同句子不同语言版本的文件。例如,文件内容可能如下(EN DE ES): hello world hallo welt hola mundo second sentence zweiter satz segunda oración
第一列中的句子将使用给定的嵌入器映射为句子嵌入。例如,嵌入器可以是用于英语的单语句子嵌入方法。其他语言的句子也将映射到此英语句子嵌入。
从数据集中获取样本时,我们将获得一个句子及其对应的句子嵌入。
teacher_model 可以是任何实现了编码功能的类。编码功能接收一个句子列表并返回一个句子嵌入列表
用于在给定教师模型的情况下训练学生模型的平行句子数据集读取器
- 参数:
student_model (SentenceTransformer) – 应训练的学生句子嵌入模型。
teacher_model (SentenceTransformer) – 为数据文件中第一列提供句子嵌入的教师模型。
batch_size (int, optional) – 训练的批大小。默认为 8。
use_embedding_cache (bool, optional) – 是否使用嵌入缓存。默认为 True。
SentenceLabelDataset
如果您有带标签的句子并希望使用三元组损失进行训练,可以使用SentenceLabelDataset
。
- class sentence_transformers.datasets.SentenceLabelDataset(examples: list[InputExample], samples_per_label: int = 2, with_replacement: bool = False)[source]
此数据集可用于某些特定的三元组损失,例如 BATCH_HARD_TRIPLET_LOSS,它要求批次中包含多个具有相同标签的示例。
它一次从一个标签中抽取 n 个连续、随机且唯一的样本。每个标签都重复此过程。
标签少于 n 个唯一样本将被忽略。这也适用于不带替换的抽取,一旦标签的剩余样本少于 n 个,该标签将被跳过。
这不会检查标签是否多于批次大小,或者批次大小是否可被每个标签抽取的样本数整除。
为 SentenceLabelDataset 创建一个 LabelSampler。
- 参数:
examples (List[InputExample]) – InputExample 列表。
samples_per_label (int, optional) – 每个标签抽取连续、随机和唯一样本的数量。批次大小应为 samples_per_label 的倍数。默认为 2。
with_replacement (bool, optional) – 如果为 True,则每个样本最多抽取一次(取决于每个标签的总样本数)。如果为 False,则一个样本可以在多次抽取中被抽取,但不能在同一次抽取中被抽取多次。默认为 False。
DenoisingAutoEncoderDataset
DenoisingAutoEncoderDataset
用于使用 TSDAE 方法进行无监督训练。
- class sentence_transformers.datasets.DenoisingAutoEncoderDataset(sentences: list[str], noise_fn=<function DenoisingAutoEncoderDataset.<lambda>>)[source]
DenoisingAutoEncoderDataset 以以下格式返回 InputExamples:texts=[noise_fn(sentence), sentence] 它与 DenoisingAutoEncoderLoss 结合使用:在这里,解码器尝试重建没有噪声的句子。
- 参数:
sentences – 句子列表
noise_fn – 噪声函数:给定一个字符串,它返回一个带有噪声(例如,删除词语)的字符串
NoDuplicatesDataLoader
NoDuplicatesDataLoader
可以与MultipleNegativeRankingLoss一起使用,以确保同一批次中没有重复的句子。