🚀 [SwissBERT 文埋め込みモデル]
このモデルは、Sentence SwissBERTで、自己教師付き学習のSimCSEを用いてSwissBERTをファインチューニングし、文章埋め込みを行うためのモデルです。2023年までの約150万件のスイスのニュース記事を使用して訓練されています。
🚀 クイックスタート
SwissBERT モデルは、自己教師付きの SimCSE (Gao et al., EMNLP 2021) を用いて、文章埋め込みのためにファインチューニングされました。訓練には、2023年までの約150万件のスイスのニュース記事 (Swissdox@LiRI から取得) が使用されています。Sentence Transformers のアプローチ (Reimers and Gurevych, 2019) に従い、最後の隠れ層の平均 (pooler_type=avg) が文章表現として使用されます。

✨ 主な機能
このモデルは、ドイツ語 (de_CH)、フランス語 (fr_CH)、イタリア語 (it_CH)、ロマンシュ語 (rm_CH) の文章埋め込みを生成することができます。また、文章の意味的な類似度を計算することもできます。
📦 インストール
このモデルを使用するには、transformers
ライブラリをインストールする必要があります。
pip install transformers
💻 使用例
基本的な使用法
import torch
from transformers import AutoModel, AutoTokenizer
model_name = "jgrosjean-mathesis/sentence-swissbert"
model = AutoModel.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
def generate_sentence_embedding(sentence, language):
if "de" in language:
model.set_default_language("de_CH")
if "fr" in language:
model.set_default_language("fr_CH")
if "it" in language:
model.set_default_language("it_CH")
if "rm" in language:
model.set_default_language("rm_CH")
inputs = tokenizer(sentence, padding=True, truncation=True, return_tensors="pt", max_length=512)
with torch.no_grad():
outputs = model(**inputs)
token_embeddings = outputs.last_hidden_state
attention_mask = inputs['attention_mask'].unsqueeze(-1).expand(token_embeddings.size()).float()
sum_embeddings = torch.sum(token_embeddings * attention_mask, 1)
sum_mask = torch.clamp(attention_mask.sum(1), min=1e-9)
embedding = sum_embeddings / sum_mask
return embedding
sentence_0 = "Wir feiern am 1. August den Schweizer Nationalfeiertag."
sentence_0_embedding = generate_sentence_embedding(sentence_0, language="de")
print(sentence_0_embedding)
高度な使用法
from sklearn.metrics.pairwise import cosine_similarity
sentence_1 = ["Der Zug kommt um 9 Uhr in Zürich an."]
sentence_2 = ["Le train arrive à Lausanne à 9h."]
embedding_1 = generate_sentence_embedding(sentence_1, language="de")
embedding_2 = generate_sentence_embedding(sentence_2, language="fr")
cosine_score = cosine_similarity(embedding_1, embedding_2)
print("The cosine score for", sentence_1, "and", sentence_2, "is", cosine_score)
📚 ドキュメント
モデルの詳細
- 開発者: Juri Grosjean
- モデルタイプ: XMOD
- 言語: de_CH, fr_CH, it_CH, rm_CH
- ライセンス: Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
- ファインチューニング元のモデル: SwissBERT
バイアス、リスク、制限事項
このモデルはニュース記事のみで訓練されているため、他のテキストクラスでは性能が低下する可能性があります。また、スイス関連のコンテキストに特化しているため、それ以外のテキストでは性能が低下する可能性があります。さらに、このモデルは機械翻訳タスクで訓練や評価されていません。
訓練の詳細
訓練データ
2023年までの Swissdox@LiRIデータベース 内のドイツ語、フランス語、イタリア語、ロマンシュ語のドキュメント。
訓練手順
このモデルは、自己教師付きの SimCSE を用いてファインチューニングされました。正のシーケンスペアは、記事本文とそのタイトルおよびリードで構成され、ハードネガティブは使用されていません。
ファインチューニングスクリプトは こちら からアクセスできます。
訓練ハイパーパラメータ
- エポック数: 1
- 学習率: 1e-5
- バッチサイズ: 512
- 温度: 0.05
評価
テストデータ
2つの評価タスクでは、Kew et al. (2023) によって作成された 20 Minutenデータセット が使用されています。このデータセットには、トピックタグと要約付きのスイスのニュース記事が含まれています。データセットの一部は、Google Cloud APIを使用してフランス語、イタリア語に自動翻訳され、Textshuttle APIを使用してロマンシュ語に翻訳されています。
文書検索による評価
各文書の要約と内容に対して埋め込みを計算します。その後、各要約と内容の埋め込みペア間のコサイン類似度スコアを最大化することで、埋め込みをマッチングさせます。
性能は、正解マッチ数と総マッチ数の比率である精度で測定されます。スクリプトは こちら で見つけることができます。
テキスト分類による評価
定義されたトピックタグ付きの記事を10カテゴリにマッピングし、コーパスからフィルタリングして、訓練データ (80%) とテストデータ (20%) に分割します。その後、訓練データとテストデータに対して埋め込みを設定します。テストデータは、k近傍法を使用して訓練データを用いて分類されます。スクリプトは こちら で見つけることができます。
注: フランス語、イタリア語、ロマンシュ語の場合、訓練データはドイツ語のままで、テストデータは翻訳されたもので構成されています。これにより、モデルの多言語間転移能力に関する洞察が得られます。
評価結果
Sentence SwissBERTは、これらのタスクで最も性能の高い多言語Sentence-BERTモデル (distiluse-base-multilingual-cased) と同等またはそれ以上の結果を達成しています。イタリア語のテキスト分類を除くすべての評価タスクで、それを上回っています。
評価タスク |
Swissbert |
|
Sentence Swissbert |
|
Sentence-BERT |
|
|
精度 |
F1スコア |
精度 |
F1スコア |
精度 |
F1スコア |
文書検索 (DE) |
87.20 % |
-- |
93.40 % |
-- |
91.80 % |
-- |
文書検索 (FR) |
84.97 % |
-- |
93.99 % |
-- |
93.19 % |
-- |
文書検索 (IT) |
84.17 % |
-- |
92.18 % |
-- |
91.58 % |
-- |
文書検索 (RM) |
83.17 % |
-- |
91.58 % |
-- |
73.35 % |
-- |
テキスト分類 (DE) |
-- |
77.93 % |
-- |
78.49 % |
-- |
77.23 % |
テキスト分類 (FR) |
-- |
69.62 % |
-- |
77.18 % |
-- |
76.83 % |
テキスト分類 (IT) |
-- |
67.09 % |
-- |
76.65 % |
-- |
76.90 % |
テキスト分類 (RM) |
-- |
43.79 % |
-- |
77.20 % |
-- |
65.35 % |
ベースライン
ベースラインは、元のSwissBERTモデルの最後の隠れ層の平均プーリング埋め込みと、(これらのタスクで) 最も性能の高いSentence-BERTモデル distiluse-base-multilingual-cased-v1 を使用しています。
📄 ライセンス
このモデルは、Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) ライセンスの下で提供されています。