数据集¶
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
第一列的句子将使用给定的嵌入器映射到一个句子嵌入。例如,嵌入器是一种用于英语的单语句子嵌入方法。其他语言的句子也将映射到这个英语句子嵌入。
从数据集中获取样本时,我们获取一个句子及其对应的句子嵌入。
teacher_model 可以是任何实现 encode 函数的类。encode 函数接收一个句子列表并返回一个句子嵌入列表。
并行句子数据集读取器,用于在给定教师模型的情况下训练学生模型
- 参数:
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)[源代码][源代码]¶
此数据集可用于某些特定的三元组损失,如需要批次中具有相同标签的多个示例的 BATCH_HARD_TRIPLET_LOSS。
它一次从一个标签中连续、随机且唯一地抽取 n 个样本。对每个标签都重复此过程。
少于 n 个唯一样本的标签将被忽略。这也适用于无放回抽样,一旦某个标签的剩余样本少于 n 个,它将被跳过。
这 不 检查是否标签数量超过了批次大小,或者批次大小是否能被每个标签抽取的样本数整除。
为 SentenceLabelDataset 创建一个 LabelSampler。
- 参数:
examples (List[InputExample]) -- 输入示例列表。
samples_per_label (int, optional) -- 每个标签连续、随机且唯一抽取的样本数量。批次大小应为 samples_per_label 的倍数。默认为 2。
with_replacement (bool, optional) -- 如果为 True,每个样本最多被抽取一次(取决于每个标签的总样本数)。如果为 False,一个样本可以在多次抽取中被抽取,但在同一次抽取中不会被多次抽取。默认为 False。
去噪自动编码器数据集¶
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 一起使用,以确保在同一批次中没有重复项。