A pretrained DMRST parser trained with Dipo.
This model uses xlm-roberta-base as its underlying encoder.
GCDT (Georgetown Chinese Discourse Treebank) (Chinese). A multi-genre Mandarin Chinese RST treebank using the GUM relation inventory. This model was trained on unspaced Chinese EDU text rebuilt from the DISRPT 2025 SpaceAfter annotations, to match raw input.
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
| Split | Seg | E2E Span | E2E Nuc | E2E Rel | E2E Full | Gold-EDU Span | Gold-EDU Nuc | Gold-EDU Rel | Gold-EDU Full |
|---|---|---|---|---|---|---|---|---|---|
| dev | 85.4 | 60.2 | 42.7 | 33.9 | 33.8 | 73.4 | 56.2 | 47.1 | 47.0 |
| test | 86.4 | 58.8 | 38.2 | 29.6 | 29.4 | 71.0 | 51.9 | 42.1 | 41.9 |
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.
Install the library first with pip install dipo.
dipo dmrst predict \
--hub-id larc-iu/dmrst-xlm-roberta-base-gcdt \
--text 'ιηη§ζεε»ηε«ηδΊδΈηεε±θΏζ₯οΌδΊΊε£θιΎεθΏη¨ε¨δΈηθε΄ε
ζ₯ε§εε±γ'
To parse a raw .txt file or a directory of them instead, use --text-file <path> --output-dir out/.
from dipo.rst.parsers.dmrst.modeling_dmrst import DMRSTParser
parser = DMRSTParser.from_pretrained("larc-iu/dmrst-xlm-roberta-base-gcdt")
tree = parser.predict_from_text(
"ιηη§ζεε»ηε«ηδΊδΈηεε±θΏζ₯οΌδΊΊε£θιΎεθΏη¨ε¨δΈηθε΄ε
ζ₯ε§εε±γ"
)
print(tree.to_rs4_string())
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}},
}
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.xlm-roberta-base, so use of these weights is subject to that model's terms: MIT.See below for the full training configuration this model was trained with.
{
"train_dir": "data/gcdt_notok/train",
"dev_dir": "data/gcdt_notok/dev",
"test_dir": "data/gcdt_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": "xlm-roberta-base",
"stride": 100,
"encoder_window_size": 300,
"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": true,
"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-xlmr-base-gcdt-full",
"seed": 42,
"val_metric_name": "e2e_full_f1"
}
A pretrained DMRST parser trained with Dipo.
This model uses xlm-roberta-base as its underlying encoder.
GCDT (Georgetown Chinese Discourse Treebank) (Chinese). A multi-genre Mandarin Chinese RST treebank using the GUM relation inventory. This model was trained on unspaced Chinese EDU text rebuilt from the DISRPT 2025 SpaceAfter annotations, to match raw input.
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
| Split | Seg | E2E Span | E2E Nuc | E2E Rel | E2E Full | Gold-EDU Span | Gold-EDU Nuc | Gold-EDU Rel | Gold-EDU Full |
|---|---|---|---|---|---|---|---|---|---|
| dev | 85.4 | 60.2 | 42.7 | 33.9 | 33.8 | 73.4 | 56.2 | 47.1 | 47.0 |
| test | 86.4 | 58.8 | 38.2 | 29.6 | 29.4 | 71.0 | 51.9 | 42.1 | 41.9 |
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.
Install the library first with pip install dipo.
dipo dmrst predict \
--hub-id larc-iu/dmrst-xlm-roberta-base-gcdt \
--text 'ιηη§ζεε»ηε«ηδΊδΈηεε±θΏζ₯οΌδΊΊε£θιΎεθΏη¨ε¨δΈηθε΄ε
ζ₯ε§εε±γ'
To parse a raw .txt file or a directory of them instead, use --text-file <path> --output-dir out/.
from dipo.rst.parsers.dmrst.modeling_dmrst import DMRSTParser
parser = DMRSTParser.from_pretrained("larc-iu/dmrst-xlm-roberta-base-gcdt")
tree = parser.predict_from_text(
"ιηη§ζεε»ηε«ηδΊδΈηεε±θΏζ₯οΌδΊΊε£θιΎεθΏη¨ε¨δΈηθε΄ε
ζ₯ε§εε±γ"
)
print(tree.to_rs4_string())
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}},
}
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.xlm-roberta-base, so use of these weights is subject to that model's terms: MIT.See below for the full training configuration this model was trained with.
{
"train_dir": "data/gcdt_notok/train",
"dev_dir": "data/gcdt_notok/dev",
"test_dir": "data/gcdt_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": "xlm-roberta-base",
"stride": 100,
"encoder_window_size": 300,
"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": true,
"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-xlmr-base-gcdt-full",
"seed": 42,
"val_metric_name": "e2e_full_f1"
}