🚀 {MODEL_NAME}
这是一个LinkTransformer模型。本质上,它是一个句子转换器模型,基于sentence-transformers模型,只是对其类进行了封装。该模型旨在通过LinkTransformer包实现快速便捷的记录链接(实体匹配),相关任务包括聚类、去重、链接、聚合等。此外,它也可用于sentence-transformers框架内的任何句子相似度任务。它能将句子和段落映射到768维的密集向量空间,可用于聚类或语义搜索等任务。如果你想将此模型用于我们应用支持范围之外的场景,请查看sentence-transformers的文档。
此模型在multi-qa-mpnet-base-dot-v1
模型的基础上进行了微调,预训练语言为英语。该模型使用LinkTransformer框架,在包含维基数据中公司别名的数据集上进行训练,共训练了100个周期,其他默认参数可在仓库的LinkTransformer配置文件LT_training_config.json
中找到。
🚀 快速开始
✨ 主要特性
- 基于LinkTransformer和sentence-transformers框架,可实现快速便捷的记录链接。
- 适用于多种句子相似度任务,如聚类、去重、链接、聚合等。
- 能将句子和段落映射到768维的密集向量空间,用于语义搜索。
📦 安装指南
当你安装了LinkTransformer后,使用此模型会变得很简单:
pip install -U linktransformer
💻 使用示例
基础用法
import linktransformer as lt
import pandas as pd
df1=pd.read_csv("data/df1.csv")
df2=pd.read_csv("data/df2.csv")
df_merged = lt.merge(df1, df2, on="CompanyName", how="inner")
📚 详细文档
训练你自己的LinkTransformer模型
任何句子转换器都可以通过简单添加池化层作为主干模型。HuggingFace上的其他转换器也可以通过指定add_pooling_layer==True
选项来使用。该模型使用SupCon损失进行训练,具体用法可在包文档中找到。训练配置可在仓库中名为LT_training_config.json
的文件中找到。若要复现训练过程,你可以下载该文件并在训练函数的config_path
参数中指定路径,也可以通过指定training_args
参数来覆盖配置。以下是一个示例:
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}
)
你还可以使用此包进行去重(根据提供的关键列对数据框进行聚类),也可以将细分类别(如产品)合并到粗分类别(如HS代码)。更多信息请阅读我们的论文和文档。
评估结果
你可以使用LinkTransformer包的推理函数对模型进行评估。我们在包中提供了一些数据集供你尝试,计划在Huggingface和我们的网站上提供更多数据集(即将推出)。
训练
该模型的训练参数如下:
数据加载器:
torch.utils.data.dataloader.DataLoader
,长度为2087,参数如下:
{'batch_size': 64, 'sampler': 'torch.utils.data.dataloader._InfiniteConstantSampler', 'batch_sampler': 'torch.utils.data.sampler.BatchSampler'}
损失函数:
linktransformer.modified_sbert.losses.SupConLoss_wandb
fit()
方法的参数:
{
"epochs": 100,
"evaluation_steps": 1044,
"evaluator": "sentence_transformers.evaluation.SequentialEvaluator.SequentialEvaluator",
"max_grad_norm": 1,
"optimizer_class": "<class 'torch.optim.adamw.AdamW'>",
"optimizer_params": {
"lr": 2e-05
},
"scheduler": "WarmupLinear",
"steps_per_epoch": null,
"warmup_steps": 208700,
"weight_decay": 0.01
}
模型结构:
LinkTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: MPNetModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False})
)
📄 许可证
引用与作者
@misc{arora2023linktransformer,
title={LinkTransformer: A Unified Package for Record Linkage with Transformer Language Models},
author={Abhishek Arora and Melissa Dell},
year={2023},
eprint={2309.00789},
archivePrefix={arXiv},
primaryClass={cs.CL}
}