iambestfeed/Phobert_v2_sts_synthetic

iambestfeed
Similitud de oraciones

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