🚀 E5-base-en-ru
このモデルは、文章の類似度を測定するためのモデルで、英語とロシア語に特化したバージョンです。Vocabulary pruningにより、モデルサイズを大幅に削減しています。
🚀 クイックスタート
このモデルは、文章の類似度を測定するために使用できます。以下のセクションでは、使用方法と性能について説明します。
✨ 主な機能
- Vocabulary pruningにより、モデルサイズを大幅に削減
- 英語とロシア語の文章の類似度を測定可能
- 様々なライブラリ(transformers、sentence-transformers)で使用可能
📦 インストール
このモデルを使用するには、必要なライブラリをインストールする必要があります。以下は、transformers
とsentence-transformers
をインストールする例です。
pip install transformers sentence-transformers
💻 使用例
基本的な使用法
transformersを使用した直接の使用方法
import torch.nn.functional as F
from torch import Tensor
from transformers import XLMRobertaTokenizer, XLMRobertaModel
def average_pool(last_hidden_states: Tensor, attention_mask: Tensor) -> Tensor:
last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
input_texts = [
'query: How does a corporate website differ from a business card website?',
'query: Где был создан первый троллейбус?',
'passage: The first trolleybus was created in Germany by engineer Werner von Siemens, probably influenced by the idea of his brother, Dr. Wilhelm Siemens, who lived in England, expressed on May 18, 1881 at the twenty-second meeting of the Royal Scientific Society. The electrical circuit was carried out by an eight-wheeled cart (Kontaktwagen) rolling along two parallel contact wires. The wires were located quite close to each other, and in strong winds they often overlapped, which led to short circuits. An experimental trolleybus line with a length of 540 m (591 yards), opened by Siemens & Halske in the Berlin suburb of Halensee, operated from April 29 to June 13, 1882.',
'passage: Корпоративный сайт — содержит полную информацию о компании-владельце, услугах/продукции, событиях в жизни компании. Отличается от сайта-визитки и представительского сайта полнотой представленной информации, зачастую содержит различные функциональные инструменты для работы с контентом (поиск и фильтры, календари событий, фотогалереи, корпоративные блоги, форумы). Может быть интегрирован с внутренними информационными системами компании-владельца (КИС, CRM, бухгалтерскими системами). Может содержать закрытые разделы для тех или иных групп пользователей — сотрудников, дилеров, контрагентов и пр.',
]
tokenizer = XLMRobertaTokenizer.from_pretrained('d0rj/e5-base-en-ru', use_cache=False)
model = XLMRobertaModel.from_pretrained('d0rj/e5-base-en-ru', use_cache=False)
batch_dict = tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')
outputs = model(**batch_dict)
embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())
Pipelineを使用した方法
from transformers import pipeline
pipe = pipeline('feature-extraction', model='d0rj/e5-base-en-ru')
embeddings = pipe(input_texts, return_tensors=True)
embeddings[0].size()
sentence-transformersを使用した方法
from sentence_transformers import SentenceTransformer
sentences = [
'query: Что такое круглые тензоры?',
'passage: Abstract: we introduce a novel method for compressing round tensors based on their inherent radial symmetry. We start by generalising PCA and eigen decomposition on round tensors...',
]
model = SentenceTransformer('d0rj/e5-base-en-ru')
embeddings = model.encode(sentences, convert_to_tensor=True)
embeddings.size()
📚 ドキュメント
モデル情報
このモデルは、intfloat/multilingual-e5-base のVocabulary pruningバージョンです。ロシア語と英語のトークンのみを使用しています。
サイズ
|
intfloat/multilingual-e5-base |
d0rj/e5-base-en-ru |
モデルサイズ (MB) |
1060.65 |
504.89 |
パラメータ数 |
278,043,648 |
132,354,048 |
単語埋め込み次元 |
192,001,536 |
46,311,936 |
性能
SberQuAD開発ベンチマークでの性能です。
SberQuAD (4122問) の指標 |
intfloat/multilingual-e5-base |
d0rj/e5-base-en-ru |
recall@3 |
|
|
map@3 |
|
|
mrr@3 |
|
|
recall@5 |
|
|
map@5 |
|
|
mrr@5 |
|
|
recall@10 |
|
|
map@10 |
|
|
mrr@10 |
|
|
📄 ライセンス
このモデルは、MITライセンスの下で提供されています。