|
Download README.md from Writerslogic/narrative-multitask: direct link, hf CLI and curl.
- Browser
- Download file 4.7 kB
-
https://huggingface.co/Writerslogic/narrative-multitask/resolve/main/README.md
- Command line
-
hf download hf://Writerslogic/narrative-multitask/README.md
-
curl -L -o README.md https://huggingface.co/Writerslogic/narrative-multitask/resolve/main/README.md
4.7 kB
| license: apache-2.0 | |
| language: | |
| - en | |
| library_name: onnx | |
| base_model: FacebookAI/roberta-base | |
| tags: | |
| - onnx | |
| - coreference-resolution | |
| - quotation-attribution | |
| - named-entity-recognition | |
| - literary | |
| - narrative-lens | |
| datasets: | |
| - dbamman/litbank | |
| - Priya22/project-dialogism-novel-corpus | |
| # narrative-multitask (v2) | |
| One encoder, four heads, for English prose fiction. The export is consumed by the | |
| [narrative-lens](https://github.com/writerslogic/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 | |
| ```sh | |
| 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. | |