sentence-transformers/all-mpnet-base-v2
sentence-transformers
Similitud de oraciones
Este es un modelo de sentence-transformers: mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones y se puede utilizar para tareas como la agrupación o la búsqueda semántica.
Como usar
Uso (Sentence-Transformers)
Utilizar este modelo se vuelve fácil cuando tienes sentence-transformers instalado:
pip install -U sentence-transformers
Entonces puedes usar el modelo de esta manera:
from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]
model = SentenceTransformer('sentence-transformers/all-mpnet-base-v2')
embeddings = model.encode(sentences)
print(embeddings)
Uso (HuggingFace Transformers)
Sin sentence-transformers, puedes usar el modelo de esta manera: Primero, pasas tu entrada a través del modelo de transformer, luego debes aplicar la operación de agrupamiento adecuada en la parte superior de las embeddings de palabras contextualizadas.
from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F
# Mean Pooling - Tener en cuenta la máscara de atención para el promedio correcto
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0] # Primer elemento de model_output contiene todas las embeddings de los tokens
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)
# Oraciones para las cuales queremos embeddings
sentences = ['This is an example sentence', 'Each sentence is converted']
# Cargar el modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/all-mpnet-base-v2')
model = AutoModel.from_pretrained('sentence-transformers/all-mpnet-base-v2')
# Tokenizar oraciones
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
# Calcular embeddings de token
with torch.no_grad():
model_output = model(**encoded_input)
# Realizar agrupamiento
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
# Normalizar embeddings
sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)
print("Embeddings de oraciones:")
print(sentence_embeddings)
Funcionalidades
- Transformadores de oraciones
- PyTorch
- Safetensors
- Transformers
Casos de uso
- Recuperación de información
- Agrupación
- Tareas de similitud de oraciones