🚀 俄語句子語義等價預測跨編碼器模型
本項目是一個跨編碼器模型,旨在預測兩個俄語句子的語義等價性。它能夠將文本對分類為釋義(類別 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 得分。
📄 許可證
文檔未提及許可證相關信息。