{ "model_type": "contextualized_lemmatizer", "architecture": "ContextualizedLemmatizer", "framework": "pytorch", "language": "ang", "task": "lemmatization", "description": "Character-level encoder-decoder Transformer for Old English lemmatisation with a joint UPOS classification head. This is the Nerthus resource-enhanced retraining (condition C15_canonical): the architecture is unchanged from the published baseline, but the model is trained on a repaired gold standard (universe 'revised7') and decoded with a 10-best beam re-ranked by a soft prior over the released headword inventory. At inference the model is run in single-word (context-free) mode.", "char_vocab_size": 140, "num_pos_tags": 18, "d_model": 512, "nhead": 8, "num_encoder_layers": 4, "num_decoder_layers": 4, "num_sentence_layers": 2, "dim_feedforward": 1024, "dropout": 0.15, "max_word_length": 50, "max_sentence_length": 100, "num_parameters": 26514078, "num_trainable_parameters": 26437278, "weights_file": "model.pt", "weights_format": "raw_state_dict", "vocab_file": "char_vocab.json", "special_tokens": { "pad": "", "unk": "", "sos": "", "eos": "" }, "special_token_ids": { "pad": 0, "unk": 1, "sos": 2, "eos": 3 }, "pos_tags": [ "PAD", "NOUN", "VERB", "ADJ", "ADV", "PROPN", "PRON", "DET", "ADP", "AUX", "CCONJ", "SCONJ", "NUM", "PART", "INTJ", "PUNCT", "X", "SYM" ], "condition": "C15_canonical", "universe": "revised7", "decoding": { "strategy": "soft_dict_4.0", "beam_size": 10, "max_decode_length": 32, "length_penalty": 0.0, "lexicon_bonus": 4.0, "inventory_file": "lemma_inventory.json", "inventory_size": 42531 }, "input_normalisation": { "lowercase": true, "strip_macrons": true, "eth_to_thorn": false, "note": "Input word forms are lowercased and stripped of macrons before encoding. Eth is left as written in the input; it is unified with thorn in the output lemma only, because that is the convention of the training targets." }, "lemma_notation": { "case": "lowercase", "macrons": "removed", "eth": "unified with thorn", "form": "bare headword", "note": "Lemmas are emitted in the harmonised 'revised7' convention, not in the original corpus notation. Accuracy figures in this notation are not directly comparable with the published 67.58%." }, "training": { "epochs": 80, "epochs_run": 80, "best_epoch": 80, "batch_size": 24, "gradient_accumulation_steps": 3, "effective_batch_size": 72, "optimizer": "AdamW", "weight_decay": 0.01, "learning_rate": 0.00015, "lr_schedule": "cosine_annealing_with_warm_restarts", "lr_range": [1e-05, 0.00015], "num_cycles": 4, "warmup_fraction": 0.05, "early_stopping_patience": 20, "label_smoothing": 0.15, "pos_loss_weight": 0.2, "character_data_augmentation": "attested", "augmentation_probability": 0.2, "pretrained_encoder": true, "random_seed": 42, "steps_per_epoch": 1168, "total_steps": 93440, "training_instances": 84050, "training_condition": "corpus-only (YCOE prose and poetry plus ParCorOE), gold standard repaired in seven passes", "device": "mps", "wall_seconds": 9139.5 }, "performance": { "decoding": "beam10 + soft_dict_4.0", "test_lemma_accuracy": 0.8157, "test_pos_accuracy": 0.8279, "dev_lemma_accuracy": 0.818, "dev_pos_accuracy": 0.8239, "test_set_size": 10507, "dev_set_size": 10506, "greedy_test_lemma_accuracy": 0.7832, "beam10_test_lemma_accuracy": 0.7851, "oracle_in_beam10_test": 0.9537, "published_baseline_test_lemma_accuracy": 0.6758, "note": "Lemma accuracy is exact string match against the repaired 'revised7' targets and is not directly comparable with the published baseline's 67.58%, which is measured against the original corpus notation." } }