squad2-qa / src /models /always_no_answer_model.py
Kimis Perros
Initial deployment
461f64f
"""
Always-no-answer baseline: returns a standardized null Prediction for every question.
"""
from typing import Dict, Optional
from src.models.base_qa_model import QAModel
from src.etl.types import QAExample, Prediction
from src.config.model_configs import AlwaysNoAnswerModelConfig
class AlwaysNoAnswerQAModel(QAModel):
"""
Minimal baseline that predicts "" (no-answer) for all inputs.
"""
def __init__(self, config: AlwaysNoAnswerModelConfig) -> None:
super().__init__()
assert isinstance(
config, AlwaysNoAnswerModelConfig
), "Incompatible configuration object."
self.config = config
def train(
self,
train_examples: Optional[Dict[str, QAExample]] = None,
val_examples: Optional[Dict[str, QAExample]] = None,
) -> None:
"""
Nothing being explicitly trained for this model. Preserved for API consistency with super-class.
"""
return
def predict(self, examples: Dict[str, QAExample]) -> Dict[str, Prediction]:
assert isinstance(examples, dict), "Incompatible input examples type."
return {qid: Prediction.null(question_id=qid) for qid in examples.keys()}