【数据集】GLUE子任务-STS-B 数据集详解:衡量句子之间的语义相似度
STS-B 全称是 Semantic Textual Similarity Benchmark,是由 SemEval 比赛发展而来的标准句子对语义相似度数据集,用于评估模型理解两个句子语义接近程度的能力。属于 GLUE 基准任务之一。项目内容数据集名称任务类型语义相似度回归(0~5 分)标签含义相似度得分,越高越相近使用平台GLUE、HuggingFace、SQuAD等推荐模型BERT, SBER
·
一、什么是 STS-B?
STS-B 全称是 Semantic Textual Similarity Benchmark,是由 SemEval 比赛发展而来的标准句子对语义相似度数据集,用于评估模型理解两个句子语义接近程度的能力。
属于 GLUE 基准任务之一。
二、任务目标:句子相似度回归
与分类任务不同,STS-B 是一个 回归任务,模型需输出两个句子之间的相似度得分(0~5 的浮点数):
- 5:完全等价
- 0:完全不相关
三、数据结构与样例
每条样本包含两句话与一个相似度分数:
| sentence1 | sentence2 | score |
|---|---|---|
| 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-B | QQP / 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 等 |
| 应用方向 | 搜索、问答、推荐、摘要匹配等 |
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)