d0rj/e5-base-en-ru

d0rj
Similitud de oraciones

Esta es una versión con vocabulario recortado del modelo intfloat/multilingual-e5-base. Utiliza solo tokens en ruso e inglés.

Como usar

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())
# [[68.59542846679688, 81.75910949707031], [80.36100769042969, 64.77748107910156]]

Funcionalidades

Similitud de oraciones
Transformers
PyTorch
Safetensors
sentence-transformers
Extracción de características
MTEB
Recuperación
Recuperador
Recortado
Inferencia de incrustaciones de texto
Puntos finales de inferencia

Casos de uso

Recuperación de información
Recuperación de pasajes
Minería de texto paralelo
Recuperación de paráfrasis
Clasificación de pruebas lineales
Agrupamiento