Sentence Transformers 2.2 : 概要 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 11/22/2022 (v2.2.2)
* 本ページは、UKPLab/sentence-transformers の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
Sentence Transformers 2.2 : 概要
このフレームワークは センテンス、パラグラフ、そして 画像 に対する密ベクトル表現を計算する簡単な方法を提供します。モデルは BERT / RoBERTa / XLM-RoBERTa 等のような transformer ネットワークに基づき、様々なタスクで最先端の性能を実現しています。テキストはベクトル空間に埋め込まれ、その結果、類似テキストは近接しコサイン類似度を使用して効率的に見つけられます。
私たちは、様々なユースケースに対して微調整された、100 言語以上に対するますます多くの 最先端の事前訓練済みモデル を提供しています。
更に、このフレームワークは貴方の特定のタスクで最大限の性能を実現するために、簡単な カスタム埋め込みモデルの微調整 を可能にしています。
完全なドキュメント については、www.SBERT.net をご覧ください。
以下の出版物はこのフレームワークに統合されています :
- Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks (EMNLP 2019)
Siamese BERT-Networks を使用したセンテンス埋め込み
- Making Monolingual Sentence Embeddings Multilingual using Knowledge Distillation (EMNLP 2020)
知識蒸留を使用した単言語センテンス埋め込みの多言語化
- Augmented SBERT: Data Augmentation Method for Improving Bi-Encoders for Pairwise Sentence Scoring Tasks (NAACL 2021)
増強 SBERT: ペア単位のセンテンス・スコアリング・タスク用の双方向エンコーダ改良のためのデータ増強法
- The Curse of Dense Low-Dimensional Information Retrieval for Large Index Sizes (arXiv 2020)
大規模インデックスサイズに対する密低次元情報検索の呪い
- TSDAE: Using Transformer-based Sequential Denoising Auto-Encoder for Unsupervised Sentence Embedding Learning (arXiv 2021)
TSDAE: 教師なしセンテンス埋め込み学習のための Transformer ベースの逐次型ノイズ除去オートエンコーダ
- BEIR: A Heterogenous Benchmark for Zero-shot Evaluation of Information Retrieval Models (arXiv 2021)
BEIR: 情報検索モデルのゼロショット評価のための異種ベンチマーク
インストール
Python 3.6 またはそれ以上、PyTorch 1.6.0 またはそれ以上、そして transformers v4.6.0 またはそれ以上を勧めます。Python 2.7 ではコードは動作しません。
pip でインストール
sentence-transformers を pip でインストールします :
pip install -U sentence-transformers
conda でインストール
sentence-transformers を conda でインストールできます :
conda install -c conda-forge sentence-transformers
ソースからインストール
代わりに、レポジトリ から最新版をクローンしてそれをソースコードから直接インストールすることもできます :
pip install -e .
Getting Started
ドキュメントの クイックスタート をご覧ください。
このサンプル は別のタスクに対してセンテンスを埋め込むために既に訓練済みの Sentence Transformer モデルを使用する方法を示します。
最初に事前訓練済みモデルをダウンロードします。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')
そして幾つかのセンテンスをモデルに提供します。
sentences = ['This framework generates embeddings for each input sentence',
'Sentences are passed as a list of string.',
'The quick brown fox jumps over the lazy dog.']
sentence_embeddings = model.encode(sentences)
And that’s it already. 今では埋め込みを持つ numpy 配列のリストを持ちます。
for sentence, embedding in zip(sentences, sentence_embeddings):
print("Sentence:", sentence)
print("Embedding:", embedding)
print("")
事前訓練済みモデル
100 言語以上に対する 事前訓練済みモデル の巨大なリストを提供しています。幾つかのモデルは汎用目的なモデルで、他のものは特定のユースケースに対して埋め込みを生成します。事前訓練済みモデルはモデル名を単に渡すことによりロードできます: SentenceTransformer(‘model_name’)
訓練
このフレームワークは貴方自身のセンテンス埋め込み手法を微調整することを可能にし、その結果タスク固有のセンテンス埋め込みを取得できます。貴方の固有のタスクのための最適なセンテンス埋め込みを得るために選択できる様々なオプションがあります。
貴方自身の埋め込みモデルをどのように訓練するからのイントロダクションについては 訓練概要 をご覧ください。様々なデータセットでモデルを訓練する方法の様々なサンプルを提供しています。
幾つかのハイライトは :
- BERT, RoBERTa, XLM-R, DistilBERT, Electra, BART, … を含む様々な transformer ネットワークのサポート。
- 多言語とマルチタスクの学習
- 最適なモデルを見つけるための訓練中の評価
- 10+ の損失関数 が意味的検索, 言い換えマイニング, 意味的類似性比較, クラスタリング, トリプレット損失, 対象損失に対するモデルを特別に調整することを可能にします。
パフォーマンス
私たちのモデルは、ツイート, Reddit, 電子メールのような困難なドメインを含む 15+ のデータセットで広範囲に評価されています。それらはすべての利用可能なセンテンス埋め込み法から圧倒的に ベストなパフォーマンス を実現しています。更に、スピードに最適化された 幾つかの 小さいモデル を提供しています。
アプリケーション例
このフレームワークを以下のために利用できます :
- センテンス埋め込みの計算
- 意味的テキスト類似性
- クラスタリング
- 言い換えマイニング
- 翻訳文マイニング
- 意味的検索
- Retrieve & Re-Rank
- テキスト要約
- 多言語画像検索, クラスタリング & 重複検出
and many more use-cases.
すべてのサンプルについては、examples/applications をご覧ください。
Citing & Authors
(訳注: 原文 参照)
以上