FremyCompany/BioLORD-2023-M
Este modelo fue entrenado usando BioLORD, una nueva estrategia de pre-entrenamiento para producir representaciones significativas de oraciones clínicas y conceptos biomédicos. Las metodologías de vanguardia operan maximizando la similitud en la representación de nombres que se refieren al mismo concepto y previenen el colapso mediante el aprendizaje contrastivo. Sin embargo, debido a que los nombres biomédicos no siempre son autoexplicativos, a veces resulta en representaciones no semánticas. BioLORD supera este problema al fundamentar sus representaciones de conceptos usando definiciones, así como descripciones cortas derivadas de un grafo de conocimiento multi-relacional que consiste en ontologías biomédicas. Gracias a esta base, nuestro modelo produce representaciones de conceptos más semánticas que coinciden más estrechamente con la estructura jerárquica de las ontologías. BioLORD-2023 establece un nuevo estado del arte para la similitud textual tanto en oraciones clínicas (MedSTS) como en conceptos biomédicos (EHR-Rel-B). Este modelo se basa en sentence-transformers/all-mpnet-base-v2 y se ajustó posteriormente en el Conjunto de Datos BioLORD y las definiciones generadas por LLM del Glosario Automático de Terminología Clínica (AGCT). Soporta oficialmente 7 idiomas europeos (inglés, español, francés, alemán, holandés, danés y sueco), y muchos otros idiomas de manera no oficial.
Como usar
Este es un modelo de sentence-transformers: mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones y puede ser utilizado para tareas como la agrupación o la búsqueda semántica. Este modelo ha sido afinado para el dominio biomédico. Aunque mantiene una buena capacidad para producir embeddings para textos de propósito general, será más útil si intentas procesar documentos médicos como registros de EHR o notas clínicas. Tanto las oraciones como las frases pueden ser embebidas en el mismo espacio latente.
Para utilizar este modelo, necesitas tener sentence-transformers instalado:
pip install -U sentence-transformers
Luego puedes usar el modelo de la siguiente manera:
from sentence_transformers import SentenceTransformer
sentences = ['Cat scratch injury', 'Cat scratch disease', 'Bartonellosis']
model = SentenceTransformer('FremyCompany/BioLORD-2023-M')
embeddings = model.encode(sentences)
print(embeddings)
Sin sentence-transformers, puedes usar el modelo de la siguiente manera: Primero, pasas tu entrada a través del modelo transformador, luego tienes que aplicar la operación de agrupamiento adecuada sobre las embeddings de palabras contextualizadas.
from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F
# Mean Pooling - 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 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 = ['Cat scratch injury', 'Cat scratch disease', 'Bartonellosis']
# Cargar modelo del HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('FremyCompany/BioLORD-2023-M')
model = AutoModel.from_pretrained('FremyCompany/BioLORD-2023-M')
# Tokenizar oraciones
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
# Calcular embeddings de tokens
with torch.no_grad():
model_output = model(**encoded_input)
# Realizar agrupamiento
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
# Normalizar embeddings
sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)
print('Embeddings de oraciones:')
print(sentence_embeddings)
Funcionalidades
- Transformador de oraciones
- Generación de representaciones semánticas significativas
- Compatibilidad con múltiples idiomas
- Especialización en textos biomédicos
- Método de pre-entrenamiento BioLORD
Casos de uso
- Agrupación de oraciones biomédicas
- Búsqueda semántica en registros clínicos
- Análisis del texto biomédico
- Generación de embeddings para documentos médicos