PM-AI/bi-encoder_msmarco_bert-base_german
PM-AI
Similitud de oraciones
Este modelo puede ser utilizado para búsqueda semántica y recuperación de documentos para encontrar pasajes relevantes basados en una consulta. Fue entrenado en un conjunto de datos de MSMARCO traducido al alemán mediante traducción automática con ejemplos negativos difíciles y la función de pérdida Margin MSE. La combinación de estos elementos resulta en un transformador de última generación para búsqueda asimétrica. El modelo puede ser utilizado fácilmente con la biblioteca Sentence Transformer.
Como usar
import json
import os
import urllib.request
import datasets
# ver https://huggingface.co/datasets/unicamp-dl/mmarco para los idiomas soportados
LANGUAGE = "german"
# Directorio de destino que contiene archivos compatibles con BEIR (https://github.com/beir-cellar/beir)
OUT_DIR = f"mmarco-google/{LANGUAGE}/"
os.makedirs(OUT_DIR, exist_ok=True)
# Descargar la traducción de la colección/corpus de msmarco basada en Google y escribir corpus.jsonl para compatibilidad con BEIR
mmarco_ds = datasets.load_dataset("unicamp-dl/mmarco", f"collection-{LANGUAGE}")
with open(os.path.join(OUT_DIR, "corpus.jsonl"), "w", encoding="utf-8") as out_file:
for entry in mmarco_ds["collection"]:
entry = {"_id": str(entry["id"]), "title": "", "text": entry["text"]}
out_file.write(f'{json.dumps(entry, ensure_ascii=False)}\n')
# Descargar la traducción de las consultas de msmarco basada en Google y escribir queries.jsonl para compatibilidad con BEIR
mmarco_ds = datasets.load_dataset("unicamp-dl/mmarco", f"queries-{LANGUAGE}")
mmarco_ds = datasets.concatenate_datasets([mmarco_ds["train"], mmarco_ds["dev.full"]])
with open(os.path.join(OUT_DIR, "queries.jsonl"), "w", encoding="utf-8") as out_file:
for entry in mmarco_ds:
entry = {"_id": str(entry["id"]), "text": entry["text"]}
out_file.write(f'{json.dumps(entry, ensure_ascii=False)}\n')
QRELS_DIR = os.path.abspath(os.path.join(OUT_DIR, "../qrels/"))
os.makedirs(QRELS_DIR, exist_ok=True)
# Descargar qrels desde URL en lugar del dataset de HF
# nota: los qrels no dependen del idioma
for link in ["https://huggingface.co/datasets/BeIR/msmarco-qrels/resolve/main/dev.tsv", "https://huggingface.co/datasets/BeIR/msmarco-qrels/resolve/main/train.tsv"]:
urllib.request.urlretrieve(link, os.path.join(QRELS_DIR, os.path.basename(link)))
Funcionalidades
- Búsqueda semántica
- Recuperación de documentos
- Entrenado con el conjunto de datos MSMARCO
- Ejemplos negativos difíciles
- Función de pérdida Margin MSE
- Compatible con la biblioteca Sentence Transformer
Casos de uso
- Búsqueda semántica en bases de datos de documentos.
- Recuperación de pasajes relevantes a partir de consultas.
- Desarrollar sistemas de preguntas y respuestas en alemán.
- Uso en múltiples dominios debido a la diversidad del conjunto de datos de entrenamiento.