FremyCompany/BioLORD-2023
Este modelo se entrenó utilizando BioLORD, una nueva estrategia de preentrenamiento para producir representaciones significativas para frases clínicas y conceptos biomédicos. Las metodologías de última generación operan maximizando la similitud en la representación de nombres que refieren al mismo concepto y previniendo colapsos a través del aprendizaje contrastivo. Sin embargo, dado que los nombres biomédicos no siempre son autoexplicativos, a veces resulta en representaciones no semánticas. BioLORD supera este problema fundamentando sus representaciones de conceptos usando definiciones, así como descripciones breves derivadas de un gráfico de conocimiento multirrelacional que consiste en ontologías biomédicas. Gracias a esta fundamentación, nuestro modelo produce representaciones de conceptos más semánticas que se ajustan más a la estructura jerárquica de las ontologías. BioLORD-2023 establece un nuevo estado del arte para la similitud textual tanto en frases clínicas (MedSTS) como en conceptos biomédicos (EHR-Rel-B). Este modelo se basa en sentence-transformers/all-mpnet-base-v2 y fue afinado adicionalmente en el BioLORD-Dataset y definiciones generadas por LLM del Glosario Automático de Terminología Clínica (AGCT).
Como usar
Este es un modelo de sentence-transformers: mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones y puede utilizarse para tareas como clustering o búsqueda semántica. Este modelo ha sido afinado para el dominio biomédico. Mientras preserva una buena capacidad para producir embeddings para textos de propósito general, será más útil si estás tratando de procesar documentos médicos como registros EHR o notas clínicas. Tanto oraciones como frases pueden ser embedidas en el mismo espacio latente. Usar este modelo se vuelve fácil cuando tienes sentence-transformers instalado:
pip install -U sentence-transformers
Entonces puedes usar el modelo así:
from sentence_transformers import SentenceTransformer
sentences = ["Lesión por arañazo de gato", "Enfermedad por arañazo de gato", "Bartonelosis"]
model = SentenceTransformer('FremyCompany/BioLORD-2023')
embeddings = model.encode(sentences)
print(embeddings)
Sin sentence-transformers, puedes usar el modelo de esta manera: primero, pasas tu entrada a través del modelo transformer, luego tienes que aplicar la operación de pooling adecuada sobre los embeddings contextualizados.
from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F
#Pooling promedio - 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 todos los 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 oración
sentences = ["Lesión por arañazo de gato", "Enfermedad por arañazo de gato", "Bartonelosis"]
#Cargar modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('FremyCompany/BioLORD-2023')
model = AutoModel.from_pretrained('FremyCompany/BioLORD-2023')
#Tokenizar oraciones
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
#Computar embeddings de tokens
with torch.no_grad():
model_output = model(**encoded_input)
#Realizar pooling
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)
Mis propias contribuciones para este modelo están cubiertas por la licencia MIT. Sin embargo, dado que los datos utilizados para entrenar este modelo provienen de UMLS y SnomedCT, deberás asegurarte de tener la licencia adecuada de UMLS y SnomedCT antes de usar este modelo. Tanto UMLS como SnomedCT son gratuitos en la mayoría de los países, pero es posible que tengas que crear una cuenta e informar sobre tu uso de los datos anualmente para mantener una licencia válida.
Funcionalidades
- Similitud de oraciones
- Transformadores de oraciones
- PyTorch
- Extracción de características
- Médico
- Biología
- Compatible con AutoTrain
- Compatibilidad con Endpoints
Casos de uso
- Búsqueda semántica en documentos médicos
- Clustering de textos biomédicos
- Procesamiento de registros electrónicos de salud (EHR)
- Notas clínicas