使用单句和标签数据微调句子转换器

问题描述 投票:0回答:1

我正在尝试微调句子转换器模型。我拥有的数据包含以下几列:

  1. raw_text - 原始文本块
  2. label - 文本对应的标签 - True 或 False。 (1 或 0)

我想微调句子转换器模型,以便以所有 True 句子在向量空间中比所有 False 句子更接近的方式优化嵌入。

我一直在阅读《损失概述 — Sentence-Transformers 文档》中有关损失的内容

我真的很困惑对于我的数据类型和用例使用哪种损失。我倾向于以下:

因为它符合我的数据格式。当我更多地了解这些损失以及使用锚、正样本和负样本计算它们的方式时,我对使用它们感到不太有信心,因为我的数据没有这类对。

这里有人可以帮助我理解我想做的事情对于句子转换器库中现有的损失是否合理?

下面是我迄今为止有效的代码:

from sentence_transformers import SentenceTransformer, InputExample, SentencesDataset, LoggingHandler, losses
from torch.utils.data import DataLoader
import pandas as pd

# Load a pre-trained Sentence Transformer model
# model = SentenceTransformer('stsb-roberta-base') #Hugging face says this model produces embeddings of low quality
model = SentenceTransformer('all-mpnet-base-v2')

# Assume 'transportation_data' is your dataset containing 'page_raw_text' and 'is_practical' columns
data = pd.DataFrame({'text': train_data['page_raw_text'], 'label': train_data['label']})

# Create InputExample objects
examples = [InputExample(texts=[txt], label=label) for txt, label in zip(data['text'], data['label'])]

# Create a DataLoader object and a Loss model
train_dataset = SentencesDataset(examples=examples, model=model)
train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=8)
train_loss = losses.BatchAllTripletLoss(model=model)

# Define your training arguments
num_epochs = 10
evaluation_steps = 1

model.fit(train_objectives=[(train_dataloader, train_loss)], epochs=num_epochs,evaluation_steps=1) 

python huggingface-transformers sentence-transformers
1个回答
0
投票

我正在尝试微调 Sentence Transformer 模型,但无法获得良好的准确度。

© www.soinside.com 2019 - 2024. All rights reserved.