🚀 {MODEL_NAME}
このモデルはLinkTransformerモデルです。基本的にはsentence-transformersモデルとしての文埋め込みモデルであり、特定のクラスをラップしています。
LinkTransformerパッケージを通じて、迅速かつ簡単なレコードリンケージ(エンティティマッチング)を行うことを目的としています。具体的なタスクには、クラスタリング、重複排除、リンケージ、集約などが含まれます。
それに加えて、sentence-transformersフレームワーク内での文の類似度タスクにも使用できます。
文や段落を768次元の密ベクトル空間にマッピングし、クラスタリングや意味検索などのタスクに利用できます。
このモデルを私たちのアプリケーションでサポートしている以上の用途で使用したい場合は、sentence-transformersのドキュメントを参照してください。
このモデルは、sentence-transformers/paraphrase-multilingual-mpnet-base-v2モデルをファインチューニングしたものです。以下の言語に対して事前学習されています。
- de
- en
- zh
- ja
- hi
- ar
- bn
- pt
- ru
- es
- fr
- ko
このモデルは、LinkTransformerフレームワークを使用して、ウィキデータからの会社の別名を含むデータセットで学習されました。
学習は70エポック行われ、他のデフォルト設定はリポジトリのLinkTransformer設定ファイル - LT_training_config.jsonに記載されています。
🚀 クイックスタート
✨ 主な機能
- 迅速かつ簡単なレコードリンケージ(エンティティマッチング)
- クラスタリング、重複排除、リンケージ、集約などのタスクに対応
- 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")
高度な使用法
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}
)
📚 ドキュメント
このモデルを評価するには、LinkTransformerパッケージの推論関数を使用できます。
パッケージにはいくつかのデータセットが用意されているので、試してみてください。将来的には、Huggingfaceや私たちのウェブサイトにより多くのデータセットを公開する予定です。
🔧 技術詳細
学習パラメータ
DataLoader:
torch.utils.data.dataloader.DataLoader
of length 5966 with parameters:
{'batch_size': 64, 'sampler': 'torch.utils.data.dataloader._InfiniteConstantSampler', 'batch_sampler': 'torch.utils.data.sampler.BatchSampler'}
Loss:
linktransformer.modified_sbert.losses.SupConLoss_wandb
Parameters of the fit()-Method:
{
"epochs": 70,
"evaluation_steps": 2983,
"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": 417620,
"weight_decay": 0.01
}
モデル構造
LinkTransformer(
(0): Transformer({'max_seq_length': 128, 'do_lower_case': False}) with Transformer model: 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})
)
📄 ライセンス
@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}
}
情報テーブル
属性 |
详情 |
モデルタイプ |
LinkTransformerモデル(sentence-transformersベース) |
学習データ |
ウィキデータからの会社の別名を含むデータセット |
事前学習モデル |
sentence-transformers/paraphrase-multilingual-mpnet-base-v2 |
学習言語 |
de, en, zh, ja, hi, ar, bn, pt, ru, es, fr, ko |
学習エポック数 |
70 |
学習損失関数 |
linktransformer.modified_sbert.losses.SupConLoss_wandb |
最適化アルゴリズム |
AdamW (lr=2e-05) |
スケジューラー |
WarmupLinear |
ウォームアップステップ数 |
417620 |
重み減衰率 |
0.01 |