[BUG] Token F1 ignores repeated words in predictions and references

Aperta Adatta ai principianti
#1,441 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@salma2vec ci sta già lavorando.

Dal 20/10/2026.

  • #1443 di @salma2vec — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
testing-qa

Direzione di ricerca

Inizia con F1_score in lighteval/metrics/metrics_sample.py e confronta il calcolo della sovrapposizione dei token con lo scorer SQuAD collegato. Aggiungi o aggiorna test offline per i token ripetuti nelle predizioni e nei riferimenti, usando i due esempi dell’issue; il lavoro è concluso quando restituiscono 2/3 e 0.8, preservando il comportamento di normalizzazione e aggregazione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Describe the bug

F1_score converts the reference and prediction to sets before computing overlap. Repeated tokens disappear, so an answer with extra repetitions can receive a perfect score. The class documents bag-of-words F1 and also supplies the multilingual QA F1 metric.

To Reproduce

from lighteval.metrics.metrics_sample import F1_score
from lighteval.models.model_output import ModelResponse
from lighteval.tasks.requests import Doc

for gold, prediction in [("red blue", "red red red blue"), ("red red blue", "red blue")]:
    print(F1_score().compute(
        Doc(query="Which colors?", choices=[gold], gold_index=0),
        ModelResponse(text=[prediction]),
    ))

Actual: 1.0 for both cases. This runs offline without a model.

Expected behavior

Token F1 should be 2/3 and 0.8, respectively: count overlapping token occurrences and use the original token lengths for precision and recall. This matches the official SQuAD scorer.

The fix can preserve normalization and aggregation over references/predictions. This is separate from the empty-reference behavior in #1353 / #1354; that behavior can remain unchanged here.

Version info

Main commit 7fa19dc6f53a713ba8bb6541e7ed66dad2e24fd7, lighteval 0.13.1.dev0, Python 3.12 on macOS. Installed the declared development dependencies.

Lingua principale
Python
Stelle
2.6k
Fork
605
Merge medio
2g 3h
PR unite (30g)
3

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di huggingface/lighteval

Tutte le issue di huggingface/lighteval

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.