DiTy/bi-encoder-russian-msmarco

DiTy
Similitud de oraciones

Este es un modelo de sentence-transformers basado en un DeepPavlov/rubert-base-cased preentrenado y ajustado con el conjunto de datos de ranking de pasajes en ruso MS-MARCO. Mapea frases y párrafos a un espacio vectorial denso de 768 dimensiones y se puede usar para la búsqueda semántica asimétrica en el idioma ruso.

Como usar

Uso (Sentence-Transformers)

Usar este modelo se vuelve fácil cuando tienes sentence-transformers instalado:

pip install -U sentence-transformers

Luego puedes usar el modelo así:

from sentence_transformers import SentenceTransformer, util

sentences = [
    'какое состояние может определить тест с физической нагрузкой',
    'Тест с физической нагрузкой разработан, чтобы выяснить, содержат ли одна или несколько коронарных артерий, питающих сердце, жировые отложения (бляшки), которые блокируют кровеносный сосуд на 70% или более. Для подтверждения результата часто требуется дополнительное тестирование. Результат испытаний.',
    'Тест направлен на то, чтобы выяснить, не получает ли какой-либо участок сердечной мышцы достаточный кровоток во время тренировки. Он похож на тест с физической нагрузкой, фармакологический или химический стресс-тест. Он также известен при стресс-тесте таллием, сканировании перфузии миокарда или радионуклидном тесте.'
]

model = SentenceTransformer('DiTy/bi-encoder-russian-msmarco')
embeddings = model.encode(sentences)
results = util.semantic_search(embeddings[0], embeddings[1:])[0]

print(f"Sentence similarity: {results}")
# `Sentence similarity: [{'corpus_id': 0, 'score': 0.8545001149177551}, {'corpus_id': 1, 'score': 0.023047829046845436}]`

Uso (HuggingFace Transformers)

Sin sentence-transformers, puedes usar el modelo así: Primero, pasas tu entrada a través del modelo de transformer, luego debes aplicar la operación de pooling correcta en la parte superior de las incrustaciones de palabras contextualizadas.

from transformers import AutoTokenizer, AutoModel
import torch

# Mean Pooling - Tener en cuenta la máscara de atención para el promediado correcto
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)

# Frases para las que queremos incrustaciones de frases
sentences = [
    'красный плоский лишай вызван стрессом',
    'В большинстве случаев причину появления красного плоского лишая невозможно. Это не вызвано стрессом, но иногда эмоциональный стресс усугубляет ситуацию. Известно, что это заболевание возникает после контакта с определенными химическими веществами, такими как те, которые используются для проявления цветных фотографий. У некоторых людей определенные лекарства вызывают красный плоский лишай. Эти препараты включают лекарства от высокого кровяного давления, болезней сердца, диабета, артрита и малярии, антибиотики, нестероидные противовоспалительные обезболивающие и т. Д.',
    'К сожалению для работодателей, в разных штатах страны есть несколько дел, по которым суды установили, что стресс, вызванный работой, может быть основанием для увольнения с работы, если стресс достигает уровня серьезного состояния здоровья, которое вызывает они не могут выполнять свою работу.',
]

# Cargar modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('DiTy/bi-encoder-russian-msmarco')
model = AutoModel.from_pretrained('DiTy/bi-encoder-russian-msmarco')

# Tokenizar frases
encoded_input = tokenizer(sentences, max_length=512, padding='max_length', truncation=True, return_tensors='pt')

# Calcular incrustaciones de tokens
with torch.no_grad():
    model_output = model(**encoded_input)

# Realizar pooling. En este caso, mean pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

print("Incrustaciones de frases:")
print(sentence_embeddings)

Funcionalidades

Basado en DeepPavlov/rubert-base-cased
Ajustado con el conjunto de datos de ranking de pasajes en ruso MS-MARCO
Mapea frases y párrafos a un espacio vectorial denso de 768 dimensiones
Búsqueda semántica asimétrica en ruso

Casos de uso

Búsqueda semántica asimétrica en ruso
Extracción de características de frases y párrafos
Ranking de pasajes

Recibe las últimas noticias y actualizaciones sobre el mundo de IA directamente en tu bandeja de entrada.