larc-iu/dmrst-ettin-400m-gum-12.1.0

Model

larc-iu/dmrst-ettin-400m-gum-12.1.0

0

7 commits

1 linked in READMEs

updated Oct 11, 2026

See the code

README

Dipo logo

larc-iu/dmrst-ettin-400m-gum-12.1.0

A pretrained DMRST parser trained with Dipo.

This model uses jhu-clsp/ettin-encoder-400m as its underlying encoder.

Data

GUM 12.1.0 (Georgetown University Multilayer corpus) (English). A multi-genre English corpus (academic, biography, fiction, interview, news, reddit, speech, textbook, vlog, voyage, whow) annotated for RST among many other layers.

Relation labels: 32 labels:

adversative-antithesis, adversative-concession, adversative-contrast, attribution-negative, attribution-positive, causal-cause, causal-result, context-background, context-circumstance, contingency-condition, elaboration-additional, elaboration-attribute, evaluation-comment, explanation-evidence, explanation-justify, explanation-motivation, joint-disjunction, joint-list, joint-other, joint-sequence, mode-manner, mode-means, organization-heading, organization-phatic, organization-preparation, purpose-attribute, purpose-goal, restatement-partial, restatement-repetition, same-unit, topic-question, topic-solutionhood

Metrics

SplitSegE2E SpanE2E NucE2E RelE2E FullGold-EDU SpanGold-EDU NucGold-EDU RelGold-EDU Full
dev94.667.653.942.041.972.359.546.646.4
test94.570.857.245.945.676.063.451.751.4

F1 x 100 under original Parseval, with trivial leaf spans excluded. E2E scores parse trees predicted from raw text, segmentation included. Gold-EDU scores them given the gold EDU segmentation. Seg is the per-token BeginSeg F1 computed during training, which can read up to about a point below the official DISRPT scorer's value. The checkpoint was selected on dev e2e_full_f1.

Usage

Install the library first with pip install dipo.

CLI

dipo dmrst predict \
    --hub-id larc-iu/dmrst-ettin-400m-gum-12.1.0 \
    --text 'Although the experiment was carefully designed, the results were inconclusive. We plan to repeat it tonight.'

To parse a raw .txt file or a directory of them instead, use --text-file <path> --output-dir out/.

Python

from dipo.rst.parsers.dmrst.modeling_dmrst import DMRSTParser

parser = DMRSTParser.from_pretrained("larc-iu/dmrst-ettin-400m-gum-12.1.0")
tree = parser.predict_from_text(
    "Although the experiment was carefully designed, the results were inconclusive. We plan to repeat it tonight."
)
print(tree.to_rs4_string())

Citation

If you use this model, please cite both the underlying paper:

@inproceedings{dmrst_paper,
  title = {DMRST: A Joint Framework for Document-Level Multilingual RST Discourse Segmentation and Parsing},
  author = {Zhengyuan Liu, Ke Shi, Nancy F. Chen},
  booktitle = {CODI 2021},
  url = {https://aclanthology.org/2021.codi-main.15/},
}

And the Dipo library:

@misc{gessler-dipo-2026,
  author       = {Gessler, Luke},
  title        = {{Dipo: The Discourse Parsing Omnibus}},
  year         = {2026},
  howpublished = {\url{https://github.com/larc-iu/dipo}},
}

Notes

  • Input: Raw running text. Line breaks and other whitespace are fine, so there is no need to tokenize or clean the text first.
  • Training: Trained on the training split only, with the checkpoint chosen on the dev split. Scores are from a single training run, and run-to-run variation on small test sets can be several points.
  • Line structure: The model reads text with all whitespace collapsed, so it cannot see line breaks itself. predict_from_text therefore also starts a new segment at each blank-line paragraph break and after short heading-like lines (break_at_paragraphs=False turns this off). Hard-wrapped prose is left alone.
  • License: Derived from jhu-clsp/ettin-encoder-400m, so use of these weights is subject to that model's terms: MIT.
  • Data terms: Trained on GUM 12.1.0. Its annotations are CC BY 4.0 and its texts carry the licenses of their sources, from CC BY to CC BY-NC-SA, with Reddit text available for non-commercial use only. Use for research.
  • Intended use: Research and analysis of text. The weights carry the terms of the base model and of the training corpus above, and the scores on this card come from this checkpoint and not from the runs reported in the accompanying paper.

Full training configuration

See below for the full training configuration this model was trained with.

{
  "train_dir": "data/gum_12.1.0_notok/train",
  "dev_dir": "data/gum_12.1.0_notok/dev",
  "test_dir": "data/gum_12.1.0_notok/test",
  "relation_types": [
    [
      "adversative-antithesis",
      "rst"
    ],
    [
      "adversative-concession",
      "rst"
    ],
    [
      "adversative-contrast",
      "multinuc"
    ],
    [
      "attribution-negative",
      "rst"
    ],
    [
      "attribution-positive",
      "rst"
    ],
    [
      "causal-cause",
      "rst"
    ],
    [
      "causal-result",
      "rst"
    ],
    [
      "context-background",
      "rst"
    ],
    [
      "context-circumstance",
      "rst"
    ],
    [
      "contingency-condition",
      "rst"
    ],
    [
      "elaboration-additional",
      "rst"
    ],
    [
      "elaboration-attribute",
      "rst"
    ],
    [
      "evaluation-comment",
      "rst"
    ],
    [
      "explanation-evidence",
      "rst"
    ],
    [
      "explanation-justify",
      "rst"
    ],
    [
      "explanation-motivation",
      "rst"
    ],
    [
      "joint-disjunction",
      "multinuc"
    ],
    [
      "joint-list",
      "multinuc"
    ],
    [
      "joint-other",
      "multinuc"
    ],
    [
      "joint-sequence",
      "multinuc"
    ],
    [
      "mode-manner",
      "rst"
    ],
    [
      "mode-means",
      "rst"
    ],
    [
      "organization-heading",
      "rst"
    ],
    [
      "organization-phatic",
      "rst"
    ],
    [
      "organization-preparation",
      "rst"
    ],
    [
      "purpose-attribute",
      "rst"
    ],
    [
      "purpose-goal",
      "rst"
    ],
    [
      "restatement-partial",
      "rst"
    ],
    [
      "restatement-repetition",
      "multinuc"
    ],
    [
      "same-unit",
      "multinuc"
    ],
    [
      "topic-question",
      "rst"
    ],
    [
      "topic-solutionhood",
      "rst"
    ]
  ],
  "relation_map": null,
  "model_name": "jhu-clsp/ettin-encoder-400m",
  "stride": 100,
  "encoder_window_size": null,
  "attention_type": "dot_product",
  "classifier_use_bias": true,
  "num_rnn_layers": 1,
  "encoder_dropout": 0.5,
  "decoder_dropout": 0.5,
  "labeler_dropout": 0.5,
  "doc_gru_dropout": 0.2,
  "label_input_pooling": "mean",
  "freeze_embeddings": false,
  "freeze_encoder_layers": 0,
  "peft": {
    "r": 16,
    "alpha": 32,
    "dropout": 0.05,
    "target_modules": "all-linear",
    "bias": "none",
    "dora": false,
    "modules_to_save": [
      "embed_tokens"
    ],
    "train_only_new_embedding_rows": true,
    "base_dtype": "float32",
    "gradient_checkpointing": false,
    "load_in_4bit": false,
    "bnb_4bit_quant_type": "nf4",
    "bnb_4bit_use_double_quant": true,
    "bnb_4bit_compute_dtype": "bfloat16"
  },
  "curriculum": {
    "type": "simple",
    "epochs": 100
  },
  "segmentation": {
    "pos_weight": 10,
    "start_loss": false,
    "scheme": "BIE",
    "loss": "crf",
    "dropout": 0.3
  },
  "detokenizer": null,
  "split_cjk_tokens": false,
  "dlw": {
    "temperature": 2,
    "window": 30
  },
  "lr": 0.0002,
  "encoder_lr": 0.0003,
  "grad_accum": 3,
  "amp": true,
  "empty_cache_between_docs": false,
  "checkpoint_decoder": false,
  "patience": 100,
  "patience_window": 1,
  "max_grad_norm": 20,
  "weight_decay": 0.01,
  "num_warmup_steps": 100,
  "num_warmup_epochs": 5,
  "log_every": 1,
  "begin_validation_epoch": 0,
  "validate_every": 1,
  "edu_loss_weight_exponent": 0,
  "run_name": "release-dmrst-ettin-400m-gum-full",
  "seed": 42,
  "val_metric_name": "e2e_full_f1"
}
dipo
discourse-parsing
dmrst

larc-iu/dmrst-ettin-400m-gum-12.1.0

Model

larc-iu/dmrst-ettin-400m-gum-12.1.0

0

7 commits

1 linked in READMEs

updated Oct 11, 2026

See the code

README

Dipo logo

larc-iu/dmrst-ettin-400m-gum-12.1.0

A pretrained DMRST parser trained with Dipo.

This model uses jhu-clsp/ettin-encoder-400m as its underlying encoder.

Data

GUM 12.1.0 (Georgetown University Multilayer corpus) (English). A multi-genre English corpus (academic, biography, fiction, interview, news, reddit, speech, textbook, vlog, voyage, whow) annotated for RST among many other layers.

Relation labels: 32 labels:

adversative-antithesis, adversative-concession, adversative-contrast, attribution-negative, attribution-positive, causal-cause, causal-result, context-background, context-circumstance, contingency-condition, elaboration-additional, elaboration-attribute, evaluation-comment, explanation-evidence, explanation-justify, explanation-motivation, joint-disjunction, joint-list, joint-other, joint-sequence, mode-manner, mode-means, organization-heading, organization-phatic, organization-preparation, purpose-attribute, purpose-goal, restatement-partial, restatement-repetition, same-unit, topic-question, topic-solutionhood

Metrics

SplitSegE2E SpanE2E NucE2E RelE2E FullGold-EDU SpanGold-EDU NucGold-EDU RelGold-EDU Full
dev94.667.653.942.041.972.359.546.646.4
test94.570.857.245.945.676.063.451.751.4

F1 x 100 under original Parseval, with trivial leaf spans excluded. E2E scores parse trees predicted from raw text, segmentation included. Gold-EDU scores them given the gold EDU segmentation. Seg is the per-token BeginSeg F1 computed during training, which can read up to about a point below the official DISRPT scorer's value. The checkpoint was selected on dev e2e_full_f1.

Usage

Install the library first with pip install dipo.

CLI

dipo dmrst predict \
    --hub-id larc-iu/dmrst-ettin-400m-gum-12.1.0 \
    --text 'Although the experiment was carefully designed, the results were inconclusive. We plan to repeat it tonight.'

To parse a raw .txt file or a directory of them instead, use --text-file <path> --output-dir out/.

Python

from dipo.rst.parsers.dmrst.modeling_dmrst import DMRSTParser

parser = DMRSTParser.from_pretrained("larc-iu/dmrst-ettin-400m-gum-12.1.0")
tree = parser.predict_from_text(
    "Although the experiment was carefully designed, the results were inconclusive. We plan to repeat it tonight."
)
print(tree.to_rs4_string())

Citation

If you use this model, please cite both the underlying paper:

@inproceedings{dmrst_paper,
  title = {DMRST: A Joint Framework for Document-Level Multilingual RST Discourse Segmentation and Parsing},
  author = {Zhengyuan Liu, Ke Shi, Nancy F. Chen},
  booktitle = {CODI 2021},
  url = {https://aclanthology.org/2021.codi-main.15/},
}

And the Dipo library:

@misc{gessler-dipo-2026,
  author       = {Gessler, Luke},
  title        = {{Dipo: The Discourse Parsing Omnibus}},
  year         = {2026},
  howpublished = {\url{https://github.com/larc-iu/dipo}},
}

Notes

  • Input: Raw running text. Line breaks and other whitespace are fine, so there is no need to tokenize or clean the text first.
  • Training: Trained on the training split only, with the checkpoint chosen on the dev split. Scores are from a single training run, and run-to-run variation on small test sets can be several points.
  • Line structure: The model reads text with all whitespace collapsed, so it cannot see line breaks itself. predict_from_text therefore also starts a new segment at each blank-line paragraph break and after short heading-like lines (break_at_paragraphs=False turns this off). Hard-wrapped prose is left alone.
  • License: Derived from jhu-clsp/ettin-encoder-400m, so use of these weights is subject to that model's terms: MIT.
  • Data terms: Trained on GUM 12.1.0. Its annotations are CC BY 4.0 and its texts carry the licenses of their sources, from CC BY to CC BY-NC-SA, with Reddit text available for non-commercial use only. Use for research.
  • Intended use: Research and analysis of text. The weights carry the terms of the base model and of the training corpus above, and the scores on this card come from this checkpoint and not from the runs reported in the accompanying paper.

Full training configuration

See below for the full training configuration this model was trained with.

{
  "train_dir": "data/gum_12.1.0_notok/train",
  "dev_dir": "data/gum_12.1.0_notok/dev",
  "test_dir": "data/gum_12.1.0_notok/test",
  "relation_types": [
    [
      "adversative-antithesis",
      "rst"
    ],
    [
      "adversative-concession",
      "rst"
    ],
    [
      "adversative-contrast",
      "multinuc"
    ],
    [
      "attribution-negative",
      "rst"
    ],
    [
      "attribution-positive",
      "rst"
    ],
    [
      "causal-cause",
      "rst"
    ],
    [
      "causal-result",
      "rst"
    ],
    [
      "context-background",
      "rst"
    ],
    [
      "context-circumstance",
      "rst"
    ],
    [
      "contingency-condition",
      "rst"
    ],
    [
      "elaboration-additional",
      "rst"
    ],
    [
      "elaboration-attribute",
      "rst"
    ],
    [
      "evaluation-comment",
      "rst"
    ],
    [
      "explanation-evidence",
      "rst"
    ],
    [
      "explanation-justify",
      "rst"
    ],
    [
      "explanation-motivation",
      "rst"
    ],
    [
      "joint-disjunction",
      "multinuc"
    ],
    [
      "joint-list",
      "multinuc"
    ],
    [
      "joint-other",
      "multinuc"
    ],
    [
      "joint-sequence",
      "multinuc"
    ],
    [
      "mode-manner",
      "rst"
    ],
    [
      "mode-means",
      "rst"
    ],
    [
      "organization-heading",
      "rst"
    ],
    [
      "organization-phatic",
      "rst"
    ],
    [
      "organization-preparation",
      "rst"
    ],
    [
      "purpose-attribute",
      "rst"
    ],
    [
      "purpose-goal",
      "rst"
    ],
    [
      "restatement-partial",
      "rst"
    ],
    [
      "restatement-repetition",
      "multinuc"
    ],
    [
      "same-unit",
      "multinuc"
    ],
    [
      "topic-question",
      "rst"
    ],
    [
      "topic-solutionhood",
      "rst"
    ]
  ],
  "relation_map": null,
  "model_name": "jhu-clsp/ettin-encoder-400m",
  "stride": 100,
  "encoder_window_size": null,
  "attention_type": "dot_product",
  "classifier_use_bias": true,
  "num_rnn_layers": 1,
  "encoder_dropout": 0.5,
  "decoder_dropout": 0.5,
  "labeler_dropout": 0.5,
  "doc_gru_dropout": 0.2,
  "label_input_pooling": "mean",
  "freeze_embeddings": false,
  "freeze_encoder_layers": 0,
  "peft": {
    "r": 16,
    "alpha": 32,
    "dropout": 0.05,
    "target_modules": "all-linear",
    "bias": "none",
    "dora": false,
    "modules_to_save": [
      "embed_tokens"
    ],
    "train_only_new_embedding_rows": true,
    "base_dtype": "float32",
    "gradient_checkpointing": false,
    "load_in_4bit": false,
    "bnb_4bit_quant_type": "nf4",
    "bnb_4bit_use_double_quant": true,
    "bnb_4bit_compute_dtype": "bfloat16"
  },
  "curriculum": {
    "type": "simple",
    "epochs": 100
  },
  "segmentation": {
    "pos_weight": 10,
    "start_loss": false,
    "scheme": "BIE",
    "loss": "crf",
    "dropout": 0.3
  },
  "detokenizer": null,
  "split_cjk_tokens": false,
  "dlw": {
    "temperature": 2,
    "window": 30
  },
  "lr": 0.0002,
  "encoder_lr": 0.0003,
  "grad_accum": 3,
  "amp": true,
  "empty_cache_between_docs": false,
  "checkpoint_decoder": false,
  "patience": 100,
  "patience_window": 1,
  "max_grad_norm": 20,
  "weight_decay": 0.01,
  "num_warmup_steps": 100,
  "num_warmup_epochs": 5,
  "log_every": 1,
  "begin_validation_epoch": 0,
  "validate_every": 1,
  "edu_loss_weight_exponent": 0,
  "run_name": "release-dmrst-ettin-400m-gum-full",
  "seed": 42,
  "val_metric_name": "e2e_full_f1"
}
dipo
discourse-parsing
dmrst