narrative-multitask (v2)
One encoder, four heads, for English prose fiction. The export is consumed by the
narrative-lens crate (ModelKind::NarrativeMultitask,
profile narrative_multitask_v1), which runs it on the native ONNX Runtime and, through tract, in WebAssembly.
| Head | Output | What it does |
|---|---|---|
entity_logits |
[1, L, 9] BIO over the CoNLL label set |
proper person spans (only PER carries training signal) |
nominal_logits |
[1, L, 3] O / B-NOM / I-NOM |
nominal person mentions ("her mother", "the old man") |
coref_scores |
[m, m] |
antecedent score of mention j for mention i (j < i); 0 is the no-antecedent score |
attribution_scores |
[q, m + 1] |
speaker score per quotation over the window's mentions; column 0 is "speaker not in window" |
Inputs: input_ids, attention_mask ([1, L], L <= 512), mention_starts, mention_ends, quote_starts, quote_ends
(int64 token positions, [CLS] at 0). Windows are 510 content tokens (windowTokens in manifest.json); the batch
axis is fixed at 1. Weights are dynamically quantized to int8 (126 MB). tokenizer.adapted.json is the RoBERTa
tokenizer with padding and truncation removed, as the crate requires; manifest.json carries the sha256 of both.
Training
Student: RoBERTa-base (FacebookAI/roberta-base), 3 epochs, lr 3e-5, 510-token windows on two shifted grids,
learned token-distance features in both pair heads. Teacher: DeBERTa-v3-large trained first on the same documents
(2 epochs, lr 2e-5); the student learns from gold labels plus the teacher's distributions, aligned through character
offsets. Data: the LitBank development split (proper, nominal, and pronoun mentions, coreference clusters, quotations
with speakers; CC BY 4.0), 24 novels of the Project Dialogism Novel Corpus (quotation speakers and alias
mentions; CC BY 4.0) plus shuffled alias lists from its character tables, and 100 unlabelled public-domain
novels from Project Gutenberg (29,214 windows) structured and soft-labelled by the teacher. The four PDNC
novels whose LitBank excerpt is in the LitBank holdout split were excluded, as were all LitBank source novels
from the Gutenberg selection.
Script: scripts/multitask_train.py in the narrative-lens repository; provenance in training.json.
Measurements
Unseen authors (pooled over an author-disjoint 5-fold split over LitBank, PDNC, and the PDNC alias-list documents; each fold's teacher also structures ~29,200 windows from the 100 unlabelled Gutenberg novels):
| student (pooled) | teacher (range across folds) | |
|---|---|---|
| Proper person spans, exact F1 | 0.822 | 0.633-0.906 |
| Nominal mentions, exact F1 | 0.708 | 0.604-0.686 |
| Antecedent accuracy, proper mentions (within window) | 0.937 | - |
| Antecedent accuracy, nominal mentions (within window) | 0.859 | - |
| Antecedent accuracy, pronouns (within window) | 0.935 | 0.925-0.954 |
| Quotation speaker accuracy | 0.854 | 0.849-0.898 |
The student is close to or ahead of its own teacher on every head except speaker accuracy, where the teacher stays a few points ahead. The teacher's token-head scores vary more across folds because LitBank's entity and nominal labels are its only supervision, trained on one window grid for two epochs against the student's two grids with LitBank repeated four times. LitBank development split through the narrative-lens pipeline (the model trained on these works, so this shows the integration, not generalization): supplied-cast pronoun resolution F1 0.848 (precision 0.861), explicit-mode speaker F1 0.699 (precision 0.787), against 0.786 and 0.657 for v1.
Use with narrative-lens
hf download Writerslogic/narrative-multitask --revision v2 --local-dir narrative-multitask-v2
cargo run --release --features onnx --example evaluate_literary -- inputs.json --narrative-model narrative-multitask-v2
In code: onnx::set_model_bytes_verified(ModelKind::NarrativeMultitask, &model, &tokenizer_adapted, &manifest);
continuity::coreference and craft::dialogue then use the model and keep their heuristics as the fallback.
Attribution
LitBank: David Bamman et al., CC BY 4.0. Project Dialogism Novel Corpus: Krishnapriya Vishnubhotla et al., CC BY 4.0. Base model RoBERTa (MIT); teacher DeBERTa-v3 (MIT). The weights are released under Apache-2.0.
Model tree for Writerslogic/narrative-multitask
Base model
FacebookAI/roberta-base