PaECTER - un Modelo de Similitud de Patentes

mpi-inno-comp
Similitud de oraciones

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