Was ist der BERT-as-a-reranker-Ansatz?
sobes.tech KI
Antwort von AI
BERT-als-Refiner — ist ein Ansatz in der Informationssuche, bei dem ein vortrainiertes BERT-Modell verwendet wird, um die Liste der im ersten Schritt erhaltenen Dokumente neu zu bewerten (umzuordnen). Zunächst liefert eine herkömmliche Suchmaschine (z.B. BM25) eine Reihe relevanter Dokumente für die Anfrage. Dann analysiert BERT die Paare Anfrage-Dokument, bewertet ihre Relevanz unter Berücksichtigung des Kontexts und der Semantik und ordnet die Dokumente neu, um die Rangqualität zu verbessern.
Dieser Ansatz ermöglicht eine höhere Suchgenauigkeit, insbesondere bei komplexen Anfragen, bei denen ein tiefer Kontext wichtig ist. Allerdings erfordert er erhebliche Rechenressourcen, weshalb er oft nur auf die Top-Ergebnisse der ersten Phase angewendet wird.
Anwendungsbeispiel:
from transformers import BertTokenizer, BertForSequenceClassification
import torch
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')
query = "Anwendungen des maschinellen Lernens"
documents = ["Einführung in ML", "Tutorial für Deep Learning", "Kochrezepte"]
# Die Vorab-Suche liefert Dokumente
# Jetzt bewertet BERT die Relevanz jedes Dokuments
scores = []
for doc in documents:
inputs = tokenizer.encode_plus(query, doc, return_tensors='pt')
outputs = model(**inputs)
score = outputs.logits.softmax(dim=1)[0][1].item() # Relevanzwahrscheinlichkeit
scores.append((doc, score))
# Dokumente nach Score absteigend sortieren
reranked = sorted(scores, key=lambda x: x[1], reverse=True)
print(reranked)