🚀 SciRus-tiny
SciRus-tiny是一個用於獲取俄文和英文科學文本嵌入向量的模型。該模型基於eLibrary的數據進行訓練,並採用了habr文章中描述的對比技術。在ruSciBench基準測試中,該模型取得了較高的指標值。
🚀 快速開始
SciRus-tiny模型可用於獲取俄文和英文科學文本的嵌入向量。以下將介紹如何使用該模型獲取文本嵌入向量。
💻 使用示例
基礎用法
from transformers import AutoTokenizer, AutoModel
import torch.nn.functional as F
import torch
tokenizer = AutoTokenizer.from_pretrained("mlsa-iai-msu-lab/sci-rus-tiny")
model = AutoModel.from_pretrained("mlsa-iai-msu-lab/sci-rus-tiny")
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0]
input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
def get_sentence_embedding(title, abstract, model, tokenizer, max_length=None):
sentence = '</s>'.join([title, abstract])
encoded_input = tokenizer(
[sentence], padding=True, truncation=True, return_tensors='pt', max_length=max_length).to(model.device)
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)
return sentence_embeddings.cpu().detach().numpy()[0]
print(get_sentence_embedding('some title', 'some abstract', model, tokenizer).shape)
高級用法
你也可以使用sentence_transformers
庫來獲取文本嵌入向量:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('mlsa-iai-msu-lab/sci-rus-tiny')
embeddings = model.encode(['some title' + '</s>' + 'some abstract'])
print(embeddings[0].shape)
📄 許可證
本項目採用MIT許可證。
📋 信息表格
屬性 |
詳情 |
模型類型 |
用於獲取俄文和英文科學文本嵌入向量的模型 |
訓練數據 |
eLibrary的數據 |
👥 作者
本基準測試由莫斯科國立大學人工智能研究所的MLSA實驗室開發。
🙏 致謝
本研究是莫斯科國立大學項目#23 - Ш05 - 21 SES “開發用於處理大容量文本科學信息的機器學習數學方法”的一部分。感謝eLibrary提供的數據集。
📞 聯繫方式
- 尼古拉·傑拉西緬科 (nikgerasimenko@gmail.com)
- 阿列克謝·瓦託林 (vatolinalex@gmail.com)
📚 引用
@article{Gerasimenko2024,
author = {Gerasimenko, N. and Vatolin, A. and Ianina, A. and Vorontsov, K.},
title = {SciRus: Tiny and Powerful Multilingual Encoder for Scientific Texts},
journal = {Doklady Mathematics},
year = {2024},
volume = {110},
number = {1},
pages = {S193--S202},
month = {dec},
issn = {1531-8362},
doi = {10.1134/S1064562424602178},
url = {https://doi.org/10.1134/S1064562424602178}
}