🚀 DiTy/cross-encoder-russian-msmarco
這是一個基於 sentence-transformers 的模型,它以預訓練的 DeepPavlov/rubert-base-cased 為基礎,並使用 MS-MARCO 俄語段落排序數據集 進行了微調。該模型可用於俄語信息檢索:給定一個查詢,將查詢與所有可能的段落(例如通過 ElasticSearch 檢索到的段落)進行編碼,然後按降序對段落進行排序。更多詳細信息請參閱 SBERT.net 檢索與重排序。
🚀 快速開始
安裝依賴
若已安裝 sentence-transformers,使用該模型會變得很簡單:
pip install -U sentence-transformers
🔧 技術細節
屬性 |
詳情 |
模型類型 |
基於預訓練的 DeepPavlov/rubert-base-cased 微調的 sentence-transformers 模型 |
訓練數據 |
MS-MARCO 俄語段落排序數據集(unicamp-dl/mmarco) |
基礎模型 |
DeepPavlov/rubert-base-cased |
許可證 |
MIT |
💻 使用示例
基礎用法(Sentence-Transformers)
from sentence_transformers import CrossEncoder
reranker_model = CrossEncoder('DiTy/cross-encoder-russian-msmarco', max_length=512, device='cuda')
query = ["как часто нужно ходить к стоматологу?"]
documents = [
"Минимальный обязательный срок посещения зубного врача – раз в год, но специалисты рекомендуют делать это чаще – раз в полгода, а ещё лучше – раз в квартал. При таком сроке легко отследить любые начинающиеся проблемы и исправить их сразу же.",
"Основная причина заключается в истончении поверхностного слоя зуба — эмали, которая защищает зуб от механических, химических и температурных воздействий. Под эмалью расположен дентин, который более мягкий по своей структуре и пронизан множеством канальцев. При повреждении эмали происходит оголение дентинных канальцев. Раздражение с них начинает передаваться на нервные окончания в зубе и возникают болевые ощущения. Чаще всего дентин оголяется в придесневой области зубов, поскольку эмаль там наиболее тонкая и стирается быстрее.",
"Стоматолог, также известный как стоматолог-хирург, является медицинским работником, который специализируется на стоматологии, отрасли медицины, специализирующейся на зубах, деснах и полости рта.",
"Дядя Женя работает врачем стоматологом",
"Плоды малины употребляют как свежими, так и замороженными или используют для приготовления варенья, желе, мармелада, соков, а также ягодного пюре. Малиновые вина, наливки, настойки, ликёры обладают высокими вкусовыми качествами.",
]
predict_result = reranker_model.predict([[query[0], documents[0]]])
print(predict_result)
rank_result = reranker_model.rank(query[0], documents)
print(rank_result)
高級用法(HuggingFace Transformers)
若未安裝 sentence-transformers,可以按以下方式使用該模型:首先,將輸入數據傳入變壓器模型,然後從模型中獲取對數幾率。
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained('DiTy/cross-encoder-russian-msmarco')
tokenizer = AutoTokenizer.from_pretrained('DiTy/cross-encoder-russian-msmarco')
features = tokenizer(["как часто нужно ходить к стоматологу?", "как часто нужно ходить к стоматологу?"], ["Минимальный обязательный срок посещения зубного врача – раз в год, но специалисты рекомендуют делать это чаще – раз в полгода, а ещё лучше – раз в квартал. При таком сроке легко отследить любые начинающиеся проблемы и исправить их сразу же.", "Дядя Женя работает врачем стоматологом"], padding=True, truncation=True, return_tensors='pt')
model.eval()
with torch.no_grad():
scores = model(**features).logits
print(scores)
📄 許可證
本項目採用 MIT 許可證。