STS-B 数据集详解:衡量句子之间的语义相似度

一、什么是 STS-B?

STS-B 全称是 Semantic Textual Similarity Benchmark,是由 SemEval 比赛发展而来的标准句子对语义相似度数据集,用于评估模型理解两个句子语义接近程度的能力。

属于 GLUE 基准任务之一。

二、任务目标:句子相似度回归

与分类任务不同,STS-B 是一个 回归任务,模型需输出两个句子之间的相似度得分(0~5 的浮点数):

  • 5:完全等价

  • 0:完全不相关

三、数据结构与样例

每条样本包含两句话与一个相似度分数:

sentence1sentence2score
A man is playing a guitar.A person is playing a musical instrument.4.6
A woman is reading.A man is eating.1.2
Kids are playing outdoors.Children are playing outside.5.0

四、数据集规模(GLUE版本)

数据子集样本数量
训练集5,749
验证集1,500
测试集1,379

虽然规模不大,但挑战性高,因为它要求模型具有细腻的语义理解能力

五、评价指标

由于是回归任务,主要评价指标是:

  • Pearson correlation:线性相关度

  • Spearman correlation:等级相关性

这两者衡量模型输出与人类评分的相似性。

六、与 QQP/MRPC 的区别

特征STS-BQQP / MRPC
类型回归(连续值)分类(0/1)
输出0 ~ 5 的浮点相似度是否相同(布尔)
标签含义语义接近程度是否重复/语义等价
模型目标拟合连续相似性评分判断是否匹配

七、HuggingFace 示例代码

1. 加载数据

from datasets import load_dataset

dataset = load_dataset("glue", "stsb")
print(dataset["train"][0])

输出:

{
  "sentence1": "A plane is taking off.",
  "sentence2": "An aircraft is taking flight.",
  "label": 4.8
}

2. Tokenizer & 模型加载

from transformers import BertTokenizer, BertForSequenceClassification

tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
model = BertForSequenceClassification.from_pretrained(
    "bert-base-uncased",
    num_labels=1  # 回归任务
)

3. 数据预处理

def tokenize(example):
    return tokenizer(example["sentence1"], example["sentence2"], truncation=True, padding="max_length")

encoded_dataset = dataset.map(tokenize, batched=True)

4. 模型训练与评估

from transformers import Trainer, TrainingArguments

args = TrainingArguments(
    output_dir="./stsb_out",
    evaluation_strategy="epoch",
    per_device_train_batch_size=16,
    num_train_epochs=3,
)

trainer = Trainer(
    model=model,
    args=args,
    train_dataset=encoded_dataset["train"],
    eval_dataset=encoded_dataset["validation"]
)

trainer.train()

5. 预测相似度

import torch

inputs = tokenizer("A man is singing.", "A person is performing vocally.", return_tensors="pt")
outputs = model(**inputs)
similarity_score = outputs.logits.item()
print(f"相似度评分:{similarity_score:.2f}")

八、实际应用场景

场景应用说明
搜索引擎优化用于用户查询与文档/FAQ 匹配的相关度评分
推荐系统计算句子/描述之间的语义相似度
问答系统评估用户问题与知识库问题的语义接近性
文本对比与摘要对齐判断原文与摘要句子的语义一致性
多语言相似度评估使用跨语言模型,比较不同语言表述是否相似

九、模型推荐

模型名称特点
BERT / RoBERTa强大的语言理解能力,适合语义建模
Sentence-BERT专为句子相似度任务优化,性能更优
SimCSE轻量+准确,采用对比学习训练方法
DistilBERT适合部署,速度快

十、 总结

项目内容
数据集名称STS-B(Semantic Textual Similarity Benchmark)
任务类型语义相似度回归(0~5 分)
标签含义相似度得分,越高越相近
使用平台GLUE、HuggingFace、SQuAD等
推荐模型BERT, SBERT, SimCSE, RoBERTa 等
应用方向搜索、问答、推荐、摘要匹配等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

00&00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值