sorryhyun/sentence-embedding-klue-large
sorryhyun
Similitud de oraciones
El modelo sorryhyun/sentence-embedding-klue-large ha sido entrenado usando una pérdida multi-tarea (MultipleNegativeLoss -> AnglELoss) con los datos de KlueNLI y KlueSTS. Este modelo es compatible con AutoTrain y ofrece funcionalidades avanzadas de extracción de características y similitud de oraciones.
Como usar
Uso (API de inferencia Huggingface)
import requests
API_URL = "https://api-inference.huggingface.co/models/sorryhyun/sentence-embedding-klue-large"
headers = {"Authorization": "your_HF_token"}
def query(payload):
response = requests.post(API_URL, headers=headers, json=payload)
return response.json()
output = query({
"inputs": {
"source_sentence": "좋아요, 추천, 알림설정까지",
"sentences": [
"좋아요 눌러주세요!!",
"좋아요, 추천 등 유투버들이 좋아해요",
"알림설정을 눌러주시면 감사드리겠습니다."
]
},
})
if __name__ == '__main__':
print(output)
Uso (Transformers de HuggingFace)
from transformers import AutoTokenizer, AutoModel, DataCollatorWithPadding
import torch
from torch.utils.data import DataLoader
device = torch.device('cuda')
# Oraciones para las que queremos obtener incrustaciones
sentences = ['This is an example sentence', 'Each sentence is converted']
# Cargar modelo del Hub de HuggingFace
modelo_nombre = 'sorryhyun/sentence-embedding-klue-large'
tokenizer = AutoTokenizer.from_pretrained(modelo_nombre)
collator = DataCollatorWithPadding(tokenizer)
model = AutoModel.from_pretrained(modelo_nombre).to(device)
tokenized_data = tokenizer(sentences, padding=True, truncation=True)
tokenized_data = tokenized_data.remove_columns('text')
dataloader = DataLoader(tokenized_data, batch_size=32, pin_memory=True, collate_fn=collator)
all_outputs = torch.zeros((len(tokenized_data), 1024)).to(device)
start_idx = 0
# Método de pooling promedio para representación de oraciones
with torch.no_grad():
for inputs in dataloader:
inputs = {k: v.to(device) for k, v in inputs.items()}
representations, _ = model(**inputs, return_dict=False)
attention_mask = inputs["attention_mask"]
input_mask_expanded = attention_mask.unsqueeze(-1).expand(representations.size()).to(representations.dtype)
summed = torch.sum(representations * input_mask_expanded, 1)
sum_mask = input_mask_expanded.sum(1)
sum_mask = torch.clamp(sum_mask, min=1e-9)
end_idx = start_idx + representations.shape[0]
all_outputs[start_idx:end_idx] = summed / sum_mask
start_idx = end_idx
Funcionalidades
- Pérdida multi-tarea (MultipleNegativeLoss -> AnglELoss)
- Entrenado con los datos KlueNLI y KlueSTS
- Compatible con AutoTrain
- Extracción de características
- Similitud de oraciones
- Compatible con Inference Endpoints
Casos de uso
- Extracción de características
- Similitud de oraciones
- Inferencia de incrustaciones de texto
- Despliegue personalizado usando Inference Endpoints