🚀 用于MS MARCO的跨编码器 - 英德双语
这是一个用于英德双语的跨语言跨编码器模型,可用于段落重排序。它在MS Marco段落排序任务上进行了训练。
该模型可用于信息检索:请参阅SBERT.net检索与重排序。
训练代码可在本仓库中找到,详见train_script.py
。
🚀 快速开始
✨ 主要特性
- 跨语言能力:支持英德双语的段落重排序。
- 适用于信息检索:可用于信息检索场景中的段落重排序。
- 代码可用:提供训练代码,方便开发者进行进一步的研究和开发。
📦 安装指南
文档未提及安装步骤,跳过此章节。
💻 使用示例
基础用法
当你安装了SentenceTransformers后,你可以像这样使用该模型:
from sentence_transformers import CrossEncoder
model = CrossEncoder('model_name', max_length=512)
query = 'How many people live in Berlin?'
docs = ['Berlin has a population of 3,520,031 registered inhabitants in an area of 891.82 square kilometers.', 'New York City is famous for the Metropolitan Museum of Art.']
pairs = [(query, doc) for doc in docs]
scores = model.predict(pairs)
高级用法
使用transformers库,你可以像这样使用该模型:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model = AutoModelForSequenceClassification.from_pretrained('model_name')
tokenizer = AutoTokenizer.from_pretrained('model_name')
features = tokenizer(['How many people live in Berlin?', 'How many people live in Berlin?'], ['Berlin has a population of 3,520,031 registered inhabitants in an area of 891.82 square kilometers.', 'New York City is famous for the Metropolitan Museum of Art.'], padding=True, truncation=True, return_tensors="pt")
model.eval()
with torch.no_grad():
scores = model(**features).logits
print(scores)
📚 详细文档
性能评估
该模型的性能在三个数据集上进行了评估:
- TREC - DL19 EN - EN:原始的TREC 2019深度学习赛道:给定一个英文查询和1000篇文档(通过BM25词法搜索检索),根据文档的相关性对其进行排序。我们计算NDCG@10。BM25的得分是45.46,一个完美的重排序器可以达到95.47分。
- TREC - DL19 DE - EN:TREC - DL19的英文查询由一位德语母语人士翻译成了德语。我们对德语查询与原始TREC - DL19设置中的英文段落进行排序。我们计算NDCG@10。
- GermanDPR DE - DE:GermanDPR数据集提供了来自维基百科的德语查询和德语段落。我们对德语维基百科的280万段落进行了索引,并使用Elasticsearch的BM25词法搜索为每个查询检索了前100个最相关的段落。我们计算MRR@10。BM25的得分是35.85,一个完美的重排序器可以达到76.27分。
我们还使用相同的评估方法检查了双编码器的性能:使用查询和段落嵌入的余弦相似度对BM25词法搜索检索到的文档进行重排序。双编码器也可用于端到端的语义搜索。
模型名称 |
TREC - DL19 EN - EN |
TREC - DL19 DE - EN |
GermanDPR DE - DE |
每秒处理文档对数 |
BM25 |
45.46 |
- |
35.85 |
- |
跨编码器重排序器 |
|
|
|
|
[cross - encoder/msmarco - MiniLM - L6 - en - de - v1](https://huggingface.co/cross - encoder/msmarco - MiniLM - L6 - en - de - v1) |
72.43 |
65.53 |
46.77 |
1600 |
[cross - encoder/msmarco - MiniLM - L12 - en - de - v1](https://huggingface.co/cross - encoder/msmarco - MiniLM - L12 - en - de - v1) |
72.94 |
66.07 |
49.91 |
900 |
[svalabs/cross - electra - ms - marco - german - uncased](https://huggingface.co/svalabs/cross - electra - ms - marco - german - uncased)(仅德语) |
- |
- |
53.67 |
260 |
[deepset/gbert - base - germandpr - reranking](https://huggingface.co/deepset/gbert - base - germandpr - reranking)(仅德语) |
- |
- |
53.59 |
260 |
双编码器(重排序) |
|
|
|
|
[sentence - transformers/msmarco - distilbert - multilingual - en - de - v2 - tmp - lng - aligned](https://huggingface.co/sentence - transformers/msmarco - distilbert - multilingual - en - de - v2 - tmp - lng - aligned) |
63.38 |
58.28 |
37.88 |
940 |
[sentence - transformers/msmarco - distilbert - multilingual - en - de - v2 - tmp - trained - scratch](https://huggingface.co/sentence - transformers/msmarco - distilbert - multilingual - en - de - v2 - tmp - trained - scratch) |
65.51 |
58.69 |
38.32 |
940 |
[svalabs/bi - electra - ms - marco - german - uncased](https://huggingface.co/svalabs/bi - electra - ms - marco - german - uncased)(仅德语) |
- |
- |
34.31 |
450 |
[deepset/gbert - base - germandpr - question_encoder](https://huggingface.co/deepset/gbert - base - germandpr - question_encoder)(仅德语) |
- |
- |
42.55 |
450 |
注意:每秒处理文档对数表示在V100 GPU上每秒可以重排序的(查询,文档)对的数量。
📄 许可证
本项目采用Apache 2.0许可证。