🚀 波兰语重排器大模型 - MSE
这是一个波兰语文本排序模型,它采用均方误差(MSE)蒸馏方法,在一个包含140万个查询和1000万个文档的大型文本对数据集上进行训练。该训练数据包含以下几个部分: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)。作为学生模型,我们选择了 [波兰语RoBERTa](https://huggingface.co/sdadas/polish - roberta - large - v2)。在MSE方法中,学生模型被训练以直接复制教师模型的输出。
🚀 快速开始
本模型可用于波兰语文本的排序任务,能在相关信息检索场景中对文本进行有效排序。
✨ 主要特性
- 基于大规模波兰语文本对数据集训练,数据涵盖多种类型的查询。
- 采用均方误差(MSE)蒸馏方法,学生模型学习教师模型的输出。
- 在波兰语信息检索基准测试的重排器类别中取得了较好的成绩。
📦 安装指南
暂未提及具体安装命令,跳过此章节。
💻 使用示例
基础用法(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-mse",
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-mse"
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 为 60.27 的成绩。详细结果请参阅 PIRB排行榜。
引用信息
@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许可证。