Scorery semantyczne
BERTScore i miary embeddingowe
Aktualizacja: 11 października 2026
Podobieństwo znaczeń zamiast dopasowania tokenów
BERTScore (Zhang i in.) porównuje wyjście z referencją w przestrzeni embeddingów: każdy token jednego tekstu dopasowuje się do najbliższego tokenu drugiego, a wynik to F-score ważony idf. Parafraza „Kot siedzi na macie" / „Kot przysiadł na dywaniku" dostanie wysoki wynik, którego n-gramy nigdy by nie dały.
Wzór
Wagi idf redukują wpływ tokenów częstych („jest", „w"), które dominują podobieństwo kosinusowe. Dodatkowo autorzy proponują przeskalowanie względem baseline'u (losowe pary tekstów), by surowa wartość cosinusa znaczyła to samo w różnych modelach embeddingowych. Dodatkowa zaleta: embeddingi wielojęzyczne ocenią parę tekstów w dwóch różnych językach, czego n-gramy w ogóle nie potrafią.
Implementacja (szkic)
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("all-MiniLM-L6-v2")
ref = model.encode("Kot siedzi na macie.")
hyp = model.encode("Kot przysiadł na dywaniku.")
print(float(ref @ hyp.T))Pełny BERTScore dodaje do tego dopasowanie greedy token po tokenie oraz wagi idf — nie używaj gołego cosinusa zdań jako substytutu.
Kiedy wybierać miary embeddingowe
Wybieraj je, gdy chcesz taniej niż sędzia-LLM karać parafrazy w tłumaczeniu lub streszczeniu i gdy masz korpus do policzenia idf. Nie nadają się do weryfikacji faktów, zadań matematycznych ani oceny zgodności z instrukcją — tam potrzebny jest sędzia lub testy. W praktyce BERTScore bywa używany obok n-gramów: n-gramy pilnują formy, embeddingi — znaczenia.
Pułapki
- wybór modelu embeddingów — wyniki zależą od modelu; podawaj nazwę i wersję;
- idf wymaga korpusu — na pojedynczej parze zdań wagi degenerują się do równych;
- podobieństwo ≠ poprawność — hallucynacja stylistycznie zbliżona do referencji dostanie wysoką notę;
- koszt — embeddingi są tańsze niż sędzia-LLM, ale droższe niż n-gramy.
Zobacz też: BERTScore, F1, Scorery RAG.