polyBERT

kuelumbus
Similitud de oraciones

Este es polyBERT: Un modelo de lenguaje químico para permitir la informática de polímeros ultrarápida totalmente dirigida por máquina. polyBERT mapea las cadenas PSMILES a huellas digitales densas de 600 dimensiones. Las huellas digitales representan numéricamente las estructuras químicas de los polímeros. Por favor, consulta el acuerdo de licencia en el archivo LICENSE.

Como usar

Uso (Sentence-Transformers)

Usar este modelo se vuelve fácil cuando tienes sentence-transformers instalado:

pip install sentence-transformers

Luego, puedes utilizar el modelo así:

from sentence_transformers import SentenceTransformer
psmiles_strings = ["[*]CC[*]", "[*]COC[*]"]

polyBERT = SentenceTransformer('kuelumbus/polyBERT')
embeddings = polyBERT.encode(psmiles_strings)
print(embeddings)

Uso (HuggingFace Transformers)

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 correcta en la parte superior de las incrustaciones de palabras contextualizadas.

from transformers import AutoTokenizer, AutoModel
import torch

# Mean Pooling - Tener en cuenta la máscara de atención para un promediado 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)

# Oraciones para las que queremos incrustaciones de oraciones
psmiles_strings = ["[*]CC[*]", "[*]COC[*]"]

# Cargar el modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('kuelumbus/polyBERT')
polyBERT = AutoModel.from_pretrained('kuelumbus/polyBERT')

# Tokenizar oraciones
encoded_input = tokenizer(psmiles_strings, padding=True, truncation=True, return_tensors='pt')

# Calcular incrustaciones de tokens
with torch.no_grad():
    model_output = polyBERT(**encoded_input)

# Realizar pooling. En este caso, mean pooling.
fingerprints = mean_pooling(model_output, encoded_input['attention_mask'])

print("Huellas digitales:")
print(fingerprints)

Funcionalidades

Modelo de lenguaje químico
Informática de polímeros ultrarápida
Mapeo de cadenas PSMILES a huellas digitales densas
Representación numérica de estructuras químicas de polímeros

Casos de uso

Informática de polímeros
Análisis químico automatizado
Representación numérica de estructuras químicas
Búsqueda y comparación de polímeros