DMetaSoul/sbert-chinese-general-v2

DMetaSoul
Similitud de oraciones

Este modelo está basado en la versión bert-base-chinese del modelo BERT. Fue entrenado en el conjunto de datos SimCLUE con millones de ejemplos de similitud semántica, y es adecuado para escenarios de coincidencia semántica general. El modelo muestra una mejor capacidad de generalización en diversas tareas. Nota: ¡Ya está disponible una versión ligera de este modelo!

Como usar

Sentence-Transformers

Para usar este modelo a través del marco de trabajo sentence-transformers, primero instálelo:

pip install -U sentence-transformers

Luego use el siguiente código para cargar el modelo y extraer vectores de representación de texto:

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

model = SentenceTransformer('DMetaSoul/sbert-chinese-general-v2')
embeddings = model.encode(sentences)
print(embeddings)

HuggingFace Transformers

Si no desea usar sentence-transformers, también puede cargar el modelo a través de HuggingFace Transformers y extraer vectores de texto:

from transformers import AutoTokenizer, AutoModel
import torch

# Pooling Media - Tener en cuenta la máscara de atención para un promedio correcto

def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0]  # El primer elemento de model_output contiene todas las incrustaciones 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 de las que queremos obtener incrustaciones
sentences = ["我的儿子!他猛然间喊道,我的儿子在哪儿?", "我的儿子呢!他突然喊道,我的儿子在哪里?"]

# Cargar el modelo desde HuggingFace Hub

tokenizer = AutoTokenizer.from_pretrained('DMetaSoul/sbert-chinese-general-v2')
model = AutoModel.from_pretrained('DMetaSoul/sbert-chinese-general-v2')

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

# Calcular las incrustaciones de 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("Incrustaciones de oraciones:")
print(sentence_embeddings)

Funcionalidades

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

Casos de uso

Coincidencia semántica general