模型:

cointegrated/rubert-base-cased-dp-paraphrase-detection

英文

这是DeepPavlov的一种改进版本的改写检测器( details in the documentation )转换为Transformers格式。

所有的功劳归功于DeepPavlov的作者。

该模型是在 http://paraphraser.ru/ 的数据集上进行训练的。

它将文本分类为改写(类别1)或非改写(类别0)。

import torch
from transformers import AutoModelForSequenceClassification, BertTokenizer
model_name = 'cointegrated/rubert-base-cased-dp-paraphrase-detection'
model = AutoModelForSequenceClassification.from_pretrained(model_name).cuda()
tokenizer = BertTokenizer.from_pretrained(model_name)

def compare_texts(text1, text2):
    batch = tokenizer(text1, text2, return_tensors='pt').to(model.device)
    with torch.inference_mode():
        proba = torch.softmax(model(**batch).logits, -1).cpu().numpy()
    return proba[0] # p(non-paraphrase), p(paraphrase)

print(compare_texts('Сегодня на улице хорошая погода', 'Сегодня на улице отвратительная погода'))
# [0.7056226 0.2943774]
print(compare_texts('Сегодня на улице хорошая погода', 'Отличная погодка сегодня выдалась'))
# [0.16524374 0.8347562 ]

P.S.在DeepPavlov存储库中,分词器使用max_seq_length=64。然而,此模型使用model_max_length=512。因此,在处理长文本时,结果可能不准确。