PaECTER - un Modelo de Similitud de Patentes
PaECTER (Embeddings de Patentes usando Transformadores Informados por Citaciones) es un modelo de similitud de patentes. Construido sobre el BERT de Google para Patentes como modelo base, genera embeddings vectoriales densos de 1024 dimensiones a partir del texto de la patente. Estos vectores encapsulan la esencia semántica del texto de la patente dada, lo que lo hace altamente adecuado para diversas tareas posteriores relacionadas con el análisis de patentes. Artículo: https://arxiv.org/pdf/2402.19411
Como usar
Este modelo se puede usar fácilmente con Sentence Transformers instalados:
pip install -U sentence-transformers
Luego puedes usar el modelo así:
from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]
model = SentenceTransformer('mpi-inno-comp/paecter')
embeddings = model.encode(sentences)
print(embeddings)
Sin Sentence Transformers, puedes usar el modelo de la siguiente manera: Primero, pasas tu entrada a través del modelo transformer, luego tienes que aplicar la operación de pooling correcta sobre los embeddings de palabras contextualizados.
from transformers import AutoTokenizer, AutoModel
import torch
#Media de Pooling - Ten 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 del model_output contiene todos los embeddings de los 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)
# Sentencias para las que queremos obtener los embeddings de las sentencias
sentences = ['This is an example sentence', 'Each sentence is converted']
# Cargar el modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('mpi-inno-comp/paecter')
model = AutoModel.from_pretrained('mpi-inno-comp/paecter')
# Tokenizar las sentencias
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt', max_length=512)
# Calcular los embeddings de los tokens
with torch.no_grad():
model_output = model(**encoded_input)
# Realizar el pooling. En este caso, media de pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Embeddings de sentencias:")
print(sentence_embeddings)
Funcionalidades
- Modelo base: BERT de Google para Patentes
- Genera embeddings vectoriales de 1024 dimensiones
- Adecuado para análisis semántico del texto de patentes
- Entrenado usando DataLoader y CustomTripletLoss
- Arquitectura completa basada en SentenceTransformer y BertModel
Casos de uso
- Búsqueda Semántica
- Búsqueda de Antecedentes
- Agrupamiento
- Desarrollo de Paisajes de Patentes