FremyCompany/BioLORD-2023-S

FremyCompany
Similitud de oraciones

Este modelo fue entrenado utilizando BioLORD, una nueva estrategia de preentrenamiento para producir representaciones significativas de frases clínicas y conceptos biomédicos. Las metodologías más avanzadas 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 baseándose en sus representaciones de conceptos usando definiciones y descripciones cortas derivadas de un grafo de conocimiento multirrelacional compuesto por 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 de texto 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 aún más 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 frases y párrafos a un espacio vectorial denso de 768 dimensiones y puede ser utilizado para tareas como clustering o búsqueda semántica. Este modelo ha sido finamente ajustado para el dominio biomédico. Si bien preserva una buena capacidad para producir incrustaciones de texto de propósito general, será más útil para usted si está tratando de procesar documentos médicos como registros de EHR o notas clínicas. Tanto las frases como los párrafos pueden incrustarse en el mismo espacio latente. Usar este modelo es fácil cuando tiene instalada la librería sentence-transformers:

pip install -U sentence-transformers

Entonces, puedes usar el modelo de la siguiente manera:

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-S')
embeddings = model.encode(sentences)
print(embeddings)

Uso (HuggingFace Transformers):

Sin sentence-transformers, puedes usar el modelo así: Primero, pasas tu entrada a través del modelo transformer, luego debes aplicar la operación de pooling correcta sobre las incrustaciones 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 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)

# Frases para las que queremos incrustaciones de oraciones
sentences = ["Lesión por arañazo de gato", "Enfermedad por arañazo de gato", "Bartonelosis"]

# Cargar el modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('FremyCompany/BioLORD-2023-S')
model = AutoModel.from_pretrained('FremyCompany/BioLORD-2023-S')

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

# Calcular incrustaciones de tokens
with torch.no_grad():
    model_output = model(**encoded_input)
# Realizar pooling
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
# Normalizar incrustaciones
sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)
print("Incrustaciones de oraciones:")
print(sentence_embeddings)

Licencia: 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á asegurarse 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 deba crear una cuenta e informar sobre su uso de los datos anualmente para mantener una licencia válida.

Funcionalidades

Optimizaciones de estado del arte para representaciones semánticas
Mejoras en las representaciones conceptuales a través del anclaje en definiciones y descripciones cortas
Afinado adicional utilizando el BioLORD-Dataset
Capacidad para trabajar con textos médicos y clínicos

Casos de uso

Análisis de registros médicos
Clasificación y búsqueda semántica en documentos clínicos
Generación de representaciones semánticas para nombres biomédicos
Procesamiento de notas clínicas y EHR