🚀 用於MS MARCO的跨編碼器 - 英德雙語
這是一個用於英德雙語的跨語言跨編碼器模型,可用於段落重排序。它在MS Marco段落排序任務上進行了訓練。
該模型可用於信息檢索:請參閱SBERT.net檢索與重排序。
訓練代碼可在本倉庫中找到,詳見train_script.py
。
🚀 快速開始
本模型可用於英德雙語的段落重排序和信息檢索任務,以下將介紹不同庫的使用方法。
✨ 主要特性
- 跨語言支持:支持英德雙語,可進行跨語言的段落重排序。
- 信息檢索:可用於信息檢索任務。
- 代碼可用:提供訓練代碼,方便開發者進行進一步的開發和優化。
📦 安裝指南
使用本模型前,需要安裝相應的庫。以SentenceTransformers
為例,可使用以下命令進行安裝:
pip install sentence-transformers
若使用transformers
庫,可使用以下命令安裝:
pip install transformers
💻 使用示例
基礎用法
使用SentenceTransformers庫
當你安裝了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庫
使用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許可證。