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