🚀 polish-reranker-large-ranknet
このモデルは、140万のクエリと1000万のドキュメントからなる大規模なテキストペアデータセットで、RankNet損失を用いて学習されたポーランド語のテキストランキングモデルです。学習データは以下の部分で構成されています:1) ポーランド語版のMS MARCO学習分割データ(80万クエリ);2) ポーランド語に翻訳されたELI5データセット(50万クエリ以上);3) ポーランド語の医療関連の質問と回答のコレクション(約10万クエリ)。
教師モデルとして、MT5 - XXLアーキテクチャに基づく大規模な多言語リランカーである[unicamp - dl/mt5 - 13b - mmarco - 100k](https://huggingface.co/unicamp - dl/mt5 - 13b - mmarco - 100k)を使用し、学生モデルとして[Polish RoBERTa](https://huggingface.co/sdadas/polish - roberta - large - v2)を選択しました。
一般的に使用されるポイントワイズ損失が各クエリ - ドキュメントペアを独立して扱うのとは異なり、RankNet法はクエリとドキュメントのペアに基づいて損失を計算します。具体的には、クエリに対するドキュメントの関連性でソートされたドキュメントの相対順序に基づいて損失が計算されます。
リランカーを学習するために、教師モデルを使用して、各クエリに対して検索段階で抽出されたドキュメントの関連性を評価しました。その後、これらのドキュメントを関連性スコアでソートし、クエリと各クエリに対する20個のドキュメントの順序付きリストからなるデータセットを取得しました。
💡 この方法は非常に効果的であることが証明されています。提供されるモデルは、パラメータが教師モデルの1/30で、推論速度が33倍速いにもかかわらず、ポーランド語情報検索ベンチマークで教師モデルを上回っています! 💡
🚀 クイックスタート
このモデルは、ポーランド語のテキストランキングに特化しており、大規模なデータセットで学習された効果的なモデルです。以下に具体的な使用方法を説明します。
✨ 主な機能
- ポーランド語のテキストランキングに特化したモデルです。
- RankNet損失を用いて学習され、クエリとドキュメントの相対順序に基づいて損失を計算します。
- 教師モデルに比べてパラメータが少なく、高速でありながら、ポーランド語情報検索ベンチマークで優れた性能を発揮します。
💻 使用例
基本的な使用法 (Sentence - Transformers)
sentence - transformersを使用して、以下のようにモデルを使用できます。
from sentence_transformers import CrossEncoder
import torch.nn
query = "Jak dożyć 100 lat?"
answers = [
"Trzeba zdrowo się odżywiać i uprawiać sport.",
"Trzeba pić alkohol, imprezować i jeździć szybkimi autami.",
"Gdy trwała kampania politycy zapewniali, że rozprawią się z zakazem niedzielnego handlu."
]
model = CrossEncoder(
"sdadas/polish-reranker-large-ranknet",
default_activation_function=torch.nn.Identity(),
max_length=512,
device="cuda" if torch.cuda.is_available() else "cpu"
)
pairs = [[query, answer] for answer in answers]
results = model.predict(pairs)
print(results.tolist())
高度な使用法 (Huggingface Transformers)
Huggingface Transformersを使用して、以下のようにモデルを使用できます。
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import numpy as np
query = "Jak dożyć 100 lat?"
answers = [
"Trzeba zdrowo się odżywiać i uprawiać sport.",
"Trzeba pić alkohol, imprezować i jeździć szybkimi autami.",
"Gdy trwała kampania politycy zapewniali, że rozprawią się z zakazem niedzielnego handlu."
]
model_name = "sdadas/polish-reranker-large-ranknet"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
texts = [f"{query}</s></s>{answer}" for answer in answers]
tokens = tokenizer(texts, padding="longest", max_length=512, truncation=True, return_tensors="pt")
output = model(**tokens)
results = output.logits.detach().numpy()
results = np.squeeze(results)
print(results.tolist())
📚 ドキュメント
評価結果
このモデルは、ポーランド語情報検索ベンチマークのリランカーカテゴリでNDCG@10が62.65を達成しています。詳細な結果はPIRB Leaderboardを参照してください。
引用
@article{dadas2024assessing,
title={Assessing generalization capability of text ranking models in Polish},
author={Sławomir Dadas and Małgorzata Grębowiec},
year={2024},
eprint={2402.14318},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
📄 ライセンス
このモデルは、Apache - 2.0ライセンスの下で提供されています。