DMetaSoul/sbert-chinese-general-v1

DMetaSoul
Similitud de oraciones

Este modelo se basa en la versión bert-base-chinese del modelo BERT, entrenado en conjuntos de datos de similitud semántica como NLI, PAWS-X, PKU-Paraphrase-Bank, STS, entre otros. Es adecuado para escenarios de coincidencia semántica general (este modelo funciona bien en tareas de Chinese-STS, pero puede no ser óptimo en otras tareas y tiene cierto riesgo de sobreajuste), como extracción de características de texto, agrupación de vectores de texto, búsqueda semántica de texto, etc. Nota: ¡También se ha lanzado una versión más ligera de este modelo!

Como usar

  1. Transformadores de oraciones
pip install -U sentence-transformers

from sentence_transformers import SentenceTransformer
sentences = ["我的儿子!他猛然间喊道,我的儿子在哪儿?", "我的儿子呢!他突然喊道,我的儿子在哪里?"]

model = SentenceTransformer('DMetaSoul/sbert-chinese-general-v1')
embeddings = model.encode(sentences)
print(embeddings)
  1. HuggingFace Transformadores
from transformers import AutoTokenizer, AutoModel
import torch

#Media de Agrupación - 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] #El primer elemento de model_output contiene todas las incorporaciones 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 las incorporaciones de oraciones
sentences = ["我的儿子!他猛然间喊道,我的儿子在哪儿?", "我的儿子呢!他突然喊道,我的儿子在哪里?"]

# Cargar el modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('DMetaSoul/sbert-chinese-general-v1')
model = AutoModel.from_pretrained('DMetaSoul/sbert-chinese-general-v1')

# Tokenizar las oraciones
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

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

# Realizar la agrupación. En este caso, media de agrupación.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

print("Incorporaciones de las oraciones:")
print(sentence_embeddings)

Funcionalidades

Similitud de oraciones
Transformadores de oraciones
Extracción de características
Búsqueda semántica
Incorporaciones de texto

Casos de uso

Extracción de características de texto
Agrupación de vectores de texto
Búsqueda semántica de texto