🚀 俄语句子语义等价预测跨编码器模型
本项目是一个跨编码器模型,旨在预测两个俄语句子的语义等价性。它能够将文本对分类为释义(类别 1)或非释义(类别 0),其得分可作为释义或文本风格转换中内容保留的度量标准。
✨ 主要特性
📦 安装指南
文档未提供具体安装步骤,可参考相关库的官方文档进行安装,如 torch
和 transformers
。
💻 使用示例
基础用法
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
model = AutoModelForSequenceClassification.from_pretrained('SkolkovoInstitute/ruRoberta-large-paraphrase-v1')
tokenizer = AutoTokenizer.from_pretrained('SkolkovoInstitute/ruRoberta-large-paraphrase-v1')
def get_similarity(text1, text2):
""" Predict the probability that two Russian sentences are paraphrases of each other. """
with torch.inference_mode():
batch = tokenizer(
text1, text2,
truncation=True, max_length=model.config.max_position_embeddings, return_tensors='pt',
).to(model.device)
proba = torch.softmax(model(**batch).logits, -1)
return proba[0][1].item()
print(get_similarity('Я тебя люблю', 'Ты мне нравишься'))
print(get_similarity('Я тебя люблю', 'Я тебя ненавижу'))
📚 详细文档
训练数据集
该模型在 3 个数据集的组合上进行微调:
RuPAWS
:https://github.com/ivkrotova/rupaws_dataset ,基于 Quora 和 QQP;
ru_paraphraser
:https://huggingface.co/merionum/ru_paraphraser;
- RUSSE - 2022 文本去毒数据集集合手动检查内容保留的结果 (
content_5.tsv
)。
任务被定义为二分类问题:两个句子是否具有相同的含义(1)或不同的含义(0)。
以下表格展示了重复(合并 text1 + text2
和 text2 + text1
对)后的训练数据集大小:
来源 \ 标签 |
0 |
1 |
detox |
1412 |
3843 |
paraphraser |
5539 |
1688 |
rupaws_qqp |
1112 |
792 |
rupaws_wiki |
3526 |
2166 |
训练超参数
模型使用 Adam 优化器进行训练,超参数如下:
learning_rate = 1e-5
batch_size = 8
gradient_accumulation_steps = 4
n_epochs = 3
max_grad_norm = 1.0
测试集 ROC AUC 得分
训练后,模型在测试集上的 ROC AUC 得分如下:
测试集 |
ROC AUC |
detox |
0.857112 |
paraphraser |
0.858465 |
rupaws_qqp |
0.859195 |
rupaws_wiki |
0.906121 |
🔧 技术细节
该模型基于 sberbank-ai/ruRoberta-large
进行微调,通过二分类任务来判断两个俄语句子的语义等价性。在训练过程中,使用了多个数据集,并对训练数据进行了重复处理以增加数据量。训练时采用 Adam 优化器,并设置了特定的超参数。训练完成后,在多个测试集上进行了评估,取得了较好的 ROC AUC 得分。
📄 许可证
文档未提及许可证相关信息。