hunterschep commited on
Commit
7fda2a5
·
verified ·
1 Parent(s): 2bdc903

Publish NLLB SPM8k private no-Bible v3 best checkpoint (20260809-210523)

Browse files
README.md CHANGED
@@ -4,7 +4,6 @@ library_name: transformers
4
  pipeline_tag: translation
5
  base_model: facebook/nllb-200-distilled-600M
6
  language:
7
- - eng
8
  - ami
9
  - bnn
10
  - ckv
@@ -20,232 +19,174 @@ language:
20
  - tsu
21
  - xnb
22
  - xsy
 
23
  tags:
24
  - translation
25
- - nllb
26
  - nllb-200
27
- - low-resource
28
- - endangered-languages
29
  - formosan-languages
30
- - sentencepiece
31
- - private-no-bible
32
  metrics:
33
  - bleu
34
- - chrf2
35
  - ter
36
  model-index:
37
  - name: nllb200-formosan-en-spm8k
38
  results:
39
  - task:
40
- name: Machine Translation
41
  type: translation
 
42
  dataset:
43
- name: FormosanBank English private no-Bible hard split
44
- type: custom
 
45
  metrics:
46
- - name: BLEU
47
- type: bleu
48
- value: 13.0773
49
- args:
50
- direction: f2en
51
- samples: 58129
52
- tokenize: 13a
53
- - name: chrF2
54
- type: chrf2
55
- value: 31.1654
56
- args:
57
- direction: f2en
58
- samples: 58129
59
- - name: TER
60
- type: ter
61
- value: 86.4966
62
- args:
63
- direction: f2en
64
- samples: 58129
65
  ---
66
 
67
  # nllb200-formosan-en-spm8k
68
 
69
- **Base model:** [`facebook/nllb-200-distilled-600M`](https://huggingface.co/facebook/nllb-200-distilled-600M)
70
- **Direction:** **Formosan -> English**
71
- **Companion model:** [`FormosanBank/nllb200-en-formosan-spm8k`](https://huggingface.co/FormosanBank/nllb200-en-formosan-spm8k)
72
- **Release:** private no-Bible SPM8k flight `20260712-232900`, validation-selected step `270,000`
73
 
74
- This directional checkpoint replaces the earlier release with the strongest `private_no_bible` model from the
75
- fully rebuilt FormosanBank MT pipeline. It uses an 8,192-piece Formosan-aware SentencePiece extension and explicit
76
- direction, source-language, source-domain, and dialect control tags.
 
77
 
78
- ## Supported Languages
79
 
80
- | Language | NLLB code |
81
  |---|---|
82
- | English | `eng_Latn` |
83
- | Amis | `ami_Latn` |
84
- | Bunun | `bnn_Latn` |
85
- | Kavalan | `ckv_Latn` |
86
- | Rukai | `dru_Latn` |
87
- | Paiwan | `pwn_Latn` |
88
- | Puyuma | `pyu_Latn` |
89
- | Thao | `ssf_Latn` |
90
- | Saaroa | `sxr_Latn` |
91
- | Sakizaya | `szy_Latn` |
92
- | Tao / Yami | `tao_Latn` |
93
- | Atayal | `tay_Latn` |
94
- | Seediq | `trv_Latn` |
95
- | Tsou | `tsu_Latn` |
96
- | Kanakanavu | `xnb_Latn` |
97
- | Saisiyat | `xsy_Latn` |
98
-
99
- ## Input Format
100
-
101
- Prefix every source with:
102
-
103
- `<to_eng> <src_LANG> <dom_BUCKET> <dialect_DIALECT>`
104
-
105
- Example:
106
-
107
- `<to_eng> <src_ami> <dom_unknown> <dialect_default> Pa'araw cingra to demak nira.`
108
-
109
- Use `<dom_unknown>` and `<dialect_default>` when metadata is unavailable.
110
 
111
  ## Usage
112
 
113
- Use the slow `NllbTokenizer` (`use_fast=False` with `AutoTokenizer`). These checkpoints were trained with
114
- `transformers==4.56.1`; fast-tokenizer added-token IDs can differ from the slow tokenizer IDs used in training.
115
- NLLB generation must start with the tokenizer EOS ID and force the target-language BOS ID.
116
-
117
  ```python
118
  import torch
119
  from transformers import AutoModelForSeq2SeqLM, NllbTokenizer
 
 
120
 
121
  model_id = "FormosanBank/nllb200-formosan-en-spm8k"
122
- tokenizer = NllbTokenizer.from_pretrained(model_id)
123
  model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
124
  model.to("cuda" if torch.cuda.is_available() else "cpu")
125
-
126
- FORMOSAN_TO_LID = {
127
- "ami": "ami_Latn", "bnn": "bnn_Latn", "ckv": "ckv_Latn", "dru": "dru_Latn",
128
- "pwn": "pwn_Latn", "pyu": "pyu_Latn", "ssf": "ssf_Latn", "sxr": "sxr_Latn",
129
- "szy": "szy_Latn", "tao": "tao_Latn", "tay": "tay_Latn", "trv": "trv_Latn",
130
- "tsu": "tsu_Latn", "xnb": "xnb_Latn", "xsy": "xsy_Latn",
131
- }
132
-
133
- def translate_formosan_to_english(text: str, lang_code: str, source_bucket: str = "unknown", dialect: str = "default") -> str:
134
- tokenizer.src_lang = FORMOSAN_TO_LID[lang_code]
135
- prompt = f"<to_eng> <src_{lang_code}> <dom_{source_bucket}> <dialect_{dialect}> {text}"
136
- inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=384).to(model.device)
137
- outputs = model.generate(
138
  **inputs,
139
- forced_bos_token_id=tokenizer.convert_tokens_to_ids("eng_Latn"),
140
  decoder_start_token_id=tokenizer.eos_token_id,
141
- max_new_tokens=128,
 
142
  num_beams=4,
143
- no_repeat_ngram_size=3,
144
- repetition_penalty=1.15,
145
- early_stopping=True,
146
  )
147
- return tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]
148
 
149
- print(translate_formosan_to_english("Pa'araw cingra to demak nira.", "ami"))
150
  ```
151
 
152
- ## Checkpoint Selection
153
-
154
- The published checkpoint was selected **only on validation chrF2**, not on the hard test set.
155
-
156
- | Selection step | Validation samples | Validation loss | Perplexity | BLEU | chrF2 | TER |
157
- |---:|---:|---:|---:|---:|---:|---:|
158
- | 270,000 | 1,920 | 2.2070 | 9.09 | 19.15 | 35.33 | 80.93 |
159
-
160
- Validation generation sampled 128 rows per Formosan language every 10,000 updates. The full hard test was evaluated
161
- only after selection.
162
-
163
- ## Training Setup
164
-
165
- | Setting | Value |
166
- |---|---|
167
- | Corpus | `private_no_bible` (English) |
168
- | Base model | `facebook/nllb-200-distilled-600M` |
169
- | Maximum updates | 300,000 |
170
- | Published best step | 270,000 |
171
- | Microbatch / accumulation | 16 / 4 |
172
- | Effective batch | 64 |
173
- | Maximum length | 384 |
174
- | Learning rate | `2e-05` |
175
- | Precision | `bf16` |
176
- | Easy-source weight | 0.05 |
177
- | Language sampling alpha | 0.5 |
178
- | Metadata control tags | enabled and validated as single tokenizer IDs |
179
-
180
- ## Corpus and Split Integrity
181
-
182
- | Total | Train | Test | Validate | Minimum per-language test | Minimum per-language validate |
183
- |---:|---:|---:|---:|---:|---:|
184
- | 759,493 | 681,034 | 58,129 | 20,330 | 7.5% | 2.5% |
185
-
186
- The exact `Formosan-Taiwan-Bible-Society-Bibles` repository is excluded. Lexical entries are train-only. Independent
187
- validation found zero normalized source, target, or pair overlap; zero punctuation/spacing skeleton overlap; and zero
188
- one-edit source or target conflicts across train and evaluation. Connected similarity groups are assigned as units so
189
- variants cannot be split independently merely because they are not exact duplicates.
190
-
191
- The English hard test contains 51,206 original-reference rows and 6,923 DeepL-pivoted reference rows. Synthetic rows were admitted only when the available human sentence groups could not satisfy a language's minimum evaluation floor; metrics should not be described as human-only.
192
-
193
- ## Hard-Test Results
194
-
195
- SacreBLEU was computed with `13a` tokenization; chrF uses beta 2; TER is lower-is-better.
196
-
197
- | Direction | Samples | BLEU | chrF2 | TER | Exact match | Empty output |
198
- |---|---:|---:|---:|---:|---:|---:|
199
- | Formosan -> English | 58,129 | 13.08 | 31.17 | 86.50 | 2.42% | 0.00% |
200
-
201
- ### Per-Language Results
202
-
203
- | Language | Code | Samples | BLEU | chrF2 | TER |
204
- |---|---:|---:|---:|---:|---:|
205
- | Amis | `ami_Latn` | 10,741 | 10.50 | 28.90 | 93.74 |
206
- | Bunun | `bnn_Latn` | 5,319 | 12.84 | 32.45 | 80.82 |
207
- | Kavalan | `ckv_Latn` | 2,728 | 13.74 | 32.26 | 85.13 |
208
- | Rukai | `dru_Latn` | 5,340 | 9.20 | 26.56 | 88.63 |
209
- | Paiwan | `pwn_Latn` | 5,349 | 11.78 | 31.27 | 84.88 |
210
- | Puyuma | `pyu_Latn` | 3,480 | 15.26 | 34.25 | 79.45 |
211
- | Thao | `ssf_Latn` | 1,521 | 18.84 | 36.02 | 80.85 |
212
- | Saaroa | `sxr_Latn` | 1,466 | 16.72 | 33.26 | 84.19 |
213
- | Sakizaya | `szy_Latn` | 1,983 | 15.14 | 34.29 | 89.05 |
214
- | Tao / Yami | `tao_Latn` | 1,729 | 16.97 | 33.51 | 83.90 |
215
- | Atayal | `tay_Latn` | 5,985 | 16.31 | 33.12 | 80.59 |
216
- | Seediq | `trv_Latn` | 6,386 | 14.66 | 32.55 | 86.39 |
217
- | Tsou | `tsu_Latn` | 1,784 | 11.32 | 29.23 | 89.88 |
218
- | Kanakanavu | `xnb_Latn` | 2,688 | 8.31 | 29.18 | 86.57 |
219
- | Saisiyat | `xsy_Latn` | 1,630 | 10.52 | 29.28 | 90.05 |
220
-
221
- Full source-bucket and length-bin breakdowns are in [`eval/metrics.json`](eval/metrics.json).
222
-
223
- ## Intended Use
224
-
225
- - Research, teaching, and prototyping for Formosan-language machine translation.
226
- - Draft translation assistance where knowledgeable speakers can review the output.
227
- - Comparative low-resource MT evaluation on the documented leakage-controlled split.
228
 
229
  ## Limitations
230
 
231
- - Output may be incorrect, ungrammatical, incomplete, or culturally inappropriate.
232
- - Formosan generation is draft-only and requires speaker review.
233
- - Aggregate scores across 15 languages conceal substantial per-language variation.
234
- - This model is unsuitable for legal, medical, safety-critical, or authoritative community-facing use without expert review.
235
- - Hard-split scores are not directly comparable with earlier evaluations that allowed stronger train-test similarity.
236
-
237
- ## License
238
-
239
- Released under `cc-by-nc-4.0`. Underlying corpus sources may impose additional restrictions. Confirm the rights needed
240
- for your use case.
241
-
242
- ## Citation
243
-
244
- ```bibtex
245
- @misc{formosanbank_nllb200_formosan_en_spm8k_2026,
246
- title = {nllb200-formosan-en-spm8k: Directional NLLB-200 MT on the FormosanBank private no-Bible corpus},
247
- author = {FormosanBank contributors},
248
- year = {2026},
249
- url = {https://huggingface.co/FormosanBank/nllb200-formosan-en-spm8k}
250
- }
251
- ```
 
4
  pipeline_tag: translation
5
  base_model: facebook/nllb-200-distilled-600M
6
  language:
 
7
  - ami
8
  - bnn
9
  - ckv
 
19
  - tsu
20
  - xnb
21
  - xsy
22
+ - en
23
  tags:
24
  - translation
 
25
  - nllb-200
 
 
26
  - formosan-languages
27
+ - low-resource
 
28
  metrics:
29
  - bleu
30
+ - chrf
31
  - ter
32
  model-index:
33
  - name: nllb200-formosan-en-spm8k
34
  results:
35
  - task:
 
36
  type: translation
37
+ name: Translation
38
  dataset:
39
+ name: FormosanBank private no-Bible hard test
40
+ type: private-no-bible-hard-test
41
+ split: test
42
  metrics:
43
+ - type: bleu
44
+ name: sacreBLEU
45
+ value: 9.324037
46
+ - type: chrf
47
+ name: chrF2
48
+ value: 26.929850
49
+ - type: ter
50
+ name: TER
51
+ value: 96.958093
 
 
 
 
 
 
 
 
 
 
52
  ---
53
 
54
  # nllb200-formosan-en-spm8k
55
 
56
+ **Direction:** Formosan to English<br>
57
+ **Base model:** [`facebook/nllb-200-distilled-600M`](https://huggingface.co/facebook/nllb-200-distilled-600M)<br>
58
+ **Recipe:** `nllb200-spm8k-directional-v3`<br>
59
+ **Release:** `20260809-210523`, validation-selected step 210,000
60
 
61
+ This is a directional model for 15 Formosan languages. It uses the
62
+ `private_no_bible` leakage-controlled corpus, Formosan-aware 8k SentencePiece extension, balanced
63
+ language/source sampling, and direction/domain/dialect control tags. The model
64
+ weights are public, but the private training corpus is not included.
65
 
66
+ ## Model details
67
 
68
+ | Item | Value |
69
  |---|---|
70
+ | Base revision | `f8d333a098d19b4fd9a8b18f94170487ad3f821d` |
71
+ | Training rows | 573,657 |
72
+ | Effective batch size | 64 |
73
+ | Maximum sequence length | 384 |
74
+ | Learning rate | 2e-05 |
75
+ | Precision | `bf16` |
76
+ | Checkpoint selection | Human validation `chrF2` |
77
+ | Formosan text | `kindOf=standard`, `formosan-mt-standard-v3` |
78
+ | Corpus SHA-256 | `e3feeaf7c3c51b9cd5c4b0537ffe44a370e7d02723f34b467479b6c4f5f0ea77` |
79
+ | Training profile SHA-256 | `34f45832bdedc1b8322b26936dd88667dfecb360d941a7f54f60ae31a1fb4e10` |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
  ## Usage
82
 
 
 
 
 
83
  ```python
84
  import torch
85
  from transformers import AutoModelForSeq2SeqLM, NllbTokenizer
86
+ from formosan_mt_inference import normalize_formosan
87
+
88
 
89
  model_id = "FormosanBank/nllb200-formosan-en-spm8k"
90
+ tokenizer = NllbTokenizer.from_pretrained(model_id, use_fast=False)
91
  model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
92
  model.to("cuda" if torch.cuda.is_available() else "cpu")
93
+ NLLB_LIDS = {'ami': 'ami_Latn', 'bnn': 'bnn_Latn', 'ckv': 'ckv_Latn', 'dru': 'dru_Latn', 'pwn': 'pwn_Latn', 'pyu': 'pyu_Latn', 'ssf': 'ssf_Latn', 'sxr': 'sxr_Latn', 'szy': 'szy_Latn', 'tao': 'tao_Latn', 'tay': 'tay_Latn', 'trv': 'trv_Latn', 'tsu': 'tsu_Latn', 'xnb': 'xnb_Latn', 'xsy': 'xsy_Latn'}
94
+
95
+ def translate(text, lang_code, source_bucket="unknown", dialect="default"):
96
+ text = normalize_formosan(text, lang_code)
97
+ tokenizer.src_lang = NLLB_LIDS[lang_code]
98
+ prompt = (
99
+ f"<to_eng> <src_{lang_code}> <dom_{source_bucket}> "
100
+ f"<dialect_{dialect}> {text}"
101
+ )
102
+ inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
103
+ output = model.generate(
 
 
104
  **inputs,
 
105
  decoder_start_token_id=tokenizer.eos_token_id,
106
+ forced_bos_token_id=tokenizer.convert_tokens_to_ids('eng_Latn'),
107
+ max_new_tokens=256,
108
  num_beams=4,
 
 
 
109
  )
110
+ return tokenizer.batch_decode(output, skip_special_tokens=True)[0]
111
 
112
+ print(translate("Pa'araw cingra.", "ami"))
113
  ```
114
 
115
+ The control tags are part of the training contract. Use `unknown` and `default`
116
+ when source bucket or dialect metadata is unavailable.
117
+
118
+ ## Evaluation
119
+
120
+ The best checkpoint was selected on human validation chrF2. Test references
121
+ are human sentence pairs; synthetic pivots and lexical entries are train-only.
122
+ The headline result uses `default` metadata controls, so it does not
123
+ assume access to test-set domain or dialect labels.
124
+
125
+ | Split | Rows |
126
+ |---|---:|
127
+ | Train | 573,657 |
128
+ | Test | 63,140 |
129
+ | Validate | 20,733 |
130
+
131
+ | Scope | BLEU | chrF2 | TER |
132
+ |---|---:|---:|---:|
133
+ | Hard test | 9.32 | 26.93 | 96.96 |
134
+ | Selection validation | 9.53 | 29.70 | 92.68 |
135
+
136
+ Test empty-output rate: 0.0000%.
137
+
138
+
139
+ ### Confidence intervals
140
+
141
+ Stratified bootstrap, 200 samples, 95% confidence.
142
+
143
+ | Metric | Lower | Upper |
144
+ |---|---:|---:|
145
+ | BLEU | 9.18 | 9.48 |
146
+ | chrF2 | 26.78 | 27.08 |
147
+ | TER | 96.48 | 97.54 |
148
+
149
+
150
+ | Language | Samples | BLEU | chrF2 | TER |
151
+ |---|---:|---:|---:|---:|
152
+ | `ami` | 11,017 | 7.62 | 26.29 | 93.14 |
153
+ | `bnn` | 6,049 | 14.68 | 33.73 | 77.16 |
154
+ | `ckv` | 2,910 | 10.84 | 30.22 | 96.13 |
155
+ | `dru` | 5,846 | 1.07 | 13.93 | 135.78 |
156
+ | `pwn` | 5,811 | 7.65 | 24.46 | 106.90 |
157
+ | `pyu` | 4,315 | 12.50 | 29.72 | 107.12 |
158
+ | `ssf` | 1,630 | 14.05 | 31.21 | 87.89 |
159
+ | `sxr` | 2,081 | 11.33 | 26.27 | 96.93 |
160
+ | `szy` | 1,852 | 13.59 | 32.77 | 90.81 |
161
+ | `tao` | 2,257 | 9.04 | 27.97 | 93.45 |
162
+ | `tay` | 6,411 | 10.46 | 26.58 | 104.63 |
163
+ | `trv` | 6,502 | 12.81 | 31.71 | 96.50 |
164
+ | `tsu` | 2,003 | 2.39 | 19.11 | 95.33 |
165
+ | `xnb` | 2,682 | 5.62 | 25.89 | 93.22 |
166
+ | `xsy` | 1,774 | 16.10 | 35.31 | 83.12 |
167
+
168
+ The corpus gate enforces standard-tier Formosan text, at least 7.5% test and
169
+ 2.5% validation per language, human sentence-only evaluation, and zero exact,
170
+ skeleton, one-edit, configured high character n-gram, or document
171
+ train/evaluation conflicts. This release passed all gates: exact
172
+ 0, skeleton
173
+ 0, one-edit
174
+ 0, character n-gram
175
+ 0, and document
176
+ 0.
177
+
178
+ See `eval/metrics.json` for sacreBLEU signatures, per-language, source,
179
+ dialect, and length diagnostics. `publication.json` records the corpus,
180
+ profile, run, and checkpoint hashes used for this release.
181
+
182
+ ## Intended use
183
+
184
+ This model supports research, corpus development, and assisted translation for
185
+ the 15 included Formosan languages. It is designed for the exact prompt and
186
+ generation contract shown above.
 
 
 
 
187
 
188
  ## Limitations
189
 
190
+ Outputs require knowledgeable speaker review. Aggregate metrics hide large
191
+ differences among languages and domains. This model is not suitable for
192
+ authoritative, medical, legal, or safety-critical translation.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
added_tokens.json CHANGED
@@ -1,182 +1,227 @@
1
  {
2
- "<dae>": 259232,
3
- "<dialect_central>": 259233,
4
- "<dialect_coastal>": 259234,
5
- "<dialect_dawu>": 259235,
6
- "<dialect_default>": 259236,
7
- "<dialect_deluvalley>": 259237,
8
- "<dialect_dona>": 259238,
9
- "<dialect_duda>": 259239,
10
- "<dialect_eastern>": 259240,
11
- "<dialect_fourseasons>": 259241,
12
- "<dialect_hengchun>": 259242,
13
- "<dialect_jianhe>": 259243,
14
- "<dialect_junqun>": 259244,
15
- "<dialect_kanakanavu>": 259245,
16
- "<dialect_kaqun>": 259246,
17
- "<dialect_kavalan>": 259247,
18
- "<dialect_luanqun>": 259248,
19
- "<dialect_malan>": 259249,
20
- "<dialect_maolin>": 259250,
21
- "<dialect_nanwang>": 259251,
22
- "<dialect_northern>": 259252,
23
- "<dialect_saaroa>": 259253,
24
- "<dialect_saisiyat>": 259254,
25
- "<dialect_sakizaya>": 259255,
26
- "<dialect_sekolik>": 259256,
27
- "<dialect_southern>": 259257,
28
- "<dialect_tanqun>": 259258,
29
- "<dialect_tegudaya>": 259259,
30
- "<dialect_thao>": 259260,
31
- "<dialect_truku>": 259261,
32
- "<dialect_tsou>": 259262,
33
- "<dialect_unknown>": 259263,
34
- "<dialect_wanda>": 259264,
35
- "<dialect_wanshan>": 259265,
36
- "<dialect_wenshui>": 259266,
37
- "<dialect_wutai>": 259267,
38
- "<dialect_xiqun>": 259268,
39
- "<dialect_xiuguluan>": 259269,
40
- "<dialect_yami>": 259270,
41
- "<dialect_yilanzeaol>": 259271,
42
- "<dialect_zeaol>": 259272,
43
- "<dialect_zhiben>": 259273,
44
- "<dialect_zhuoqun>": 259274,
45
- "<dom_classroom_context>": 259275,
46
- "<dom_culture>": 259276,
47
- "<dom_dictionary>": 259277,
48
- "<dom_essays>": 259278,
49
- "<dom_ethnography_journal_ritual_song>": 259279,
50
- "<dom_formosan_100_paiwan_texts>": 259280,
51
- "<dom_formosan_academia_sinica_oral_legends>": 259281,
52
- "<dom_formosan_amis_adversative_constructions>": 259282,
53
- "<dom_formosan_amis_kavalan_lin_interrogative_verbs>": 259283,
54
- "<dom_formosan_amis_kuo_sung_comparative_constructions>": 259284,
55
- "<dom_formosan_amis_lifok_dongi_saopo_kimakimad>": 259285,
56
- "<dom_formosan_amis_myths_and_customs>": 259286,
57
- "<dom_formosan_amis_pa_verbs>": 259287,
58
- "<dom_formosan_amis_serial_verb_constructions>": 259288,
59
- "<dom_formosan_amis_tung_chiou>": 259289,
60
- "<dom_formosan_asai_sedik_language>": 259290,
61
- "<dom_formosan_bunun_debusser_dissertation>": 259291,
62
- "<dom_formosan_bunun_moriguchi_northern_texts>": 259292,
63
- "<dom_formosan_bunun_topic_focus>": 259293,
64
- "<dom_formosan_chen_fukuda_relabeling_ergative>": 259294,
65
- "<dom_formosan_chen_fukuda_three_ways_steal>": 259295,
66
- "<dom_formosan_cip_atayal_grammar_overview>": 259296,
67
- "<dom_formosan_dean_johnson_year_clouds_smangus>": 259297,
68
- "<dom_formosan_dorinda_tsai_hsiu_liu_neutral_imperfect>": 259298,
69
- "<dom_formosan_egerod_origin_headhunting_atayal_text_v>": 259299,
70
- "<dom_formosan_egerod_soren_word_order_word_classes_at>": 259300,
71
- "<dom_formosan_elizabeth_zeitoun_chen_huei_wu_overview>": 259301,
72
- "<dom_formosan_epark>": 259302,
73
- "<dom_formosan_ferrell_taiwan_aboriginal_groups_proble>": 259303,
74
- "<dom_formosan_gitbook_translations>": 259304,
75
- "<dom_formosan_glosbe>": 259305,
76
- "<dom_formosan_hala_saku_la_videos>": 259306,
77
- "<dom_formosan_holmer_seediq>": 259307,
78
- "<dom_formosan_huang_grammaticalization_squliq_atayal>": 259308,
79
- "<dom_formosan_huang_mei_chin_atayal_reference_grammar>": 259309,
80
- "<dom_formosan_huteson_rukai_survey>": 259310,
81
- "<dom_formosan_ilrdf_42_language_practice_word_lists>": 259311,
82
- "<dom_formosan_ilrdf_tousvusvutu_kita>": 259312,
83
- "<dom_formosan_indigenous_language_literary_awards>": 259313,
84
- "<dom_formosan_kanakanavu_texts>": 259314,
85
- "<dom_formosan_kavalan_zhang_reference_grammar>": 259315,
86
- "<dom_formosan_li_peirong_xu_weisheng_introduction_tru>": 259316,
87
- "<dom_formosan_li_peizhen_wu_xingyu_shouhu_xing>": 259317,
88
- "<dom_formosan_naomi_tsukida_correlative_clauses_seedi>": 259318,
89
- "<dom_formosan_nowbucyang_truku_thesis>": 259319,
90
- "<dom_formosan_old_texts>": 259320,
91
- "<dom_formosan_paiwan_collart_zeitoun_time_reference>": 259321,
92
- "<dom_formosan_paiwan_ho_five_dialects>": 259322,
93
- "<dom_formosan_paiwanstories>": 259323,
94
- "<dom_formosan_puyuma_chen_raising_to_object>": 259324,
95
- "<dom_formosan_puyuma_katipol_kopfjagdriten>": 259325,
96
- "<dom_formosan_puyuma_teng_pronominal_systems>": 259326,
97
- "<dom_formosan_puyuma_teng_reference_grammar>": 259327,
98
- "<dom_formosan_rik_bunun>": 259328,
99
- "<dom_formosan_robert_blust_austronesian_homeland_ling>": 259329,
100
- "<dom_formosan_rukai_mantauran_stories>": 259330,
101
- "<dom_formosan_rukai_texts>": 259331,
102
- "<dom_formosan_rukai_zeitoun_saying>": 259332,
103
- "<dom_formosan_saaroa_pan_grammar>": 259333,
104
- "<dom_formosan_sakizaya_affixes>": 259334,
105
- "<dom_formosan_seals>": 259335,
106
- "<dom_formosan_seediq_zhang_reference_grammar>": 259336,
107
- "<dom_formosan_shigeru_tsuchida_kanakanavu_texts>": 259337,
108
- "<dom_formosan_shigeru_tsuchida_reconstruction_proto_t>": 259338,
109
- "<dom_formosan_shih_rukai_adverbial>": 259339,
110
- "<dom_formosan_song_limei_introduction_kanakanavu_gram>": 259340,
111
- "<dom_formosan_song_limei_introduction_seediq_grammar>": 259341,
112
- "<dom_formosan_sung_kuo_descriptive_comparative_constr>": 259342,
113
- "<dom_formosan_taoshan_elementary_school_atelier_hui_k>": 259343,
114
- "<dom_formosan_tsukida_naomi_verb_classification_amis>": 259344,
115
- "<dom_formosan_wei_matri_clan_lineage_system_ami>": 259345,
116
- "<dom_formosan_wilang_yutas_videos>": 259346,
117
- "<dom_formosan_wu_jinglan_introduction_amis_grammar>": 259347,
118
- "<dom_formosan_yedda_palemeq_blog>": 259348,
119
- "<dom_formosan_yeddas_blog>": 259349,
120
- "<dom_formosan_yeh_meili_introduction_saisiyat_grammar>": 259350,
121
- "<dom_formosan_zhang_yongli_pan_jiarong_introduction_t>": 259351,
122
- "<dom_formosan_zheng_acl_2024>": 259352,
123
- "<dom_formosan_zheng_data>": 259353,
124
- "<dom_learning_vocab>": 259354,
125
- "<dom_nine_level>": 259355,
126
- "<dom_ntu>": 259356,
127
- "<dom_picture_book>": 259357,
128
- "<dom_picture_story>": 259358,
129
- "<dom_presidential_apology>": 259359,
130
- "<dom_reading_writing>": 259360,
131
- "<dom_unknown>": 259361,
132
- "<dom_youtube>": 259362,
133
- "<src_ami>": 259363,
134
- "<src_bnn>": 259364,
135
- "<src_ckv>": 259365,
136
- "<src_dru>": 259366,
137
- "<src_eng>": 259367,
138
- "<src_pwn>": 259368,
139
- "<src_pyu>": 259369,
140
- "<src_ssf>": 259370,
141
- "<src_sxr>": 259371,
142
- "<src_szy>": 259372,
143
- "<src_tao>": 259373,
144
- "<src_tay>": 259374,
145
- "<src_trv>": 259375,
146
- "<src_tsu>": 259376,
147
- "<src_xnb>": 259377,
148
- "<src_xsy>": 259378,
149
- "<src_zh>": 259379,
150
- "<to_ami>": 259380,
151
- "<to_bnn>": 259381,
152
- "<to_ckv>": 259382,
153
- "<to_dru>": 259383,
154
- "<to_eng>": 259384,
155
- "<to_pwn>": 259385,
156
- "<to_pyu>": 259386,
157
- "<to_ssf>": 259387,
158
- "<to_sxr>": 259388,
159
- "<to_szy>": 259389,
160
- "<to_tao>": 259390,
161
- "<to_tay>": 259391,
162
- "<to_trv>": 259392,
163
- "<to_tsu>": 259393,
164
- "<to_xnb>": 259394,
165
- "<to_xsy>": 259395,
166
- "<to_zh>": 259396,
167
- "ami_Latn": 259217,
168
- "bnn_Latn": 259218,
169
- "ckv_Latn": 259219,
170
- "dru_Latn": 259220,
171
- "pwn_Latn": 259221,
172
- "pyu_Latn": 259222,
173
- "ssf_Latn": 259223,
174
- "sxr_Latn": 259224,
175
- "szy_Latn": 259225,
176
- "tao_Latn": 259226,
177
- "tay_Latn": 259227,
178
- "trv_Latn": 259228,
179
- "tsu_Latn": 259229,
180
- "xnb_Latn": 259230,
181
- "xsy_Latn": 259231
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
  }
 
1
  {
2
+ "<dialect_central>": 261410,
3
+ "<dialect_coastal>": 261411,
4
+ "<dialect_dawu>": 261412,
5
+ "<dialect_default>": 261413,
6
+ "<dialect_deluvalley>": 261414,
7
+ "<dialect_dona>": 261415,
8
+ "<dialect_duda>": 261416,
9
+ "<dialect_eastern>": 261417,
10
+ "<dialect_fourseasons>": 261418,
11
+ "<dialect_hengchun>": 261419,
12
+ "<dialect_jianhe>": 261420,
13
+ "<dialect_junqun>": 261421,
14
+ "<dialect_kanakanavu>": 261422,
15
+ "<dialect_kaqun>": 261423,
16
+ "<dialect_kavalan>": 261424,
17
+ "<dialect_luanqun>": 261425,
18
+ "<dialect_malan>": 261426,
19
+ "<dialect_maolin>": 261427,
20
+ "<dialect_nanwang>": 261428,
21
+ "<dialect_northern>": 261429,
22
+ "<dialect_saaroa>": 261430,
23
+ "<dialect_saisiyat>": 261431,
24
+ "<dialect_sakizaya>": 261432,
25
+ "<dialect_sekolik>": 261433,
26
+ "<dialect_southern>": 261434,
27
+ "<dialect_tanqun>": 261435,
28
+ "<dialect_tegudaya>": 261436,
29
+ "<dialect_thao>": 261437,
30
+ "<dialect_truku>": 261438,
31
+ "<dialect_tsou>": 261439,
32
+ "<dialect_unknown>": 261440,
33
+ "<dialect_wanda>": 261441,
34
+ "<dialect_wanshan>": 261442,
35
+ "<dialect_wenshui>": 261443,
36
+ "<dialect_wutai>": 261444,
37
+ "<dialect_xiqun>": 261445,
38
+ "<dialect_xiuguluan>": 261446,
39
+ "<dialect_yami>": 261447,
40
+ "<dialect_yilanzeaol>": 261448,
41
+ "<dialect_zeaol>": 261449,
42
+ "<dialect_zhiben>": 261450,
43
+ "<dialect_zhuoqun>": 261451,
44
+ "<dom_classroom_context>": 261452,
45
+ "<dom_culture>": 261453,
46
+ "<dom_dictionary>": 261454,
47
+ "<dom_essays>": 261455,
48
+ "<dom_formosan_100_paiwan_texts>": 261456,
49
+ "<dom_formosan_academia_sinica_oral_legends>": 261457,
50
+ "<dom_formosan_amis_adversative_constructions>": 261458,
51
+ "<dom_formosan_amis_huang_english_phonology_grammar>": 261459,
52
+ "<dom_formosan_amis_kavalan_lin_interrogative_verbs>": 261460,
53
+ "<dom_formosan_amis_kuo_sung_comparative_constructions>": 261461,
54
+ "<dom_formosan_amis_lifok_dongi_saopo_kimakimad>": 261462,
55
+ "<dom_formosan_amis_myths_and_customs>": 261463,
56
+ "<dom_formosan_amis_pa_verbs>": 261464,
57
+ "<dom_formosan_anna_hsiou_chuan_chang_reference_gramma>": 261465,
58
+ "<dom_formosan_anton_quack_puyuma_pulingaw>": 261466,
59
+ "<dom_formosan_atayal_you_nao_savak_raxayal>": 261467,
60
+ "<dom_formosan_boyizhenu_narrative_oral_literature_tap>": 261468,
61
+ "<dom_formosan_bunun_debusser_dissertation>": 261469,
62
+ "<dom_formosan_bunun_topic_focus>": 261470,
63
+ "<dom_formosan_catherine_tseng_seediq_atayal_foods_the>": 261471,
64
+ "<dom_formosan_chen_yaohan_miss_virginia_fey_played_es>": 261472,
65
+ "<dom_formosan_chun_mei_chen_comparative_phonology_pai>": 261473,
66
+ "<dom_formosan_chunming_wu_two_types_of_noun_incorpora>": 261474,
67
+ "<dom_formosan_cip_atayal_grammar_overview>": 261475,
68
+ "<dom_formosan_claire_mcgill_a_brief_tayal_vocabulary>": 261476,
69
+ "<dom_formosan_david_blundell_ed_austronesian_taiwan>": 261477,
70
+ "<dom_formosan_dean_johnson_year_clouds_smangus>": 261478,
71
+ "<dom_formosan_deng_fangqing_introduction_puyuma_gramm>": 261479,
72
+ "<dom_formosan_der_hwa_victoria_rau_grammar_atayal>": 261480,
73
+ "<dom_formosan_dong_manv_yami_ode_to_taro>": 261481,
74
+ "<dom_formosan_dong_yijia_tjuwabar_paiwan_ritual_langu>": 261482,
75
+ "<dom_formosan_elizabeth_zeitoun_chen_huei_wu_overview>": 261483,
76
+ "<dom_formosan_elizabeth_zeitoun_lillian_huang_marie_y>": 261484,
77
+ "<dom_formosan_elizabeth_zeitoun_pronominal_system_man>": 261485,
78
+ "<dom_formosan_elizabeth_zeitoun_squib_dynamic_vs_stat>": 261486,
79
+ "<dom_formosan_epark>": 261487,
80
+ "<dom_formosan_gitbook_translations>": 261488,
81
+ "<dom_formosan_glosbe>": 261489,
82
+ "<dom_formosan_ho_dan_phonological_system_butonglu_pai>": 261490,
83
+ "<dom_formosan_holmer_seediq>": 261491,
84
+ "<dom_formosan_hsiu_chuan_liao_transitivity_ergativity>": 261492,
85
+ "<dom_formosan_huang_grammaticalization_squliq_atayal>": 261493,
86
+ "<dom_formosan_huang_hui_chuan_glide_formation_takitud>": 261494,
87
+ "<dom_formosan_huang_huijuan_shi_chaokai_introduction>": 261495,
88
+ "<dom_formosan_huang_mei_chin_atayal_reference_grammar>": 261496,
89
+ "<dom_formosan_huteson_rukai_survey>": 261497,
90
+ "<dom_formosan_ilrdf_42_language_practice_word_lists>": 261498,
91
+ "<dom_formosan_ilrdf_tousvusvutu_kita>": 261499,
92
+ "<dom_formosan_indigenous_education_resource_center_ke>": 261500,
93
+ "<dom_formosan_indigenous_language_literary_awards>": 261501,
94
+ "<dom_formosan_isabelle_bril_roots_and_stems_lexical_a>": 261502,
95
+ "<dom_formosan_jian_iwan_guo_qingliu_life_history>": 261503,
96
+ "<dom_formosan_jian_shilang_introduction_thao_grammar>": 261504,
97
+ "<dom_formosan_john_u_wolff_the_proto_austronesian_pho>": 261505,
98
+ "<dom_formosan_josiane_cauquelin_aborigines_taiwan_puy>": 261506,
99
+ "<dom_formosan_kanakanavu_texts>": 261507,
100
+ "<dom_formosan_kavalan_zhang_reference_grammar>": 261508,
101
+ "<dom_formosan_kolas_foting_aboriginal_education_world>": 261509,
102
+ "<dom_formosan_kucapungane>": 261510,
103
+ "<dom_formosan_kumu_tapas_tribal_memory_oral_history_w>": 261511,
104
+ "<dom_formosan_lei_shih_family_system_paiwan_at_su_pai>": 261512,
105
+ "<dom_formosan_li_may_sung_budai_rukai_exclamatives>": 261513,
106
+ "<dom_formosan_li_may_sung_clausal_nominalization_buda>": 261514,
107
+ "<dom_formosan_li_peirong_xu_weisheng_introduction_tru>": 261515,
108
+ "<dom_formosan_li_peizhen_wu_xingyu_shouhu_xing>": 261516,
109
+ "<dom_formosan_lillian_huang_atayal_participants_cross>": 261517,
110
+ "<dom_formosan_liu_manyi_kaskun_ata_matas_i_ki_quaz>": 261518,
111
+ "<dom_formosan_malcom_ross_proto_austronesian_verbal_m>": 261519,
112
+ "<dom_formosan_maya_yeh_blaq_uv_construction_atayal>": 261520,
113
+ "<dom_formosan_nanang_tadaw_naci_mowna_pgagu>": 261521,
114
+ "<dom_formosan_naomi_tsukida_correlative_clauses_seedi>": 261522,
115
+ "<dom_formosan_nowbucyang_truku_thesis>": 261523,
116
+ "<dom_formosan_ochiai_izumi_numerals_paran_seediq_rela>": 261524,
117
+ "<dom_formosan_old_texts>": 261525,
118
+ "<dom_formosan_paiwan_collart_zeitoun_time_reference>": 261526,
119
+ "<dom_formosan_paiwan_ho_five_dialects>": 261527,
120
+ "<dom_formosan_paiwanstories>": 261528,
121
+ "<dom_formosan_patricia_stanley_morphophonemics_of_ver>": 261529,
122
+ "<dom_formosan_paul_jen_kuei_li_internal_relationships>": 261530,
123
+ "<dom_formosan_paul_jen_kuei_li_rukai_structure>": 261531,
124
+ "<dom_formosan_paul_jen_kuei_li_the_preglottalised_sto>": 261532,
125
+ "<dom_formosan_paul_li_atayalic_final_voiced_stops>": 261533,
126
+ "<dom_formosan_paul_li_position_atayal_austronesian>": 261534,
127
+ "<dom_formosan_pingdong_county_government_kai_na_sepuc>": 261535,
128
+ "<dom_formosan_puyuma_katipol_kopfjagdriten>": 261536,
129
+ "<dom_formosan_puyuma_teng_reference_grammar>": 261537,
130
+ "<dom_formosan_raleigh_ferrell_construction_markers_fo>": 261538,
131
+ "<dom_formosan_rik_bunun>": 261539,
132
+ "<dom_formosan_robert_blust_the_austronesian_languages>": 261540,
133
+ "<dom_formosan_saaroa_pan_grammar>": 261541,
134
+ "<dom_formosan_sakizaya_affixes>": 261542,
135
+ "<dom_formosan_seals>": 261543,
136
+ "<dom_formosan_seediq_zhang_reference_grammar>": 261544,
137
+ "<dom_formosan_shen_wenqi_introduction_sakizaya_gramma>": 261545,
138
+ "<dom_formosan_shigeru_tsuchida_reconstruction_proto_t>": 261546,
139
+ "<dom_formosan_shih_rukai_adverbial>": 261547,
140
+ "<dom_formosan_sing_olam_hong_tinglan_aboriginal_educa>": 261548,
141
+ "<dom_formosan_song_limei_introduction_kanakanavu_gram>": 261549,
142
+ "<dom_formosan_song_limei_introduction_seediq_grammar>": 261550,
143
+ "<dom_formosan_soren_egerod_statement_atayal_phonology>": 261551,
144
+ "<dom_formosan_stacy_teng_malcom_ross_is_puyuma_primar>": 261552,
145
+ "<dom_formosan_truku_lowking_demonstratives>": 261553,
146
+ "<dom_formosan_tsai_hsui_liu_complementation_three_lan>": 261554,
147
+ "<dom_formosan_tsai_wei_tien_dylan_conjunctive_reducti>": 261555,
148
+ "<dom_formosan_tsou_descriptive_study>": 261556,
149
+ "<dom_formosan_tung_tsuchida_ting_li_pan_saaroa_texts>": 261557,
150
+ "<dom_formosan_wei_huilin_liu_social_structure_yami>": 261558,
151
+ "<dom_formosan_wilang_yutas_videos>": 261559,
152
+ "<dom_formosan_wu_chunming_adverbials_in_paiwan>": 261560,
153
+ "<dom_formosan_wu_jinglan_introduction_amis_grammar>": 261561,
154
+ "<dom_formosan_xie_fuhui_introduction_kavalan_grammar>": 261562,
155
+ "<dom_formosan_yedda_palemeq_blog>": 261563,
156
+ "<dom_formosan_yeddas_blog>": 261564,
157
+ "<dom_formosan_yeh_meili_introduction_saisiyat_grammar>": 261565,
158
+ "<dom_formosan_yi_yang_cheng_kanakanavu_word_level_pro>": 261566,
159
+ "<dom_formosan_yi_yang_cheng_tense_aspect_agent_markin>": 261567,
160
+ "<dom_formosan_yoshiro_nihira_bunun_vocabulary>": 261568,
161
+ "<dom_formosan_zeng_shifen_reduplication_affixation_pa>": 261569,
162
+ "<dom_formosan_zhan_sujuan_taiwan_indigenous_peoples_h>": 261570,
163
+ "<dom_formosan_zhang_xiujuan_introduction_paiwan_gramm>": 261571,
164
+ "<dom_formosan_zhang_yongli_pan_jiarong_introduction_t>": 261572,
165
+ "<dom_formosan_zhao_shanhe_li_taiyuan_zhu_qingyi_abori>": 261573,
166
+ "<dom_formosan_zheng_acl_2024>": 261574,
167
+ "<dom_formosan_zheng_data>": 261575,
168
+ "<dom_formosan_zheng_yumei_zhu_qingyi_bo_hongming_abor>": 261576,
169
+ "<dom_learning_vocab>": 261577,
170
+ "<dom_nine_level>": 261578,
171
+ "<dom_ntu>": 261579,
172
+ "<dom_picture_book>": 261580,
173
+ "<dom_picture_story>": 261581,
174
+ "<dom_presidential_apology>": 261582,
175
+ "<dom_reading_writing>": 261583,
176
+ "<dom_unknown>": 261584,
177
+ "<dom_youtube>": 261585,
178
+ "<src_ami>": 261586,
179
+ "<src_bnn>": 261587,
180
+ "<src_ckv>": 261588,
181
+ "<src_dru>": 261589,
182
+ "<src_eng>": 261590,
183
+ "<src_pwn>": 261591,
184
+ "<src_pyu>": 261592,
185
+ "<src_ssf>": 261593,
186
+ "<src_sxr>": 261594,
187
+ "<src_szy>": 261595,
188
+ "<src_tao>": 261596,
189
+ "<src_tay>": 261597,
190
+ "<src_trv>": 261598,
191
+ "<src_tsu>": 261599,
192
+ "<src_xnb>": 261600,
193
+ "<src_xsy>": 261601,
194
+ "<src_zh>": 261602,
195
+ "<to_ami>": 261603,
196
+ "<to_bnn>": 261604,
197
+ "<to_ckv>": 261605,
198
+ "<to_dru>": 261606,
199
+ "<to_eng>": 261607,
200
+ "<to_pwn>": 261608,
201
+ "<to_pyu>": 261609,
202
+ "<to_ssf>": 261610,
203
+ "<to_sxr>": 261611,
204
+ "<to_szy>": 261612,
205
+ "<to_tao>": 261613,
206
+ "<to_tay>": 261614,
207
+ "<to_trv>": 261615,
208
+ "<to_tsu>": 261616,
209
+ "<to_xnb>": 261617,
210
+ "<to_xsy>": 261618,
211
+ "<to_zh>": 261619,
212
+ "ami_Latn": 261395,
213
+ "bnn_Latn": 261396,
214
+ "ckv_Latn": 261397,
215
+ "dru_Latn": 261398,
216
+ "pwn_Latn": 261399,
217
+ "pyu_Latn": 261400,
218
+ "ssf_Latn": 261401,
219
+ "sxr_Latn": 261402,
220
+ "szy_Latn": 261403,
221
+ "tao_Latn": 261404,
222
+ "tay_Latn": 261405,
223
+ "trv_Latn": 261406,
224
+ "tsu_Latn": 261407,
225
+ "xnb_Latn": 261408,
226
+ "xsy_Latn": 261409
227
  }
config.json CHANGED
@@ -30,5 +30,5 @@
30
  "tokenizer_class": "NllbTokenizer",
31
  "transformers_version": "4.56.1",
32
  "use_cache": true,
33
- "vocab_size": 259397
34
  }
 
30
  "tokenizer_class": "NllbTokenizer",
31
  "transformers_version": "4.56.1",
32
  "use_cache": true,
33
+ "vocab_size": 261620
34
  }
eval/metrics.json CHANGED
The diff for this file is too large to render. See raw diff
 
experiment_metadata.json CHANGED
@@ -1,183 +1,271 @@
1
  {
2
- "step": 270000,
 
 
 
 
 
 
 
3
  "best_metric": "chrF2",
4
- "best_value": 35.32946603492116,
5
  "direction": "f2en",
 
6
  "validation": {
7
- "mean_token_loss": 2.206974470427195,
8
- "ppl": 9.088178203326196,
9
  "by_language": {
10
- "ami": 2.0968445140426444,
11
- "bnn": 1.7874308878638943,
12
- "ckv": 2.087236094678569,
13
- "dru": 2.190871106935116,
14
- "pwn": 1.9686841008042086,
15
- "pyu": 1.6745833827700425,
16
- "ssf": 1.9486271316560955,
17
- "sxr": 2.4568148167406925,
18
- "szy": 1.987393990573504,
19
- "tao": 2.2040318672348853,
20
- "tay": 1.76902462893994,
21
- "trv": 2.325485009128127,
22
- "tsu": 3.0212691680022647,
23
- "xnb": 2.2393458958157524,
24
- "xsy": 2.0707779328778106
25
  },
26
  "generation": {
27
  "samples": 1920,
28
  "bleu_tokenize": "13a",
29
  "global": {
30
- "BLEU": 19.15281806270227,
31
- "chrF2": 35.32946603492116,
32
- "TER": 80.93177423809962,
33
- "exact_match_rate": 0.06302083333333333,
34
  "empty_output_rate": 0.0,
35
- "character_length_ratio": 0.9119322440413731
 
 
 
 
 
36
  },
37
  "by_language": {
38
  "ami": {
39
  "samples": 128,
40
- "BLEU": 15.178042998761052,
41
- "chrF2": 32.515086875463034,
42
- "TER": 85.50185873605948,
43
- "exact_match_rate": 0.0703125,
44
  "empty_output_rate": 0.0,
45
- "character_length_ratio": 0.8890985042447109
 
 
 
 
 
46
  },
47
  "bnn": {
48
  "samples": 128,
49
- "BLEU": 21.846742757444925,
50
- "chrF2": 40.24080207081615,
51
- "TER": 71.03174603174604,
52
- "exact_match_rate": 0.078125,
53
  "empty_output_rate": 0.0,
54
- "character_length_ratio": 0.9059341798393367
 
 
 
 
 
55
  },
56
  "ckv": {
57
  "samples": 128,
58
- "BLEU": 15.068476827959886,
59
- "chrF2": 34.00509723995499,
60
- "TER": 81.7174515235457,
61
- "exact_match_rate": 0.0625,
62
  "empty_output_rate": 0.0,
63
- "character_length_ratio": 0.9293617021276596
 
 
 
 
 
64
  },
65
  "dru": {
66
  "samples": 128,
67
- "BLEU": 14.125242167691509,
68
- "chrF2": 32.422397474685745,
69
- "TER": 77.08757637474541,
70
- "exact_match_rate": 0.0390625,
71
  "empty_output_rate": 0.0,
72
- "character_length_ratio": 0.8651840188939185
 
 
 
 
 
73
  },
74
  "pwn": {
75
  "samples": 128,
76
- "BLEU": 15.136340404471213,
77
- "chrF2": 31.251019351597947,
78
- "TER": 84.12438625204582,
79
- "exact_match_rate": 0.0390625,
80
  "empty_output_rate": 0.0,
81
- "character_length_ratio": 0.9996890547263682
 
 
 
 
 
82
  },
83
  "pyu": {
84
  "samples": 128,
85
- "BLEU": 21.152070411641255,
86
- "chrF2": 36.530982538859824,
87
- "TER": 76.31578947368422,
88
- "exact_match_rate": 0.1171875,
89
  "empty_output_rate": 0.0,
90
- "character_length_ratio": 1.0212474297464016
 
 
 
 
 
91
  },
92
  "ssf": {
93
  "samples": 128,
94
- "BLEU": 27.0552108633901,
95
- "chrF2": 43.026601689706055,
96
- "TER": 75.07407407407408,
97
- "exact_match_rate": 0.0859375,
98
  "empty_output_rate": 0.0,
99
- "character_length_ratio": 0.9658896351903069
 
 
 
 
 
100
  },
101
  "sxr": {
102
  "samples": 128,
103
- "BLEU": 18.850948946483687,
104
- "chrF2": 32.63375669578005,
105
- "TER": 85.03937007874016,
106
- "exact_match_rate": 0.0546875,
107
  "empty_output_rate": 0.0,
108
- "character_length_ratio": 0.9307644389071816
 
 
 
 
 
109
  },
110
  "szy": {
111
  "samples": 128,
112
- "BLEU": 24.628613419366584,
113
- "chrF2": 39.013905255321895,
114
- "TER": 76.93891557995882,
115
- "exact_match_rate": 0.1171875,
116
  "empty_output_rate": 0.0,
117
- "character_length_ratio": 0.9373006134969325
 
 
 
 
 
118
  },
119
  "tao": {
120
  "samples": 128,
121
- "BLEU": 23.71371562558303,
122
- "chrF2": 36.722354771006046,
123
- "TER": 77.53240518482957,
124
- "exact_match_rate": 0.0703125,
125
  "empty_output_rate": 0.0,
126
- "character_length_ratio": 0.8812098830563616
 
 
 
 
 
127
  },
128
  "tay": {
129
  "samples": 128,
130
- "BLEU": 20.62709252771045,
131
- "chrF2": 34.23823716027059,
132
- "TER": 75.7700205338809,
133
- "exact_match_rate": 0.0703125,
134
  "empty_output_rate": 0.0,
135
- "character_length_ratio": 0.8556210766596919
 
 
 
 
 
136
  },
137
  "trv": {
138
  "samples": 128,
139
- "BLEU": 17.109829811557756,
140
- "chrF2": 35.524546949231734,
141
- "TER": 81.50271575135788,
142
- "exact_match_rate": 0.0234375,
143
  "empty_output_rate": 0.0,
144
- "character_length_ratio": 0.856099994748175
 
 
 
 
 
145
  },
146
  "tsu": {
147
  "samples": 128,
148
- "BLEU": 10.479400664823114,
149
- "chrF2": 29.16918823850146,
150
- "TER": 92.50645994832041,
151
- "exact_match_rate": 0.046875,
152
  "empty_output_rate": 0.0,
153
- "character_length_ratio": 0.9196694460988684
 
 
 
 
 
154
  },
155
  "xnb": {
156
  "samples": 128,
157
- "BLEU": 12.416322568561894,
158
- "chrF2": 33.35776470058066,
159
- "TER": 83.63064008394544,
160
- "exact_match_rate": 0.015625,
161
  "empty_output_rate": 0.0,
162
- "character_length_ratio": 0.9326793614156569
 
 
 
 
 
163
  },
164
  "xsy": {
165
  "samples": 128,
166
- "BLEU": 19.625253167391385,
167
- "chrF2": 34.701191046456756,
168
- "TER": 79.07407407407408,
169
- "exact_match_rate": 0.0546875,
170
  "empty_output_rate": 0.0,
171
- "character_length_ratio": 0.906812566184257
 
 
 
 
 
172
  }
173
  }
174
  },
175
- "step": 270000,
176
  "selection": {
177
  "metric": "chrF2",
178
- "value": 35.32946603492116,
179
  "improved": true,
180
- "best_value_before_eval": 35.08451950904042
181
  }
182
  }
183
  }
 
1
  {
2
+ "model_family": "nllb",
3
+ "recipe_id": "nllb200-spm8k-directional-v3",
4
+ "mt_standardization": {
5
+ "id": "formosan-mt-standard-v3",
6
+ "sha256": "4bbded87eb4833b2d1cd5a88a1f2b059560416e0e69ecfa55433a77f418c903e",
7
+ "namespace": "formosan-mt"
8
+ },
9
+ "step": 210000,
10
  "best_metric": "chrF2",
11
+ "best_value": 29.69675669457501,
12
  "direction": "f2en",
13
+ "run_contract_sha256": "aecd06637deb76f5e92f1f74099539741859863bfdb1ee63bdc2bde875205c09",
14
  "validation": {
15
+ "mean_token_loss": 3.3026913455802602,
16
+ "ppl": 27.18570668278096,
17
  "by_language": {
18
+ "ami": 2.7741046558310103,
19
+ "bnn": 2.4203313634080708,
20
+ "ckv": 3.8672077235665663,
21
+ "dru": 2.6078648727627933,
22
+ "pwn": 2.528691228550362,
23
+ "pyu": 2.6529325262628793,
24
+ "ssf": 3.959471394623352,
25
+ "sxr": 3.549196793319494,
26
+ "szy": 3.1354670804153746,
27
+ "tao": 5.619721773664961,
28
+ "tay": 2.977861526899009,
29
+ "trv": 3.2536238391231334,
30
+ "tsu": 2.991666843242918,
31
+ "xnb": 4.993570713988536,
32
+ "xsy": 3.4992934907904347
33
  },
34
  "generation": {
35
  "samples": 1920,
36
  "bleu_tokenize": "13a",
37
  "global": {
38
+ "BLEU": 9.527384853249911,
39
+ "chrF2": 29.69675669457501,
40
+ "TER": 92.68359895283149,
41
+ "exact_match_rate": 0.00625,
42
  "empty_output_rate": 0.0,
43
+ "character_length_ratio": 1.0418471274597054,
44
+ "signatures": {
45
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
46
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
47
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
48
+ }
49
  },
50
  "by_language": {
51
  "ami": {
52
  "samples": 128,
53
+ "BLEU": 9.238455573040238,
54
+ "chrF2": 31.95266793741873,
55
+ "TER": 87.55020080321285,
56
+ "exact_match_rate": 0.0,
57
  "empty_output_rate": 0.0,
58
+ "character_length_ratio": 0.9711417816813049,
59
+ "signatures": {
60
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
61
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
62
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
63
+ }
64
  },
65
  "bnn": {
66
  "samples": 128,
67
+ "BLEU": 15.111661288601976,
68
+ "chrF2": 37.447343289996,
69
+ "TER": 94.64285714285714,
70
+ "exact_match_rate": 0.015625,
71
  "empty_output_rate": 0.0,
72
+ "character_length_ratio": 1.1645185746777862,
73
+ "signatures": {
74
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
75
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
76
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
77
+ }
78
  },
79
  "ckv": {
80
  "samples": 128,
81
+ "BLEU": 8.31432371756987,
82
+ "chrF2": 28.393994850834748,
83
+ "TER": 90.07751937984496,
84
+ "exact_match_rate": 0.0,
85
  "empty_output_rate": 0.0,
86
+ "character_length_ratio": 1.0116120218579234,
87
+ "signatures": {
88
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
89
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
90
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
91
+ }
92
  },
93
  "dru": {
94
  "samples": 128,
95
+ "BLEU": 7.778519779287307,
96
+ "chrF2": 25.795375902173102,
97
+ "TER": 88.82226980728052,
98
+ "exact_match_rate": 0.0,
99
  "empty_output_rate": 0.0,
100
+ "character_length_ratio": 0.918150488225158,
101
+ "signatures": {
102
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
103
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
104
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
105
+ }
106
  },
107
  "pwn": {
108
  "samples": 128,
109
+ "BLEU": 8.658812231685097,
110
+ "chrF2": 32.22194063034251,
111
+ "TER": 89.4127732533219,
112
+ "exact_match_rate": 0.0,
113
  "empty_output_rate": 0.0,
114
+ "character_length_ratio": 1.0827989963758016,
115
+ "signatures": {
116
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
117
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
118
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
119
+ }
120
  },
121
  "pyu": {
122
  "samples": 128,
123
+ "BLEU": 16.483653914447636,
124
+ "chrF2": 37.10931345333428,
125
+ "TER": 80.96856414613424,
126
+ "exact_match_rate": 0.0078125,
127
  "empty_output_rate": 0.0,
128
+ "character_length_ratio": 1.1018188636789799,
129
+ "signatures": {
130
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
131
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
132
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
133
+ }
134
  },
135
  "ssf": {
136
  "samples": 128,
137
+ "BLEU": 5.545373975940428,
138
+ "chrF2": 28.047744106886313,
139
+ "TER": 109.63855421686748,
140
+ "exact_match_rate": 0.0,
141
  "empty_output_rate": 0.0,
142
+ "character_length_ratio": 1.2119829235978212,
143
+ "signatures": {
144
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
145
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
146
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
147
+ }
148
  },
149
  "sxr": {
150
  "samples": 128,
151
+ "BLEU": 7.707769211359447,
152
+ "chrF2": 29.688050193906157,
153
+ "TER": 97.93991416309012,
154
+ "exact_match_rate": 0.0078125,
155
  "empty_output_rate": 0.0,
156
+ "character_length_ratio": 1.0473008616142079,
157
+ "signatures": {
158
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
159
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
160
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
161
+ }
162
  },
163
  "szy": {
164
  "samples": 128,
165
+ "BLEU": 10.566286844226358,
166
+ "chrF2": 31.689864087527926,
167
+ "TER": 89.02517753389283,
168
+ "exact_match_rate": 0.0078125,
169
  "empty_output_rate": 0.0,
170
+ "character_length_ratio": 1.0423351759471484,
171
+ "signatures": {
172
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
173
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
174
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
175
+ }
176
  },
177
  "tao": {
178
  "samples": 128,
179
+ "BLEU": 1.5669790931362446,
180
+ "chrF2": 25.267381629423703,
181
+ "TER": 122.75600505689002,
182
+ "exact_match_rate": 0.0,
183
  "empty_output_rate": 0.0,
184
+ "character_length_ratio": 1.2265066394279878,
185
+ "signatures": {
186
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
187
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
188
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
189
+ }
190
  },
191
  "tay": {
192
  "samples": 128,
193
+ "BLEU": 7.238946215102692,
194
+ "chrF2": 24.056495084442492,
195
+ "TER": 87.7221324717286,
196
+ "exact_match_rate": 0.015625,
197
  "empty_output_rate": 0.0,
198
+ "character_length_ratio": 0.827789393651397,
199
+ "signatures": {
200
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
201
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
202
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
203
+ }
204
  },
205
  "trv": {
206
  "samples": 128,
207
+ "BLEU": 9.010710983806707,
208
+ "chrF2": 29.99822177170911,
209
+ "TER": 95.42947202521671,
210
+ "exact_match_rate": 0.0,
211
  "empty_output_rate": 0.0,
212
+ "character_length_ratio": 1.1590753424657534,
213
+ "signatures": {
214
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
215
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
216
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
217
+ }
218
  },
219
  "tsu": {
220
  "samples": 128,
221
+ "BLEU": 14.586628714061831,
222
+ "chrF2": 30.754865405687898,
223
+ "TER": 77.6869893148963,
224
+ "exact_match_rate": 0.0234375,
225
  "empty_output_rate": 0.0,
226
+ "character_length_ratio": 0.9626507775032699,
227
+ "signatures": {
228
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
229
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
230
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
231
+ }
232
  },
233
  "xnb": {
234
  "samples": 128,
235
+ "BLEU": 5.352878317943197,
236
+ "chrF2": 23.01127510854248,
237
+ "TER": 109.5948827292111,
238
+ "exact_match_rate": 0.0,
239
  "empty_output_rate": 0.0,
240
+ "character_length_ratio": 1.0608658982288446,
241
+ "signatures": {
242
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
243
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
244
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
245
+ }
246
  },
247
  "xsy": {
248
  "samples": 128,
249
+ "BLEU": 12.065210750445159,
250
+ "chrF2": 30.269374379711817,
251
+ "TER": 89.06942392909897,
252
+ "exact_match_rate": 0.015625,
253
  "empty_output_rate": 0.0,
254
+ "character_length_ratio": 0.9753761969904241,
255
+ "signatures": {
256
+ "BLEU": "nrefs:1|case:mixed|eff:yes|tok:13a|smooth:exp|version:2.5.1",
257
+ "chrF2": "nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1",
258
+ "TER": "nrefs:1|case:mixed|tok:tercom|norm:yes|punct:yes|asian:no|version:2.5.1"
259
+ }
260
  }
261
  }
262
  },
263
+ "step": 210000,
264
  "selection": {
265
  "metric": "chrF2",
266
+ "value": 29.69675669457501,
267
  "improved": true,
268
+ "best_value_before_eval": 29.56158400843854
269
  }
270
  }
271
  }
formosan_mt_inference.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """Apply the corpus MT standardization profile to Formosan inference input."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import argparse
7
+ import sys
8
+ from pathlib import Path
9
+
10
+ SCRIPT_DIR = Path(__file__).resolve().parent
11
+ PROJECT_ROOT = SCRIPT_DIR.parents[1]
12
+ LOCAL_SCRIPTS = PROJECT_ROOT / "scripts" / "local"
13
+ if LOCAL_SCRIPTS.is_dir():
14
+ sys.path.insert(0, str(LOCAL_SCRIPTS))
15
+
16
+ from mt_standardization import ( # noqa: E402
17
+ StandardizationContext,
18
+ assert_idempotent,
19
+ load_profile,
20
+ standardize_text,
21
+ )
22
+
23
+ PACKAGED_PROFILE = SCRIPT_DIR / "mt_standardization_profile.json"
24
+ PROJECT_PROFILE = PROJECT_ROOT / "config" / "mt_standardization.json"
25
+
26
+
27
+ def default_profile_path() -> Path:
28
+ if PACKAGED_PROFILE.is_file():
29
+ return PACKAGED_PROFILE
30
+ return PROJECT_PROFILE
31
+
32
+
33
+ def normalize_formosan(
34
+ text: str,
35
+ lang_code: str,
36
+ *,
37
+ row_type: str = "sentence",
38
+ source_repository: str = "inference",
39
+ source_path: str = "interactive",
40
+ profile_path: Path | None = None,
41
+ ) -> str:
42
+ """Return model-ready Formosan text or reject unresolved notation."""
43
+ path = (profile_path or default_profile_path()).expanduser().resolve()
44
+ profile = load_profile(path)
45
+ context = StandardizationContext(
46
+ language=lang_code.strip().lower(),
47
+ row_type=row_type,
48
+ repository=source_repository,
49
+ xml_path=source_path,
50
+ )
51
+ result = standardize_text(text, context=context, profile=profile)
52
+ if result.status != "accepted":
53
+ raise ValueError(
54
+ "Formosan input is not safe to normalize automatically: "
55
+ f"{result.reason or result.status}"
56
+ )
57
+ assert_idempotent(result, context=context, profile=profile)
58
+ return result.text
59
+
60
+
61
+ def main() -> None:
62
+ parser = argparse.ArgumentParser(description=__doc__)
63
+ parser.add_argument("text")
64
+ parser.add_argument("--lang-code", required=True)
65
+ parser.add_argument("--row-type", default="sentence")
66
+ parser.add_argument("--profile", type=Path)
67
+ args = parser.parse_args()
68
+ print(
69
+ normalize_formosan(
70
+ args.text,
71
+ args.lang_code,
72
+ row_type=args.row_type,
73
+ profile_path=args.profile,
74
+ )
75
+ )
76
+
77
+
78
+ if __name__ == "__main__":
79
+ main()
model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a17b04a6aa8fb520fac5be7e2c83fd50781ed625502651fc65be6c5e79ee7f2c
3
- size 2473425248
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:105bb37a848f1fedac34391abbe11e2caa185edf9b97b7325b871362f7b11f1c
3
+ size 2482530656
mt_standardization.py ADDED
@@ -0,0 +1,458 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Deterministic, source-aware Formosan standardization for MT corpora."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import hashlib
6
+ import html
7
+ import json
8
+ import re
9
+ import unicodedata
10
+ from dataclasses import dataclass
11
+ from pathlib import Path
12
+ from typing import Any, Iterable
13
+
14
+ PROJECT_ROOT = Path(__file__).resolve().parents[2]
15
+ DEFAULT_PROFILE_PATH = PROJECT_ROOT / "config" / "mt_standardization.json"
16
+
17
+ CONTROL_RE = re.compile(r"[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]")
18
+ FORMAT_CHARACTERS = frozenset("\u200b\u200c\u200d\ufeff")
19
+ WHITESPACE_RE = re.compile(r"\s+")
20
+ WIKI_HEADING_RE = re.compile(r"(^|\s)==+\s*([^=\n]+?)\s*==+(?=\s|$)")
21
+ ANGLE_CONTENT_RE = re.compile(r"<([^<>\s]{1,24})>")
22
+ BRACE_CONTENT_RE = re.compile(r"\{([^{}\s]{1,24})}")
23
+ OPTIONAL_CONTENT_RE = re.compile(r"\(([^()\s]{1,16})\)")
24
+ SIMPLE_ALTERNATIVE_RE = re.compile(r"(?<!\S)([^\s/]+)\s*/\s*([^\s/]+)(?!\S)")
25
+ SPACED_TILDE_RE = re.compile(r"(?<!\S)([^\s~]+)\s+~\s+([^\s~]+)(?!\S)")
26
+ SPEAKER_PREFIX_RE = re.compile(r"^([A-Z][A-Za-z0-9_. -]{0,31}):\s+")
27
+ URL_RE = re.compile(r"(?:https?://|www\.)", re.IGNORECASE)
28
+ SUPERSCRIPT_FOOTNOTE_RE = re.compile(r"(?<=\D)[⁰¹²³⁴⁵⁶⁷⁸⁹]+(?=\s|$)")
29
+ EXERCISE_BLANK_RE = re.compile(r"_{2,}")
30
+
31
+
32
+ @dataclass(frozen=True)
33
+ class StandardizationContext:
34
+ language: str
35
+ row_type: str
36
+ repository: str
37
+ xml_path: str
38
+
39
+
40
+ @dataclass(frozen=True)
41
+ class StandardizationResult:
42
+ text: str
43
+ status: str
44
+ confidence: str
45
+ eval_eligible: bool
46
+ transformations: tuple[dict[str, Any], ...]
47
+ unresolved_markers: tuple[str, ...]
48
+ reason: str = ""
49
+ speaker_label: str = ""
50
+
51
+
52
+ def load_profile(path: Path = DEFAULT_PROFILE_PATH) -> dict[str, Any]:
53
+ try:
54
+ profile = json.loads(path.read_text(encoding="utf-8"))
55
+ except (OSError, json.JSONDecodeError) as exc:
56
+ raise SystemExit(f"Cannot load MT standardization profile {path}: {exc}") from exc
57
+ if profile.get("schema_version") != 1:
58
+ raise SystemExit(f"Unsupported MT standardization profile schema: {profile.get('schema_version')}")
59
+ if not str(profile.get("profile_id") or "").strip():
60
+ raise SystemExit(f"MT standardization profile has no profile_id: {path}")
61
+ if profile.get("unicode_normalization") != "NFC":
62
+ raise SystemExit("MT standardization currently requires NFC")
63
+ expected_implementation = str(
64
+ profile.get("implementation_sha256") or ""
65
+ )
66
+ actual_implementation = hashlib.sha256(
67
+ Path(__file__).read_bytes()
68
+ ).hexdigest()
69
+ if expected_implementation != actual_implementation:
70
+ raise SystemExit(
71
+ "MT standardization implementation hash mismatch: "
72
+ f"profile={expected_implementation or '<missing>'}, "
73
+ f"loaded={actual_implementation}"
74
+ )
75
+ if not isinstance(profile.get("policy"), dict):
76
+ raise SystemExit(f"MT standardization profile has no policy mapping: {path}")
77
+ if not isinstance(profile.get("source_overrides", []), list):
78
+ raise SystemExit(f"MT standardization source_overrides must be a list: {path}")
79
+ return profile
80
+
81
+
82
+ def profile_sha256(path: Path = DEFAULT_PROFILE_PATH) -> str:
83
+ return hashlib.sha256(path.read_bytes()).hexdigest()
84
+
85
+
86
+ def is_orthographic_character(character: str) -> bool:
87
+ if not character:
88
+ return False
89
+ return unicodedata.category(character)[0] in {"L", "M", "N"} or character in {"'", "’", "ʼ"}
90
+
91
+
92
+ def insertion_content_is_safe(value: str) -> bool:
93
+ return bool(value) and all(is_orthographic_character(character) for character in value)
94
+
95
+
96
+ def source_matches(selector: dict[str, Any], context: StandardizationContext) -> bool:
97
+ for key, actual in (
98
+ ("language", context.language),
99
+ ("row_type", context.row_type),
100
+ ("repository", context.repository),
101
+ ):
102
+ expected = str(selector.get(key) or "*")
103
+ if expected not in {"*", actual}:
104
+ return False
105
+ path_pattern = str(selector.get("path_regex") or "")
106
+ return not path_pattern or re.search(path_pattern, context.xml_path) is not None
107
+
108
+
109
+ def effective_policy(profile: dict[str, Any], context: StandardizationContext) -> tuple[dict[str, Any], bool]:
110
+ policy = dict(profile["policy"])
111
+ reviewed_ambiguous = False
112
+ for override in profile.get("source_overrides", []):
113
+ if not isinstance(override, dict) or not source_matches(override, context):
114
+ continue
115
+ values = override.get("policy", {})
116
+ if not isinstance(values, dict):
117
+ raise ValueError(f"Source override policy must be a mapping: {override}")
118
+ policy.update(values)
119
+ reviewed_ambiguous = reviewed_ambiguous or bool(override.get("reviewed_ambiguous"))
120
+ return policy, reviewed_ambiguous
121
+
122
+
123
+ class _StandardizationRun:
124
+ def __init__(self, text: str) -> None:
125
+ self.text = text
126
+ self.transformations: list[dict[str, Any]] = []
127
+ self.ambiguous = False
128
+ self.reason = ""
129
+ self.speaker_label = ""
130
+
131
+ def replace(self, rule: str, new_text: str, *, count: int = 1, ambiguous: bool = False) -> None:
132
+ if new_text == self.text:
133
+ return
134
+ self.text = new_text
135
+ self.transformations.append({"rule": rule, "count": int(max(count, 1))})
136
+ self.ambiguous = self.ambiguous or ambiguous
137
+
138
+ def regex_sub(
139
+ self,
140
+ rule: str,
141
+ pattern: re.Pattern[str],
142
+ replacement: str | Any,
143
+ *,
144
+ ambiguous: bool = False,
145
+ ) -> None:
146
+ new_text, count = pattern.subn(replacement, self.text)
147
+ if count:
148
+ self.replace(rule, new_text, count=count, ambiguous=ambiguous)
149
+
150
+
151
+ def unwrap_infixes(run: _StandardizationRun, pattern: re.Pattern[str], rule: str) -> None:
152
+ count = 0
153
+
154
+ def replacement(match: re.Match[str]) -> str:
155
+ nonlocal count
156
+ content = match.group(1)
157
+ if not insertion_content_is_safe(content):
158
+ return match.group(0)
159
+ count += 1
160
+ return content
161
+
162
+ new_text = pattern.sub(replacement, run.text)
163
+ if count:
164
+ run.replace(rule, new_text, count=count)
165
+
166
+
167
+ def include_optional_segments(run: _StandardizationRun) -> None:
168
+ original = run.text
169
+ working = original
170
+ total = 0
171
+ while True:
172
+ count = 0
173
+
174
+ def replacement(match: re.Match[str]) -> str:
175
+ nonlocal count
176
+ start, end = match.span()
177
+ previous = working[start - 1] if start else ""
178
+ following = working[end] if end < len(working) else ""
179
+ content = match.group(1)
180
+ previous_is_boundary = (
181
+ is_orthographic_character(previous)
182
+ or previous in {"-", "=", "+", "~"}
183
+ )
184
+ following_is_boundary = (
185
+ is_orthographic_character(following)
186
+ or following in {"-", "=", "+", "~"}
187
+ )
188
+ if not (
189
+ insertion_content_is_safe(content)
190
+ and previous_is_boundary
191
+ and following_is_boundary
192
+ ):
193
+ return match.group(0)
194
+ count += 1
195
+ return content
196
+
197
+ updated = OPTIONAL_CONTENT_RE.sub(replacement, working)
198
+ if not count:
199
+ break
200
+ total += count
201
+ working = updated
202
+ if total:
203
+ run.replace(
204
+ "include_optional_intraword_segment",
205
+ working,
206
+ count=total,
207
+ ambiguous=True,
208
+ )
209
+
210
+
211
+ def remove_boundary_character(run: _StandardizationRun, marker: str, rule: str) -> None:
212
+ output: list[str] = []
213
+ removed = 0
214
+ index = 0
215
+ while index < len(run.text):
216
+ character = run.text[index]
217
+ if character != marker:
218
+ output.append(character)
219
+ index += 1
220
+ continue
221
+ end = index + 1
222
+ while end < len(run.text) and run.text[end] == marker:
223
+ end += 1
224
+ previous = run.text[index - 1] if index else ""
225
+ following = run.text[end] if end < len(run.text) else ""
226
+ if (is_orthographic_character(previous) or is_orthographic_character(following)) and not (
227
+ previous.isdigit() and following.isdigit()
228
+ ):
229
+ removed += end - index
230
+ index = end
231
+ continue
232
+ output.append(run.text[index:end])
233
+ index = end
234
+ if removed:
235
+ run.replace(rule, "".join(output), count=removed)
236
+
237
+
238
+ def normalize_morphological_boundaries(
239
+ run: _StandardizationRun,
240
+ policy: dict[str, Any],
241
+ ) -> None:
242
+ while True:
243
+ before = run.text
244
+ if policy.get("remove_clitic_boundaries") and "=" in run.text:
245
+ count = run.text.count("=")
246
+ run.replace(
247
+ "remove_clitic_boundary",
248
+ run.text.replace("=", ""),
249
+ count=count,
250
+ )
251
+ if policy.get("remove_intraword_hyphens"):
252
+ remove_boundary_character(
253
+ run,
254
+ "-",
255
+ "remove_hyphen_boundary",
256
+ )
257
+ if policy.get("remove_intraword_tildes"):
258
+ remove_boundary_character(
259
+ run,
260
+ "~",
261
+ "remove_tilde_boundary",
262
+ )
263
+ if policy.get("remove_intraword_pluses"):
264
+ remove_boundary_character(
265
+ run,
266
+ "+",
267
+ "remove_plus_boundary",
268
+ )
269
+ if policy.get("include_optional_intraword_segments"):
270
+ include_optional_segments(run)
271
+ if run.text == before:
272
+ return
273
+ if len(run.text) >= len(before):
274
+ raise ValueError(
275
+ "Morphological normalization did not strictly reduce text"
276
+ )
277
+
278
+
279
+ def select_simple_alternatives(run: _StandardizationRun) -> None:
280
+ if URL_RE.search(run.text):
281
+ run.reason = "url_in_formosan_standard"
282
+ return
283
+ slash_count = run.text.count("/")
284
+ if not slash_count:
285
+ return
286
+ if slash_count > 4:
287
+ run.reason = "complex_slash_notation"
288
+ return
289
+ working = run.text
290
+ total = 0
291
+ while True:
292
+ working, count = SIMPLE_ALTERNATIVE_RE.subn(lambda match: match.group(1), working)
293
+ total += count
294
+ if not count:
295
+ break
296
+ if total:
297
+ run.replace("select_first_slash_alternative", working, count=total, ambiguous=True)
298
+ if "/" in run.text:
299
+ run.reason = "unresolved_slash_notation"
300
+
301
+
302
+ def select_tilde_alternatives(run: _StandardizationRun) -> None:
303
+ working = run.text
304
+ total = 0
305
+ while True:
306
+ working, count = SPACED_TILDE_RE.subn(lambda match: match.group(1), working)
307
+ total += count
308
+ if not count:
309
+ break
310
+ if total:
311
+ run.replace("select_first_tilde_alternative", working, count=total, ambiguous=True)
312
+
313
+
314
+ def unresolved_markers(text: str, configured: Iterable[str]) -> tuple[str, ...]:
315
+ markers = {marker for marker in configured if marker and marker in text}
316
+ if EXERCISE_BLANK_RE.search(text):
317
+ markers.add("exercise_blank")
318
+ return tuple(sorted(markers))
319
+
320
+
321
+ def standardize_text(
322
+ value: object,
323
+ *,
324
+ context: StandardizationContext,
325
+ profile: dict[str, Any],
326
+ contains_unclear: bool = False,
327
+ ) -> StandardizationResult:
328
+ raw = "" if value is None else str(value)
329
+ if contains_unclear:
330
+ return StandardizationResult(
331
+ text="",
332
+ status="ineligible",
333
+ confidence="none",
334
+ eval_eligible=False,
335
+ transformations=(),
336
+ unresolved_markers=(),
337
+ reason="contains_unclear",
338
+ )
339
+ if not raw.strip():
340
+ return StandardizationResult(
341
+ text="",
342
+ status="ineligible",
343
+ confidence="none",
344
+ eval_eligible=False,
345
+ transformations=(),
346
+ unresolved_markers=(),
347
+ reason="empty_source_standard",
348
+ )
349
+
350
+ policy, reviewed_ambiguous = effective_policy(profile, context)
351
+ run = _StandardizationRun(raw)
352
+
353
+ controls = CONTROL_RE.sub(" ", run.text)
354
+ controls = "".join("" if character in FORMAT_CHARACTERS else character for character in controls)
355
+ run.replace("remove_control_and_format_characters", controls)
356
+ run.replace("html_unescape", html.unescape(run.text))
357
+ run.replace("unicode_nfc", unicodedata.normalize("NFC", run.text))
358
+ run.replace(
359
+ "normalize_whitespace",
360
+ WHITESPACE_RE.sub(" ", run.text).strip(),
361
+ )
362
+
363
+ if policy.get("strip_wiki_heading_markup"):
364
+ run.regex_sub("strip_wiki_heading_markup", WIKI_HEADING_RE, lambda match: f"{match.group(1)}{match.group(2)}")
365
+
366
+ if policy.get("remove_null_morphemes"):
367
+ for marker in ("Ø-", "∅-", "-Ø", "-∅", "Ø", "∅"):
368
+ count = run.text.count(marker)
369
+ if count:
370
+ run.replace("remove_null_morpheme", run.text.replace(marker, ""), count=count)
371
+
372
+ if policy.get("unwrap_letter_infixes"):
373
+ unwrap_infixes(run, ANGLE_CONTENT_RE, "unwrap_angle_infix")
374
+ unwrap_infixes(run, BRACE_CONTENT_RE, "unwrap_braced_morpheme")
375
+
376
+ # Remove annotation characters before boundary and alternative handling so
377
+ # cleanup cannot expose notation that is processed only on a later pass.
378
+ if "_" in run.text and not EXERCISE_BLANK_RE.search(run.text):
379
+ count = run.text.count("_")
380
+ run.replace("remove_annotation_underscore", run.text.replace("_", ""), count=count, ambiguous=True)
381
+ if "\\" in run.text:
382
+ count = run.text.count("\\")
383
+ run.replace("remove_escape_backslash", run.text.replace("\\", ""), count=count)
384
+
385
+ normalize_morphological_boundaries(run, policy)
386
+
387
+ if policy.get("select_first_simple_alternative"):
388
+ select_simple_alternatives(run)
389
+ select_tilde_alternatives(run)
390
+
391
+ if policy.get("strip_trailing_superscript_footnotes"):
392
+ run.regex_sub("strip_superscript_footnote", SUPERSCRIPT_FOOTNOTE_RE, "")
393
+
394
+ squeezed = WHITESPACE_RE.sub(" ", run.text).strip()
395
+ run.replace("normalize_whitespace", squeezed)
396
+
397
+ speaker = SPEAKER_PREFIX_RE.match(run.text)
398
+ if speaker:
399
+ run.speaker_label = speaker.group(1)
400
+
401
+ markers = unresolved_markers(run.text, profile.get("unresolved_annotation_characters", []))
402
+ reason = run.reason
403
+ if markers and not reason:
404
+ reason = "unresolved_annotation_markers"
405
+ if not run.text or not any(unicodedata.category(character)[0] in {"L", "M", "N"} for character in run.text):
406
+ return StandardizationResult(
407
+ text=run.text,
408
+ status="ineligible",
409
+ confidence="none",
410
+ eval_eligible=False,
411
+ transformations=tuple(run.transformations),
412
+ unresolved_markers=markers,
413
+ reason="empty_or_nonlinguistic_after_standardization",
414
+ speaker_label=run.speaker_label,
415
+ )
416
+ if reason or markers:
417
+ return StandardizationResult(
418
+ text=run.text,
419
+ status="quarantine",
420
+ confidence="ambiguous",
421
+ eval_eligible=False,
422
+ transformations=tuple(run.transformations),
423
+ unresolved_markers=markers,
424
+ reason=reason,
425
+ speaker_label=run.speaker_label,
426
+ )
427
+
428
+ confidence = "ambiguous" if run.ambiguous else ("safe" if run.transformations else "unchanged")
429
+ return StandardizationResult(
430
+ text=run.text,
431
+ status="accepted",
432
+ confidence=confidence,
433
+ eval_eligible=(context.row_type == "sentence" and (not run.ambiguous or reviewed_ambiguous)),
434
+ transformations=tuple(run.transformations),
435
+ unresolved_markers=(),
436
+ speaker_label=run.speaker_label,
437
+ )
438
+
439
+
440
+ def assert_idempotent(
441
+ result: StandardizationResult,
442
+ *,
443
+ context: StandardizationContext,
444
+ profile: dict[str, Any],
445
+ ) -> None:
446
+ if result.status != "accepted":
447
+ return
448
+ repeated = standardize_text(result.text, context=context, profile=profile)
449
+ if (
450
+ repeated.text != result.text
451
+ or repeated.status != "accepted"
452
+ or repeated.transformations
453
+ or repeated.speaker_label != result.speaker_label
454
+ ):
455
+ raise ValueError(
456
+ f"MT standardization is not idempotent for {context.repository}/{context.xml_path}: "
457
+ f"{result.text!r} -> {repeated.text!r}"
458
+ )
mt_standardization_profile.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "profile_id": "formosan-mt-standard-v3",
4
+ "implementation_sha256": "c78f092f826aed70468bb3d4276eb27bab482dc5dc36dedf9ed5726596e0dd31",
5
+ "unicode_normalization": "NFC",
6
+ "policy": {
7
+ "unwrap_letter_infixes": true,
8
+ "remove_clitic_boundaries": true,
9
+ "remove_null_morphemes": true,
10
+ "remove_intraword_hyphens": true,
11
+ "remove_intraword_tildes": true,
12
+ "remove_intraword_pluses": true,
13
+ "include_optional_intraword_segments": true,
14
+ "select_first_simple_alternative": true,
15
+ "strip_wiki_heading_markup": true,
16
+ "strip_trailing_superscript_footnotes": true
17
+ },
18
+ "source_overrides": [],
19
+ "unresolved_annotation_characters": [
20
+ "<",
21
+ ">",
22
+ "=",
23
+ "Ø",
24
+ "∅",
25
+ "*",
26
+ "_",
27
+ "{",
28
+ "}",
29
+ "|",
30
+ "\\"
31
+ ]
32
+ }
publication.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "repo_id": "FormosanBank/nllb200-formosan-en-spm8k",
4
+ "direction": "f2en",
5
+ "run_stamp": "20260809-210523",
6
+ "checkpoint": "best",
7
+ "checkpoint_step": 210000,
8
+ "corpus": {
9
+ "name": "private_no_bible",
10
+ "target_lang": "english",
11
+ "rows": 657530,
12
+ "splits": {
13
+ "test": 63140,
14
+ "train": 573657,
15
+ "validate": 20733
16
+ },
17
+ "sha256": "e3feeaf7c3c51b9cd5c4b0537ffe44a370e7d02723f34b467479b6c4f5f0ea77"
18
+ },
19
+ "profile_sha256": "34f45832bdedc1b8322b26936dd88667dfecb360d941a7f54f60ae31a1fb4e10",
20
+ "base_model": {
21
+ "name": "facebook/nllb-200-distilled-600M",
22
+ "revision": "f8d333a098d19b4fd9a8b18f94170487ad3f821d"
23
+ },
24
+ "mt_standardization": {
25
+ "id": "formosan-mt-standard-v3",
26
+ "sha256": "4bbded87eb4833b2d1cd5a88a1f2b059560416e0e69ecfa55433a77f418c903e",
27
+ "namespace": "formosan-mt"
28
+ },
29
+ "run_contract_sha256": "aecd06637deb76f5e92f1f74099539741859863bfdb1ee63bdc2bde875205c09"
30
+ }
sentencepiece.bpe.model CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:4fdb786ba0b0f8f103583a044c1c9d232707d2178f94016baebdde9ac5bd60ff
3
- size 4903201
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:13e0177da34cfe2c2ee36e49235ffa494edf17a5d62453cca71f6cfee794b8e4
3
+ size 4951530
special_tokens_map.json CHANGED
@@ -217,8 +217,6 @@
217
  "tsu_Latn",
218
  "xnb_Latn",
219
  "xsy_Latn",
220
- "<mask>",
221
- "<dae>",
222
  "<dialect_central>",
223
  "<dialect_coastal>",
224
  "<dialect_dawu>",
@@ -265,81 +263,127 @@
265
  "<dom_culture>",
266
  "<dom_dictionary>",
267
  "<dom_essays>",
268
- "<dom_ethnography_journal_ritual_song>",
269
  "<dom_formosan_100_paiwan_texts>",
270
  "<dom_formosan_academia_sinica_oral_legends>",
271
  "<dom_formosan_amis_adversative_constructions>",
 
272
  "<dom_formosan_amis_kavalan_lin_interrogative_verbs>",
273
  "<dom_formosan_amis_kuo_sung_comparative_constructions>",
274
  "<dom_formosan_amis_lifok_dongi_saopo_kimakimad>",
275
  "<dom_formosan_amis_myths_and_customs>",
276
  "<dom_formosan_amis_pa_verbs>",
277
- "<dom_formosan_amis_serial_verb_constructions>",
278
- "<dom_formosan_amis_tung_chiou>",
279
- "<dom_formosan_asai_sedik_language>",
 
280
  "<dom_formosan_bunun_debusser_dissertation>",
281
- "<dom_formosan_bunun_moriguchi_northern_texts>",
282
  "<dom_formosan_bunun_topic_focus>",
283
- "<dom_formosan_chen_fukuda_relabeling_ergative>",
284
- "<dom_formosan_chen_fukuda_three_ways_steal>",
 
 
285
  "<dom_formosan_cip_atayal_grammar_overview>",
 
 
286
  "<dom_formosan_dean_johnson_year_clouds_smangus>",
287
- "<dom_formosan_dorinda_tsai_hsiu_liu_neutral_imperfect>",
288
- "<dom_formosan_egerod_origin_headhunting_atayal_text_v>",
289
- "<dom_formosan_egerod_soren_word_order_word_classes_at>",
 
290
  "<dom_formosan_elizabeth_zeitoun_chen_huei_wu_overview>",
 
 
 
291
  "<dom_formosan_epark>",
292
- "<dom_formosan_ferrell_taiwan_aboriginal_groups_proble>",
293
  "<dom_formosan_gitbook_translations>",
294
  "<dom_formosan_glosbe>",
295
- "<dom_formosan_hala_saku_la_videos>",
296
  "<dom_formosan_holmer_seediq>",
 
297
  "<dom_formosan_huang_grammaticalization_squliq_atayal>",
 
 
298
  "<dom_formosan_huang_mei_chin_atayal_reference_grammar>",
299
  "<dom_formosan_huteson_rukai_survey>",
300
  "<dom_formosan_ilrdf_42_language_practice_word_lists>",
301
  "<dom_formosan_ilrdf_tousvusvutu_kita>",
 
302
  "<dom_formosan_indigenous_language_literary_awards>",
 
 
 
 
 
303
  "<dom_formosan_kanakanavu_texts>",
304
  "<dom_formosan_kavalan_zhang_reference_grammar>",
 
 
 
 
 
 
305
  "<dom_formosan_li_peirong_xu_weisheng_introduction_tru>",
306
  "<dom_formosan_li_peizhen_wu_xingyu_shouhu_xing>",
 
 
 
 
 
307
  "<dom_formosan_naomi_tsukida_correlative_clauses_seedi>",
308
  "<dom_formosan_nowbucyang_truku_thesis>",
 
309
  "<dom_formosan_old_texts>",
310
  "<dom_formosan_paiwan_collart_zeitoun_time_reference>",
311
  "<dom_formosan_paiwan_ho_five_dialects>",
312
  "<dom_formosan_paiwanstories>",
313
- "<dom_formosan_puyuma_chen_raising_to_object>",
 
 
 
 
 
 
314
  "<dom_formosan_puyuma_katipol_kopfjagdriten>",
315
- "<dom_formosan_puyuma_teng_pronominal_systems>",
316
  "<dom_formosan_puyuma_teng_reference_grammar>",
 
317
  "<dom_formosan_rik_bunun>",
318
- "<dom_formosan_robert_blust_austronesian_homeland_ling>",
319
- "<dom_formosan_rukai_mantauran_stories>",
320
- "<dom_formosan_rukai_texts>",
321
- "<dom_formosan_rukai_zeitoun_saying>",
322
  "<dom_formosan_saaroa_pan_grammar>",
323
  "<dom_formosan_sakizaya_affixes>",
324
  "<dom_formosan_seals>",
325
  "<dom_formosan_seediq_zhang_reference_grammar>",
326
- "<dom_formosan_shigeru_tsuchida_kanakanavu_texts>",
327
  "<dom_formosan_shigeru_tsuchida_reconstruction_proto_t>",
328
  "<dom_formosan_shih_rukai_adverbial>",
 
329
  "<dom_formosan_song_limei_introduction_kanakanavu_gram>",
330
  "<dom_formosan_song_limei_introduction_seediq_grammar>",
331
- "<dom_formosan_sung_kuo_descriptive_comparative_constr>",
332
- "<dom_formosan_taoshan_elementary_school_atelier_hui_k>",
333
- "<dom_formosan_tsukida_naomi_verb_classification_amis>",
334
- "<dom_formosan_wei_matri_clan_lineage_system_ami>",
 
 
 
 
335
  "<dom_formosan_wilang_yutas_videos>",
 
336
  "<dom_formosan_wu_jinglan_introduction_amis_grammar>",
 
337
  "<dom_formosan_yedda_palemeq_blog>",
338
  "<dom_formosan_yeddas_blog>",
339
  "<dom_formosan_yeh_meili_introduction_saisiyat_grammar>",
 
 
 
 
 
 
340
  "<dom_formosan_zhang_yongli_pan_jiarong_introduction_t>",
 
341
  "<dom_formosan_zheng_acl_2024>",
342
  "<dom_formosan_zheng_data>",
 
343
  "<dom_learning_vocab>",
344
  "<dom_nine_level>",
345
  "<dom_ntu>",
@@ -407,8 +451,8 @@
407
  },
408
  "mask_token": {
409
  "content": "<mask>",
410
- "lstrip": false,
411
- "normalized": false,
412
  "rstrip": false,
413
  "single_word": false
414
  },
 
217
  "tsu_Latn",
218
  "xnb_Latn",
219
  "xsy_Latn",
 
 
220
  "<dialect_central>",
221
  "<dialect_coastal>",
222
  "<dialect_dawu>",
 
263
  "<dom_culture>",
264
  "<dom_dictionary>",
265
  "<dom_essays>",
 
266
  "<dom_formosan_100_paiwan_texts>",
267
  "<dom_formosan_academia_sinica_oral_legends>",
268
  "<dom_formosan_amis_adversative_constructions>",
269
+ "<dom_formosan_amis_huang_english_phonology_grammar>",
270
  "<dom_formosan_amis_kavalan_lin_interrogative_verbs>",
271
  "<dom_formosan_amis_kuo_sung_comparative_constructions>",
272
  "<dom_formosan_amis_lifok_dongi_saopo_kimakimad>",
273
  "<dom_formosan_amis_myths_and_customs>",
274
  "<dom_formosan_amis_pa_verbs>",
275
+ "<dom_formosan_anna_hsiou_chuan_chang_reference_gramma>",
276
+ "<dom_formosan_anton_quack_puyuma_pulingaw>",
277
+ "<dom_formosan_atayal_you_nao_savak_raxayal>",
278
+ "<dom_formosan_boyizhenu_narrative_oral_literature_tap>",
279
  "<dom_formosan_bunun_debusser_dissertation>",
 
280
  "<dom_formosan_bunun_topic_focus>",
281
+ "<dom_formosan_catherine_tseng_seediq_atayal_foods_the>",
282
+ "<dom_formosan_chen_yaohan_miss_virginia_fey_played_es>",
283
+ "<dom_formosan_chun_mei_chen_comparative_phonology_pai>",
284
+ "<dom_formosan_chunming_wu_two_types_of_noun_incorpora>",
285
  "<dom_formosan_cip_atayal_grammar_overview>",
286
+ "<dom_formosan_claire_mcgill_a_brief_tayal_vocabulary>",
287
+ "<dom_formosan_david_blundell_ed_austronesian_taiwan>",
288
  "<dom_formosan_dean_johnson_year_clouds_smangus>",
289
+ "<dom_formosan_deng_fangqing_introduction_puyuma_gramm>",
290
+ "<dom_formosan_der_hwa_victoria_rau_grammar_atayal>",
291
+ "<dom_formosan_dong_manv_yami_ode_to_taro>",
292
+ "<dom_formosan_dong_yijia_tjuwabar_paiwan_ritual_langu>",
293
  "<dom_formosan_elizabeth_zeitoun_chen_huei_wu_overview>",
294
+ "<dom_formosan_elizabeth_zeitoun_lillian_huang_marie_y>",
295
+ "<dom_formosan_elizabeth_zeitoun_pronominal_system_man>",
296
+ "<dom_formosan_elizabeth_zeitoun_squib_dynamic_vs_stat>",
297
  "<dom_formosan_epark>",
 
298
  "<dom_formosan_gitbook_translations>",
299
  "<dom_formosan_glosbe>",
300
+ "<dom_formosan_ho_dan_phonological_system_butonglu_pai>",
301
  "<dom_formosan_holmer_seediq>",
302
+ "<dom_formosan_hsiu_chuan_liao_transitivity_ergativity>",
303
  "<dom_formosan_huang_grammaticalization_squliq_atayal>",
304
+ "<dom_formosan_huang_hui_chuan_glide_formation_takitud>",
305
+ "<dom_formosan_huang_huijuan_shi_chaokai_introduction>",
306
  "<dom_formosan_huang_mei_chin_atayal_reference_grammar>",
307
  "<dom_formosan_huteson_rukai_survey>",
308
  "<dom_formosan_ilrdf_42_language_practice_word_lists>",
309
  "<dom_formosan_ilrdf_tousvusvutu_kita>",
310
+ "<dom_formosan_indigenous_education_resource_center_ke>",
311
  "<dom_formosan_indigenous_language_literary_awards>",
312
+ "<dom_formosan_isabelle_bril_roots_and_stems_lexical_a>",
313
+ "<dom_formosan_jian_iwan_guo_qingliu_life_history>",
314
+ "<dom_formosan_jian_shilang_introduction_thao_grammar>",
315
+ "<dom_formosan_john_u_wolff_the_proto_austronesian_pho>",
316
+ "<dom_formosan_josiane_cauquelin_aborigines_taiwan_puy>",
317
  "<dom_formosan_kanakanavu_texts>",
318
  "<dom_formosan_kavalan_zhang_reference_grammar>",
319
+ "<dom_formosan_kolas_foting_aboriginal_education_world>",
320
+ "<dom_formosan_kucapungane>",
321
+ "<dom_formosan_kumu_tapas_tribal_memory_oral_history_w>",
322
+ "<dom_formosan_lei_shih_family_system_paiwan_at_su_pai>",
323
+ "<dom_formosan_li_may_sung_budai_rukai_exclamatives>",
324
+ "<dom_formosan_li_may_sung_clausal_nominalization_buda>",
325
  "<dom_formosan_li_peirong_xu_weisheng_introduction_tru>",
326
  "<dom_formosan_li_peizhen_wu_xingyu_shouhu_xing>",
327
+ "<dom_formosan_lillian_huang_atayal_participants_cross>",
328
+ "<dom_formosan_liu_manyi_kaskun_ata_matas_i_ki_quaz>",
329
+ "<dom_formosan_malcom_ross_proto_austronesian_verbal_m>",
330
+ "<dom_formosan_maya_yeh_blaq_uv_construction_atayal>",
331
+ "<dom_formosan_nanang_tadaw_naci_mowna_pgagu>",
332
  "<dom_formosan_naomi_tsukida_correlative_clauses_seedi>",
333
  "<dom_formosan_nowbucyang_truku_thesis>",
334
+ "<dom_formosan_ochiai_izumi_numerals_paran_seediq_rela>",
335
  "<dom_formosan_old_texts>",
336
  "<dom_formosan_paiwan_collart_zeitoun_time_reference>",
337
  "<dom_formosan_paiwan_ho_five_dialects>",
338
  "<dom_formosan_paiwanstories>",
339
+ "<dom_formosan_patricia_stanley_morphophonemics_of_ver>",
340
+ "<dom_formosan_paul_jen_kuei_li_internal_relationships>",
341
+ "<dom_formosan_paul_jen_kuei_li_rukai_structure>",
342
+ "<dom_formosan_paul_jen_kuei_li_the_preglottalised_sto>",
343
+ "<dom_formosan_paul_li_atayalic_final_voiced_stops>",
344
+ "<dom_formosan_paul_li_position_atayal_austronesian>",
345
+ "<dom_formosan_pingdong_county_government_kai_na_sepuc>",
346
  "<dom_formosan_puyuma_katipol_kopfjagdriten>",
 
347
  "<dom_formosan_puyuma_teng_reference_grammar>",
348
+ "<dom_formosan_raleigh_ferrell_construction_markers_fo>",
349
  "<dom_formosan_rik_bunun>",
350
+ "<dom_formosan_robert_blust_the_austronesian_languages>",
 
 
 
351
  "<dom_formosan_saaroa_pan_grammar>",
352
  "<dom_formosan_sakizaya_affixes>",
353
  "<dom_formosan_seals>",
354
  "<dom_formosan_seediq_zhang_reference_grammar>",
355
+ "<dom_formosan_shen_wenqi_introduction_sakizaya_gramma>",
356
  "<dom_formosan_shigeru_tsuchida_reconstruction_proto_t>",
357
  "<dom_formosan_shih_rukai_adverbial>",
358
+ "<dom_formosan_sing_olam_hong_tinglan_aboriginal_educa>",
359
  "<dom_formosan_song_limei_introduction_kanakanavu_gram>",
360
  "<dom_formosan_song_limei_introduction_seediq_grammar>",
361
+ "<dom_formosan_soren_egerod_statement_atayal_phonology>",
362
+ "<dom_formosan_stacy_teng_malcom_ross_is_puyuma_primar>",
363
+ "<dom_formosan_truku_lowking_demonstratives>",
364
+ "<dom_formosan_tsai_hsui_liu_complementation_three_lan>",
365
+ "<dom_formosan_tsai_wei_tien_dylan_conjunctive_reducti>",
366
+ "<dom_formosan_tsou_descriptive_study>",
367
+ "<dom_formosan_tung_tsuchida_ting_li_pan_saaroa_texts>",
368
+ "<dom_formosan_wei_huilin_liu_social_structure_yami>",
369
  "<dom_formosan_wilang_yutas_videos>",
370
+ "<dom_formosan_wu_chunming_adverbials_in_paiwan>",
371
  "<dom_formosan_wu_jinglan_introduction_amis_grammar>",
372
+ "<dom_formosan_xie_fuhui_introduction_kavalan_grammar>",
373
  "<dom_formosan_yedda_palemeq_blog>",
374
  "<dom_formosan_yeddas_blog>",
375
  "<dom_formosan_yeh_meili_introduction_saisiyat_grammar>",
376
+ "<dom_formosan_yi_yang_cheng_kanakanavu_word_level_pro>",
377
+ "<dom_formosan_yi_yang_cheng_tense_aspect_agent_markin>",
378
+ "<dom_formosan_yoshiro_nihira_bunun_vocabulary>",
379
+ "<dom_formosan_zeng_shifen_reduplication_affixation_pa>",
380
+ "<dom_formosan_zhan_sujuan_taiwan_indigenous_peoples_h>",
381
+ "<dom_formosan_zhang_xiujuan_introduction_paiwan_gramm>",
382
  "<dom_formosan_zhang_yongli_pan_jiarong_introduction_t>",
383
+ "<dom_formosan_zhao_shanhe_li_taiyuan_zhu_qingyi_abori>",
384
  "<dom_formosan_zheng_acl_2024>",
385
  "<dom_formosan_zheng_data>",
386
+ "<dom_formosan_zheng_yumei_zhu_qingyi_bo_hongming_abor>",
387
  "<dom_learning_vocab>",
388
  "<dom_nine_level>",
389
  "<dom_ntu>",
 
451
  },
452
  "mask_token": {
453
  "content": "<mask>",
454
+ "lstrip": true,
455
+ "normalized": true,
456
  "rstrip": false,
457
  "single_word": false
458
  },
tokenizer_config.json CHANGED
@@ -1650,13 +1650,13 @@
1650
  },
1651
  "256203": {
1652
  "content": "<mask>",
1653
- "lstrip": false,
1654
- "normalized": false,
1655
  "rstrip": false,
1656
  "single_word": false,
1657
  "special": true
1658
  },
1659
- "259217": {
1660
  "content": "ami_Latn",
1661
  "lstrip": false,
1662
  "normalized": false,
@@ -1664,7 +1664,7 @@
1664
  "single_word": false,
1665
  "special": true
1666
  },
1667
- "259218": {
1668
  "content": "bnn_Latn",
1669
  "lstrip": false,
1670
  "normalized": false,
@@ -1672,7 +1672,7 @@
1672
  "single_word": false,
1673
  "special": true
1674
  },
1675
- "259219": {
1676
  "content": "ckv_Latn",
1677
  "lstrip": false,
1678
  "normalized": false,
@@ -1680,7 +1680,7 @@
1680
  "single_word": false,
1681
  "special": true
1682
  },
1683
- "259220": {
1684
  "content": "dru_Latn",
1685
  "lstrip": false,
1686
  "normalized": false,
@@ -1688,7 +1688,7 @@
1688
  "single_word": false,
1689
  "special": true
1690
  },
1691
- "259221": {
1692
  "content": "pwn_Latn",
1693
  "lstrip": false,
1694
  "normalized": false,
@@ -1696,7 +1696,7 @@
1696
  "single_word": false,
1697
  "special": true
1698
  },
1699
- "259222": {
1700
  "content": "pyu_Latn",
1701
  "lstrip": false,
1702
  "normalized": false,
@@ -1704,7 +1704,7 @@
1704
  "single_word": false,
1705
  "special": true
1706
  },
1707
- "259223": {
1708
  "content": "ssf_Latn",
1709
  "lstrip": false,
1710
  "normalized": false,
@@ -1712,7 +1712,7 @@
1712
  "single_word": false,
1713
  "special": true
1714
  },
1715
- "259224": {
1716
  "content": "sxr_Latn",
1717
  "lstrip": false,
1718
  "normalized": false,
@@ -1720,7 +1720,7 @@
1720
  "single_word": false,
1721
  "special": true
1722
  },
1723
- "259225": {
1724
  "content": "szy_Latn",
1725
  "lstrip": false,
1726
  "normalized": false,
@@ -1728,7 +1728,7 @@
1728
  "single_word": false,
1729
  "special": true
1730
  },
1731
- "259226": {
1732
  "content": "tao_Latn",
1733
  "lstrip": false,
1734
  "normalized": false,
@@ -1736,7 +1736,7 @@
1736
  "single_word": false,
1737
  "special": true
1738
  },
1739
- "259227": {
1740
  "content": "tay_Latn",
1741
  "lstrip": false,
1742
  "normalized": false,
@@ -1744,7 +1744,7 @@
1744
  "single_word": false,
1745
  "special": true
1746
  },
1747
- "259228": {
1748
  "content": "trv_Latn",
1749
  "lstrip": false,
1750
  "normalized": false,
@@ -1752,7 +1752,7 @@
1752
  "single_word": false,
1753
  "special": true
1754
  },
1755
- "259229": {
1756
  "content": "tsu_Latn",
1757
  "lstrip": false,
1758
  "normalized": false,
@@ -1760,7 +1760,7 @@
1760
  "single_word": false,
1761
  "special": true
1762
  },
1763
- "259230": {
1764
  "content": "xnb_Latn",
1765
  "lstrip": false,
1766
  "normalized": false,
@@ -1768,7 +1768,7 @@
1768
  "single_word": false,
1769
  "special": true
1770
  },
1771
- "259231": {
1772
  "content": "xsy_Latn",
1773
  "lstrip": false,
1774
  "normalized": false,
@@ -1776,15 +1776,7 @@
1776
  "single_word": false,
1777
  "special": true
1778
  },
1779
- "259232": {
1780
- "content": "<dae>",
1781
- "lstrip": false,
1782
- "normalized": false,
1783
- "rstrip": false,
1784
- "single_word": false,
1785
- "special": true
1786
- },
1787
- "259233": {
1788
  "content": "<dialect_central>",
1789
  "lstrip": false,
1790
  "normalized": false,
@@ -1792,7 +1784,7 @@
1792
  "single_word": false,
1793
  "special": true
1794
  },
1795
- "259234": {
1796
  "content": "<dialect_coastal>",
1797
  "lstrip": false,
1798
  "normalized": false,
@@ -1800,7 +1792,7 @@
1800
  "single_word": false,
1801
  "special": true
1802
  },
1803
- "259235": {
1804
  "content": "<dialect_dawu>",
1805
  "lstrip": false,
1806
  "normalized": false,
@@ -1808,7 +1800,7 @@
1808
  "single_word": false,
1809
  "special": true
1810
  },
1811
- "259236": {
1812
  "content": "<dialect_default>",
1813
  "lstrip": false,
1814
  "normalized": false,
@@ -1816,7 +1808,7 @@
1816
  "single_word": false,
1817
  "special": true
1818
  },
1819
- "259237": {
1820
  "content": "<dialect_deluvalley>",
1821
  "lstrip": false,
1822
  "normalized": false,
@@ -1824,7 +1816,7 @@
1824
  "single_word": false,
1825
  "special": true
1826
  },
1827
- "259238": {
1828
  "content": "<dialect_dona>",
1829
  "lstrip": false,
1830
  "normalized": false,
@@ -1832,7 +1824,7 @@
1832
  "single_word": false,
1833
  "special": true
1834
  },
1835
- "259239": {
1836
  "content": "<dialect_duda>",
1837
  "lstrip": false,
1838
  "normalized": false,
@@ -1840,7 +1832,7 @@
1840
  "single_word": false,
1841
  "special": true
1842
  },
1843
- "259240": {
1844
  "content": "<dialect_eastern>",
1845
  "lstrip": false,
1846
  "normalized": false,
@@ -1848,7 +1840,7 @@
1848
  "single_word": false,
1849
  "special": true
1850
  },
1851
- "259241": {
1852
  "content": "<dialect_fourseasons>",
1853
  "lstrip": false,
1854
  "normalized": false,
@@ -1856,7 +1848,7 @@
1856
  "single_word": false,
1857
  "special": true
1858
  },
1859
- "259242": {
1860
  "content": "<dialect_hengchun>",
1861
  "lstrip": false,
1862
  "normalized": false,
@@ -1864,7 +1856,7 @@
1864
  "single_word": false,
1865
  "special": true
1866
  },
1867
- "259243": {
1868
  "content": "<dialect_jianhe>",
1869
  "lstrip": false,
1870
  "normalized": false,
@@ -1872,7 +1864,7 @@
1872
  "single_word": false,
1873
  "special": true
1874
  },
1875
- "259244": {
1876
  "content": "<dialect_junqun>",
1877
  "lstrip": false,
1878
  "normalized": false,
@@ -1880,7 +1872,7 @@
1880
  "single_word": false,
1881
  "special": true
1882
  },
1883
- "259245": {
1884
  "content": "<dialect_kanakanavu>",
1885
  "lstrip": false,
1886
  "normalized": false,
@@ -1888,7 +1880,7 @@
1888
  "single_word": false,
1889
  "special": true
1890
  },
1891
- "259246": {
1892
  "content": "<dialect_kaqun>",
1893
  "lstrip": false,
1894
  "normalized": false,
@@ -1896,7 +1888,7 @@
1896
  "single_word": false,
1897
  "special": true
1898
  },
1899
- "259247": {
1900
  "content": "<dialect_kavalan>",
1901
  "lstrip": false,
1902
  "normalized": false,
@@ -1904,7 +1896,7 @@
1904
  "single_word": false,
1905
  "special": true
1906
  },
1907
- "259248": {
1908
  "content": "<dialect_luanqun>",
1909
  "lstrip": false,
1910
  "normalized": false,
@@ -1912,7 +1904,7 @@
1912
  "single_word": false,
1913
  "special": true
1914
  },
1915
- "259249": {
1916
  "content": "<dialect_malan>",
1917
  "lstrip": false,
1918
  "normalized": false,
@@ -1920,7 +1912,7 @@
1920
  "single_word": false,
1921
  "special": true
1922
  },
1923
- "259250": {
1924
  "content": "<dialect_maolin>",
1925
  "lstrip": false,
1926
  "normalized": false,
@@ -1928,7 +1920,7 @@
1928
  "single_word": false,
1929
  "special": true
1930
  },
1931
- "259251": {
1932
  "content": "<dialect_nanwang>",
1933
  "lstrip": false,
1934
  "normalized": false,
@@ -1936,7 +1928,7 @@
1936
  "single_word": false,
1937
  "special": true
1938
  },
1939
- "259252": {
1940
  "content": "<dialect_northern>",
1941
  "lstrip": false,
1942
  "normalized": false,
@@ -1944,7 +1936,7 @@
1944
  "single_word": false,
1945
  "special": true
1946
  },
1947
- "259253": {
1948
  "content": "<dialect_saaroa>",
1949
  "lstrip": false,
1950
  "normalized": false,
@@ -1952,7 +1944,7 @@
1952
  "single_word": false,
1953
  "special": true
1954
  },
1955
- "259254": {
1956
  "content": "<dialect_saisiyat>",
1957
  "lstrip": false,
1958
  "normalized": false,
@@ -1960,7 +1952,7 @@
1960
  "single_word": false,
1961
  "special": true
1962
  },
1963
- "259255": {
1964
  "content": "<dialect_sakizaya>",
1965
  "lstrip": false,
1966
  "normalized": false,
@@ -1968,7 +1960,7 @@
1968
  "single_word": false,
1969
  "special": true
1970
  },
1971
- "259256": {
1972
  "content": "<dialect_sekolik>",
1973
  "lstrip": false,
1974
  "normalized": false,
@@ -1976,7 +1968,7 @@
1976
  "single_word": false,
1977
  "special": true
1978
  },
1979
- "259257": {
1980
  "content": "<dialect_southern>",
1981
  "lstrip": false,
1982
  "normalized": false,
@@ -1984,7 +1976,7 @@
1984
  "single_word": false,
1985
  "special": true
1986
  },
1987
- "259258": {
1988
  "content": "<dialect_tanqun>",
1989
  "lstrip": false,
1990
  "normalized": false,
@@ -1992,7 +1984,7 @@
1992
  "single_word": false,
1993
  "special": true
1994
  },
1995
- "259259": {
1996
  "content": "<dialect_tegudaya>",
1997
  "lstrip": false,
1998
  "normalized": false,
@@ -2000,7 +1992,7 @@
2000
  "single_word": false,
2001
  "special": true
2002
  },
2003
- "259260": {
2004
  "content": "<dialect_thao>",
2005
  "lstrip": false,
2006
  "normalized": false,
@@ -2008,7 +2000,7 @@
2008
  "single_word": false,
2009
  "special": true
2010
  },
2011
- "259261": {
2012
  "content": "<dialect_truku>",
2013
  "lstrip": false,
2014
  "normalized": false,
@@ -2016,7 +2008,7 @@
2016
  "single_word": false,
2017
  "special": true
2018
  },
2019
- "259262": {
2020
  "content": "<dialect_tsou>",
2021
  "lstrip": false,
2022
  "normalized": false,
@@ -2024,7 +2016,7 @@
2024
  "single_word": false,
2025
  "special": true
2026
  },
2027
- "259263": {
2028
  "content": "<dialect_unknown>",
2029
  "lstrip": false,
2030
  "normalized": false,
@@ -2032,7 +2024,7 @@
2032
  "single_word": false,
2033
  "special": true
2034
  },
2035
- "259264": {
2036
  "content": "<dialect_wanda>",
2037
  "lstrip": false,
2038
  "normalized": false,
@@ -2040,7 +2032,7 @@
2040
  "single_word": false,
2041
  "special": true
2042
  },
2043
- "259265": {
2044
  "content": "<dialect_wanshan>",
2045
  "lstrip": false,
2046
  "normalized": false,
@@ -2048,7 +2040,7 @@
2048
  "single_word": false,
2049
  "special": true
2050
  },
2051
- "259266": {
2052
  "content": "<dialect_wenshui>",
2053
  "lstrip": false,
2054
  "normalized": false,
@@ -2056,7 +2048,7 @@
2056
  "single_word": false,
2057
  "special": true
2058
  },
2059
- "259267": {
2060
  "content": "<dialect_wutai>",
2061
  "lstrip": false,
2062
  "normalized": false,
@@ -2064,7 +2056,7 @@
2064
  "single_word": false,
2065
  "special": true
2066
  },
2067
- "259268": {
2068
  "content": "<dialect_xiqun>",
2069
  "lstrip": false,
2070
  "normalized": false,
@@ -2072,7 +2064,7 @@
2072
  "single_word": false,
2073
  "special": true
2074
  },
2075
- "259269": {
2076
  "content": "<dialect_xiuguluan>",
2077
  "lstrip": false,
2078
  "normalized": false,
@@ -2080,7 +2072,7 @@
2080
  "single_word": false,
2081
  "special": true
2082
  },
2083
- "259270": {
2084
  "content": "<dialect_yami>",
2085
  "lstrip": false,
2086
  "normalized": false,
@@ -2088,7 +2080,7 @@
2088
  "single_word": false,
2089
  "special": true
2090
  },
2091
- "259271": {
2092
  "content": "<dialect_yilanzeaol>",
2093
  "lstrip": false,
2094
  "normalized": false,
@@ -2096,7 +2088,7 @@
2096
  "single_word": false,
2097
  "special": true
2098
  },
2099
- "259272": {
2100
  "content": "<dialect_zeaol>",
2101
  "lstrip": false,
2102
  "normalized": false,
@@ -2104,7 +2096,7 @@
2104
  "single_word": false,
2105
  "special": true
2106
  },
2107
- "259273": {
2108
  "content": "<dialect_zhiben>",
2109
  "lstrip": false,
2110
  "normalized": false,
@@ -2112,7 +2104,7 @@
2112
  "single_word": false,
2113
  "special": true
2114
  },
2115
- "259274": {
2116
  "content": "<dialect_zhuoqun>",
2117
  "lstrip": false,
2118
  "normalized": false,
@@ -2120,7 +2112,7 @@
2120
  "single_word": false,
2121
  "special": true
2122
  },
2123
- "259275": {
2124
  "content": "<dom_classroom_context>",
2125
  "lstrip": false,
2126
  "normalized": false,
@@ -2128,7 +2120,7 @@
2128
  "single_word": false,
2129
  "special": true
2130
  },
2131
- "259276": {
2132
  "content": "<dom_culture>",
2133
  "lstrip": false,
2134
  "normalized": false,
@@ -2136,7 +2128,7 @@
2136
  "single_word": false,
2137
  "special": true
2138
  },
2139
- "259277": {
2140
  "content": "<dom_dictionary>",
2141
  "lstrip": false,
2142
  "normalized": false,
@@ -2144,7 +2136,7 @@
2144
  "single_word": false,
2145
  "special": true
2146
  },
2147
- "259278": {
2148
  "content": "<dom_essays>",
2149
  "lstrip": false,
2150
  "normalized": false,
@@ -2152,39 +2144,39 @@
2152
  "single_word": false,
2153
  "special": true
2154
  },
2155
- "259279": {
2156
- "content": "<dom_ethnography_journal_ritual_song>",
2157
  "lstrip": false,
2158
  "normalized": false,
2159
  "rstrip": false,
2160
  "single_word": false,
2161
  "special": true
2162
  },
2163
- "259280": {
2164
- "content": "<dom_formosan_100_paiwan_texts>",
2165
  "lstrip": false,
2166
  "normalized": false,
2167
  "rstrip": false,
2168
  "single_word": false,
2169
  "special": true
2170
  },
2171
- "259281": {
2172
- "content": "<dom_formosan_academia_sinica_oral_legends>",
2173
  "lstrip": false,
2174
  "normalized": false,
2175
  "rstrip": false,
2176
  "single_word": false,
2177
  "special": true
2178
  },
2179
- "259282": {
2180
- "content": "<dom_formosan_amis_adversative_constructions>",
2181
  "lstrip": false,
2182
  "normalized": false,
2183
  "rstrip": false,
2184
  "single_word": false,
2185
  "special": true
2186
  },
2187
- "259283": {
2188
  "content": "<dom_formosan_amis_kavalan_lin_interrogative_verbs>",
2189
  "lstrip": false,
2190
  "normalized": false,
@@ -2192,7 +2184,7 @@
2192
  "single_word": false,
2193
  "special": true
2194
  },
2195
- "259284": {
2196
  "content": "<dom_formosan_amis_kuo_sung_comparative_constructions>",
2197
  "lstrip": false,
2198
  "normalized": false,
@@ -2200,7 +2192,7 @@
2200
  "single_word": false,
2201
  "special": true
2202
  },
2203
- "259285": {
2204
  "content": "<dom_formosan_amis_lifok_dongi_saopo_kimakimad>",
2205
  "lstrip": false,
2206
  "normalized": false,
@@ -2208,7 +2200,7 @@
2208
  "single_word": false,
2209
  "special": true
2210
  },
2211
- "259286": {
2212
  "content": "<dom_formosan_amis_myths_and_customs>",
2213
  "lstrip": false,
2214
  "normalized": false,
@@ -2216,7 +2208,7 @@
2216
  "single_word": false,
2217
  "special": true
2218
  },
2219
- "259287": {
2220
  "content": "<dom_formosan_amis_pa_verbs>",
2221
  "lstrip": false,
2222
  "normalized": false,
@@ -2224,47 +2216,47 @@
2224
  "single_word": false,
2225
  "special": true
2226
  },
2227
- "259288": {
2228
- "content": "<dom_formosan_amis_serial_verb_constructions>",
2229
  "lstrip": false,
2230
  "normalized": false,
2231
  "rstrip": false,
2232
  "single_word": false,
2233
  "special": true
2234
  },
2235
- "259289": {
2236
- "content": "<dom_formosan_amis_tung_chiou>",
2237
  "lstrip": false,
2238
  "normalized": false,
2239
  "rstrip": false,
2240
  "single_word": false,
2241
  "special": true
2242
  },
2243
- "259290": {
2244
- "content": "<dom_formosan_asai_sedik_language>",
2245
  "lstrip": false,
2246
  "normalized": false,
2247
  "rstrip": false,
2248
  "single_word": false,
2249
  "special": true
2250
  },
2251
- "259291": {
2252
- "content": "<dom_formosan_bunun_debusser_dissertation>",
2253
  "lstrip": false,
2254
  "normalized": false,
2255
  "rstrip": false,
2256
  "single_word": false,
2257
  "special": true
2258
  },
2259
- "259292": {
2260
- "content": "<dom_formosan_bunun_moriguchi_northern_texts>",
2261
  "lstrip": false,
2262
  "normalized": false,
2263
  "rstrip": false,
2264
  "single_word": false,
2265
  "special": true
2266
  },
2267
- "259293": {
2268
  "content": "<dom_formosan_bunun_topic_focus>",
2269
  "lstrip": false,
2270
  "normalized": false,
@@ -2272,23 +2264,39 @@
2272
  "single_word": false,
2273
  "special": true
2274
  },
2275
- "259294": {
2276
- "content": "<dom_formosan_chen_fukuda_relabeling_ergative>",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2277
  "lstrip": false,
2278
  "normalized": false,
2279
  "rstrip": false,
2280
  "single_word": false,
2281
  "special": true
2282
  },
2283
- "259295": {
2284
- "content": "<dom_formosan_chen_fukuda_three_ways_steal>",
2285
  "lstrip": false,
2286
  "normalized": false,
2287
  "rstrip": false,
2288
  "single_word": false,
2289
  "special": true
2290
  },
2291
- "259296": {
2292
  "content": "<dom_formosan_cip_atayal_grammar_overview>",
2293
  "lstrip": false,
2294
  "normalized": false,
@@ -2296,7 +2304,23 @@
2296
  "single_word": false,
2297
  "special": true
2298
  },
2299
- "259297": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2300
  "content": "<dom_formosan_dean_johnson_year_clouds_smangus>",
2301
  "lstrip": false,
2302
  "normalized": false,
@@ -2304,31 +2328,39 @@
2304
  "single_word": false,
2305
  "special": true
2306
  },
2307
- "259298": {
2308
- "content": "<dom_formosan_dorinda_tsai_hsiu_liu_neutral_imperfect>",
 
 
 
 
 
 
 
 
2309
  "lstrip": false,
2310
  "normalized": false,
2311
  "rstrip": false,
2312
  "single_word": false,
2313
  "special": true
2314
  },
2315
- "259299": {
2316
- "content": "<dom_formosan_egerod_origin_headhunting_atayal_text_v>",
2317
  "lstrip": false,
2318
  "normalized": false,
2319
  "rstrip": false,
2320
  "single_word": false,
2321
  "special": true
2322
  },
2323
- "259300": {
2324
- "content": "<dom_formosan_egerod_soren_word_order_word_classes_at>",
2325
  "lstrip": false,
2326
  "normalized": false,
2327
  "rstrip": false,
2328
  "single_word": false,
2329
  "special": true
2330
  },
2331
- "259301": {
2332
  "content": "<dom_formosan_elizabeth_zeitoun_chen_huei_wu_overview>",
2333
  "lstrip": false,
2334
  "normalized": false,
@@ -2336,23 +2368,39 @@
2336
  "single_word": false,
2337
  "special": true
2338
  },
2339
- "259302": {
2340
- "content": "<dom_formosan_epark>",
2341
  "lstrip": false,
2342
  "normalized": false,
2343
  "rstrip": false,
2344
  "single_word": false,
2345
  "special": true
2346
  },
2347
- "259303": {
2348
- "content": "<dom_formosan_ferrell_taiwan_aboriginal_groups_proble>",
2349
  "lstrip": false,
2350
  "normalized": false,
2351
  "rstrip": false,
2352
  "single_word": false,
2353
  "special": true
2354
  },
2355
- "259304": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2356
  "content": "<dom_formosan_gitbook_translations>",
2357
  "lstrip": false,
2358
  "normalized": false,
@@ -2360,7 +2408,7 @@
2360
  "single_word": false,
2361
  "special": true
2362
  },
2363
- "259305": {
2364
  "content": "<dom_formosan_glosbe>",
2365
  "lstrip": false,
2366
  "normalized": false,
@@ -2368,15 +2416,15 @@
2368
  "single_word": false,
2369
  "special": true
2370
  },
2371
- "259306": {
2372
- "content": "<dom_formosan_hala_saku_la_videos>",
2373
  "lstrip": false,
2374
  "normalized": false,
2375
  "rstrip": false,
2376
  "single_word": false,
2377
  "special": true
2378
  },
2379
- "259307": {
2380
  "content": "<dom_formosan_holmer_seediq>",
2381
  "lstrip": false,
2382
  "normalized": false,
@@ -2384,7 +2432,15 @@
2384
  "single_word": false,
2385
  "special": true
2386
  },
2387
- "259308": {
 
 
 
 
 
 
 
 
2388
  "content": "<dom_formosan_huang_grammaticalization_squliq_atayal>",
2389
  "lstrip": false,
2390
  "normalized": false,
@@ -2392,7 +2448,23 @@
2392
  "single_word": false,
2393
  "special": true
2394
  },
2395
- "259309": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2396
  "content": "<dom_formosan_huang_mei_chin_atayal_reference_grammar>",
2397
  "lstrip": false,
2398
  "normalized": false,
@@ -2400,7 +2472,7 @@
2400
  "single_word": false,
2401
  "special": true
2402
  },
2403
- "259310": {
2404
  "content": "<dom_formosan_huteson_rukai_survey>",
2405
  "lstrip": false,
2406
  "normalized": false,
@@ -2408,7 +2480,7 @@
2408
  "single_word": false,
2409
  "special": true
2410
  },
2411
- "259311": {
2412
  "content": "<dom_formosan_ilrdf_42_language_practice_word_lists>",
2413
  "lstrip": false,
2414
  "normalized": false,
@@ -2416,7 +2488,7 @@
2416
  "single_word": false,
2417
  "special": true
2418
  },
2419
- "259312": {
2420
  "content": "<dom_formosan_ilrdf_tousvusvutu_kita>",
2421
  "lstrip": false,
2422
  "normalized": false,
@@ -2424,7 +2496,15 @@
2424
  "single_word": false,
2425
  "special": true
2426
  },
2427
- "259313": {
 
 
 
 
 
 
 
 
2428
  "content": "<dom_formosan_indigenous_language_literary_awards>",
2429
  "lstrip": false,
2430
  "normalized": false,
@@ -2432,7 +2512,47 @@
2432
  "single_word": false,
2433
  "special": true
2434
  },
2435
- "259314": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2436
  "content": "<dom_formosan_kanakanavu_texts>",
2437
  "lstrip": false,
2438
  "normalized": false,
@@ -2440,7 +2560,7 @@
2440
  "single_word": false,
2441
  "special": true
2442
  },
2443
- "259315": {
2444
  "content": "<dom_formosan_kavalan_zhang_reference_grammar>",
2445
  "lstrip": false,
2446
  "normalized": false,
@@ -2448,7 +2568,55 @@
2448
  "single_word": false,
2449
  "special": true
2450
  },
2451
- "259316": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2452
  "content": "<dom_formosan_li_peirong_xu_weisheng_introduction_tru>",
2453
  "lstrip": false,
2454
  "normalized": false,
@@ -2456,7 +2624,7 @@
2456
  "single_word": false,
2457
  "special": true
2458
  },
2459
- "259317": {
2460
  "content": "<dom_formosan_li_peizhen_wu_xingyu_shouhu_xing>",
2461
  "lstrip": false,
2462
  "normalized": false,
@@ -2464,7 +2632,47 @@
2464
  "single_word": false,
2465
  "special": true
2466
  },
2467
- "259318": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2468
  "content": "<dom_formosan_naomi_tsukida_correlative_clauses_seedi>",
2469
  "lstrip": false,
2470
  "normalized": false,
@@ -2472,7 +2680,7 @@
2472
  "single_word": false,
2473
  "special": true
2474
  },
2475
- "259319": {
2476
  "content": "<dom_formosan_nowbucyang_truku_thesis>",
2477
  "lstrip": false,
2478
  "normalized": false,
@@ -2480,7 +2688,15 @@
2480
  "single_word": false,
2481
  "special": true
2482
  },
2483
- "259320": {
 
 
 
 
 
 
 
 
2484
  "content": "<dom_formosan_old_texts>",
2485
  "lstrip": false,
2486
  "normalized": false,
@@ -2488,7 +2704,7 @@
2488
  "single_word": false,
2489
  "special": true
2490
  },
2491
- "259321": {
2492
  "content": "<dom_formosan_paiwan_collart_zeitoun_time_reference>",
2493
  "lstrip": false,
2494
  "normalized": false,
@@ -2496,7 +2712,7 @@
2496
  "single_word": false,
2497
  "special": true
2498
  },
2499
- "259322": {
2500
  "content": "<dom_formosan_paiwan_ho_five_dialects>",
2501
  "lstrip": false,
2502
  "normalized": false,
@@ -2504,7 +2720,7 @@
2504
  "single_word": false,
2505
  "special": true
2506
  },
2507
- "259323": {
2508
  "content": "<dom_formosan_paiwanstories>",
2509
  "lstrip": false,
2510
  "normalized": false,
@@ -2512,79 +2728,103 @@
2512
  "single_word": false,
2513
  "special": true
2514
  },
2515
- "259324": {
2516
- "content": "<dom_formosan_puyuma_chen_raising_to_object>",
2517
  "lstrip": false,
2518
  "normalized": false,
2519
  "rstrip": false,
2520
  "single_word": false,
2521
  "special": true
2522
  },
2523
- "259325": {
2524
- "content": "<dom_formosan_puyuma_katipol_kopfjagdriten>",
2525
  "lstrip": false,
2526
  "normalized": false,
2527
  "rstrip": false,
2528
  "single_word": false,
2529
  "special": true
2530
  },
2531
- "259326": {
2532
- "content": "<dom_formosan_puyuma_teng_pronominal_systems>",
2533
  "lstrip": false,
2534
  "normalized": false,
2535
  "rstrip": false,
2536
  "single_word": false,
2537
  "special": true
2538
  },
2539
- "259327": {
2540
- "content": "<dom_formosan_puyuma_teng_reference_grammar>",
2541
  "lstrip": false,
2542
  "normalized": false,
2543
  "rstrip": false,
2544
  "single_word": false,
2545
  "special": true
2546
  },
2547
- "259328": {
2548
- "content": "<dom_formosan_rik_bunun>",
 
 
 
 
 
 
 
 
2549
  "lstrip": false,
2550
  "normalized": false,
2551
  "rstrip": false,
2552
  "single_word": false,
2553
  "special": true
2554
  },
2555
- "259329": {
2556
- "content": "<dom_formosan_robert_blust_austronesian_homeland_ling>",
2557
  "lstrip": false,
2558
  "normalized": false,
2559
  "rstrip": false,
2560
  "single_word": false,
2561
  "special": true
2562
  },
2563
- "259330": {
2564
- "content": "<dom_formosan_rukai_mantauran_stories>",
2565
  "lstrip": false,
2566
  "normalized": false,
2567
  "rstrip": false,
2568
  "single_word": false,
2569
  "special": true
2570
  },
2571
- "259331": {
2572
- "content": "<dom_formosan_rukai_texts>",
2573
  "lstrip": false,
2574
  "normalized": false,
2575
  "rstrip": false,
2576
  "single_word": false,
2577
  "special": true
2578
  },
2579
- "259332": {
2580
- "content": "<dom_formosan_rukai_zeitoun_saying>",
2581
  "lstrip": false,
2582
  "normalized": false,
2583
  "rstrip": false,
2584
  "single_word": false,
2585
  "special": true
2586
  },
2587
- "259333": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2588
  "content": "<dom_formosan_saaroa_pan_grammar>",
2589
  "lstrip": false,
2590
  "normalized": false,
@@ -2592,7 +2832,7 @@
2592
  "single_word": false,
2593
  "special": true
2594
  },
2595
- "259334": {
2596
  "content": "<dom_formosan_sakizaya_affixes>",
2597
  "lstrip": false,
2598
  "normalized": false,
@@ -2600,7 +2840,7 @@
2600
  "single_word": false,
2601
  "special": true
2602
  },
2603
- "259335": {
2604
  "content": "<dom_formosan_seals>",
2605
  "lstrip": false,
2606
  "normalized": false,
@@ -2608,7 +2848,7 @@
2608
  "single_word": false,
2609
  "special": true
2610
  },
2611
- "259336": {
2612
  "content": "<dom_formosan_seediq_zhang_reference_grammar>",
2613
  "lstrip": false,
2614
  "normalized": false,
@@ -2616,15 +2856,15 @@
2616
  "single_word": false,
2617
  "special": true
2618
  },
2619
- "259337": {
2620
- "content": "<dom_formosan_shigeru_tsuchida_kanakanavu_texts>",
2621
  "lstrip": false,
2622
  "normalized": false,
2623
  "rstrip": false,
2624
  "single_word": false,
2625
  "special": true
2626
  },
2627
- "259338": {
2628
  "content": "<dom_formosan_shigeru_tsuchida_reconstruction_proto_t>",
2629
  "lstrip": false,
2630
  "normalized": false,
@@ -2632,7 +2872,7 @@
2632
  "single_word": false,
2633
  "special": true
2634
  },
2635
- "259339": {
2636
  "content": "<dom_formosan_shih_rukai_adverbial>",
2637
  "lstrip": false,
2638
  "normalized": false,
@@ -2640,7 +2880,15 @@
2640
  "single_word": false,
2641
  "special": true
2642
  },
2643
- "259340": {
 
 
 
 
 
 
 
 
2644
  "content": "<dom_formosan_song_limei_introduction_kanakanavu_gram>",
2645
  "lstrip": false,
2646
  "normalized": false,
@@ -2648,7 +2896,7 @@
2648
  "single_word": false,
2649
  "special": true
2650
  },
2651
- "259341": {
2652
  "content": "<dom_formosan_song_limei_introduction_seediq_grammar>",
2653
  "lstrip": false,
2654
  "normalized": false,
@@ -2656,39 +2904,71 @@
2656
  "single_word": false,
2657
  "special": true
2658
  },
2659
- "259342": {
2660
- "content": "<dom_formosan_sung_kuo_descriptive_comparative_constr>",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2661
  "lstrip": false,
2662
  "normalized": false,
2663
  "rstrip": false,
2664
  "single_word": false,
2665
  "special": true
2666
  },
2667
- "259343": {
2668
- "content": "<dom_formosan_taoshan_elementary_school_atelier_hui_k>",
2669
  "lstrip": false,
2670
  "normalized": false,
2671
  "rstrip": false,
2672
  "single_word": false,
2673
  "special": true
2674
  },
2675
- "259344": {
2676
- "content": "<dom_formosan_tsukida_naomi_verb_classification_amis>",
2677
  "lstrip": false,
2678
  "normalized": false,
2679
  "rstrip": false,
2680
  "single_word": false,
2681
  "special": true
2682
  },
2683
- "259345": {
2684
- "content": "<dom_formosan_wei_matri_clan_lineage_system_ami>",
2685
  "lstrip": false,
2686
  "normalized": false,
2687
  "rstrip": false,
2688
  "single_word": false,
2689
  "special": true
2690
  },
2691
- "259346": {
 
 
 
 
 
 
 
 
2692
  "content": "<dom_formosan_wilang_yutas_videos>",
2693
  "lstrip": false,
2694
  "normalized": false,
@@ -2696,7 +2976,15 @@
2696
  "single_word": false,
2697
  "special": true
2698
  },
2699
- "259347": {
 
 
 
 
 
 
 
 
2700
  "content": "<dom_formosan_wu_jinglan_introduction_amis_grammar>",
2701
  "lstrip": false,
2702
  "normalized": false,
@@ -2704,7 +2992,15 @@
2704
  "single_word": false,
2705
  "special": true
2706
  },
2707
- "259348": {
 
 
 
 
 
 
 
 
2708
  "content": "<dom_formosan_yedda_palemeq_blog>",
2709
  "lstrip": false,
2710
  "normalized": false,
@@ -2712,7 +3008,7 @@
2712
  "single_word": false,
2713
  "special": true
2714
  },
2715
- "259349": {
2716
  "content": "<dom_formosan_yeddas_blog>",
2717
  "lstrip": false,
2718
  "normalized": false,
@@ -2720,7 +3016,7 @@
2720
  "single_word": false,
2721
  "special": true
2722
  },
2723
- "259350": {
2724
  "content": "<dom_formosan_yeh_meili_introduction_saisiyat_grammar>",
2725
  "lstrip": false,
2726
  "normalized": false,
@@ -2728,7 +3024,55 @@
2728
  "single_word": false,
2729
  "special": true
2730
  },
2731
- "259351": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2732
  "content": "<dom_formosan_zhang_yongli_pan_jiarong_introduction_t>",
2733
  "lstrip": false,
2734
  "normalized": false,
@@ -2736,7 +3080,15 @@
2736
  "single_word": false,
2737
  "special": true
2738
  },
2739
- "259352": {
 
 
 
 
 
 
 
 
2740
  "content": "<dom_formosan_zheng_acl_2024>",
2741
  "lstrip": false,
2742
  "normalized": false,
@@ -2744,7 +3096,7 @@
2744
  "single_word": false,
2745
  "special": true
2746
  },
2747
- "259353": {
2748
  "content": "<dom_formosan_zheng_data>",
2749
  "lstrip": false,
2750
  "normalized": false,
@@ -2752,7 +3104,15 @@
2752
  "single_word": false,
2753
  "special": true
2754
  },
2755
- "259354": {
 
 
 
 
 
 
 
 
2756
  "content": "<dom_learning_vocab>",
2757
  "lstrip": false,
2758
  "normalized": false,
@@ -2760,7 +3120,7 @@
2760
  "single_word": false,
2761
  "special": true
2762
  },
2763
- "259355": {
2764
  "content": "<dom_nine_level>",
2765
  "lstrip": false,
2766
  "normalized": false,
@@ -2768,7 +3128,7 @@
2768
  "single_word": false,
2769
  "special": true
2770
  },
2771
- "259356": {
2772
  "content": "<dom_ntu>",
2773
  "lstrip": false,
2774
  "normalized": false,
@@ -2776,7 +3136,7 @@
2776
  "single_word": false,
2777
  "special": true
2778
  },
2779
- "259357": {
2780
  "content": "<dom_picture_book>",
2781
  "lstrip": false,
2782
  "normalized": false,
@@ -2784,7 +3144,7 @@
2784
  "single_word": false,
2785
  "special": true
2786
  },
2787
- "259358": {
2788
  "content": "<dom_picture_story>",
2789
  "lstrip": false,
2790
  "normalized": false,
@@ -2792,7 +3152,7 @@
2792
  "single_word": false,
2793
  "special": true
2794
  },
2795
- "259359": {
2796
  "content": "<dom_presidential_apology>",
2797
  "lstrip": false,
2798
  "normalized": false,
@@ -2800,7 +3160,7 @@
2800
  "single_word": false,
2801
  "special": true
2802
  },
2803
- "259360": {
2804
  "content": "<dom_reading_writing>",
2805
  "lstrip": false,
2806
  "normalized": false,
@@ -2808,7 +3168,7 @@
2808
  "single_word": false,
2809
  "special": true
2810
  },
2811
- "259361": {
2812
  "content": "<dom_unknown>",
2813
  "lstrip": false,
2814
  "normalized": false,
@@ -2816,7 +3176,7 @@
2816
  "single_word": false,
2817
  "special": true
2818
  },
2819
- "259362": {
2820
  "content": "<dom_youtube>",
2821
  "lstrip": false,
2822
  "normalized": false,
@@ -2824,7 +3184,7 @@
2824
  "single_word": false,
2825
  "special": true
2826
  },
2827
- "259363": {
2828
  "content": "<src_ami>",
2829
  "lstrip": false,
2830
  "normalized": false,
@@ -2832,7 +3192,7 @@
2832
  "single_word": false,
2833
  "special": true
2834
  },
2835
- "259364": {
2836
  "content": "<src_bnn>",
2837
  "lstrip": false,
2838
  "normalized": false,
@@ -2840,7 +3200,7 @@
2840
  "single_word": false,
2841
  "special": true
2842
  },
2843
- "259365": {
2844
  "content": "<src_ckv>",
2845
  "lstrip": false,
2846
  "normalized": false,
@@ -2848,7 +3208,7 @@
2848
  "single_word": false,
2849
  "special": true
2850
  },
2851
- "259366": {
2852
  "content": "<src_dru>",
2853
  "lstrip": false,
2854
  "normalized": false,
@@ -2856,7 +3216,7 @@
2856
  "single_word": false,
2857
  "special": true
2858
  },
2859
- "259367": {
2860
  "content": "<src_eng>",
2861
  "lstrip": false,
2862
  "normalized": false,
@@ -2864,7 +3224,7 @@
2864
  "single_word": false,
2865
  "special": true
2866
  },
2867
- "259368": {
2868
  "content": "<src_pwn>",
2869
  "lstrip": false,
2870
  "normalized": false,
@@ -2872,7 +3232,7 @@
2872
  "single_word": false,
2873
  "special": true
2874
  },
2875
- "259369": {
2876
  "content": "<src_pyu>",
2877
  "lstrip": false,
2878
  "normalized": false,
@@ -2880,7 +3240,7 @@
2880
  "single_word": false,
2881
  "special": true
2882
  },
2883
- "259370": {
2884
  "content": "<src_ssf>",
2885
  "lstrip": false,
2886
  "normalized": false,
@@ -2888,7 +3248,7 @@
2888
  "single_word": false,
2889
  "special": true
2890
  },
2891
- "259371": {
2892
  "content": "<src_sxr>",
2893
  "lstrip": false,
2894
  "normalized": false,
@@ -2896,7 +3256,7 @@
2896
  "single_word": false,
2897
  "special": true
2898
  },
2899
- "259372": {
2900
  "content": "<src_szy>",
2901
  "lstrip": false,
2902
  "normalized": false,
@@ -2904,7 +3264,7 @@
2904
  "single_word": false,
2905
  "special": true
2906
  },
2907
- "259373": {
2908
  "content": "<src_tao>",
2909
  "lstrip": false,
2910
  "normalized": false,
@@ -2912,7 +3272,7 @@
2912
  "single_word": false,
2913
  "special": true
2914
  },
2915
- "259374": {
2916
  "content": "<src_tay>",
2917
  "lstrip": false,
2918
  "normalized": false,
@@ -2920,7 +3280,7 @@
2920
  "single_word": false,
2921
  "special": true
2922
  },
2923
- "259375": {
2924
  "content": "<src_trv>",
2925
  "lstrip": false,
2926
  "normalized": false,
@@ -2928,7 +3288,7 @@
2928
  "single_word": false,
2929
  "special": true
2930
  },
2931
- "259376": {
2932
  "content": "<src_tsu>",
2933
  "lstrip": false,
2934
  "normalized": false,
@@ -2936,7 +3296,7 @@
2936
  "single_word": false,
2937
  "special": true
2938
  },
2939
- "259377": {
2940
  "content": "<src_xnb>",
2941
  "lstrip": false,
2942
  "normalized": false,
@@ -2944,7 +3304,7 @@
2944
  "single_word": false,
2945
  "special": true
2946
  },
2947
- "259378": {
2948
  "content": "<src_xsy>",
2949
  "lstrip": false,
2950
  "normalized": false,
@@ -2952,7 +3312,7 @@
2952
  "single_word": false,
2953
  "special": true
2954
  },
2955
- "259379": {
2956
  "content": "<src_zh>",
2957
  "lstrip": false,
2958
  "normalized": false,
@@ -2960,7 +3320,7 @@
2960
  "single_word": false,
2961
  "special": true
2962
  },
2963
- "259380": {
2964
  "content": "<to_ami>",
2965
  "lstrip": false,
2966
  "normalized": false,
@@ -2968,7 +3328,7 @@
2968
  "single_word": false,
2969
  "special": true
2970
  },
2971
- "259381": {
2972
  "content": "<to_bnn>",
2973
  "lstrip": false,
2974
  "normalized": false,
@@ -2976,7 +3336,7 @@
2976
  "single_word": false,
2977
  "special": true
2978
  },
2979
- "259382": {
2980
  "content": "<to_ckv>",
2981
  "lstrip": false,
2982
  "normalized": false,
@@ -2984,7 +3344,7 @@
2984
  "single_word": false,
2985
  "special": true
2986
  },
2987
- "259383": {
2988
  "content": "<to_dru>",
2989
  "lstrip": false,
2990
  "normalized": false,
@@ -2992,7 +3352,7 @@
2992
  "single_word": false,
2993
  "special": true
2994
  },
2995
- "259384": {
2996
  "content": "<to_eng>",
2997
  "lstrip": false,
2998
  "normalized": false,
@@ -3000,7 +3360,7 @@
3000
  "single_word": false,
3001
  "special": true
3002
  },
3003
- "259385": {
3004
  "content": "<to_pwn>",
3005
  "lstrip": false,
3006
  "normalized": false,
@@ -3008,7 +3368,7 @@
3008
  "single_word": false,
3009
  "special": true
3010
  },
3011
- "259386": {
3012
  "content": "<to_pyu>",
3013
  "lstrip": false,
3014
  "normalized": false,
@@ -3016,7 +3376,7 @@
3016
  "single_word": false,
3017
  "special": true
3018
  },
3019
- "259387": {
3020
  "content": "<to_ssf>",
3021
  "lstrip": false,
3022
  "normalized": false,
@@ -3024,7 +3384,7 @@
3024
  "single_word": false,
3025
  "special": true
3026
  },
3027
- "259388": {
3028
  "content": "<to_sxr>",
3029
  "lstrip": false,
3030
  "normalized": false,
@@ -3032,7 +3392,7 @@
3032
  "single_word": false,
3033
  "special": true
3034
  },
3035
- "259389": {
3036
  "content": "<to_szy>",
3037
  "lstrip": false,
3038
  "normalized": false,
@@ -3040,7 +3400,7 @@
3040
  "single_word": false,
3041
  "special": true
3042
  },
3043
- "259390": {
3044
  "content": "<to_tao>",
3045
  "lstrip": false,
3046
  "normalized": false,
@@ -3048,7 +3408,7 @@
3048
  "single_word": false,
3049
  "special": true
3050
  },
3051
- "259391": {
3052
  "content": "<to_tay>",
3053
  "lstrip": false,
3054
  "normalized": false,
@@ -3056,7 +3416,7 @@
3056
  "single_word": false,
3057
  "special": true
3058
  },
3059
- "259392": {
3060
  "content": "<to_trv>",
3061
  "lstrip": false,
3062
  "normalized": false,
@@ -3064,7 +3424,7 @@
3064
  "single_word": false,
3065
  "special": true
3066
  },
3067
- "259393": {
3068
  "content": "<to_tsu>",
3069
  "lstrip": false,
3070
  "normalized": false,
@@ -3072,7 +3432,7 @@
3072
  "single_word": false,
3073
  "special": true
3074
  },
3075
- "259394": {
3076
  "content": "<to_xnb>",
3077
  "lstrip": false,
3078
  "normalized": false,
@@ -3080,7 +3440,7 @@
3080
  "single_word": false,
3081
  "special": true
3082
  },
3083
- "259395": {
3084
  "content": "<to_xsy>",
3085
  "lstrip": false,
3086
  "normalized": false,
@@ -3088,7 +3448,7 @@
3088
  "single_word": false,
3089
  "special": true
3090
  },
3091
- "259396": {
3092
  "content": "<to_zh>",
3093
  "lstrip": false,
3094
  "normalized": false,
@@ -3315,8 +3675,6 @@
3315
  "tsu_Latn",
3316
  "xnb_Latn",
3317
  "xsy_Latn",
3318
- "<mask>",
3319
- "<dae>",
3320
  "<dialect_central>",
3321
  "<dialect_coastal>",
3322
  "<dialect_dawu>",
@@ -3363,81 +3721,127 @@
3363
  "<dom_culture>",
3364
  "<dom_dictionary>",
3365
  "<dom_essays>",
3366
- "<dom_ethnography_journal_ritual_song>",
3367
  "<dom_formosan_100_paiwan_texts>",
3368
  "<dom_formosan_academia_sinica_oral_legends>",
3369
  "<dom_formosan_amis_adversative_constructions>",
 
3370
  "<dom_formosan_amis_kavalan_lin_interrogative_verbs>",
3371
  "<dom_formosan_amis_kuo_sung_comparative_constructions>",
3372
  "<dom_formosan_amis_lifok_dongi_saopo_kimakimad>",
3373
  "<dom_formosan_amis_myths_and_customs>",
3374
  "<dom_formosan_amis_pa_verbs>",
3375
- "<dom_formosan_amis_serial_verb_constructions>",
3376
- "<dom_formosan_amis_tung_chiou>",
3377
- "<dom_formosan_asai_sedik_language>",
 
3378
  "<dom_formosan_bunun_debusser_dissertation>",
3379
- "<dom_formosan_bunun_moriguchi_northern_texts>",
3380
  "<dom_formosan_bunun_topic_focus>",
3381
- "<dom_formosan_chen_fukuda_relabeling_ergative>",
3382
- "<dom_formosan_chen_fukuda_three_ways_steal>",
 
 
3383
  "<dom_formosan_cip_atayal_grammar_overview>",
 
 
3384
  "<dom_formosan_dean_johnson_year_clouds_smangus>",
3385
- "<dom_formosan_dorinda_tsai_hsiu_liu_neutral_imperfect>",
3386
- "<dom_formosan_egerod_origin_headhunting_atayal_text_v>",
3387
- "<dom_formosan_egerod_soren_word_order_word_classes_at>",
 
3388
  "<dom_formosan_elizabeth_zeitoun_chen_huei_wu_overview>",
 
 
 
3389
  "<dom_formosan_epark>",
3390
- "<dom_formosan_ferrell_taiwan_aboriginal_groups_proble>",
3391
  "<dom_formosan_gitbook_translations>",
3392
  "<dom_formosan_glosbe>",
3393
- "<dom_formosan_hala_saku_la_videos>",
3394
  "<dom_formosan_holmer_seediq>",
 
3395
  "<dom_formosan_huang_grammaticalization_squliq_atayal>",
 
 
3396
  "<dom_formosan_huang_mei_chin_atayal_reference_grammar>",
3397
  "<dom_formosan_huteson_rukai_survey>",
3398
  "<dom_formosan_ilrdf_42_language_practice_word_lists>",
3399
  "<dom_formosan_ilrdf_tousvusvutu_kita>",
 
3400
  "<dom_formosan_indigenous_language_literary_awards>",
 
 
 
 
 
3401
  "<dom_formosan_kanakanavu_texts>",
3402
  "<dom_formosan_kavalan_zhang_reference_grammar>",
 
 
 
 
 
 
3403
  "<dom_formosan_li_peirong_xu_weisheng_introduction_tru>",
3404
  "<dom_formosan_li_peizhen_wu_xingyu_shouhu_xing>",
 
 
 
 
 
3405
  "<dom_formosan_naomi_tsukida_correlative_clauses_seedi>",
3406
  "<dom_formosan_nowbucyang_truku_thesis>",
 
3407
  "<dom_formosan_old_texts>",
3408
  "<dom_formosan_paiwan_collart_zeitoun_time_reference>",
3409
  "<dom_formosan_paiwan_ho_five_dialects>",
3410
  "<dom_formosan_paiwanstories>",
3411
- "<dom_formosan_puyuma_chen_raising_to_object>",
 
 
 
 
 
 
3412
  "<dom_formosan_puyuma_katipol_kopfjagdriten>",
3413
- "<dom_formosan_puyuma_teng_pronominal_systems>",
3414
  "<dom_formosan_puyuma_teng_reference_grammar>",
 
3415
  "<dom_formosan_rik_bunun>",
3416
- "<dom_formosan_robert_blust_austronesian_homeland_ling>",
3417
- "<dom_formosan_rukai_mantauran_stories>",
3418
- "<dom_formosan_rukai_texts>",
3419
- "<dom_formosan_rukai_zeitoun_saying>",
3420
  "<dom_formosan_saaroa_pan_grammar>",
3421
  "<dom_formosan_sakizaya_affixes>",
3422
  "<dom_formosan_seals>",
3423
  "<dom_formosan_seediq_zhang_reference_grammar>",
3424
- "<dom_formosan_shigeru_tsuchida_kanakanavu_texts>",
3425
  "<dom_formosan_shigeru_tsuchida_reconstruction_proto_t>",
3426
  "<dom_formosan_shih_rukai_adverbial>",
 
3427
  "<dom_formosan_song_limei_introduction_kanakanavu_gram>",
3428
  "<dom_formosan_song_limei_introduction_seediq_grammar>",
3429
- "<dom_formosan_sung_kuo_descriptive_comparative_constr>",
3430
- "<dom_formosan_taoshan_elementary_school_atelier_hui_k>",
3431
- "<dom_formosan_tsukida_naomi_verb_classification_amis>",
3432
- "<dom_formosan_wei_matri_clan_lineage_system_ami>",
 
 
 
 
3433
  "<dom_formosan_wilang_yutas_videos>",
 
3434
  "<dom_formosan_wu_jinglan_introduction_amis_grammar>",
 
3435
  "<dom_formosan_yedda_palemeq_blog>",
3436
  "<dom_formosan_yeddas_blog>",
3437
  "<dom_formosan_yeh_meili_introduction_saisiyat_grammar>",
 
 
 
 
 
 
3438
  "<dom_formosan_zhang_yongli_pan_jiarong_introduction_t>",
 
3439
  "<dom_formosan_zheng_acl_2024>",
3440
  "<dom_formosan_zheng_data>",
 
3441
  "<dom_learning_vocab>",
3442
  "<dom_nine_level>",
3443
  "<dom_ntu>",
 
1650
  },
1651
  "256203": {
1652
  "content": "<mask>",
1653
+ "lstrip": true,
1654
+ "normalized": true,
1655
  "rstrip": false,
1656
  "single_word": false,
1657
  "special": true
1658
  },
1659
+ "261395": {
1660
  "content": "ami_Latn",
1661
  "lstrip": false,
1662
  "normalized": false,
 
1664
  "single_word": false,
1665
  "special": true
1666
  },
1667
+ "261396": {
1668
  "content": "bnn_Latn",
1669
  "lstrip": false,
1670
  "normalized": false,
 
1672
  "single_word": false,
1673
  "special": true
1674
  },
1675
+ "261397": {
1676
  "content": "ckv_Latn",
1677
  "lstrip": false,
1678
  "normalized": false,
 
1680
  "single_word": false,
1681
  "special": true
1682
  },
1683
+ "261398": {
1684
  "content": "dru_Latn",
1685
  "lstrip": false,
1686
  "normalized": false,
 
1688
  "single_word": false,
1689
  "special": true
1690
  },
1691
+ "261399": {
1692
  "content": "pwn_Latn",
1693
  "lstrip": false,
1694
  "normalized": false,
 
1696
  "single_word": false,
1697
  "special": true
1698
  },
1699
+ "261400": {
1700
  "content": "pyu_Latn",
1701
  "lstrip": false,
1702
  "normalized": false,
 
1704
  "single_word": false,
1705
  "special": true
1706
  },
1707
+ "261401": {
1708
  "content": "ssf_Latn",
1709
  "lstrip": false,
1710
  "normalized": false,
 
1712
  "single_word": false,
1713
  "special": true
1714
  },
1715
+ "261402": {
1716
  "content": "sxr_Latn",
1717
  "lstrip": false,
1718
  "normalized": false,
 
1720
  "single_word": false,
1721
  "special": true
1722
  },
1723
+ "261403": {
1724
  "content": "szy_Latn",
1725
  "lstrip": false,
1726
  "normalized": false,
 
1728
  "single_word": false,
1729
  "special": true
1730
  },
1731
+ "261404": {
1732
  "content": "tao_Latn",
1733
  "lstrip": false,
1734
  "normalized": false,
 
1736
  "single_word": false,
1737
  "special": true
1738
  },
1739
+ "261405": {
1740
  "content": "tay_Latn",
1741
  "lstrip": false,
1742
  "normalized": false,
 
1744
  "single_word": false,
1745
  "special": true
1746
  },
1747
+ "261406": {
1748
  "content": "trv_Latn",
1749
  "lstrip": false,
1750
  "normalized": false,
 
1752
  "single_word": false,
1753
  "special": true
1754
  },
1755
+ "261407": {
1756
  "content": "tsu_Latn",
1757
  "lstrip": false,
1758
  "normalized": false,
 
1760
  "single_word": false,
1761
  "special": true
1762
  },
1763
+ "261408": {
1764
  "content": "xnb_Latn",
1765
  "lstrip": false,
1766
  "normalized": false,
 
1768
  "single_word": false,
1769
  "special": true
1770
  },
1771
+ "261409": {
1772
  "content": "xsy_Latn",
1773
  "lstrip": false,
1774
  "normalized": false,
 
1776
  "single_word": false,
1777
  "special": true
1778
  },
1779
+ "261410": {
 
 
 
 
 
 
 
 
1780
  "content": "<dialect_central>",
1781
  "lstrip": false,
1782
  "normalized": false,
 
1784
  "single_word": false,
1785
  "special": true
1786
  },
1787
+ "261411": {
1788
  "content": "<dialect_coastal>",
1789
  "lstrip": false,
1790
  "normalized": false,
 
1792
  "single_word": false,
1793
  "special": true
1794
  },
1795
+ "261412": {
1796
  "content": "<dialect_dawu>",
1797
  "lstrip": false,
1798
  "normalized": false,
 
1800
  "single_word": false,
1801
  "special": true
1802
  },
1803
+ "261413": {
1804
  "content": "<dialect_default>",
1805
  "lstrip": false,
1806
  "normalized": false,
 
1808
  "single_word": false,
1809
  "special": true
1810
  },
1811
+ "261414": {
1812
  "content": "<dialect_deluvalley>",
1813
  "lstrip": false,
1814
  "normalized": false,
 
1816
  "single_word": false,
1817
  "special": true
1818
  },
1819
+ "261415": {
1820
  "content": "<dialect_dona>",
1821
  "lstrip": false,
1822
  "normalized": false,
 
1824
  "single_word": false,
1825
  "special": true
1826
  },
1827
+ "261416": {
1828
  "content": "<dialect_duda>",
1829
  "lstrip": false,
1830
  "normalized": false,
 
1832
  "single_word": false,
1833
  "special": true
1834
  },
1835
+ "261417": {
1836
  "content": "<dialect_eastern>",
1837
  "lstrip": false,
1838
  "normalized": false,
 
1840
  "single_word": false,
1841
  "special": true
1842
  },
1843
+ "261418": {
1844
  "content": "<dialect_fourseasons>",
1845
  "lstrip": false,
1846
  "normalized": false,
 
1848
  "single_word": false,
1849
  "special": true
1850
  },
1851
+ "261419": {
1852
  "content": "<dialect_hengchun>",
1853
  "lstrip": false,
1854
  "normalized": false,
 
1856
  "single_word": false,
1857
  "special": true
1858
  },
1859
+ "261420": {
1860
  "content": "<dialect_jianhe>",
1861
  "lstrip": false,
1862
  "normalized": false,
 
1864
  "single_word": false,
1865
  "special": true
1866
  },
1867
+ "261421": {
1868
  "content": "<dialect_junqun>",
1869
  "lstrip": false,
1870
  "normalized": false,
 
1872
  "single_word": false,
1873
  "special": true
1874
  },
1875
+ "261422": {
1876
  "content": "<dialect_kanakanavu>",
1877
  "lstrip": false,
1878
  "normalized": false,
 
1880
  "single_word": false,
1881
  "special": true
1882
  },
1883
+ "261423": {
1884
  "content": "<dialect_kaqun>",
1885
  "lstrip": false,
1886
  "normalized": false,
 
1888
  "single_word": false,
1889
  "special": true
1890
  },
1891
+ "261424": {
1892
  "content": "<dialect_kavalan>",
1893
  "lstrip": false,
1894
  "normalized": false,
 
1896
  "single_word": false,
1897
  "special": true
1898
  },
1899
+ "261425": {
1900
  "content": "<dialect_luanqun>",
1901
  "lstrip": false,
1902
  "normalized": false,
 
1904
  "single_word": false,
1905
  "special": true
1906
  },
1907
+ "261426": {
1908
  "content": "<dialect_malan>",
1909
  "lstrip": false,
1910
  "normalized": false,
 
1912
  "single_word": false,
1913
  "special": true
1914
  },
1915
+ "261427": {
1916
  "content": "<dialect_maolin>",
1917
  "lstrip": false,
1918
  "normalized": false,
 
1920
  "single_word": false,
1921
  "special": true
1922
  },
1923
+ "261428": {
1924
  "content": "<dialect_nanwang>",
1925
  "lstrip": false,
1926
  "normalized": false,
 
1928
  "single_word": false,
1929
  "special": true
1930
  },
1931
+ "261429": {
1932
  "content": "<dialect_northern>",
1933
  "lstrip": false,
1934
  "normalized": false,
 
1936
  "single_word": false,
1937
  "special": true
1938
  },
1939
+ "261430": {
1940
  "content": "<dialect_saaroa>",
1941
  "lstrip": false,
1942
  "normalized": false,
 
1944
  "single_word": false,
1945
  "special": true
1946
  },
1947
+ "261431": {
1948
  "content": "<dialect_saisiyat>",
1949
  "lstrip": false,
1950
  "normalized": false,
 
1952
  "single_word": false,
1953
  "special": true
1954
  },
1955
+ "261432": {
1956
  "content": "<dialect_sakizaya>",
1957
  "lstrip": false,
1958
  "normalized": false,
 
1960
  "single_word": false,
1961
  "special": true
1962
  },
1963
+ "261433": {
1964
  "content": "<dialect_sekolik>",
1965
  "lstrip": false,
1966
  "normalized": false,
 
1968
  "single_word": false,
1969
  "special": true
1970
  },
1971
+ "261434": {
1972
  "content": "<dialect_southern>",
1973
  "lstrip": false,
1974
  "normalized": false,
 
1976
  "single_word": false,
1977
  "special": true
1978
  },
1979
+ "261435": {
1980
  "content": "<dialect_tanqun>",
1981
  "lstrip": false,
1982
  "normalized": false,
 
1984
  "single_word": false,
1985
  "special": true
1986
  },
1987
+ "261436": {
1988
  "content": "<dialect_tegudaya>",
1989
  "lstrip": false,
1990
  "normalized": false,
 
1992
  "single_word": false,
1993
  "special": true
1994
  },
1995
+ "261437": {
1996
  "content": "<dialect_thao>",
1997
  "lstrip": false,
1998
  "normalized": false,
 
2000
  "single_word": false,
2001
  "special": true
2002
  },
2003
+ "261438": {
2004
  "content": "<dialect_truku>",
2005
  "lstrip": false,
2006
  "normalized": false,
 
2008
  "single_word": false,
2009
  "special": true
2010
  },
2011
+ "261439": {
2012
  "content": "<dialect_tsou>",
2013
  "lstrip": false,
2014
  "normalized": false,
 
2016
  "single_word": false,
2017
  "special": true
2018
  },
2019
+ "261440": {
2020
  "content": "<dialect_unknown>",
2021
  "lstrip": false,
2022
  "normalized": false,
 
2024
  "single_word": false,
2025
  "special": true
2026
  },
2027
+ "261441": {
2028
  "content": "<dialect_wanda>",
2029
  "lstrip": false,
2030
  "normalized": false,
 
2032
  "single_word": false,
2033
  "special": true
2034
  },
2035
+ "261442": {
2036
  "content": "<dialect_wanshan>",
2037
  "lstrip": false,
2038
  "normalized": false,
 
2040
  "single_word": false,
2041
  "special": true
2042
  },
2043
+ "261443": {
2044
  "content": "<dialect_wenshui>",
2045
  "lstrip": false,
2046
  "normalized": false,
 
2048
  "single_word": false,
2049
  "special": true
2050
  },
2051
+ "261444": {
2052
  "content": "<dialect_wutai>",
2053
  "lstrip": false,
2054
  "normalized": false,
 
2056
  "single_word": false,
2057
  "special": true
2058
  },
2059
+ "261445": {
2060
  "content": "<dialect_xiqun>",
2061
  "lstrip": false,
2062
  "normalized": false,
 
2064
  "single_word": false,
2065
  "special": true
2066
  },
2067
+ "261446": {
2068
  "content": "<dialect_xiuguluan>",
2069
  "lstrip": false,
2070
  "normalized": false,
 
2072
  "single_word": false,
2073
  "special": true
2074
  },
2075
+ "261447": {
2076
  "content": "<dialect_yami>",
2077
  "lstrip": false,
2078
  "normalized": false,
 
2080
  "single_word": false,
2081
  "special": true
2082
  },
2083
+ "261448": {
2084
  "content": "<dialect_yilanzeaol>",
2085
  "lstrip": false,
2086
  "normalized": false,
 
2088
  "single_word": false,
2089
  "special": true
2090
  },
2091
+ "261449": {
2092
  "content": "<dialect_zeaol>",
2093
  "lstrip": false,
2094
  "normalized": false,
 
2096
  "single_word": false,
2097
  "special": true
2098
  },
2099
+ "261450": {
2100
  "content": "<dialect_zhiben>",
2101
  "lstrip": false,
2102
  "normalized": false,
 
2104
  "single_word": false,
2105
  "special": true
2106
  },
2107
+ "261451": {
2108
  "content": "<dialect_zhuoqun>",
2109
  "lstrip": false,
2110
  "normalized": false,
 
2112
  "single_word": false,
2113
  "special": true
2114
  },
2115
+ "261452": {
2116
  "content": "<dom_classroom_context>",
2117
  "lstrip": false,
2118
  "normalized": false,
 
2120
  "single_word": false,
2121
  "special": true
2122
  },
2123
+ "261453": {
2124
  "content": "<dom_culture>",
2125
  "lstrip": false,
2126
  "normalized": false,
 
2128
  "single_word": false,
2129
  "special": true
2130
  },
2131
+ "261454": {
2132
  "content": "<dom_dictionary>",
2133
  "lstrip": false,
2134
  "normalized": false,
 
2136
  "single_word": false,
2137
  "special": true
2138
  },
2139
+ "261455": {
2140
  "content": "<dom_essays>",
2141
  "lstrip": false,
2142
  "normalized": false,
 
2144
  "single_word": false,
2145
  "special": true
2146
  },
2147
+ "261456": {
2148
+ "content": "<dom_formosan_100_paiwan_texts>",
2149
  "lstrip": false,
2150
  "normalized": false,
2151
  "rstrip": false,
2152
  "single_word": false,
2153
  "special": true
2154
  },
2155
+ "261457": {
2156
+ "content": "<dom_formosan_academia_sinica_oral_legends>",
2157
  "lstrip": false,
2158
  "normalized": false,
2159
  "rstrip": false,
2160
  "single_word": false,
2161
  "special": true
2162
  },
2163
+ "261458": {
2164
+ "content": "<dom_formosan_amis_adversative_constructions>",
2165
  "lstrip": false,
2166
  "normalized": false,
2167
  "rstrip": false,
2168
  "single_word": false,
2169
  "special": true
2170
  },
2171
+ "261459": {
2172
+ "content": "<dom_formosan_amis_huang_english_phonology_grammar>",
2173
  "lstrip": false,
2174
  "normalized": false,
2175
  "rstrip": false,
2176
  "single_word": false,
2177
  "special": true
2178
  },
2179
+ "261460": {
2180
  "content": "<dom_formosan_amis_kavalan_lin_interrogative_verbs>",
2181
  "lstrip": false,
2182
  "normalized": false,
 
2184
  "single_word": false,
2185
  "special": true
2186
  },
2187
+ "261461": {
2188
  "content": "<dom_formosan_amis_kuo_sung_comparative_constructions>",
2189
  "lstrip": false,
2190
  "normalized": false,
 
2192
  "single_word": false,
2193
  "special": true
2194
  },
2195
+ "261462": {
2196
  "content": "<dom_formosan_amis_lifok_dongi_saopo_kimakimad>",
2197
  "lstrip": false,
2198
  "normalized": false,
 
2200
  "single_word": false,
2201
  "special": true
2202
  },
2203
+ "261463": {
2204
  "content": "<dom_formosan_amis_myths_and_customs>",
2205
  "lstrip": false,
2206
  "normalized": false,
 
2208
  "single_word": false,
2209
  "special": true
2210
  },
2211
+ "261464": {
2212
  "content": "<dom_formosan_amis_pa_verbs>",
2213
  "lstrip": false,
2214
  "normalized": false,
 
2216
  "single_word": false,
2217
  "special": true
2218
  },
2219
+ "261465": {
2220
+ "content": "<dom_formosan_anna_hsiou_chuan_chang_reference_gramma>",
2221
  "lstrip": false,
2222
  "normalized": false,
2223
  "rstrip": false,
2224
  "single_word": false,
2225
  "special": true
2226
  },
2227
+ "261466": {
2228
+ "content": "<dom_formosan_anton_quack_puyuma_pulingaw>",
2229
  "lstrip": false,
2230
  "normalized": false,
2231
  "rstrip": false,
2232
  "single_word": false,
2233
  "special": true
2234
  },
2235
+ "261467": {
2236
+ "content": "<dom_formosan_atayal_you_nao_savak_raxayal>",
2237
  "lstrip": false,
2238
  "normalized": false,
2239
  "rstrip": false,
2240
  "single_word": false,
2241
  "special": true
2242
  },
2243
+ "261468": {
2244
+ "content": "<dom_formosan_boyizhenu_narrative_oral_literature_tap>",
2245
  "lstrip": false,
2246
  "normalized": false,
2247
  "rstrip": false,
2248
  "single_word": false,
2249
  "special": true
2250
  },
2251
+ "261469": {
2252
+ "content": "<dom_formosan_bunun_debusser_dissertation>",
2253
  "lstrip": false,
2254
  "normalized": false,
2255
  "rstrip": false,
2256
  "single_word": false,
2257
  "special": true
2258
  },
2259
+ "261470": {
2260
  "content": "<dom_formosan_bunun_topic_focus>",
2261
  "lstrip": false,
2262
  "normalized": false,
 
2264
  "single_word": false,
2265
  "special": true
2266
  },
2267
+ "261471": {
2268
+ "content": "<dom_formosan_catherine_tseng_seediq_atayal_foods_the>",
2269
+ "lstrip": false,
2270
+ "normalized": false,
2271
+ "rstrip": false,
2272
+ "single_word": false,
2273
+ "special": true
2274
+ },
2275
+ "261472": {
2276
+ "content": "<dom_formosan_chen_yaohan_miss_virginia_fey_played_es>",
2277
+ "lstrip": false,
2278
+ "normalized": false,
2279
+ "rstrip": false,
2280
+ "single_word": false,
2281
+ "special": true
2282
+ },
2283
+ "261473": {
2284
+ "content": "<dom_formosan_chun_mei_chen_comparative_phonology_pai>",
2285
  "lstrip": false,
2286
  "normalized": false,
2287
  "rstrip": false,
2288
  "single_word": false,
2289
  "special": true
2290
  },
2291
+ "261474": {
2292
+ "content": "<dom_formosan_chunming_wu_two_types_of_noun_incorpora>",
2293
  "lstrip": false,
2294
  "normalized": false,
2295
  "rstrip": false,
2296
  "single_word": false,
2297
  "special": true
2298
  },
2299
+ "261475": {
2300
  "content": "<dom_formosan_cip_atayal_grammar_overview>",
2301
  "lstrip": false,
2302
  "normalized": false,
 
2304
  "single_word": false,
2305
  "special": true
2306
  },
2307
+ "261476": {
2308
+ "content": "<dom_formosan_claire_mcgill_a_brief_tayal_vocabulary>",
2309
+ "lstrip": false,
2310
+ "normalized": false,
2311
+ "rstrip": false,
2312
+ "single_word": false,
2313
+ "special": true
2314
+ },
2315
+ "261477": {
2316
+ "content": "<dom_formosan_david_blundell_ed_austronesian_taiwan>",
2317
+ "lstrip": false,
2318
+ "normalized": false,
2319
+ "rstrip": false,
2320
+ "single_word": false,
2321
+ "special": true
2322
+ },
2323
+ "261478": {
2324
  "content": "<dom_formosan_dean_johnson_year_clouds_smangus>",
2325
  "lstrip": false,
2326
  "normalized": false,
 
2328
  "single_word": false,
2329
  "special": true
2330
  },
2331
+ "261479": {
2332
+ "content": "<dom_formosan_deng_fangqing_introduction_puyuma_gramm>",
2333
+ "lstrip": false,
2334
+ "normalized": false,
2335
+ "rstrip": false,
2336
+ "single_word": false,
2337
+ "special": true
2338
+ },
2339
+ "261480": {
2340
+ "content": "<dom_formosan_der_hwa_victoria_rau_grammar_atayal>",
2341
  "lstrip": false,
2342
  "normalized": false,
2343
  "rstrip": false,
2344
  "single_word": false,
2345
  "special": true
2346
  },
2347
+ "261481": {
2348
+ "content": "<dom_formosan_dong_manv_yami_ode_to_taro>",
2349
  "lstrip": false,
2350
  "normalized": false,
2351
  "rstrip": false,
2352
  "single_word": false,
2353
  "special": true
2354
  },
2355
+ "261482": {
2356
+ "content": "<dom_formosan_dong_yijia_tjuwabar_paiwan_ritual_langu>",
2357
  "lstrip": false,
2358
  "normalized": false,
2359
  "rstrip": false,
2360
  "single_word": false,
2361
  "special": true
2362
  },
2363
+ "261483": {
2364
  "content": "<dom_formosan_elizabeth_zeitoun_chen_huei_wu_overview>",
2365
  "lstrip": false,
2366
  "normalized": false,
 
2368
  "single_word": false,
2369
  "special": true
2370
  },
2371
+ "261484": {
2372
+ "content": "<dom_formosan_elizabeth_zeitoun_lillian_huang_marie_y>",
2373
  "lstrip": false,
2374
  "normalized": false,
2375
  "rstrip": false,
2376
  "single_word": false,
2377
  "special": true
2378
  },
2379
+ "261485": {
2380
+ "content": "<dom_formosan_elizabeth_zeitoun_pronominal_system_man>",
2381
  "lstrip": false,
2382
  "normalized": false,
2383
  "rstrip": false,
2384
  "single_word": false,
2385
  "special": true
2386
  },
2387
+ "261486": {
2388
+ "content": "<dom_formosan_elizabeth_zeitoun_squib_dynamic_vs_stat>",
2389
+ "lstrip": false,
2390
+ "normalized": false,
2391
+ "rstrip": false,
2392
+ "single_word": false,
2393
+ "special": true
2394
+ },
2395
+ "261487": {
2396
+ "content": "<dom_formosan_epark>",
2397
+ "lstrip": false,
2398
+ "normalized": false,
2399
+ "rstrip": false,
2400
+ "single_word": false,
2401
+ "special": true
2402
+ },
2403
+ "261488": {
2404
  "content": "<dom_formosan_gitbook_translations>",
2405
  "lstrip": false,
2406
  "normalized": false,
 
2408
  "single_word": false,
2409
  "special": true
2410
  },
2411
+ "261489": {
2412
  "content": "<dom_formosan_glosbe>",
2413
  "lstrip": false,
2414
  "normalized": false,
 
2416
  "single_word": false,
2417
  "special": true
2418
  },
2419
+ "261490": {
2420
+ "content": "<dom_formosan_ho_dan_phonological_system_butonglu_pai>",
2421
  "lstrip": false,
2422
  "normalized": false,
2423
  "rstrip": false,
2424
  "single_word": false,
2425
  "special": true
2426
  },
2427
+ "261491": {
2428
  "content": "<dom_formosan_holmer_seediq>",
2429
  "lstrip": false,
2430
  "normalized": false,
 
2432
  "single_word": false,
2433
  "special": true
2434
  },
2435
+ "261492": {
2436
+ "content": "<dom_formosan_hsiu_chuan_liao_transitivity_ergativity>",
2437
+ "lstrip": false,
2438
+ "normalized": false,
2439
+ "rstrip": false,
2440
+ "single_word": false,
2441
+ "special": true
2442
+ },
2443
+ "261493": {
2444
  "content": "<dom_formosan_huang_grammaticalization_squliq_atayal>",
2445
  "lstrip": false,
2446
  "normalized": false,
 
2448
  "single_word": false,
2449
  "special": true
2450
  },
2451
+ "261494": {
2452
+ "content": "<dom_formosan_huang_hui_chuan_glide_formation_takitud>",
2453
+ "lstrip": false,
2454
+ "normalized": false,
2455
+ "rstrip": false,
2456
+ "single_word": false,
2457
+ "special": true
2458
+ },
2459
+ "261495": {
2460
+ "content": "<dom_formosan_huang_huijuan_shi_chaokai_introduction>",
2461
+ "lstrip": false,
2462
+ "normalized": false,
2463
+ "rstrip": false,
2464
+ "single_word": false,
2465
+ "special": true
2466
+ },
2467
+ "261496": {
2468
  "content": "<dom_formosan_huang_mei_chin_atayal_reference_grammar>",
2469
  "lstrip": false,
2470
  "normalized": false,
 
2472
  "single_word": false,
2473
  "special": true
2474
  },
2475
+ "261497": {
2476
  "content": "<dom_formosan_huteson_rukai_survey>",
2477
  "lstrip": false,
2478
  "normalized": false,
 
2480
  "single_word": false,
2481
  "special": true
2482
  },
2483
+ "261498": {
2484
  "content": "<dom_formosan_ilrdf_42_language_practice_word_lists>",
2485
  "lstrip": false,
2486
  "normalized": false,
 
2488
  "single_word": false,
2489
  "special": true
2490
  },
2491
+ "261499": {
2492
  "content": "<dom_formosan_ilrdf_tousvusvutu_kita>",
2493
  "lstrip": false,
2494
  "normalized": false,
 
2496
  "single_word": false,
2497
  "special": true
2498
  },
2499
+ "261500": {
2500
+ "content": "<dom_formosan_indigenous_education_resource_center_ke>",
2501
+ "lstrip": false,
2502
+ "normalized": false,
2503
+ "rstrip": false,
2504
+ "single_word": false,
2505
+ "special": true
2506
+ },
2507
+ "261501": {
2508
  "content": "<dom_formosan_indigenous_language_literary_awards>",
2509
  "lstrip": false,
2510
  "normalized": false,
 
2512
  "single_word": false,
2513
  "special": true
2514
  },
2515
+ "261502": {
2516
+ "content": "<dom_formosan_isabelle_bril_roots_and_stems_lexical_a>",
2517
+ "lstrip": false,
2518
+ "normalized": false,
2519
+ "rstrip": false,
2520
+ "single_word": false,
2521
+ "special": true
2522
+ },
2523
+ "261503": {
2524
+ "content": "<dom_formosan_jian_iwan_guo_qingliu_life_history>",
2525
+ "lstrip": false,
2526
+ "normalized": false,
2527
+ "rstrip": false,
2528
+ "single_word": false,
2529
+ "special": true
2530
+ },
2531
+ "261504": {
2532
+ "content": "<dom_formosan_jian_shilang_introduction_thao_grammar>",
2533
+ "lstrip": false,
2534
+ "normalized": false,
2535
+ "rstrip": false,
2536
+ "single_word": false,
2537
+ "special": true
2538
+ },
2539
+ "261505": {
2540
+ "content": "<dom_formosan_john_u_wolff_the_proto_austronesian_pho>",
2541
+ "lstrip": false,
2542
+ "normalized": false,
2543
+ "rstrip": false,
2544
+ "single_word": false,
2545
+ "special": true
2546
+ },
2547
+ "261506": {
2548
+ "content": "<dom_formosan_josiane_cauquelin_aborigines_taiwan_puy>",
2549
+ "lstrip": false,
2550
+ "normalized": false,
2551
+ "rstrip": false,
2552
+ "single_word": false,
2553
+ "special": true
2554
+ },
2555
+ "261507": {
2556
  "content": "<dom_formosan_kanakanavu_texts>",
2557
  "lstrip": false,
2558
  "normalized": false,
 
2560
  "single_word": false,
2561
  "special": true
2562
  },
2563
+ "261508": {
2564
  "content": "<dom_formosan_kavalan_zhang_reference_grammar>",
2565
  "lstrip": false,
2566
  "normalized": false,
 
2568
  "single_word": false,
2569
  "special": true
2570
  },
2571
+ "261509": {
2572
+ "content": "<dom_formosan_kolas_foting_aboriginal_education_world>",
2573
+ "lstrip": false,
2574
+ "normalized": false,
2575
+ "rstrip": false,
2576
+ "single_word": false,
2577
+ "special": true
2578
+ },
2579
+ "261510": {
2580
+ "content": "<dom_formosan_kucapungane>",
2581
+ "lstrip": false,
2582
+ "normalized": false,
2583
+ "rstrip": false,
2584
+ "single_word": false,
2585
+ "special": true
2586
+ },
2587
+ "261511": {
2588
+ "content": "<dom_formosan_kumu_tapas_tribal_memory_oral_history_w>",
2589
+ "lstrip": false,
2590
+ "normalized": false,
2591
+ "rstrip": false,
2592
+ "single_word": false,
2593
+ "special": true
2594
+ },
2595
+ "261512": {
2596
+ "content": "<dom_formosan_lei_shih_family_system_paiwan_at_su_pai>",
2597
+ "lstrip": false,
2598
+ "normalized": false,
2599
+ "rstrip": false,
2600
+ "single_word": false,
2601
+ "special": true
2602
+ },
2603
+ "261513": {
2604
+ "content": "<dom_formosan_li_may_sung_budai_rukai_exclamatives>",
2605
+ "lstrip": false,
2606
+ "normalized": false,
2607
+ "rstrip": false,
2608
+ "single_word": false,
2609
+ "special": true
2610
+ },
2611
+ "261514": {
2612
+ "content": "<dom_formosan_li_may_sung_clausal_nominalization_buda>",
2613
+ "lstrip": false,
2614
+ "normalized": false,
2615
+ "rstrip": false,
2616
+ "single_word": false,
2617
+ "special": true
2618
+ },
2619
+ "261515": {
2620
  "content": "<dom_formosan_li_peirong_xu_weisheng_introduction_tru>",
2621
  "lstrip": false,
2622
  "normalized": false,
 
2624
  "single_word": false,
2625
  "special": true
2626
  },
2627
+ "261516": {
2628
  "content": "<dom_formosan_li_peizhen_wu_xingyu_shouhu_xing>",
2629
  "lstrip": false,
2630
  "normalized": false,
 
2632
  "single_word": false,
2633
  "special": true
2634
  },
2635
+ "261517": {
2636
+ "content": "<dom_formosan_lillian_huang_atayal_participants_cross>",
2637
+ "lstrip": false,
2638
+ "normalized": false,
2639
+ "rstrip": false,
2640
+ "single_word": false,
2641
+ "special": true
2642
+ },
2643
+ "261518": {
2644
+ "content": "<dom_formosan_liu_manyi_kaskun_ata_matas_i_ki_quaz>",
2645
+ "lstrip": false,
2646
+ "normalized": false,
2647
+ "rstrip": false,
2648
+ "single_word": false,
2649
+ "special": true
2650
+ },
2651
+ "261519": {
2652
+ "content": "<dom_formosan_malcom_ross_proto_austronesian_verbal_m>",
2653
+ "lstrip": false,
2654
+ "normalized": false,
2655
+ "rstrip": false,
2656
+ "single_word": false,
2657
+ "special": true
2658
+ },
2659
+ "261520": {
2660
+ "content": "<dom_formosan_maya_yeh_blaq_uv_construction_atayal>",
2661
+ "lstrip": false,
2662
+ "normalized": false,
2663
+ "rstrip": false,
2664
+ "single_word": false,
2665
+ "special": true
2666
+ },
2667
+ "261521": {
2668
+ "content": "<dom_formosan_nanang_tadaw_naci_mowna_pgagu>",
2669
+ "lstrip": false,
2670
+ "normalized": false,
2671
+ "rstrip": false,
2672
+ "single_word": false,
2673
+ "special": true
2674
+ },
2675
+ "261522": {
2676
  "content": "<dom_formosan_naomi_tsukida_correlative_clauses_seedi>",
2677
  "lstrip": false,
2678
  "normalized": false,
 
2680
  "single_word": false,
2681
  "special": true
2682
  },
2683
+ "261523": {
2684
  "content": "<dom_formosan_nowbucyang_truku_thesis>",
2685
  "lstrip": false,
2686
  "normalized": false,
 
2688
  "single_word": false,
2689
  "special": true
2690
  },
2691
+ "261524": {
2692
+ "content": "<dom_formosan_ochiai_izumi_numerals_paran_seediq_rela>",
2693
+ "lstrip": false,
2694
+ "normalized": false,
2695
+ "rstrip": false,
2696
+ "single_word": false,
2697
+ "special": true
2698
+ },
2699
+ "261525": {
2700
  "content": "<dom_formosan_old_texts>",
2701
  "lstrip": false,
2702
  "normalized": false,
 
2704
  "single_word": false,
2705
  "special": true
2706
  },
2707
+ "261526": {
2708
  "content": "<dom_formosan_paiwan_collart_zeitoun_time_reference>",
2709
  "lstrip": false,
2710
  "normalized": false,
 
2712
  "single_word": false,
2713
  "special": true
2714
  },
2715
+ "261527": {
2716
  "content": "<dom_formosan_paiwan_ho_five_dialects>",
2717
  "lstrip": false,
2718
  "normalized": false,
 
2720
  "single_word": false,
2721
  "special": true
2722
  },
2723
+ "261528": {
2724
  "content": "<dom_formosan_paiwanstories>",
2725
  "lstrip": false,
2726
  "normalized": false,
 
2728
  "single_word": false,
2729
  "special": true
2730
  },
2731
+ "261529": {
2732
+ "content": "<dom_formosan_patricia_stanley_morphophonemics_of_ver>",
2733
  "lstrip": false,
2734
  "normalized": false,
2735
  "rstrip": false,
2736
  "single_word": false,
2737
  "special": true
2738
  },
2739
+ "261530": {
2740
+ "content": "<dom_formosan_paul_jen_kuei_li_internal_relationships>",
2741
  "lstrip": false,
2742
  "normalized": false,
2743
  "rstrip": false,
2744
  "single_word": false,
2745
  "special": true
2746
  },
2747
+ "261531": {
2748
+ "content": "<dom_formosan_paul_jen_kuei_li_rukai_structure>",
2749
  "lstrip": false,
2750
  "normalized": false,
2751
  "rstrip": false,
2752
  "single_word": false,
2753
  "special": true
2754
  },
2755
+ "261532": {
2756
+ "content": "<dom_formosan_paul_jen_kuei_li_the_preglottalised_sto>",
2757
  "lstrip": false,
2758
  "normalized": false,
2759
  "rstrip": false,
2760
  "single_word": false,
2761
  "special": true
2762
  },
2763
+ "261533": {
2764
+ "content": "<dom_formosan_paul_li_atayalic_final_voiced_stops>",
2765
+ "lstrip": false,
2766
+ "normalized": false,
2767
+ "rstrip": false,
2768
+ "single_word": false,
2769
+ "special": true
2770
+ },
2771
+ "261534": {
2772
+ "content": "<dom_formosan_paul_li_position_atayal_austronesian>",
2773
  "lstrip": false,
2774
  "normalized": false,
2775
  "rstrip": false,
2776
  "single_word": false,
2777
  "special": true
2778
  },
2779
+ "261535": {
2780
+ "content": "<dom_formosan_pingdong_county_government_kai_na_sepuc>",
2781
  "lstrip": false,
2782
  "normalized": false,
2783
  "rstrip": false,
2784
  "single_word": false,
2785
  "special": true
2786
  },
2787
+ "261536": {
2788
+ "content": "<dom_formosan_puyuma_katipol_kopfjagdriten>",
2789
  "lstrip": false,
2790
  "normalized": false,
2791
  "rstrip": false,
2792
  "single_word": false,
2793
  "special": true
2794
  },
2795
+ "261537": {
2796
+ "content": "<dom_formosan_puyuma_teng_reference_grammar>",
2797
  "lstrip": false,
2798
  "normalized": false,
2799
  "rstrip": false,
2800
  "single_word": false,
2801
  "special": true
2802
  },
2803
+ "261538": {
2804
+ "content": "<dom_formosan_raleigh_ferrell_construction_markers_fo>",
2805
  "lstrip": false,
2806
  "normalized": false,
2807
  "rstrip": false,
2808
  "single_word": false,
2809
  "special": true
2810
  },
2811
+ "261539": {
2812
+ "content": "<dom_formosan_rik_bunun>",
2813
+ "lstrip": false,
2814
+ "normalized": false,
2815
+ "rstrip": false,
2816
+ "single_word": false,
2817
+ "special": true
2818
+ },
2819
+ "261540": {
2820
+ "content": "<dom_formosan_robert_blust_the_austronesian_languages>",
2821
+ "lstrip": false,
2822
+ "normalized": false,
2823
+ "rstrip": false,
2824
+ "single_word": false,
2825
+ "special": true
2826
+ },
2827
+ "261541": {
2828
  "content": "<dom_formosan_saaroa_pan_grammar>",
2829
  "lstrip": false,
2830
  "normalized": false,
 
2832
  "single_word": false,
2833
  "special": true
2834
  },
2835
+ "261542": {
2836
  "content": "<dom_formosan_sakizaya_affixes>",
2837
  "lstrip": false,
2838
  "normalized": false,
 
2840
  "single_word": false,
2841
  "special": true
2842
  },
2843
+ "261543": {
2844
  "content": "<dom_formosan_seals>",
2845
  "lstrip": false,
2846
  "normalized": false,
 
2848
  "single_word": false,
2849
  "special": true
2850
  },
2851
+ "261544": {
2852
  "content": "<dom_formosan_seediq_zhang_reference_grammar>",
2853
  "lstrip": false,
2854
  "normalized": false,
 
2856
  "single_word": false,
2857
  "special": true
2858
  },
2859
+ "261545": {
2860
+ "content": "<dom_formosan_shen_wenqi_introduction_sakizaya_gramma>",
2861
  "lstrip": false,
2862
  "normalized": false,
2863
  "rstrip": false,
2864
  "single_word": false,
2865
  "special": true
2866
  },
2867
+ "261546": {
2868
  "content": "<dom_formosan_shigeru_tsuchida_reconstruction_proto_t>",
2869
  "lstrip": false,
2870
  "normalized": false,
 
2872
  "single_word": false,
2873
  "special": true
2874
  },
2875
+ "261547": {
2876
  "content": "<dom_formosan_shih_rukai_adverbial>",
2877
  "lstrip": false,
2878
  "normalized": false,
 
2880
  "single_word": false,
2881
  "special": true
2882
  },
2883
+ "261548": {
2884
+ "content": "<dom_formosan_sing_olam_hong_tinglan_aboriginal_educa>",
2885
+ "lstrip": false,
2886
+ "normalized": false,
2887
+ "rstrip": false,
2888
+ "single_word": false,
2889
+ "special": true
2890
+ },
2891
+ "261549": {
2892
  "content": "<dom_formosan_song_limei_introduction_kanakanavu_gram>",
2893
  "lstrip": false,
2894
  "normalized": false,
 
2896
  "single_word": false,
2897
  "special": true
2898
  },
2899
+ "261550": {
2900
  "content": "<dom_formosan_song_limei_introduction_seediq_grammar>",
2901
  "lstrip": false,
2902
  "normalized": false,
 
2904
  "single_word": false,
2905
  "special": true
2906
  },
2907
+ "261551": {
2908
+ "content": "<dom_formosan_soren_egerod_statement_atayal_phonology>",
2909
+ "lstrip": false,
2910
+ "normalized": false,
2911
+ "rstrip": false,
2912
+ "single_word": false,
2913
+ "special": true
2914
+ },
2915
+ "261552": {
2916
+ "content": "<dom_formosan_stacy_teng_malcom_ross_is_puyuma_primar>",
2917
+ "lstrip": false,
2918
+ "normalized": false,
2919
+ "rstrip": false,
2920
+ "single_word": false,
2921
+ "special": true
2922
+ },
2923
+ "261553": {
2924
+ "content": "<dom_formosan_truku_lowking_demonstratives>",
2925
+ "lstrip": false,
2926
+ "normalized": false,
2927
+ "rstrip": false,
2928
+ "single_word": false,
2929
+ "special": true
2930
+ },
2931
+ "261554": {
2932
+ "content": "<dom_formosan_tsai_hsui_liu_complementation_three_lan>",
2933
  "lstrip": false,
2934
  "normalized": false,
2935
  "rstrip": false,
2936
  "single_word": false,
2937
  "special": true
2938
  },
2939
+ "261555": {
2940
+ "content": "<dom_formosan_tsai_wei_tien_dylan_conjunctive_reducti>",
2941
  "lstrip": false,
2942
  "normalized": false,
2943
  "rstrip": false,
2944
  "single_word": false,
2945
  "special": true
2946
  },
2947
+ "261556": {
2948
+ "content": "<dom_formosan_tsou_descriptive_study>",
2949
  "lstrip": false,
2950
  "normalized": false,
2951
  "rstrip": false,
2952
  "single_word": false,
2953
  "special": true
2954
  },
2955
+ "261557": {
2956
+ "content": "<dom_formosan_tung_tsuchida_ting_li_pan_saaroa_texts>",
2957
  "lstrip": false,
2958
  "normalized": false,
2959
  "rstrip": false,
2960
  "single_word": false,
2961
  "special": true
2962
  },
2963
+ "261558": {
2964
+ "content": "<dom_formosan_wei_huilin_liu_social_structure_yami>",
2965
+ "lstrip": false,
2966
+ "normalized": false,
2967
+ "rstrip": false,
2968
+ "single_word": false,
2969
+ "special": true
2970
+ },
2971
+ "261559": {
2972
  "content": "<dom_formosan_wilang_yutas_videos>",
2973
  "lstrip": false,
2974
  "normalized": false,
 
2976
  "single_word": false,
2977
  "special": true
2978
  },
2979
+ "261560": {
2980
+ "content": "<dom_formosan_wu_chunming_adverbials_in_paiwan>",
2981
+ "lstrip": false,
2982
+ "normalized": false,
2983
+ "rstrip": false,
2984
+ "single_word": false,
2985
+ "special": true
2986
+ },
2987
+ "261561": {
2988
  "content": "<dom_formosan_wu_jinglan_introduction_amis_grammar>",
2989
  "lstrip": false,
2990
  "normalized": false,
 
2992
  "single_word": false,
2993
  "special": true
2994
  },
2995
+ "261562": {
2996
+ "content": "<dom_formosan_xie_fuhui_introduction_kavalan_grammar>",
2997
+ "lstrip": false,
2998
+ "normalized": false,
2999
+ "rstrip": false,
3000
+ "single_word": false,
3001
+ "special": true
3002
+ },
3003
+ "261563": {
3004
  "content": "<dom_formosan_yedda_palemeq_blog>",
3005
  "lstrip": false,
3006
  "normalized": false,
 
3008
  "single_word": false,
3009
  "special": true
3010
  },
3011
+ "261564": {
3012
  "content": "<dom_formosan_yeddas_blog>",
3013
  "lstrip": false,
3014
  "normalized": false,
 
3016
  "single_word": false,
3017
  "special": true
3018
  },
3019
+ "261565": {
3020
  "content": "<dom_formosan_yeh_meili_introduction_saisiyat_grammar>",
3021
  "lstrip": false,
3022
  "normalized": false,
 
3024
  "single_word": false,
3025
  "special": true
3026
  },
3027
+ "261566": {
3028
+ "content": "<dom_formosan_yi_yang_cheng_kanakanavu_word_level_pro>",
3029
+ "lstrip": false,
3030
+ "normalized": false,
3031
+ "rstrip": false,
3032
+ "single_word": false,
3033
+ "special": true
3034
+ },
3035
+ "261567": {
3036
+ "content": "<dom_formosan_yi_yang_cheng_tense_aspect_agent_markin>",
3037
+ "lstrip": false,
3038
+ "normalized": false,
3039
+ "rstrip": false,
3040
+ "single_word": false,
3041
+ "special": true
3042
+ },
3043
+ "261568": {
3044
+ "content": "<dom_formosan_yoshiro_nihira_bunun_vocabulary>",
3045
+ "lstrip": false,
3046
+ "normalized": false,
3047
+ "rstrip": false,
3048
+ "single_word": false,
3049
+ "special": true
3050
+ },
3051
+ "261569": {
3052
+ "content": "<dom_formosan_zeng_shifen_reduplication_affixation_pa>",
3053
+ "lstrip": false,
3054
+ "normalized": false,
3055
+ "rstrip": false,
3056
+ "single_word": false,
3057
+ "special": true
3058
+ },
3059
+ "261570": {
3060
+ "content": "<dom_formosan_zhan_sujuan_taiwan_indigenous_peoples_h>",
3061
+ "lstrip": false,
3062
+ "normalized": false,
3063
+ "rstrip": false,
3064
+ "single_word": false,
3065
+ "special": true
3066
+ },
3067
+ "261571": {
3068
+ "content": "<dom_formosan_zhang_xiujuan_introduction_paiwan_gramm>",
3069
+ "lstrip": false,
3070
+ "normalized": false,
3071
+ "rstrip": false,
3072
+ "single_word": false,
3073
+ "special": true
3074
+ },
3075
+ "261572": {
3076
  "content": "<dom_formosan_zhang_yongli_pan_jiarong_introduction_t>",
3077
  "lstrip": false,
3078
  "normalized": false,
 
3080
  "single_word": false,
3081
  "special": true
3082
  },
3083
+ "261573": {
3084
+ "content": "<dom_formosan_zhao_shanhe_li_taiyuan_zhu_qingyi_abori>",
3085
+ "lstrip": false,
3086
+ "normalized": false,
3087
+ "rstrip": false,
3088
+ "single_word": false,
3089
+ "special": true
3090
+ },
3091
+ "261574": {
3092
  "content": "<dom_formosan_zheng_acl_2024>",
3093
  "lstrip": false,
3094
  "normalized": false,
 
3096
  "single_word": false,
3097
  "special": true
3098
  },
3099
+ "261575": {
3100
  "content": "<dom_formosan_zheng_data>",
3101
  "lstrip": false,
3102
  "normalized": false,
 
3104
  "single_word": false,
3105
  "special": true
3106
  },
3107
+ "261576": {
3108
+ "content": "<dom_formosan_zheng_yumei_zhu_qingyi_bo_hongming_abor>",
3109
+ "lstrip": false,
3110
+ "normalized": false,
3111
+ "rstrip": false,
3112
+ "single_word": false,
3113
+ "special": true
3114
+ },
3115
+ "261577": {
3116
  "content": "<dom_learning_vocab>",
3117
  "lstrip": false,
3118
  "normalized": false,
 
3120
  "single_word": false,
3121
  "special": true
3122
  },
3123
+ "261578": {
3124
  "content": "<dom_nine_level>",
3125
  "lstrip": false,
3126
  "normalized": false,
 
3128
  "single_word": false,
3129
  "special": true
3130
  },
3131
+ "261579": {
3132
  "content": "<dom_ntu>",
3133
  "lstrip": false,
3134
  "normalized": false,
 
3136
  "single_word": false,
3137
  "special": true
3138
  },
3139
+ "261580": {
3140
  "content": "<dom_picture_book>",
3141
  "lstrip": false,
3142
  "normalized": false,
 
3144
  "single_word": false,
3145
  "special": true
3146
  },
3147
+ "261581": {
3148
  "content": "<dom_picture_story>",
3149
  "lstrip": false,
3150
  "normalized": false,
 
3152
  "single_word": false,
3153
  "special": true
3154
  },
3155
+ "261582": {
3156
  "content": "<dom_presidential_apology>",
3157
  "lstrip": false,
3158
  "normalized": false,
 
3160
  "single_word": false,
3161
  "special": true
3162
  },
3163
+ "261583": {
3164
  "content": "<dom_reading_writing>",
3165
  "lstrip": false,
3166
  "normalized": false,
 
3168
  "single_word": false,
3169
  "special": true
3170
  },
3171
+ "261584": {
3172
  "content": "<dom_unknown>",
3173
  "lstrip": false,
3174
  "normalized": false,
 
3176
  "single_word": false,
3177
  "special": true
3178
  },
3179
+ "261585": {
3180
  "content": "<dom_youtube>",
3181
  "lstrip": false,
3182
  "normalized": false,
 
3184
  "single_word": false,
3185
  "special": true
3186
  },
3187
+ "261586": {
3188
  "content": "<src_ami>",
3189
  "lstrip": false,
3190
  "normalized": false,
 
3192
  "single_word": false,
3193
  "special": true
3194
  },
3195
+ "261587": {
3196
  "content": "<src_bnn>",
3197
  "lstrip": false,
3198
  "normalized": false,
 
3200
  "single_word": false,
3201
  "special": true
3202
  },
3203
+ "261588": {
3204
  "content": "<src_ckv>",
3205
  "lstrip": false,
3206
  "normalized": false,
 
3208
  "single_word": false,
3209
  "special": true
3210
  },
3211
+ "261589": {
3212
  "content": "<src_dru>",
3213
  "lstrip": false,
3214
  "normalized": false,
 
3216
  "single_word": false,
3217
  "special": true
3218
  },
3219
+ "261590": {
3220
  "content": "<src_eng>",
3221
  "lstrip": false,
3222
  "normalized": false,
 
3224
  "single_word": false,
3225
  "special": true
3226
  },
3227
+ "261591": {
3228
  "content": "<src_pwn>",
3229
  "lstrip": false,
3230
  "normalized": false,
 
3232
  "single_word": false,
3233
  "special": true
3234
  },
3235
+ "261592": {
3236
  "content": "<src_pyu>",
3237
  "lstrip": false,
3238
  "normalized": false,
 
3240
  "single_word": false,
3241
  "special": true
3242
  },
3243
+ "261593": {
3244
  "content": "<src_ssf>",
3245
  "lstrip": false,
3246
  "normalized": false,
 
3248
  "single_word": false,
3249
  "special": true
3250
  },
3251
+ "261594": {
3252
  "content": "<src_sxr>",
3253
  "lstrip": false,
3254
  "normalized": false,
 
3256
  "single_word": false,
3257
  "special": true
3258
  },
3259
+ "261595": {
3260
  "content": "<src_szy>",
3261
  "lstrip": false,
3262
  "normalized": false,
 
3264
  "single_word": false,
3265
  "special": true
3266
  },
3267
+ "261596": {
3268
  "content": "<src_tao>",
3269
  "lstrip": false,
3270
  "normalized": false,
 
3272
  "single_word": false,
3273
  "special": true
3274
  },
3275
+ "261597": {
3276
  "content": "<src_tay>",
3277
  "lstrip": false,
3278
  "normalized": false,
 
3280
  "single_word": false,
3281
  "special": true
3282
  },
3283
+ "261598": {
3284
  "content": "<src_trv>",
3285
  "lstrip": false,
3286
  "normalized": false,
 
3288
  "single_word": false,
3289
  "special": true
3290
  },
3291
+ "261599": {
3292
  "content": "<src_tsu>",
3293
  "lstrip": false,
3294
  "normalized": false,
 
3296
  "single_word": false,
3297
  "special": true
3298
  },
3299
+ "261600": {
3300
  "content": "<src_xnb>",
3301
  "lstrip": false,
3302
  "normalized": false,
 
3304
  "single_word": false,
3305
  "special": true
3306
  },
3307
+ "261601": {
3308
  "content": "<src_xsy>",
3309
  "lstrip": false,
3310
  "normalized": false,
 
3312
  "single_word": false,
3313
  "special": true
3314
  },
3315
+ "261602": {
3316
  "content": "<src_zh>",
3317
  "lstrip": false,
3318
  "normalized": false,
 
3320
  "single_word": false,
3321
  "special": true
3322
  },
3323
+ "261603": {
3324
  "content": "<to_ami>",
3325
  "lstrip": false,
3326
  "normalized": false,
 
3328
  "single_word": false,
3329
  "special": true
3330
  },
3331
+ "261604": {
3332
  "content": "<to_bnn>",
3333
  "lstrip": false,
3334
  "normalized": false,
 
3336
  "single_word": false,
3337
  "special": true
3338
  },
3339
+ "261605": {
3340
  "content": "<to_ckv>",
3341
  "lstrip": false,
3342
  "normalized": false,
 
3344
  "single_word": false,
3345
  "special": true
3346
  },
3347
+ "261606": {
3348
  "content": "<to_dru>",
3349
  "lstrip": false,
3350
  "normalized": false,
 
3352
  "single_word": false,
3353
  "special": true
3354
  },
3355
+ "261607": {
3356
  "content": "<to_eng>",
3357
  "lstrip": false,
3358
  "normalized": false,
 
3360
  "single_word": false,
3361
  "special": true
3362
  },
3363
+ "261608": {
3364
  "content": "<to_pwn>",
3365
  "lstrip": false,
3366
  "normalized": false,
 
3368
  "single_word": false,
3369
  "special": true
3370
  },
3371
+ "261609": {
3372
  "content": "<to_pyu>",
3373
  "lstrip": false,
3374
  "normalized": false,
 
3376
  "single_word": false,
3377
  "special": true
3378
  },
3379
+ "261610": {
3380
  "content": "<to_ssf>",
3381
  "lstrip": false,
3382
  "normalized": false,
 
3384
  "single_word": false,
3385
  "special": true
3386
  },
3387
+ "261611": {
3388
  "content": "<to_sxr>",
3389
  "lstrip": false,
3390
  "normalized": false,
 
3392
  "single_word": false,
3393
  "special": true
3394
  },
3395
+ "261612": {
3396
  "content": "<to_szy>",
3397
  "lstrip": false,
3398
  "normalized": false,
 
3400
  "single_word": false,
3401
  "special": true
3402
  },
3403
+ "261613": {
3404
  "content": "<to_tao>",
3405
  "lstrip": false,
3406
  "normalized": false,
 
3408
  "single_word": false,
3409
  "special": true
3410
  },
3411
+ "261614": {
3412
  "content": "<to_tay>",
3413
  "lstrip": false,
3414
  "normalized": false,
 
3416
  "single_word": false,
3417
  "special": true
3418
  },
3419
+ "261615": {
3420
  "content": "<to_trv>",
3421
  "lstrip": false,
3422
  "normalized": false,
 
3424
  "single_word": false,
3425
  "special": true
3426
  },
3427
+ "261616": {
3428
  "content": "<to_tsu>",
3429
  "lstrip": false,
3430
  "normalized": false,
 
3432
  "single_word": false,
3433
  "special": true
3434
  },
3435
+ "261617": {
3436
  "content": "<to_xnb>",
3437
  "lstrip": false,
3438
  "normalized": false,
 
3440
  "single_word": false,
3441
  "special": true
3442
  },
3443
+ "261618": {
3444
  "content": "<to_xsy>",
3445
  "lstrip": false,
3446
  "normalized": false,
 
3448
  "single_word": false,
3449
  "special": true
3450
  },
3451
+ "261619": {
3452
  "content": "<to_zh>",
3453
  "lstrip": false,
3454
  "normalized": false,
 
3675
  "tsu_Latn",
3676
  "xnb_Latn",
3677
  "xsy_Latn",
 
 
3678
  "<dialect_central>",
3679
  "<dialect_coastal>",
3680
  "<dialect_dawu>",
 
3721
  "<dom_culture>",
3722
  "<dom_dictionary>",
3723
  "<dom_essays>",
 
3724
  "<dom_formosan_100_paiwan_texts>",
3725
  "<dom_formosan_academia_sinica_oral_legends>",
3726
  "<dom_formosan_amis_adversative_constructions>",
3727
+ "<dom_formosan_amis_huang_english_phonology_grammar>",
3728
  "<dom_formosan_amis_kavalan_lin_interrogative_verbs>",
3729
  "<dom_formosan_amis_kuo_sung_comparative_constructions>",
3730
  "<dom_formosan_amis_lifok_dongi_saopo_kimakimad>",
3731
  "<dom_formosan_amis_myths_and_customs>",
3732
  "<dom_formosan_amis_pa_verbs>",
3733
+ "<dom_formosan_anna_hsiou_chuan_chang_reference_gramma>",
3734
+ "<dom_formosan_anton_quack_puyuma_pulingaw>",
3735
+ "<dom_formosan_atayal_you_nao_savak_raxayal>",
3736
+ "<dom_formosan_boyizhenu_narrative_oral_literature_tap>",
3737
  "<dom_formosan_bunun_debusser_dissertation>",
 
3738
  "<dom_formosan_bunun_topic_focus>",
3739
+ "<dom_formosan_catherine_tseng_seediq_atayal_foods_the>",
3740
+ "<dom_formosan_chen_yaohan_miss_virginia_fey_played_es>",
3741
+ "<dom_formosan_chun_mei_chen_comparative_phonology_pai>",
3742
+ "<dom_formosan_chunming_wu_two_types_of_noun_incorpora>",
3743
  "<dom_formosan_cip_atayal_grammar_overview>",
3744
+ "<dom_formosan_claire_mcgill_a_brief_tayal_vocabulary>",
3745
+ "<dom_formosan_david_blundell_ed_austronesian_taiwan>",
3746
  "<dom_formosan_dean_johnson_year_clouds_smangus>",
3747
+ "<dom_formosan_deng_fangqing_introduction_puyuma_gramm>",
3748
+ "<dom_formosan_der_hwa_victoria_rau_grammar_atayal>",
3749
+ "<dom_formosan_dong_manv_yami_ode_to_taro>",
3750
+ "<dom_formosan_dong_yijia_tjuwabar_paiwan_ritual_langu>",
3751
  "<dom_formosan_elizabeth_zeitoun_chen_huei_wu_overview>",
3752
+ "<dom_formosan_elizabeth_zeitoun_lillian_huang_marie_y>",
3753
+ "<dom_formosan_elizabeth_zeitoun_pronominal_system_man>",
3754
+ "<dom_formosan_elizabeth_zeitoun_squib_dynamic_vs_stat>",
3755
  "<dom_formosan_epark>",
 
3756
  "<dom_formosan_gitbook_translations>",
3757
  "<dom_formosan_glosbe>",
3758
+ "<dom_formosan_ho_dan_phonological_system_butonglu_pai>",
3759
  "<dom_formosan_holmer_seediq>",
3760
+ "<dom_formosan_hsiu_chuan_liao_transitivity_ergativity>",
3761
  "<dom_formosan_huang_grammaticalization_squliq_atayal>",
3762
+ "<dom_formosan_huang_hui_chuan_glide_formation_takitud>",
3763
+ "<dom_formosan_huang_huijuan_shi_chaokai_introduction>",
3764
  "<dom_formosan_huang_mei_chin_atayal_reference_grammar>",
3765
  "<dom_formosan_huteson_rukai_survey>",
3766
  "<dom_formosan_ilrdf_42_language_practice_word_lists>",
3767
  "<dom_formosan_ilrdf_tousvusvutu_kita>",
3768
+ "<dom_formosan_indigenous_education_resource_center_ke>",
3769
  "<dom_formosan_indigenous_language_literary_awards>",
3770
+ "<dom_formosan_isabelle_bril_roots_and_stems_lexical_a>",
3771
+ "<dom_formosan_jian_iwan_guo_qingliu_life_history>",
3772
+ "<dom_formosan_jian_shilang_introduction_thao_grammar>",
3773
+ "<dom_formosan_john_u_wolff_the_proto_austronesian_pho>",
3774
+ "<dom_formosan_josiane_cauquelin_aborigines_taiwan_puy>",
3775
  "<dom_formosan_kanakanavu_texts>",
3776
  "<dom_formosan_kavalan_zhang_reference_grammar>",
3777
+ "<dom_formosan_kolas_foting_aboriginal_education_world>",
3778
+ "<dom_formosan_kucapungane>",
3779
+ "<dom_formosan_kumu_tapas_tribal_memory_oral_history_w>",
3780
+ "<dom_formosan_lei_shih_family_system_paiwan_at_su_pai>",
3781
+ "<dom_formosan_li_may_sung_budai_rukai_exclamatives>",
3782
+ "<dom_formosan_li_may_sung_clausal_nominalization_buda>",
3783
  "<dom_formosan_li_peirong_xu_weisheng_introduction_tru>",
3784
  "<dom_formosan_li_peizhen_wu_xingyu_shouhu_xing>",
3785
+ "<dom_formosan_lillian_huang_atayal_participants_cross>",
3786
+ "<dom_formosan_liu_manyi_kaskun_ata_matas_i_ki_quaz>",
3787
+ "<dom_formosan_malcom_ross_proto_austronesian_verbal_m>",
3788
+ "<dom_formosan_maya_yeh_blaq_uv_construction_atayal>",
3789
+ "<dom_formosan_nanang_tadaw_naci_mowna_pgagu>",
3790
  "<dom_formosan_naomi_tsukida_correlative_clauses_seedi>",
3791
  "<dom_formosan_nowbucyang_truku_thesis>",
3792
+ "<dom_formosan_ochiai_izumi_numerals_paran_seediq_rela>",
3793
  "<dom_formosan_old_texts>",
3794
  "<dom_formosan_paiwan_collart_zeitoun_time_reference>",
3795
  "<dom_formosan_paiwan_ho_five_dialects>",
3796
  "<dom_formosan_paiwanstories>",
3797
+ "<dom_formosan_patricia_stanley_morphophonemics_of_ver>",
3798
+ "<dom_formosan_paul_jen_kuei_li_internal_relationships>",
3799
+ "<dom_formosan_paul_jen_kuei_li_rukai_structure>",
3800
+ "<dom_formosan_paul_jen_kuei_li_the_preglottalised_sto>",
3801
+ "<dom_formosan_paul_li_atayalic_final_voiced_stops>",
3802
+ "<dom_formosan_paul_li_position_atayal_austronesian>",
3803
+ "<dom_formosan_pingdong_county_government_kai_na_sepuc>",
3804
  "<dom_formosan_puyuma_katipol_kopfjagdriten>",
 
3805
  "<dom_formosan_puyuma_teng_reference_grammar>",
3806
+ "<dom_formosan_raleigh_ferrell_construction_markers_fo>",
3807
  "<dom_formosan_rik_bunun>",
3808
+ "<dom_formosan_robert_blust_the_austronesian_languages>",
 
 
 
3809
  "<dom_formosan_saaroa_pan_grammar>",
3810
  "<dom_formosan_sakizaya_affixes>",
3811
  "<dom_formosan_seals>",
3812
  "<dom_formosan_seediq_zhang_reference_grammar>",
3813
+ "<dom_formosan_shen_wenqi_introduction_sakizaya_gramma>",
3814
  "<dom_formosan_shigeru_tsuchida_reconstruction_proto_t>",
3815
  "<dom_formosan_shih_rukai_adverbial>",
3816
+ "<dom_formosan_sing_olam_hong_tinglan_aboriginal_educa>",
3817
  "<dom_formosan_song_limei_introduction_kanakanavu_gram>",
3818
  "<dom_formosan_song_limei_introduction_seediq_grammar>",
3819
+ "<dom_formosan_soren_egerod_statement_atayal_phonology>",
3820
+ "<dom_formosan_stacy_teng_malcom_ross_is_puyuma_primar>",
3821
+ "<dom_formosan_truku_lowking_demonstratives>",
3822
+ "<dom_formosan_tsai_hsui_liu_complementation_three_lan>",
3823
+ "<dom_formosan_tsai_wei_tien_dylan_conjunctive_reducti>",
3824
+ "<dom_formosan_tsou_descriptive_study>",
3825
+ "<dom_formosan_tung_tsuchida_ting_li_pan_saaroa_texts>",
3826
+ "<dom_formosan_wei_huilin_liu_social_structure_yami>",
3827
  "<dom_formosan_wilang_yutas_videos>",
3828
+ "<dom_formosan_wu_chunming_adverbials_in_paiwan>",
3829
  "<dom_formosan_wu_jinglan_introduction_amis_grammar>",
3830
+ "<dom_formosan_xie_fuhui_introduction_kavalan_grammar>",
3831
  "<dom_formosan_yedda_palemeq_blog>",
3832
  "<dom_formosan_yeddas_blog>",
3833
  "<dom_formosan_yeh_meili_introduction_saisiyat_grammar>",
3834
+ "<dom_formosan_yi_yang_cheng_kanakanavu_word_level_pro>",
3835
+ "<dom_formosan_yi_yang_cheng_tense_aspect_agent_markin>",
3836
+ "<dom_formosan_yoshiro_nihira_bunun_vocabulary>",
3837
+ "<dom_formosan_zeng_shifen_reduplication_affixation_pa>",
3838
+ "<dom_formosan_zhan_sujuan_taiwan_indigenous_peoples_h>",
3839
+ "<dom_formosan_zhang_xiujuan_introduction_paiwan_gramm>",
3840
  "<dom_formosan_zhang_yongli_pan_jiarong_introduction_t>",
3841
+ "<dom_formosan_zhao_shanhe_li_taiyuan_zhu_qingyi_abori>",
3842
  "<dom_formosan_zheng_acl_2024>",
3843
  "<dom_formosan_zheng_data>",
3844
+ "<dom_formosan_zheng_yumei_zhu_qingyi_bo_hongming_abor>",
3845
  "<dom_learning_vocab>",
3846
  "<dom_nine_level>",
3847
  "<dom_ntu>",
training_profile.json ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 3,
3
+ "recipe_id": "nllb200-spm8k-directional-v3",
4
+ "model_family": "nllb",
5
+ "corpus_pipeline_version": "formosan-mt-corpus-v3",
6
+ "mt_standardization": {
7
+ "id": "formosan-mt-standard-v3",
8
+ "sha256": "4bbded87eb4833b2d1cd5a88a1f2b059560416e0e69ecfa55433a77f418c903e",
9
+ "namespace": "formosan-mt"
10
+ },
11
+ "project_root": ".",
12
+ "corpus_variants": ["public_no_bible", "private_no_bible"],
13
+ "base_model": {
14
+ "name": "facebook/nllb-200-distilled-600M",
15
+ "revision": "f8d333a098d19b4fd9a8b18f94170487ad3f821d"
16
+ },
17
+ "primary_input_pattern": "corpus_builds/{corpus_name}/pivot_corpora_final/big_corpus_{target}_in_domain_hard.csv",
18
+ "targets": {
19
+ "english": {
20
+ "input_pattern": "corpus_builds/{corpus_name}/pivot_corpora_final/big_corpus_en_in_domain_hard.csv",
21
+ "target_col": "english_sentence",
22
+ "directions": ["f2en", "en2f"],
23
+ "selected_recipe": "NLLB-200 SPM8k directional"
24
+ },
25
+ "chinese": {
26
+ "input_pattern": "corpus_builds/{corpus_name}/pivot_corpora_final/big_corpus_zh_in_domain_hard.csv",
27
+ "target_col": "chinese_sentence",
28
+ "directions": ["f2zh", "zh2f"],
29
+ "selected_recipe": "NLLB-200 SPM8k directional"
30
+ }
31
+ },
32
+ "splits": {
33
+ "english_output_dir": "formosan_mt_experiments/data/splits_en_v1",
34
+ "chinese_output_dir": "formosan_mt_experiments/data/splits_zh_v1",
35
+ "train_ratio": 0.9,
36
+ "validate_ratio": 0.025,
37
+ "test_ratio": 0.075,
38
+ "min_test_rows": 500,
39
+ "min_validate_rows": 150,
40
+ "character_ngram_jaccard_threshold": 0.82,
41
+ "tiers": ["in_domain_hard"],
42
+ "headline_tier": "in_domain_hard"
43
+ },
44
+ "tokenizer": {
45
+ "mode": "spm",
46
+ "spm_vocab_sweep": [8192],
47
+ "default_spm_vocab": 8192,
48
+ "chinese_default_spm_vocab": 8192,
49
+ "min_char_frequency": 3,
50
+ "max_dialect_tags": 200,
51
+ "min_dialect_frequency": 3,
52
+ "training_columns": ["formosan_sentence"],
53
+ "setup_splits": ["train"]
54
+ },
55
+ "training_defaults": {
56
+ "steps": 300000,
57
+ "batch_size": 16,
58
+ "grad_accum_steps": 4,
59
+ "effective_batch_size": 64,
60
+ "max_length": 384,
61
+ "learning_rate": 0.00002,
62
+ "warmup_steps": 4000,
63
+ "weight_decay": 0.001,
64
+ "alpha": 0.5,
65
+ "precision": "bf16",
66
+ "label_smoothing": 0.1,
67
+ "save_interval": 0,
68
+ "log_interval": 500,
69
+ "generation_eval_interval": 10000,
70
+ "generation_eval_samples_per_language": 128,
71
+ "generation_eval_batch_size": 16,
72
+ "validation_beam": 2,
73
+ "best_metric": "chrF2",
74
+ "early_stopping_patience": 5,
75
+ "early_stopping_min_delta": 0.05,
76
+ "early_stopping_start_step": 30000,
77
+ "f2en_easy_source_weight": 0.05,
78
+ "en2f_easy_source_weight": 0.15,
79
+ "f2zh_easy_source_weight": 0.05,
80
+ "zh2f_easy_source_weight": 0.15
81
+ },
82
+ "generation_defaults": {
83
+ "beam": 4,
84
+ "max_length": 384,
85
+ "max_new_tokens": 256,
86
+ "min_new_tokens": 1,
87
+ "no_repeat_ngram_size": 0,
88
+ "repetition_penalty": 1.0,
89
+ "length_penalty": 1.0,
90
+ "metadata_modes": ["default", "oracle"],
91
+ "bootstrap_samples": 200,
92
+ "bootstrap_seed": 42
93
+ }
94
+ }