ChEmbed v0.1 - Chemical Embeddings
Este prototipo es un modelo basado en Sentence Transformers utilizando MiniLM-L6-H384-uncased afinado con alrededor de 1 millón de pares de SELFIES (Krenn et al. 2020) de compuestos naturales válidos tomados de COCONUTDB (Sorokina et al. 2021). Mapea las cadenas Self-Referencing Embedded Strings (SELFIES) de los compuestos en un espacio vectorial denso de 768 dimensiones, pudiendo ser utilizado potencialmente para similitud química, búsqueda de similitudes, clasificación, agrupación y más. Se planeaba entrenar este modelo con más épocas en el conjunto de datos actual antes de pasar a un conjunto de datos más grande con 6 millones de pares generados de ChemBL34. Sin embargo, esto tomará tiempo debido a limitaciones computacionales y financieras. Un proyecto futuro es desarrollar un modelo personalizado específicamente para quimioinformática para abordar sesgos y problemas de optimización al reutilizar un modelo de incrustaciones diseñado para tareas de PLN.
Como usar
Uso directo (Sentence Transformers)
# Primero instala la librería de Sentence Transformers:
pip install -U sentence-transformers
# Luego puedes cargar este modelo y ejecutar la inferencia.
from sentence_transformers import SentenceTransformer
# Descargar desde el 🤗 Hub
model = SentenceTransformer("gbyuvd/ChemEmbed-v01")
# Ejecutar inferencia
sentences = [
'[O][=C][Branch1][#Branch1][C][=C][C][C][C][=C][C]',
'[O][=C][Branch1][C][O][C][C][C][C][C][C][C][C][Branch1][C][O][C][=C][C][#C][C][=C][C][C][C]',
'[O][C][C][O][C][Branch2][=Branch2][Ring1][O][C][Branch1][C][C][C][C][C][Branch1][C][O][O][C][C][C][C][C][C][C][C][C][Branch2][Branch1][N][O][C][O][C][Branch1][Ring1][C][O][C][Branch2][Ring2][#Branch1][O][C][O][C][Branch1][Ring1][C][O][C][Branch1][C][O][C][Branch1][C][O][C][Ring1][#Branch2][O][C][O][C][Branch1][C][C][C][Branch1][C][O][C][Branch1][C][O][C][Ring1][=Branch2][O][C][Branch1][C][O][C][Ring2][Ring1][#C][O][C][C][C][Ring2][Ring2][#Branch1][Branch1][C][C][C][Ring2][Ring2][N][C][C][C][Ring2][Ring2][S][Branch1][C][C][C][Ring2][Branch1][Ring2][C][Ring2][Branch1][Branch2][C][C][Branch1][C][O][C][Branch1][C][O][C][Ring2][=Branch1][=Branch1][O]',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Obtener las puntuaciones de similitud para las incrustaciones
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
Funcionalidades
- Basado en MiniLM-L6-H384-uncased
- Longitud máxima de secuencia: 512 tokens
- Dimensionalidad de salida: 768 tokens
- Función de similitud: Similitud de coseno
- Conjunto de datos de entrenamiento: pares de SELFIES generados de COCONUTDB
- Idioma: SELFIES
- Licencia: CC BY-NC 4.0
Casos de uso
- Similitud química
- Búsqueda de similitudes
- Clasificación de compuestos
- Agrupación de compuestos