iambestfeed/Phobert_v2_sts_synthetic
Este es un modelo de sentence-transformers que mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones y puede ser usado para tareas como clustering o búsqueda semántica. Entrenamos el modelo con un conjunto de datos de entrenamiento combinado que consiste en: MS Marco (traducido al vietnamita), SQuAD v2 (traducido al vietnamita) y 80% del conjunto de entrenamiento del desafío de Recuperación de Texto Legal Zalo 2021. Utilizamos phobert-base-v2 como la base pre-entrenada.
Como usar
Usar este modelo es fácil cuando tienes sentence-transformers instalado:
pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer
# ¡EL TEXTO DE ENTRADA DEBE ESTAR SEGMENTADO EN PALABRAS!
sentences = ["Cô ấy là một người vui_tính .", "Cô ấy cười nói suốt cả ngày ."]
model = SentenceTransformer('bkai-foundation-models/vietnamese-bi-encoder')
embeddings = model.encode(sentences)
print(embeddings)
Uso (Widget HuggingFace)
El widget usa un pipeline personalizado encima del pipeline por defecto añadiendo un segmentador de palabras adicional antes del PhobertTokenizer. Así que no necesitas segmentar palabras antes de usar la API. Un ejemplo puede ser visto en la API de inferencia hospedada.
Uso (HuggingFace Transformers)
Sin sentence-transformers, puedes usar el modelo así:
from transformers import AutoTokenizer, AutoModel
import torch
# Pooling Media - Toma en cuenta la máscara de atención para un promedio correcto
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0] # La primera parte de model_output contiene todos los embeddings de 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 que queremos embeddings de oraciones
sentences = ['Cô ấy là một người vui_tính .', 'Cô ấy cười nói suốt cả ngày .']
# Cargar el modelo del Hub de HuggingFace
tokenizer = AutoTokenizer.from_pretrained('bkai-foundation-models/vietnamese-bi-encoder')
model = AutoModel.from_pretrained('bkai-foundation-models/vietnamese-bi-encoder')
# Tokenizar oraciones
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
# Calcular los embeddings de los tokens
with torch.no_grad():
model_output = model(**encoded_input)
# Realizar el pooling. En este caso, pooling media.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Embeddings de oraciones:")
print(sentence_embeddings)
Funcionalidades
- Modelo basado en Roberta
- Extracción de características
- Transformers
- Uso de Safetensors
- Soporte para vietnamita
- Capacidad de similitud de oraciones
- Compatible con sentence-transformers
Casos de uso
- Clustering
- Búsqueda semántica