ChEmbed v0.1 - Chemical Embeddings

gbyuvd
Similitud de oraciones

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