Dongjin-kr/ko-reranker
Dongjin-kr
Clasificación de texto
ko-reranker es un modelo afinado basado en BAAI/bge-reranker-larger para datos en coreano. Utiliza preguntas y documentos como entrada y produce puntuaciones de relevancia. Está optimizado con CrossEntropy loss, lo que significa que la puntuación de relevancia no está restringida a un rango específico. Para más detalles, consulte korean-reranker-git / AWS Blog.
Como usar
Para usar el modelo con Transformers:
def exp_normalize(x):
b = x.max()
y = np.exp(x - b)
return y / y.sum()
from transformers import AutoModelForSequenceClassification, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForSequenceClassification.from_pretrained(model_path)
model.eval()
pairs = [["나는 너를 싫어해", "나는 너를 사랑해"], ["나는 너를 좋아해", "너에 대한 나의 감정은 사랑 일 수도 있어"]]
with torch.no_grad():
inputs = tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512)
scores = model(**inputs, return_dict=True).logits.view(-1, ).float()
scores = exp_normalize(scores.numpy())
print(f'first: {scores[0]}, second: {scores[1]}')
Para usar con SageMaker:
import sagemaker
import boto3
from sagemaker.huggingface import HuggingFaceModel
try:
role = sagemaker.get_execution_role()
except ValueError:
iam = boto3.client('iam')
role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']
hub = {
'HF_MODEL_ID': 'Dongjin-kr/ko-reranker',
'HF_TASK': 'text-classification'
}
huggingface_model = HuggingFaceModel(
transformers_version='4.28.1',
pytorch_version='2.0.0',
py_version='py310',
env=hub,
role=role,
)
predictor = huggingface_model.deploy(
initial_instance_count=1,
instance_type='ml.g5.large'
)
runtime_client = boto3.Session().client('sagemaker-runtime')
payload = json.dumps({"inputs": [
{"text": "나는 너를 싫어해", "text_pair": "나는 너를 사랑해"},
{"text": "나는 너를 좋아해", "text_pair": "너에 대한 나의 감정은 사랑 일 수도 있어"}
]})
response = runtime_client.invoke_endpoint(
EndpointName="",
ContentType="application/json",
Accept="application/json",
Body=payload
)
out = json.loads(response['Body'].read().decode())
print(f'Response: {out}')
Funcionalidades
- Reranker utiliza preguntas y documentos como entrada y produce puntuaciones de relevancia directamente, en lugar de embeddings.
- El Reranker proporciona puntuaciones de relevancia al introducir preguntas y frases.
- Está optimizado con CrossEntropy loss, de modo que la puntuación de relevancia no está restringida a un rango específico.
- Desarrollado para mejorar la precisión en escenarios de búsqueda semántica.
Casos de uso
- Mejora de la precisión en la búsqueda semántica.
- Obtención de puntuaciones de relevancia entre preguntas y documentos.
- Uso en aplicaciones que requieren una clasificación precisa del texto basado en relevancia.