🚀 turemb_512
このモデルはsentence-transformersを使用したものです。文章や段落を512次元の密ベクトル空間にマッピングし、クラスタリングや意味検索などのタスクに使用できます。
🚀 クイックスタート
📦 インストール
sentence-transformersをインストールすると、このモデルを簡単に使用できます。
pip install -U sentence-transformers
💻 使用例
基本的な使用法
from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]
model = SentenceTransformer('{MODEL_NAME}')
embeddings = model.encode(sentences)
print(embeddings)
高度な使用法
sentence-transformersを使用せずに、このモデルを使用することもできます。まず、入力をTransformerモデルに通し、その後、文脈化された単語埋め込みに対して適切なプーリング操作を適用する必要があります。
from transformers import AutoTokenizer, AutoModel
import torch
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0]
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)
sentences = ['This is an example sentence', 'Each sentence is converted']
tokenizer = AutoTokenizer.from_pretrained('{MODEL_NAME}')
model = AutoModel.from_pretrained('{MODEL_NAME}')
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Sentence embeddings:")
print(sentence_embeddings)
📚 ドキュメント
評価結果
このモデルの自動評価については、Sentence Embeddings Benchmarkを参照してください: https://seb.sbert.net
学習
このモデルは以下のパラメータで学習されました。
DataLoader:
torch.utils.data.dataloader.DataLoader
(長さ: 14435) のパラメータは以下の通りです。
{'batch_size': 16, 'sampler': 'torch.utils.data.sampler.RandomSampler', 'batch_sampler': 'torch.utils.data.sampler.BatchSampler'}
Loss:
sentence_transformers.losses.MultipleNegativesRankingLoss.MultipleNegativesRankingLoss
のパラメータは以下の通りです。
{'scale': 20.0, 'similarity_fct': 'cos_sim'}
fit()
メソッドのパラメータは以下の通りです。
{
"epochs": 12,
"evaluation_steps": 1000,
"evaluator": "sentence_transformers.evaluation.EmbeddingSimilarityEvaluator.EmbeddingSimilarityEvaluator",
"max_grad_norm": 1,
"optimizer_class": "<class 'torch.optim.adamw.AdamW'>",
"optimizer_params": {
"lr": 0.0001
},
"scheduler": "WarmupLinear",
"steps_per_epoch": null,
"warmup_steps": 866,
"weight_decay": 0.005
}
モデルのアーキテクチャ
SentenceTransformer(
(0): Transformer({'max_seq_length': None, 'do_lower_case': False}) with Transformer model: T5EncoderModel
(1): Pooling({'word_embedding_dimension': 512, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False})
)
引用
@article{,
title={Translation Aligned Sentence Embeddings for Turkish Language},
author={Unlu, Eren and Ciftci, Unver},
journal={arXiv preprint arXiv:2311.09748},
year={2023}
}
@article{chung2022scaling,
title={Scaling instruction-finetuned language models},
author={Chung, Hyung Won and Hou, Le and Longpre, Shayne and Zoph, Barret and Tay, Yi and Fedus, William and Li, Yunxuan and Wang, Xuezhi and Dehghani, Mostafa and Brahma, Siddhartha and others},
journal={arXiv preprint arXiv:2210.11416},
year={2022}
}
@article{budur2020data,
title={Data and representation for turkish natural language inference},
author={Budur, Emrah and {\"O}z{\c{c}}elik, R{\i}za and G{\"u}ng{\"o}r, Tunga and Potts, Christopher},
journal={arXiv preprint arXiv:2004.14963},
year={2020}
}
@article{tiedemann2020tatoeba,
title={The Tatoeba Translation Challenge--Realistic Data Sets for Low Resource and Multilingual MT},
author={Tiedemann, J{\"o}rg},
journal={arXiv preprint arXiv:2010.06354},
year={2020}
}
@article{unal2016tasviret,
title={Tasviret: G{\"o}r{\"u}nt{\"u}lerden otomatik t{\"u}rk{\c{c}}e a{\c{c}}{\i}klama olusturma I{\c{c}}in bir denekta{\c{c}}{\i} veri k{\"u}mesi (TasvirEt: A benchmark dataset for automatic Turkish description generation from images)},
author={Unal, Mesut Erhan and Citamak, Begum and Yagcioglu, Semih and Erdem, Aykut and Erdem, Erkut and Cinbis, Nazli Ikizler and Cakici, Ruket},
journal={IEEE Sinyal Isleme ve Iletisim Uygulamalar{\i} Kurultay{\i} (SIU 2016)},
year={2016}
}