matthewleechen/lt_frenchnames

matthewleechen
Similitud de oraciones

Este es un modelo LinkTransformer. En su núcleo, este modelo es un modelo de transformador de oraciones (sentence-transformers) - solo envuelve la clase. Está diseñado para la vinculación rápida y fácil de registros (coincidencia de entidades) a través del paquete LinkTransformer. Las tareas incluyen clustering, deduplicación, enlace, agregación y más. A pesar de eso, también se puede usar para cualquier tarea de similitud de oraciones dentro del marco de trabajo de sentence-transformers. Mapea oraciones y párrafos a un espacio vectorial denso de 768 dimensiones y se puede usar para tareas como clustering o búsqueda semántica. Echa un vistazo a la documentación de sentence-transformers si deseas usar este modelo para más de lo que soportamos en nuestras aplicaciones. Este modelo ha sido ajustado en el modelo: sentence-transformers/paraphrase-multilingual-mpnet-base-v2. Está pre-entrenado para el idioma: - en.

Como usar

pip install -U linktransformer

import linktransformer as lt
import pandas as pd

## Cargar los dos dataframes que deseas vincular. Por ejemplo, 2 dataframes con nombres de empresas que están escritos de manera diferente
df1=pd.read_csv("data/df1.csv") ### Este es el dataframe izquierdo con la clave CompanyName, por ejemplo
df2=pd.read_csv("data/df2.csv") ### Este es el dataframe derecho con la clave CompanyName, por ejemplo

### ¡Fusionar los dos dataframes en la columna clave!
df_merged = lt.merge(df1, df2, on="CompanyName", how="inner")

## ¡Hecho! El dataframe fusionado tiene una columna llamada "score" que contiene la puntuación de similitud entre los dos nombres de empresa

Entrenando tu propio modelo LinkTransformer

saved_model_path = train_model(
model_path="hiiamsid/sentence_similarity_spanish_es",
dataset_path=dataset_path,
left_col_names=["description47"],
right_col_names=['description48'],
left_id_name=['tariffcode47'],
right_id_name=['tariffcode48'],
log_wandb=False,
config_path=LINKAGE_CONFIG_PATH,
training_args={"num_epochs": 1}
)

El modelo se entrenó con los parámetros:

  • DataLoader:
    • torch.utils.data.dataloader.DataLoader de longitud 6 con parámetros:
      • {'batch_size': 64, 'sampler': 'torch.utils.data.dataloader._InfiniteConstantSampler', 'batch_sampler': 'torch.utils.data.sampler.BatchSampler'}
  • Pérdida:
    • linktransformer.modified_sbert.losses.SupConLoss_wandb
  • Parámetros del método fit():
    • { "epochs": 200, "evaluation_steps": 1, "evaluator": "sentence_transformers.evaluation.SequentialEvaluator.SequentialEvaluator", "max_grad_norm": 1, "optimizer_class": "", "optimizer_params": { "lr": 2e-06 }, "scheduler": "WarmupLinear", "steps_per_epoch": null, "warmup_steps": 1200, "weight_decay": 0.01 }

LinkTransformer( (0): Transformer({'max_seq_length': 128, 'do_lower_case': False}) con modelo Transformer: XLMRobertaModel (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True}) )

Funcionalidades

Clustering
Deduplicación
Enlace
Agregación
Similitud de oraciones
Búsqueda semántica

Casos de uso

Vinculación de registros
Clustering
Deduplicación de datos
Enlace de entidades
Agregación de datos
Búsqueda semántica