一、什么是 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 等
应用方向 搜索、问答、推荐、摘要匹配等
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐