rmihaylov/roberta-base-nli-stsb-bg
rmihaylov
Similitud de oraciones
Este es un modelo Multilingüe Roberta que se puede usar para crear embeddings de oraciones en búlgaro. Utilizando las ideas de Sentence-BERT, el entrenamiento se basa en la idea de que una oración traducida debe mapearse a la misma ubicación en el espacio vectorial que la oración original. Este modelo distingue entre mayúsculas y minúsculas: hace diferencia entre 'bulgarian' y 'Bulgarian'. Fue entrenado en datos paralelos búlgaro-inglés privados.
Como usar
Aquí se muestra cómo usar este modelo en PyTorch:
import scipy
import torch
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('rmihaylov/roberta-base-nli-stsb-bg')
tokenizer = AutoTokenizer.from_pretrained('rmihaylov/roberta-base-nli-stsb-bg')
def embed(text):
inputs = tokenizer.encode_plus(text, return_tensors='pt')
outputs = model(**inputs)
sequence_output = outputs[0]
input_mask_expanded = inputs['attention_mask'].unsqueeze(-1).expand(sequence_output.size()).float()
embeddings = torch.sum(sequence_output * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
return embeddings.detach().numpy()[0]
query_embedding = embed('Какви са съставките на бисквитките?')
questions = [
'Какво е бисквитка?',
'От какво са направени бисквитките?',
'Използват ли в Англия думата бисквитки?',
'Къде се правят бисквитките?',
'Какви видове бисквитки има?',
'Къде човек може да купи бисквитки?',
'Откъде дойде думата бисквитка?',
'Кое е чудовището на бисквитките?',
'Как да си направите бисквитки у дома?',
'Колко калории има типичната бисквитка?',
'Какви напитки вървят добре с бисквитките?',
'Бисквитките наричат ли се също сладки?'
]
corpus, corpus_embeddings = [], []
for question in questions:
embedding = embed(question)
corpus.append(question)
corpus_embeddings.append(embedding)
distances = scipy.spatial.distance.cdist([query_embedding], corpus_embeddings, 'cosine')[0]
results = zip(range(len(distances)), distances)
results = sorted(results, key=lambda x: x[1])
print([[corpus[idx].strip(), (1.0 - distance)] for idx, distance in results])
[['Какви видове бисквитки има?', 0.9749538412820795],
['От какво са направени бисквитките?', 0.9720467855849998],
['Къде се правят бисквитките?', 0.9622582076645853],
['Какво е бисквитка?', 0.9352896865855094],
['Използват ли в Англия думата бисквитки?', 0.8981422328370646],
['Откъде дойде думата бисквитка?', 0.8955433698658758],
['Кое е чудовището на бисквитките?', 0.8902666858687854],
['Бисквитките наричат ли се също сладки?', 0.8839303534407483],
['Какви напитки вървят добре с бисквитките?', 0.8582087653310524],
['Къде човек може да купи бисквитки?', 0.8570532540073935],
['Колко калории има типичната бисквитка?', 0.8387529949080176],
['Как да си направите бисквитки у дома?', 0.8243675958097614]]
Funcionalidades
- Modelo multilingüe
- Creación de embeddings de oraciones en búlgaro
- Basado en las ideas de Sentence-BERT
- Distingue entre mayúsculas y minúsculas
- Entrenado con datos paralelos búlgaro-inglés privados
Casos de uso
- Creación de embeddings de oraciones en búlgaro
- Mapeo de oraciones traducidas al mismo espacio vectorial que las oraciones originales
- Análisis de similitud de oraciones basadas en embeddings