英文

模型

句子相似性的交叉编码器

该模型是使用 sentence-transformers 个交叉编码器类进行训练的。

训练数据

该模型是在 STS benchmark dataset 上进行训练的。该模型将预测两个句子之间的语义相似度得分,范围在0到1之间。

使用(Sentence-Transformers)

如果已经安装完 sentence-transformers ,则使用该模型变得非常简单:

pip install -U sentence-transformers

然后可以按照以下方式使用该模型:

from sentence_transformers import CrossEncoder
model = CrossEncoder('dangvantuan/CrossEncoder-camembert-large', max_length=128)
scores = model.predict([('Un avion est en train de décoller.', "Un homme joue d'une grande flûte."), ("Un homme étale du fromage râpé sur une pizza.", "Une personne jette un chat au plafond") ])

评估

可以按照以下方式对法语 stsb 的测试数据进行评估。

from sentence_transformers.readers import InputExample
from sentence_transformers.cross_encoder.evaluation import CECorrelationEvaluator
from datasets import load_dataset
def convert_dataset(dataset):
    dataset_samples=[]
    for df in dataset:
        score = float(df['similarity_score'])/5.0  # Normalize score to range 0 ... 1
        inp_example = InputExample(texts=[df['sentence1'], 
                                    df['sentence2']], label=score)
        dataset_samples.append(inp_example)
    return dataset_samples

# Loading the dataset for evaluation
df_dev = load_dataset("stsb_multi_mt", name="fr", split="dev")
df_test = load_dataset("stsb_multi_mt", name="fr", split="test")

# Convert the dataset for evaluation

# For Dev set:
dev_samples = convert_dataset(df_dev)
val_evaluator = CECorrelationEvaluator.from_input_examples(dev_samples, name='sts-dev')
val_evaluator(model, output_path="./")

# For Test set

test_samples = convert_dataset(df_test)
test_evaluator = CECorrelationEvaluator.from_input_examples(test_samples, name='sts-test')
test_evaluator(models, output_path="./")

测试结果:使用皮尔逊和斯皮尔曼相关性进行性能衡量:

  • 在开发集上

    Model Pearson correlation Spearman correlation #params
    1236321 90.11 90.01 336M
  • 在测试集上

    Model Pearson correlation Spearman correlation
    1236321 88.16 87.57