Extraction-Based MRC
La risposta esiste sempre come span all’interno del contesto dato. Invece di generare la risposta, il problema si restringe a trovare la risposta nel contesto. es., SQuAD, KorQuAD, NewsQA, Natural Questions 
Scaricare questi dataset da HuggingFace Datasets è il modo più semplice.
Metriche
Exact Match (EM) Score
Dà 1 punto solo se il valore predetto e la risposta corrispondono esattamente a livello di carattere. 0 punti se anche un solo carattere è diverso.
F1 score
Calcolato come rapporto di sovrapposizione tra predizione e risposta, quindi il range del punteggio è [0, 1]. 
Panoramica

Pre-processing
Tokenization
- Recentemente, il Byte Pair Encoding (BPE) è molto usato.
- Risolve i problemi di Out-of-vocabulary (OOV)
- Vantaggi informatici (?)
- Si userà il WordPiece Tokenizer tra le varianti BPE
- Segmenta in base ai token più frequenti
Attention mask
- Si verifica nel Positional Embedding
- Di solito 0 significa ignorare, 1 significa includere nel calcolo
Token type IDs
- La Question riceve 0, il Context riceve 1 come mask, indirizzando il modello a cercare la risposta solo nella zona dove appare 1
- Quindi anche i token PAD ricevono 0
Posizione della risposta Dopo la tokenizzazione, l’indice della risposta cambia. Serve preprocessing per questo. Di solito servono solo gli indici di inizio e fine, quindi basta trovare lo span che contiene la risposta.
Fine-tuning

Si modifica il layer di output di BERT in modo che ogni token nel Context produca due valori:
- Probabilità che questo token sia il token di inizio della risposta
- Probabilità che questo token sia il token di fine della risposta
Una volta calcolati tutti i valori di probabilità, si può calcolare la cross-entropy loss rispetto al ground truth. Il resto procede come al solito: si applica softmax e si calcola la negative log likelihood per il training. ref
Post-processing
Rimuovere risposte impossibili
- La posizione finale è prima della posizione iniziale
- La posizione predetta è fuori dal range del contesto
- Più lunga di max_answer_length
Trovare la risposta ottimale
- Trovare i top N ciascuno dalle predizioni di posizione start/end per score (logits).
- Rimuovere le combinazioni start/end impossibili.
- Ordinare le combinazioni possibili per somma degli score in ordine decrescente.
- Selezionare la combinazione con lo score più alto come predizione finale.
- Se serve il top-k, restituirle in ordine.