🚀 SimCSE(sup)
SimCSE(sup) 是一个用于句子相似度任务的模型。它基于特定的语言模型,在多个中文数据集上进行评估,能够将句子编码为嵌入向量,并计算句子之间的余弦相似度。
🚀 快速开始
本模型可用于将句子编码为嵌入向量,还能计算两个句子之间的余弦相似度。以下是使用示例:
import torch
from transformers import BertTokenizer
from transformers import BertModel
from sklearn.metrics.pairwise import cosine_similarity
simcse_sup_path = "hellonlp/simcse-roberta-base-zh"
tokenizer = BertTokenizer.from_pretrained(simcse_sup_path)
MODEL = BertModel.from_pretrained(simcse_sup_path)
def get_vector_simcse(sentence):
"""
预测simcse的语义向量。
"""
input_ids = torch.tensor(tokenizer.encode(sentence)).unsqueeze(0)
output = MODEL(input_ids)
return output.last_hidden_state[:, 0].squeeze(0)
embeddings = get_vector_simcse("武汉是一个美丽的城市。")
print(embeddings.shape)
def get_similarity_two(sentence1, sentence2):
vec1 = get_vector_simcse(sentence1).tolist()
vec2 = get_vector_simcse(sentence2).tolist()
similarity_list = cosine_similarity([vec1], [vec2]).tolist()[0][0]
return similarity_list
sentence1 = '你好吗'
sentence2 = '你还好吗'
result = get_similarity_two(sentence1,sentence2)
print(result)
📦 数据集列表
以下数据集均为中文数据集:
数据集 |
训练集规模 |
验证集规模 |
测试集规模 |
ATEC |
62477 |
20000 |
20000 |
BQ |
100000 |
10000 |
10000 |
LCQMC |
238766 |
8802 |
12500 |
PAWSX |
49401 |
2000 |
2000 |
STS - B |
5231 |
1458 |
1361 |
SNLI |
146828 |
2699 |
2618 |
MNLI |
122547 |
2932 |
2397 |
📊 模型列表
评估数据集为中文,我们在不同方法上使用了相同的语言模型 RoBERTa base。此外,考虑到部分数据集的测试集规模较小,可能导致评估准确性偏差较大,这里的评估数据同时使用了训练集、验证集和测试集,最终评估结果采用 加权平均 (w - avg) 方法。
模型 |
STS - B(w - avg) |
ATEC |
BQ |
LCQMC |
PAWSX |
平均 |
BERT - Whitening |
65.27 |
- |
- |
- |
- |
- |
SimBERT |
70.01 |
- |
- |
- |
- |
- |
SBERT - Whitening |
71.75 |
- |
- |
- |
- |
- |
[BAAI/bge - base - zh](https://huggingface.co/BAAI/bge - base - zh) |
78.61 |
- |
- |
- |
- |
- |
[hellonlp/simcse - base - zh(sup)](https://huggingface.co/hellonlp/simcse - roberta - base - zh) |
80.96 |
- |
- |
- |
- |
- |
📄 许可证
本项目采用 MIT 许可证。