Sentence Transformers 2.2 : 概要

Sentence Transformers 2.2 : 概要 (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 11/22/2022 (v2.2.2)

* 本ページは、UKPLab/sentence-transformers の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

  • 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
  • sales-info@classcat.com  ;  Web: www.classcat.com  ;   ClassCatJP

 

Sentence Transformers 2.2 : 概要

このフレームワークは センテンスパラグラフ、そして 画像 に対する密ベクトル表現を計算する簡単な方法を提供します。モデルは BERT / RoBERTa / XLM-RoBERTa 等のような transformer ネットワークに基づき、様々なタスクで最先端の性能を実現しています。テキストはベクトル空間に埋め込まれ、その結果、類似テキストは近接しコサイン類似度を使用して効率的に見つけられます。

私たちは、様々なユースケースに対して微調整された、100 言語以上に対するますます多くの 最先端の事前訓練済みモデル を提供しています。

更に、このフレームワークは貴方の特定のタスクで最大限の性能を実現するために、簡単な カスタム埋め込みモデルの微調整 を可能にしています。

完全なドキュメント については、www.SBERT.net をご覧ください。

以下の出版物はこのフレームワークに統合されています :

 

インストール

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+ のデータセットで広範囲に評価されています。それらはすべての利用可能なセンテンス埋め込み法から圧倒的に ベストなパフォーマンス を実現しています。更に、スピードに最適化された 幾つかの 小さいモデル を提供しています。

>> 事前訓練済みモデルの完全なリスト

 

アプリケーション例

このフレームワークを以下のために利用できます :

and many more use-cases.

すべてのサンプルについては、examples/applications をご覧ください。

 

Citing & Authors

(訳注: 原文 参照)

 

以上