【发布时间】:2022-01-04 18:08:45
【问题描述】:
我正在探索句子转换器并遇到了这个page。 它展示了如何训练我们的自定义数据。但我不确定如何预测。如果有两个新句子,例如 1) 这是第三个例子,2) 这是第三个例子。我如何才能预测这些句子的相似程度?
from sentence_transformers import SentenceTransformer, InputExample, losses
from torch.utils.data import DataLoader
#Define the model. Either from scratch of by loading a pre-trained model
model = SentenceTransformer('distilbert-base-nli-mean-tokens')
#Define your train examples. You need more than just two examples...
train_examples = [InputExample(texts=['My first sentence', 'My second sentence'], label=0.8),
InputExample(texts=['Another pair', 'Unrelated sentence'], label=0.3)]
#Define your train dataset, the dataloader and the train loss
train_dataloader = DataLoader(train_examples, shuffle=True, batch_size=16)
train_loss = losses.CosineSimilarityLoss(model)
#Tune the model
model.fit(train_objectives=[(train_dataloader, train_loss)], epochs=1, warmup_steps=100)
----------------更新1
我更新了如下代码
from sentence_transformers import SentenceTransformer, InputExample, losses
from torch.utils.data import DataLoader
#Define the model. Either from scratch of by loading a pre-trained model
model = SentenceTransformer('distilbert-base-nli-mean-tokens')
#Define your train examples. You need more than just two examples...
train_examples = [InputExample(texts=['My first sentence', 'My second sentence'], label=0.8),
InputExample(texts=['Another pair', 'Unrelated sentence'], label=0.3)]
#Define your train dataset, the dataloader and the train loss
train_dataloader = DataLoader(train_examples, shuffle=True, batch_size=16)
train_loss = losses.CosineSimilarityLoss(model)
保存模型...与旧代码相比的主要变化
model_save_path2 = '/content/gdrive/MyDrive/folderName1/folderName2/model_try-'+datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
#Tune the model and save it too
model.fit(train_objectives=[(train_dataloader, train_loss)], epochs=1, warmup_steps=100,output_path=model_save_path2)
不确定以下步骤
#loading the new model
model_new = SentenceTransformer(model_save_path)
#predicting
sentences = ["This is an example sentence", "Each sentence is converted"]
model_new.encode(sentences)
问题 1)
这是在训练旧模型并创建新模型后获取句子嵌入的正确方法吗?我很困惑,因为在拟合过程中,我们提供了两个句子以及相似性度量。而对于输出,我们一次输入一个句子并为每个句子获取一个句子嵌入。
问题 2)
如果我想获得两个句子的相似度分数,唯一的选择是从该模型的输出中获取句子嵌入,然后使用余弦相似度吗?
【问题讨论】:
-
你见过this page吗?
-
谢谢。我已经更新了这个问题。请回答
标签: python nlp huggingface-transformers sentence sentence-similarity