Instructions to use synthiumjp/sourcedrecall-parser-en with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Stanza
How to use synthiumjp/sourcedrecall-parser-en with Stanza:
import stanza stanza.download("sourcedrecall-parser-en") nlp = stanza.Pipeline("sourcedrecall-parser-en") - Notebooks
- Google Colab
- Kaggle
sourcedrecall English parser models (UD English-EWT, ONNX)
An English tokenizer, multi-word token expander, part-of-speech tagger, lemmatizer and dependency parser in the architecture of Stanza 1.14.0, trained only on openly licensed data and converted so they run on ONNX Runtime and numpy without PyTorch.
They are used by sourcedrecall, a local memory for AI assistants whose grammar rules read the user's messages through these parses. Running them without PyTorch cuts its install by about 600 MB.
What they were trained on
- Part-of-speech tagger and dependency parser: trained for sourcedrecall on
UD English-EWT v2.18 alone
(CC BY-SA 4.0), with the GloVe word vectors Stanza packages for English (100,000 words,
100 dimensions; GloVe is under the Open Data Commons Public Domain Dedication and
License), no character language model, using Stanza 1.14.0's training scripts
(
tools/stanza_ort/train_ewt.shin the sourcedrecall repository). The parser's training data was tagged by this tagger. - Tokenizer, multi-word token expander and lemmatizer: Stanza's own English EWT models
(
tokenize/ewt,mwt/ewt,lemma/ewt_nocharlm), trained by the Stanford NLP Group on UD English-EWT.
So every model here is trained on UD English-EWT and nothing else, and the archive
includes no data or vectors under a non-commercial licence. An earlier archive in this
repository (sourcedrecall-parser-en-stanza1.14.0.tar.gz, at commit 72e0cff) holds
Stanza's English "combined" models instead, which are partly trained on text under
non-commercial terms; sourcedrecall no longer uses it.
Accuracy
UD English-EWT test set, gold tokenization (tagging and parsing only), every word:
| UPOS | UAS | LAS | |
|---|---|---|---|
| these models | 96.41 | 91.05 | 88.83 |
| Stanza's own EWT models without a character model | 96.68 | 91.25 | 88.77 |
| Stanza's default English "combined" models | 96.77 | 92.20 | 90.04 |
In sourcedrecall, the same code with these models and with Stanza's combined models gave the same LoCoMo test score (854 of 1,307 questions; 44 questions only one got right, 44 only the other) and the same counts on its pasted-text sets (2026-10-15).
Same parses as Stanza
The runtime that loads these files (stanza_ort, in the sourcedrecall repository) was
checked against Stanza 1.14.0 on PyTorch with the same models on 7,755 texts (246,425
words): every LoCoMo conversation turn, the sourcedrecall benchmark cases, its parser
test sentences, and long and unusual inputs (lists, code mixed with prose, emoji,
8,000-character messages). Every field of every word (text, upos, xpos, feats, lemma,
head, deprel, character offsets) and every sentence split was identical, one text at a
time and in batches of 64. Checked on macOS arm64.
The PyTorch files the archive was converted from are in pytorch/ here, for that check
and for anyone who wants to use them with Stanza itself. The trained parser's saved
config has resolve_head_constraints removed: Stanza's training writes it as off, which
makes Stanza's pipeline skip the head repair it does for its own models.
Files
sourcedrecall-parser-en-ewt.tar.gz unpacks to:
| file | what it is |
|---|---|
tok.onnx |
tokenizer and sentence splitter network |
pos.onnx, pos_char.onnx |
part-of-speech and morphological features tagger, its character model |
dep.onnx, dep_char.onnx |
dependency parser (arc and label scorers), its character model |
pretrain_emb.npy |
the word vectors the tagger and parser use |
lemma.npz, mwt.npz |
weights of the lemmatizer and multi-word token sequence models |
config.json |
vocabularies, model settings and the lemma dictionaries |
NOTICE |
where each part comes from and its licence |
sha256 of the archive: 3cde3a9b29b6da81e72ad3208874fcdbb1961df82130829d3b8f7dd01ef362b1
How they were made
tools/stanza_ort/convert.py in the sourcedrecall repository loads the models with
Stanza 1.14.0 (STANZA_PACKAGES=ours, tools/stanza_ort/pkgs.py) and exports each
network with torch.onnx.export; two layers were rewritten in exactly equivalent form
for export (nn.Bilinear as an einsum, a boolean identity mask from arange).
tools/stanza_ort/parity.py is the comparison above.
Licence and credit
The model weights are released under CC BY-SA 4.0, the licence of the UD English-EWT data they are trained on. The conversion code and the runtime are Apache-2.0, in the sourcedrecall repository. The architecture, training code, and the tokenizer, multi-word token and lemma models are Stanza's, by the Stanford NLP Group (Apache-2.0).
Peng Qi, Yuhao Zhang, Yuhui Zhang, Jason Bolton and Christopher D. Manning. 2020. Stanza: A Python Natural Language Processing Toolkit for Many Human Languages. In Proceedings of ACL 2020: System Demonstrations.
Natalia Silveira, Timothy Dozat, Marie-Catherine de Marneffe, Samuel Bowman, Miriam Connor, John Bauer and Christopher D. Manning. 2014. A Gold Standard Dependency Corpus for English. In Proceedings of LREC 2014. (UD English-EWT)
Jeffrey Pennington, Richard Socher and Christopher D. Manning. 2014. GloVe: Global Vectors for Word Representation. In Proceedings of EMNLP 2014.