crossroderick commited on
Commit
d41354e
·
1 Parent(s): 5b864f2

Enhanced baseline and additional corpus improvements

Browse files
.gitignore CHANGED
@@ -1,6 +1,8 @@
1
  /src/data/extracted
2
  /src/data/**.bz2
3
- /src/data/**.jsonl
 
 
4
  /src/data/**.txt
5
  /logs/**
6
  /checkpoints/**
 
1
  /src/data/extracted
2
  /src/data/**.bz2
3
+ /src/data/syriac**.jsonl
4
+ /src/data/sedra**.jsonl
5
+ /src/data/corpus**.jsonl
6
  /src/data/**.txt
7
  /logs/**
8
  /checkpoints/**
README.md CHANGED
@@ -22,16 +22,16 @@ model-index:
22
  metrics:
23
  - name: Training Loss
24
  type: loss
25
- value: 3.3484
26
  - name: Evaluation Loss
27
  type: loss
28
- value: 5.3017
29
  - name: CER
30
  type: cer
31
- value: 0.6500
32
  - name: Exact Match
33
  type: accuracy
34
- value: 0.0220
35
  ---
36
  # AramT5 - T5 Fine-Tuned on Syriac-to-Latin Transliteration ♰
37
 
 
22
  metrics:
23
  - name: Training Loss
24
  type: loss
25
+ value: 1.5250
26
  - name: Evaluation Loss
27
  type: loss
28
+ value: 3.8090
29
  - name: CER
30
  type: cer
31
+ value: 0.4829
32
  - name: Exact Match
33
  type: accuracy
34
+ value: 0.0725
35
  ---
36
  # AramT5 - T5 Fine-Tuned on Syriac-to-Latin Transliteration ♰
37
 
config.json CHANGED
@@ -25,5 +25,5 @@
25
  "torch_dtype": "float32",
26
  "transformers_version": "4.51.2",
27
  "use_cache": true,
28
- "vocab_size": 40100
29
  }
 
25
  "torch_dtype": "float32",
26
  "transformers_version": "4.51.2",
27
  "use_cache": true,
28
+ "vocab_size": 16100
29
  }
model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:dc4646b05b0de4d7f5e8b3f6c0cac6a1d63dce0891ff2b8e6e1f6ccd55e39baf
3
- size 258368552
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f8b0e1794702889a150c716d691249f91bb4726bcffe0190cb1f33a2f478254f
3
+ size 209216552
spiece.model CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:347fef5a38453d31d013802c803c9d91f9333fefacffc922784af95f94202f4b
3
- size 988532
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:02090247a3d32c0cb86d464007c80682b2dcf3e0619b42e826dbce248d884dad
3
+ size 511338
src/data/build_corpus_vocabulary.py ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Build corpus vocabulary from pointed Syriac text.
4
+
5
+ Extracts vocalised words from corpus files (TEI, Bible, etc.) and creates
6
+ a lookup table for transliteration. This supplements SEDRA data with
7
+ additional vocabulary found in the corpus.
8
+
9
+ Usage:
10
+ python build_corpus_vocabulary.py [--output corpus_vocabulary.jsonl]
11
+
12
+ The output file is loaded by sedra_lookup.py as a fallback vocabulary source.
13
+ """
14
+
15
+ import argparse
16
+ import json
17
+ from pathlib import Path
18
+
19
+
20
+ def strip_vowels(word: str) -> str:
21
+ """Remove vowel diacritics to get unpointed form."""
22
+ result = []
23
+ for char in word:
24
+ code = ord(char)
25
+ # Skip vowels (0730-073F)
26
+ if 0x0730 <= code <= 0x073F:
27
+ continue
28
+ # Skip other diacritics (0740-074A)
29
+ if 0x0740 <= code <= 0x074A:
30
+ continue
31
+ result.append(char)
32
+ return "".join(result)
33
+
34
+
35
+ def count_standard_vowels(word: str) -> int:
36
+ """Count standard vowel diacritics (U+0730-073F)."""
37
+ return sum(1 for c in word if 0x0730 <= ord(c) <= 0x073F)
38
+
39
+
40
+ def has_standard_vowels(word: str) -> bool:
41
+ """Check if word has any standard vowels."""
42
+ return any(0x0730 <= ord(c) <= 0x073F for c in word)
43
+
44
+
45
+ def build_vocabulary(corpus_files: list[Path], output_path: Path) -> int:
46
+ """
47
+ Build vocabulary from corpus files.
48
+
49
+ Args:
50
+ corpus_files: List of corpus file paths to process
51
+ output_path: Output JSONL file path
52
+
53
+ Returns:
54
+ Number of vocabulary entries created
55
+ """
56
+ from generate_syr_lat_pairs import (
57
+ has_vowel_diacritics,
58
+ extract_syriac_words,
59
+ transliterate_word_pointed,
60
+ SyriacDialect,
61
+ )
62
+
63
+ # Collect all pointed words from all corpus files
64
+ all_pointed_words = []
65
+ for corpus_file in corpus_files:
66
+ if not corpus_file.exists():
67
+ print(f" Skipping {corpus_file.name} (not found)")
68
+ continue
69
+
70
+ print(f" Reading {corpus_file.name}...")
71
+ with open(corpus_file, "r", encoding="utf-8") as f:
72
+ content = f.read()
73
+
74
+ words = extract_syriac_words(content)
75
+ pointed = [w for w in words if has_vowel_diacritics(w)]
76
+ all_pointed_words.extend(pointed)
77
+ print(f" Found {len(pointed)} pointed words")
78
+
79
+ print(f"\nTotal pointed words: {len(all_pointed_words)}")
80
+
81
+ # Build vocabulary, preferring forms with more standard vowels
82
+ vocab: dict[str, dict] = {}
83
+ for pw in all_pointed_words:
84
+ unpointed = strip_vowels(pw)
85
+ if not unpointed or len(unpointed) < 2:
86
+ continue
87
+
88
+ # Skip if no standard vowels (only has dots/diacritics)
89
+ if not has_standard_vowels(pw):
90
+ continue
91
+
92
+ vowel_count = count_standard_vowels(pw)
93
+
94
+ # Add or replace if this form has more vowels
95
+ if unpointed not in vocab or vowel_count > vocab[unpointed]["vowel_count"]:
96
+ west = transliterate_word_pointed(pw, SyriacDialect.WEST)
97
+ east = transliterate_word_pointed(pw, SyriacDialect.EAST)
98
+ vocab[unpointed] = {
99
+ "pointed": pw,
100
+ "west": west,
101
+ "east": east,
102
+ "vowel_count": vowel_count,
103
+ }
104
+
105
+ print(f"Built vocabulary with {len(vocab)} unique unpointed forms")
106
+
107
+ # Save to file (without vowel_count)
108
+ with open(output_path, "w", encoding="utf-8") as f:
109
+ for unpointed, data in vocab.items():
110
+ f.write(
111
+ json.dumps(
112
+ {
113
+ "unpointed": unpointed,
114
+ "pointed": data["pointed"],
115
+ "west": data["west"],
116
+ "east": data["east"],
117
+ },
118
+ ensure_ascii=False,
119
+ )
120
+ + "\n"
121
+ )
122
+
123
+ print(f"Saved to {output_path}")
124
+ return len(vocab)
125
+
126
+
127
+ def main():
128
+ parser = argparse.ArgumentParser(
129
+ description="Build corpus vocabulary from pointed Syriac text"
130
+ )
131
+ parser.add_argument(
132
+ "--output",
133
+ "-o",
134
+ type=Path,
135
+ default=Path(__file__).parent / "corpus_vocabulary.jsonl",
136
+ help="Output JSONL file path",
137
+ )
138
+ parser.add_argument(
139
+ "--corpus",
140
+ "-c",
141
+ type=Path,
142
+ nargs="*",
143
+ help="Corpus files to process (default: TEI and Bible corpora)",
144
+ )
145
+ args = parser.parse_args()
146
+
147
+ data_dir = Path(__file__).parent
148
+
149
+ # Default corpus files
150
+ if args.corpus:
151
+ corpus_files = args.corpus
152
+ else:
153
+ corpus_files = [
154
+ data_dir / "syriac_corpus_tei.txt",
155
+ data_dir / "syriac_bible_corpus.txt",
156
+ ]
157
+
158
+ print("Building corpus vocabulary...")
159
+ print(f"Corpus files: {[f.name for f in corpus_files]}")
160
+ print()
161
+
162
+ count = build_vocabulary(corpus_files, args.output)
163
+ print(f"\nDone! Created {count} vocabulary entries.")
164
+
165
+
166
+ if __name__ == "__main__":
167
+ main()
src/data/fetch_sedra_vocalised.py CHANGED
@@ -335,4 +335,4 @@ if __name__ == "__main__":
335
  try:
336
  asyncio.run(main(force=force))
337
  except KeyboardInterrupt:
338
- print("\nInterrupted. Progress saved - run again to resume.")
 
335
  try:
336
  asyncio.run(main(force=force))
337
  except KeyboardInterrupt:
338
+ print("\nInterrupted. Progress saved - run again to resume.")
src/data/generate_syr_lat_pairs.py CHANGED
@@ -417,6 +417,148 @@ def transliterate_word_unpointed(word: str, dialect: SyriacDialect) -> str:
417
  return "".join(result)
418
 
419
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
420
  def transliterate_word_with_sedra(
421
  word: str, dialect: SyriacDialect, use_sedra: bool = True, skip_heuristics: bool = False
422
  ) -> Optional[str]:
@@ -424,10 +566,12 @@ def transliterate_word_with_sedra(
424
  Transliterate a single Syriac word, using SEDRA lookup when available.
425
 
426
  Strategy:
427
- 1. If word has vowel diacritics use pointed transliteration
428
- 2. If SEDRA has the word → use vocalised form from SEDRA
429
- 3. If skip_heuristics=True and no SEDRA entry → return None
430
- 4. Otherwisefall back to heuristic transliteration
 
 
431
 
432
  Args:
433
  word: Syriac word to transliterate
@@ -438,10 +582,22 @@ def transliterate_word_with_sedra(
438
  Returns:
439
  Latin transliteration, or None if skip_heuristics=True and no SEDRA entry
440
  """
441
- # If word already has vowel diacritics, use pointed transliteration
442
  if has_vowel_diacritics(word):
 
 
 
 
 
 
443
  return transliterate_word_pointed(word, dialect)
444
 
 
 
 
 
 
 
445
  # Try SEDRA lookup for unpointed words
446
  if use_sedra:
447
  sedra = get_sedra_lookup()
@@ -893,4 +1049,4 @@ if __name__ == "__main__":
893
  print()
894
 
895
  # Run main processing
896
- main()
 
417
  return "".join(result)
418
 
419
 
420
+ # Syriac proclitics (prefixes) that should be separated with hyphens
421
+ # ܒ beth "in/at/by", ܕ dalath "of/that", ܘ waw "and", ܠ lamadh "to/for"
422
+ SYRIAC_PROCLITICS = {
423
+ "\u0712": "b", # ܒ beth
424
+ "\u0715": "d", # ܕ dalath
425
+ "\u0718": "w", # ܘ waw
426
+ "\u0720": "l", # ܠ lamadh
427
+ }
428
+
429
+ # Syriac vowel diacritics range (U+0730 - U+073F)
430
+ SYRIAC_VOWEL_RANGE = set(chr(c) for c in range(0x0730, 0x0740))
431
+
432
+
433
+ def count_syriac_consonants(word: str) -> int:
434
+ """Count the number of Syriac consonants in a word."""
435
+ return sum(1 for c in word if c in SYRIAC_CONSONANTS)
436
+
437
+
438
+ def try_strip_proclitic(
439
+ word: str, dialect: SyriacDialect, use_sedra: bool = True, _depth: int = 0
440
+ ) -> Optional[Tuple[str, str]]:
441
+ """
442
+ Try to identify and strip proclitic prefix(es) from a Syriac word.
443
+
444
+ Recursively handles multiple proclitics (e.g., ܘܠܡܠܟܐ → w-l-malko).
445
+
446
+ Only strips if:
447
+ 1. The full word is NOT a known root word (in manual/SEDRA, not corpus)
448
+ 2. The remainder has at least 3 consonants (triliteral root)
449
+
450
+ For unpointed words, uses SEDRA lookup for remainder if available,
451
+ otherwise falls back to heuristic transliteration.
452
+
453
+ This avoids incorrectly splitting root words like ܒܝܬ (bayt), ܒܪܐ (bro), ܕܡܐ (dmo).
454
+
455
+ Returns:
456
+ Tuple of (prefix_latin, remainder_latin) if successful, None otherwise.
457
+ """
458
+ # Prevent infinite recursion (max 3 proclitics: w-d-l- etc.)
459
+ if _depth > 3:
460
+ return None
461
+
462
+ if len(word) < 2:
463
+ return None
464
+
465
+ first_char = word[0]
466
+ if first_char not in SYRIAC_PROCLITICS:
467
+ return None
468
+
469
+ # Check: if the FULL word is a known root word (manual/SEDRA), don't split
470
+ # (e.g., ܒܝܬܐ "bayto/house" should not become b-yto)
471
+ if use_sedra:
472
+ sedra = get_sedra_lookup()
473
+ if sedra is not None:
474
+ dialect_str = "west" if dialect == SyriacDialect.WEST else "east"
475
+ if sedra.is_root_word(word, dialect_str):
476
+ return None # Full word is a known root, don't split
477
+
478
+ remainder = word[1:]
479
+ prefix_latin = SYRIAC_PROCLITICS[first_char]
480
+
481
+ # Skip any vowel diacritics that might follow the prefix
482
+ # (they belong to the prefix, not the remainder)
483
+ while remainder and remainder[0] in SYRIAC_VOWEL_RANGE:
484
+ remainder = remainder[1:]
485
+
486
+ if not remainder:
487
+ return None
488
+
489
+ # Require at least 3 consonants in remainder (triliteral root minimum)
490
+ # This prevents splitting root words like ܒܝܬ (b-y-t), ܒܪܐ (b-r-ʾ), ܕܡܐ (d-m-ʾ)
491
+ if count_syriac_consonants(remainder) < 3:
492
+ return None
493
+
494
+ # Check if remainder has vowel diacritics → use pointed transliteration
495
+ if has_vowel_diacritics(remainder):
496
+ remainder_latin = transliterate_word_pointed(remainder, dialect)
497
+ return (prefix_latin, remainder_latin)
498
+
499
+ # Recursively check if remainder also starts with a proclitic
500
+ nested_result = try_strip_proclitic(remainder, dialect, use_sedra, _depth + 1)
501
+ if nested_result is not None:
502
+ nested_prefix, nested_remainder = nested_result
503
+ return (prefix_latin, f"{nested_prefix}-{nested_remainder}")
504
+
505
+ # Check if remainder is in SEDRA
506
+ if use_sedra:
507
+ sedra = get_sedra_lookup()
508
+ if sedra is not None:
509
+ dialect_str = "west" if dialect == SyriacDialect.WEST else "east"
510
+ vocalised = sedra.get_vocalised(remainder, dialect_str)
511
+ if vocalised is not None:
512
+ return (prefix_latin, vocalised.latin)
513
+
514
+ # Fallback: remainder not in SEDRA, use heuristic transliteration
515
+ # This handles inflected forms like ܡܕܪܟܘܬܗܘܢ (mdarakutahun)
516
+ remainder_latin = transliterate_word_unpointed(remainder, dialect)
517
+ return (prefix_latin, remainder_latin)
518
+
519
+
520
+ def try_strip_proclitic_pointed(word: str, dialect: SyriacDialect) -> Optional[Tuple[str, str]]:
521
+ """
522
+ Try to strip a proclitic prefix from a POINTED Syriac word.
523
+
524
+ For pointed words, we identify proclitics by checking if the first consonant
525
+ has no vowel directly after it (true proclitics are vowelless or have shwa).
526
+ If the first consonant has a full vowel, it's part of the root, not a proclitic.
527
+
528
+ Returns:
529
+ Tuple of (prefix_latin, remainder_latin) if successful, None otherwise.
530
+ """
531
+ if len(word) < 3: # Need at least: proclitic + consonant + vowel
532
+ return None
533
+
534
+ first_char = word[0]
535
+ if first_char not in SYRIAC_PROCLITICS:
536
+ return None
537
+
538
+ # Check if the proclitic has a vowel immediately after it
539
+ # If yes, it's probably part of the root, not a proclitic
540
+ if len(word) > 1 and word[1] in SYRIAC_VOWEL_RANGE:
541
+ return None # Has vowel → part of root, don't split
542
+
543
+ prefix_latin = SYRIAC_PROCLITICS[first_char]
544
+
545
+ # Remainder starts at position 1 (right after the proclitic consonant)
546
+ remainder = word[1:]
547
+
548
+ # Remainder must start with a consonant
549
+ if remainder[0] not in SYRIAC_CONSONANTS:
550
+ return None
551
+
552
+ # Remainder must have at least 3 consonants (triliteral root)
553
+ consonant_count = sum(1 for c in remainder if c in SYRIAC_CONSONANTS)
554
+ if consonant_count < 3:
555
+ return None
556
+
557
+ # Transliterate the remainder
558
+ remainder_latin = transliterate_word_pointed(remainder, dialect)
559
+ return (prefix_latin, remainder_latin)
560
+
561
+
562
  def transliterate_word_with_sedra(
563
  word: str, dialect: SyriacDialect, use_sedra: bool = True, skip_heuristics: bool = False
564
  ) -> Optional[str]:
 
566
  Transliterate a single Syriac word, using SEDRA lookup when available.
567
 
568
  Strategy:
569
+ 1. Try stripping proclitics from pointed words (ܒ, ܕ, ܘ, ܠ)
570
+ 2. If word has vowel diacritics → use pointed transliteration
571
+ 3. Try stripping proclitics from unpointed words
572
+ 4. If SEDRA has the word use vocalised form from SEDRA
573
+ 5. If skip_heuristics=True and no SEDRA entry → return None
574
+ 6. Otherwise → fall back to heuristic transliteration
575
 
576
  Args:
577
  word: Syriac word to transliterate
 
582
  Returns:
583
  Latin transliteration, or None if skip_heuristics=True and no SEDRA entry
584
  """
585
+ # For pointed words: try proclitic stripping first, then transliterate
586
  if has_vowel_diacritics(word):
587
+ # Try stripping proclitic from pointed word
588
+ proclitic_result = try_strip_proclitic_pointed(word, dialect)
589
+ if proclitic_result is not None:
590
+ prefix, remainder = proclitic_result
591
+ return f"{prefix}-{remainder}"
592
+ # No proclitic found, transliterate the whole word
593
  return transliterate_word_pointed(word, dialect)
594
 
595
+ # For unpointed words: try proclitic stripping with SEDRA lookup
596
+ proclitic_result = try_strip_proclitic(word, dialect, use_sedra)
597
+ if proclitic_result is not None:
598
+ prefix, remainder = proclitic_result
599
+ return f"{prefix}-{remainder}"
600
+
601
  # Try SEDRA lookup for unpointed words
602
  if use_sedra:
603
  sedra = get_sedra_lookup()
 
1049
  print()
1050
 
1051
  # Run main processing
1052
+ main()
src/data/manual_vocabulary.jsonl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d31b677a114e26ce16e07a2544c72e3f6f4948ee9ed0e2624d59dc23f2d1d1db
3
+ size 11573
src/data/sedra_lookup.py CHANGED
@@ -74,7 +74,40 @@ class SedraLookup:
74
  from generate_syr_lat_pairs import (SyriacDialect,
75
  transliterate_word_pointed)
76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  count = 0
 
78
  with open(self.data_path, "r", encoding="utf-8") as f:
79
  for line in f:
80
  record = json.loads(line)
@@ -86,8 +119,8 @@ class SedraLookup:
86
  if not unpointed:
87
  continue
88
 
89
- # Store West Syriac form
90
- if western:
91
  west_latin = transliterate_word_pointed(western, SyriacDialect.WEST)
92
  self._west_lookup[unpointed] = VocalisedForm(
93
  unpointed=unpointed,
@@ -97,7 +130,7 @@ class SedraLookup:
97
  )
98
 
99
  # Store East Syriac form (or infer from West)
100
- if eastern:
101
  east_latin = transliterate_word_pointed(eastern, SyriacDialect.EAST)
102
  self._east_lookup[unpointed] = VocalisedForm(
103
  unpointed=unpointed,
@@ -119,9 +152,87 @@ class SedraLookup:
119
 
120
  count += 1
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  self._loaded = True
123
  print(
124
- f"Loaded {count} SEDRA entries ({len(self._west_lookup)} West, {len(self._east_lookup)} East)"
 
125
  )
126
  return True
127
 
@@ -202,6 +313,38 @@ class SedraLookup:
202
  clean = self._strip_non_vowel_diacritics(unpointed)
203
  return clean in self._west_lookup or unpointed in self._west_lookup
204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  @property
206
  def west_count(self) -> int:
207
  return len(self._west_lookup)
 
74
  from generate_syr_lat_pairs import (SyriacDialect,
75
  transliterate_word_pointed)
76
 
77
+ # --- Load manual vocabulary first (highest priority) ---
78
+ manual_vocab_path = Path(__file__).parent / "manual_vocabulary.jsonl"
79
+ manual_count = 0
80
+ if manual_vocab_path.exists():
81
+ with open(manual_vocab_path, "r", encoding="utf-8") as f:
82
+ for line in f:
83
+ record = json.loads(line)
84
+ unpointed = record.get("unpointed", "").strip()
85
+ pointed = record.get("pointed", "").strip()
86
+ west_latin = record.get("west", "")
87
+ east_latin = record.get("east", "")
88
+
89
+ if not unpointed:
90
+ continue
91
+
92
+ if west_latin:
93
+ self._west_lookup[unpointed] = VocalisedForm(
94
+ unpointed=unpointed,
95
+ pointed=pointed,
96
+ latin=west_latin,
97
+ category="manual",
98
+ )
99
+ manual_count += 1
100
+
101
+ if east_latin:
102
+ self._east_lookup[unpointed] = VocalisedForm(
103
+ unpointed=unpointed,
104
+ pointed=pointed,
105
+ latin=east_latin,
106
+ category="manual",
107
+ )
108
+
109
  count = 0
110
+ extracted_count = 0
111
  with open(self.data_path, "r", encoding="utf-8") as f:
112
  for line in f:
113
  record = json.loads(line)
 
119
  if not unpointed:
120
  continue
121
 
122
+ # Store West Syriac form (don't overwrite manual entries)
123
+ if western and unpointed not in self._west_lookup:
124
  west_latin = transliterate_word_pointed(western, SyriacDialect.WEST)
125
  self._west_lookup[unpointed] = VocalisedForm(
126
  unpointed=unpointed,
 
130
  )
131
 
132
  # Store East Syriac form (or infer from West)
133
+ if eastern and unpointed not in self._east_lookup:
134
  east_latin = transliterate_word_pointed(eastern, SyriacDialect.EAST)
135
  self._east_lookup[unpointed] = VocalisedForm(
136
  unpointed=unpointed,
 
152
 
153
  count += 1
154
 
155
+ # --- Extract individual words from compound entries ---
156
+ # If entry contains spaces (is a phrase), extract each word
157
+ unpointed_words = unpointed.split()
158
+ western_words = western.split() if western else []
159
+ eastern_words = eastern.split() if eastern else []
160
+
161
+ if len(unpointed_words) > 1:
162
+ # Extract West words
163
+ if len(unpointed_words) == len(western_words):
164
+ for uw, ww in zip(unpointed_words, western_words):
165
+ # Only add if not already present (don't overwrite direct entries)
166
+ if uw not in self._west_lookup:
167
+ wlat = transliterate_word_pointed(ww, SyriacDialect.WEST)
168
+ self._west_lookup[uw] = VocalisedForm(
169
+ unpointed=uw,
170
+ pointed=ww,
171
+ latin=wlat,
172
+ category=category,
173
+ )
174
+ extracted_count += 1
175
+
176
+ # Extract East words (or infer from West)
177
+ if len(unpointed_words) == len(eastern_words):
178
+ for uw, ew in zip(unpointed_words, eastern_words):
179
+ if uw not in self._east_lookup:
180
+ elat = transliterate_word_pointed(ew, SyriacDialect.EAST)
181
+ self._east_lookup[uw] = VocalisedForm(
182
+ unpointed=uw,
183
+ pointed=ew,
184
+ latin=elat,
185
+ category=category,
186
+ )
187
+ elif len(unpointed_words) == len(western_words):
188
+ # Infer East from West for extracted words
189
+ for uw, ww in zip(unpointed_words, western_words):
190
+ if uw not in self._east_lookup:
191
+ elat = transliterate_word_pointed(ww, SyriacDialect.EAST)
192
+ self._east_lookup[uw] = VocalisedForm(
193
+ unpointed=uw,
194
+ pointed=ww,
195
+ latin=elat,
196
+ category=category,
197
+ )
198
+
199
+ # --- Load corpus vocabulary as fallback ---
200
+ corpus_vocab_path = Path(__file__).parent / "corpus_vocabulary.jsonl"
201
+ corpus_count = 0
202
+ if corpus_vocab_path.exists():
203
+ with open(corpus_vocab_path, "r", encoding="utf-8") as f:
204
+ for line in f:
205
+ record = json.loads(line)
206
+ unpointed = record.get("unpointed", "").strip()
207
+ pointed = record.get("pointed", "").strip()
208
+ west_latin = record.get("west", "")
209
+ east_latin = record.get("east", "")
210
+
211
+ if not unpointed or not pointed:
212
+ continue
213
+
214
+ # Only add if not already present (SEDRA takes priority)
215
+ if unpointed not in self._west_lookup and west_latin:
216
+ self._west_lookup[unpointed] = VocalisedForm(
217
+ unpointed=unpointed,
218
+ pointed=pointed,
219
+ latin=west_latin,
220
+ category="corpus",
221
+ )
222
+ corpus_count += 1
223
+
224
+ if unpointed not in self._east_lookup and east_latin:
225
+ self._east_lookup[unpointed] = VocalisedForm(
226
+ unpointed=unpointed,
227
+ pointed=pointed,
228
+ latin=east_latin,
229
+ category="corpus",
230
+ )
231
+
232
  self._loaded = True
233
  print(
234
+ f"Loaded {manual_count} manual + {count} SEDRA + {extracted_count} extracted + {corpus_count} corpus "
235
+ f"({len(self._west_lookup)} West, {len(self._east_lookup)} East)"
236
  )
237
  return True
238
 
 
313
  clean = self._strip_non_vowel_diacritics(unpointed)
314
  return clean in self._west_lookup or unpointed in self._west_lookup
315
 
316
+ def is_root_word(self, unpointed: str, dialect: str | Dialect = "west") -> bool:
317
+ """
318
+ Check if a word is a known root word (from manual or SEDRA, not corpus).
319
+
320
+ This is used for proclitic detection - we only want to split a word
321
+ if the full word is NOT itself a known root. Words from corpus
322
+ may include prefixed forms, so we don't count those.
323
+
324
+ Args:
325
+ unpointed: Unpointed Syriac word
326
+ dialect: "west" or "east"
327
+
328
+ Returns:
329
+ True if the word is in manual or SEDRA vocabulary (not corpus)
330
+ """
331
+ if not self._loaded:
332
+ self.load()
333
+
334
+ if isinstance(dialect, str):
335
+ dialect = Dialect(dialect.lower())
336
+
337
+ clean = self._strip_non_vowel_diacritics(unpointed)
338
+ lookup = self._west_lookup if dialect == Dialect.WEST else self._east_lookup
339
+
340
+ # Check both clean and original form
341
+ form = lookup.get(clean) or lookup.get(unpointed)
342
+ if form is None:
343
+ return False
344
+
345
+ # Only consider it a root if NOT from corpus
346
+ return form.category != "corpus"
347
+
348
  @property
349
  def west_count(self) -> int:
350
  return len(self._west_lookup)
src/test_t5.py CHANGED
@@ -98,4 +98,4 @@ while True:
98
  if text:
99
  result = transliterate(text, dialect)
100
  dialect_name = "East" if dialect == "east" else "West"
101
- print(f" [{dialect_name}] {rtl(text)} → {result}")
 
98
  if text:
99
  result = transliterate(text, dialect)
100
  dialect_name = "East" if dialect == "east" else "West"
101
+ print(f" [{dialect_name}] {rtl(text)} → {result}")
src/tokeniser/added_tokens.json CHANGED
@@ -1,102 +1,102 @@
1
  {
2
- "<extra_id_0>": 40099,
3
- "<extra_id_10>": 40089,
4
- "<extra_id_11>": 40088,
5
- "<extra_id_12>": 40087,
6
- "<extra_id_13>": 40086,
7
- "<extra_id_14>": 40085,
8
- "<extra_id_15>": 40084,
9
- "<extra_id_16>": 40083,
10
- "<extra_id_17>": 40082,
11
- "<extra_id_18>": 40081,
12
- "<extra_id_19>": 40080,
13
- "<extra_id_1>": 40098,
14
- "<extra_id_20>": 40079,
15
- "<extra_id_21>": 40078,
16
- "<extra_id_22>": 40077,
17
- "<extra_id_23>": 40076,
18
- "<extra_id_24>": 40075,
19
- "<extra_id_25>": 40074,
20
- "<extra_id_26>": 40073,
21
- "<extra_id_27>": 40072,
22
- "<extra_id_28>": 40071,
23
- "<extra_id_29>": 40070,
24
- "<extra_id_2>": 40097,
25
- "<extra_id_30>": 40069,
26
- "<extra_id_31>": 40068,
27
- "<extra_id_32>": 40067,
28
- "<extra_id_33>": 40066,
29
- "<extra_id_34>": 40065,
30
- "<extra_id_35>": 40064,
31
- "<extra_id_36>": 40063,
32
- "<extra_id_37>": 40062,
33
- "<extra_id_38>": 40061,
34
- "<extra_id_39>": 40060,
35
- "<extra_id_3>": 40096,
36
- "<extra_id_40>": 40059,
37
- "<extra_id_41>": 40058,
38
- "<extra_id_42>": 40057,
39
- "<extra_id_43>": 40056,
40
- "<extra_id_44>": 40055,
41
- "<extra_id_45>": 40054,
42
- "<extra_id_46>": 40053,
43
- "<extra_id_47>": 40052,
44
- "<extra_id_48>": 40051,
45
- "<extra_id_49>": 40050,
46
- "<extra_id_4>": 40095,
47
- "<extra_id_50>": 40049,
48
- "<extra_id_51>": 40048,
49
- "<extra_id_52>": 40047,
50
- "<extra_id_53>": 40046,
51
- "<extra_id_54>": 40045,
52
- "<extra_id_55>": 40044,
53
- "<extra_id_56>": 40043,
54
- "<extra_id_57>": 40042,
55
- "<extra_id_58>": 40041,
56
- "<extra_id_59>": 40040,
57
- "<extra_id_5>": 40094,
58
- "<extra_id_60>": 40039,
59
- "<extra_id_61>": 40038,
60
- "<extra_id_62>": 40037,
61
- "<extra_id_63>": 40036,
62
- "<extra_id_64>": 40035,
63
- "<extra_id_65>": 40034,
64
- "<extra_id_66>": 40033,
65
- "<extra_id_67>": 40032,
66
- "<extra_id_68>": 40031,
67
- "<extra_id_69>": 40030,
68
- "<extra_id_6>": 40093,
69
- "<extra_id_70>": 40029,
70
- "<extra_id_71>": 40028,
71
- "<extra_id_72>": 40027,
72
- "<extra_id_73>": 40026,
73
- "<extra_id_74>": 40025,
74
- "<extra_id_75>": 40024,
75
- "<extra_id_76>": 40023,
76
- "<extra_id_77>": 40022,
77
- "<extra_id_78>": 40021,
78
- "<extra_id_79>": 40020,
79
- "<extra_id_7>": 40092,
80
- "<extra_id_80>": 40019,
81
- "<extra_id_81>": 40018,
82
- "<extra_id_82>": 40017,
83
- "<extra_id_83>": 40016,
84
- "<extra_id_84>": 40015,
85
- "<extra_id_85>": 40014,
86
- "<extra_id_86>": 40013,
87
- "<extra_id_87>": 40012,
88
- "<extra_id_88>": 40011,
89
- "<extra_id_89>": 40010,
90
- "<extra_id_8>": 40091,
91
- "<extra_id_90>": 40009,
92
- "<extra_id_91>": 40008,
93
- "<extra_id_92>": 40007,
94
- "<extra_id_93>": 40006,
95
- "<extra_id_94>": 40005,
96
- "<extra_id_95>": 40004,
97
- "<extra_id_96>": 40003,
98
- "<extra_id_97>": 40002,
99
- "<extra_id_98>": 40001,
100
- "<extra_id_99>": 40000,
101
- "<extra_id_9>": 40090
102
  }
 
1
  {
2
+ "<extra_id_0>": 16099,
3
+ "<extra_id_10>": 16089,
4
+ "<extra_id_11>": 16088,
5
+ "<extra_id_12>": 16087,
6
+ "<extra_id_13>": 16086,
7
+ "<extra_id_14>": 16085,
8
+ "<extra_id_15>": 16084,
9
+ "<extra_id_16>": 16083,
10
+ "<extra_id_17>": 16082,
11
+ "<extra_id_18>": 16081,
12
+ "<extra_id_19>": 16080,
13
+ "<extra_id_1>": 16098,
14
+ "<extra_id_20>": 16079,
15
+ "<extra_id_21>": 16078,
16
+ "<extra_id_22>": 16077,
17
+ "<extra_id_23>": 16076,
18
+ "<extra_id_24>": 16075,
19
+ "<extra_id_25>": 16074,
20
+ "<extra_id_26>": 16073,
21
+ "<extra_id_27>": 16072,
22
+ "<extra_id_28>": 16071,
23
+ "<extra_id_29>": 16070,
24
+ "<extra_id_2>": 16097,
25
+ "<extra_id_30>": 16069,
26
+ "<extra_id_31>": 16068,
27
+ "<extra_id_32>": 16067,
28
+ "<extra_id_33>": 16066,
29
+ "<extra_id_34>": 16065,
30
+ "<extra_id_35>": 16064,
31
+ "<extra_id_36>": 16063,
32
+ "<extra_id_37>": 16062,
33
+ "<extra_id_38>": 16061,
34
+ "<extra_id_39>": 16060,
35
+ "<extra_id_3>": 16096,
36
+ "<extra_id_40>": 16059,
37
+ "<extra_id_41>": 16058,
38
+ "<extra_id_42>": 16057,
39
+ "<extra_id_43>": 16056,
40
+ "<extra_id_44>": 16055,
41
+ "<extra_id_45>": 16054,
42
+ "<extra_id_46>": 16053,
43
+ "<extra_id_47>": 16052,
44
+ "<extra_id_48>": 16051,
45
+ "<extra_id_49>": 16050,
46
+ "<extra_id_4>": 16095,
47
+ "<extra_id_50>": 16049,
48
+ "<extra_id_51>": 16048,
49
+ "<extra_id_52>": 16047,
50
+ "<extra_id_53>": 16046,
51
+ "<extra_id_54>": 16045,
52
+ "<extra_id_55>": 16044,
53
+ "<extra_id_56>": 16043,
54
+ "<extra_id_57>": 16042,
55
+ "<extra_id_58>": 16041,
56
+ "<extra_id_59>": 16040,
57
+ "<extra_id_5>": 16094,
58
+ "<extra_id_60>": 16039,
59
+ "<extra_id_61>": 16038,
60
+ "<extra_id_62>": 16037,
61
+ "<extra_id_63>": 16036,
62
+ "<extra_id_64>": 16035,
63
+ "<extra_id_65>": 16034,
64
+ "<extra_id_66>": 16033,
65
+ "<extra_id_67>": 16032,
66
+ "<extra_id_68>": 16031,
67
+ "<extra_id_69>": 16030,
68
+ "<extra_id_6>": 16093,
69
+ "<extra_id_70>": 16029,
70
+ "<extra_id_71>": 16028,
71
+ "<extra_id_72>": 16027,
72
+ "<extra_id_73>": 16026,
73
+ "<extra_id_74>": 16025,
74
+ "<extra_id_75>": 16024,
75
+ "<extra_id_76>": 16023,
76
+ "<extra_id_77>": 16022,
77
+ "<extra_id_78>": 16021,
78
+ "<extra_id_79>": 16020,
79
+ "<extra_id_7>": 16092,
80
+ "<extra_id_80>": 16019,
81
+ "<extra_id_81>": 16018,
82
+ "<extra_id_82>": 16017,
83
+ "<extra_id_83>": 16016,
84
+ "<extra_id_84>": 16015,
85
+ "<extra_id_85>": 16014,
86
+ "<extra_id_86>": 16013,
87
+ "<extra_id_87>": 16012,
88
+ "<extra_id_88>": 16011,
89
+ "<extra_id_89>": 16010,
90
+ "<extra_id_8>": 16091,
91
+ "<extra_id_90>": 16009,
92
+ "<extra_id_91>": 16008,
93
+ "<extra_id_92>": 16007,
94
+ "<extra_id_93>": 16006,
95
+ "<extra_id_94>": 16005,
96
+ "<extra_id_95>": 16004,
97
+ "<extra_id_96>": 16003,
98
+ "<extra_id_97>": 16002,
99
+ "<extra_id_98>": 16001,
100
+ "<extra_id_99>": 16000,
101
+ "<extra_id_9>": 16090
102
  }
src/tokeniser/aramt5_sp.model CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:347fef5a38453d31d013802c803c9d91f9333fefacffc922784af95f94202f4b
3
- size 988532
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:02090247a3d32c0cb86d464007c80682b2dcf3e0619b42e826dbce248d884dad
3
+ size 511338
src/tokeniser/aramt5_sp.vocab CHANGED
The diff for this file is too large to render. See raw diff
 
src/tokeniser/spiece.model CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:347fef5a38453d31d013802c803c9d91f9333fefacffc922784af95f94202f4b
3
- size 988532
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:02090247a3d32c0cb86d464007c80682b2dcf3e0619b42e826dbce248d884dad
3
+ size 511338
src/tokeniser/tokenizer_config.json CHANGED
@@ -25,7 +25,7 @@
25
  "single_word": false,
26
  "special": true
27
  },
28
- "40000": {
29
  "content": "<extra_id_99>",
30
  "lstrip": true,
31
  "normalized": false,
@@ -33,7 +33,7 @@
33
  "single_word": false,
34
  "special": true
35
  },
36
- "40001": {
37
  "content": "<extra_id_98>",
38
  "lstrip": true,
39
  "normalized": false,
@@ -41,7 +41,7 @@
41
  "single_word": false,
42
  "special": true
43
  },
44
- "40002": {
45
  "content": "<extra_id_97>",
46
  "lstrip": true,
47
  "normalized": false,
@@ -49,7 +49,7 @@
49
  "single_word": false,
50
  "special": true
51
  },
52
- "40003": {
53
  "content": "<extra_id_96>",
54
  "lstrip": true,
55
  "normalized": false,
@@ -57,7 +57,7 @@
57
  "single_word": false,
58
  "special": true
59
  },
60
- "40004": {
61
  "content": "<extra_id_95>",
62
  "lstrip": true,
63
  "normalized": false,
@@ -65,7 +65,7 @@
65
  "single_word": false,
66
  "special": true
67
  },
68
- "40005": {
69
  "content": "<extra_id_94>",
70
  "lstrip": true,
71
  "normalized": false,
@@ -73,7 +73,7 @@
73
  "single_word": false,
74
  "special": true
75
  },
76
- "40006": {
77
  "content": "<extra_id_93>",
78
  "lstrip": true,
79
  "normalized": false,
@@ -81,7 +81,7 @@
81
  "single_word": false,
82
  "special": true
83
  },
84
- "40007": {
85
  "content": "<extra_id_92>",
86
  "lstrip": true,
87
  "normalized": false,
@@ -89,7 +89,7 @@
89
  "single_word": false,
90
  "special": true
91
  },
92
- "40008": {
93
  "content": "<extra_id_91>",
94
  "lstrip": true,
95
  "normalized": false,
@@ -97,7 +97,7 @@
97
  "single_word": false,
98
  "special": true
99
  },
100
- "40009": {
101
  "content": "<extra_id_90>",
102
  "lstrip": true,
103
  "normalized": false,
@@ -105,7 +105,7 @@
105
  "single_word": false,
106
  "special": true
107
  },
108
- "40010": {
109
  "content": "<extra_id_89>",
110
  "lstrip": true,
111
  "normalized": false,
@@ -113,7 +113,7 @@
113
  "single_word": false,
114
  "special": true
115
  },
116
- "40011": {
117
  "content": "<extra_id_88>",
118
  "lstrip": true,
119
  "normalized": false,
@@ -121,7 +121,7 @@
121
  "single_word": false,
122
  "special": true
123
  },
124
- "40012": {
125
  "content": "<extra_id_87>",
126
  "lstrip": true,
127
  "normalized": false,
@@ -129,7 +129,7 @@
129
  "single_word": false,
130
  "special": true
131
  },
132
- "40013": {
133
  "content": "<extra_id_86>",
134
  "lstrip": true,
135
  "normalized": false,
@@ -137,7 +137,7 @@
137
  "single_word": false,
138
  "special": true
139
  },
140
- "40014": {
141
  "content": "<extra_id_85>",
142
  "lstrip": true,
143
  "normalized": false,
@@ -145,7 +145,7 @@
145
  "single_word": false,
146
  "special": true
147
  },
148
- "40015": {
149
  "content": "<extra_id_84>",
150
  "lstrip": true,
151
  "normalized": false,
@@ -153,7 +153,7 @@
153
  "single_word": false,
154
  "special": true
155
  },
156
- "40016": {
157
  "content": "<extra_id_83>",
158
  "lstrip": true,
159
  "normalized": false,
@@ -161,7 +161,7 @@
161
  "single_word": false,
162
  "special": true
163
  },
164
- "40017": {
165
  "content": "<extra_id_82>",
166
  "lstrip": true,
167
  "normalized": false,
@@ -169,7 +169,7 @@
169
  "single_word": false,
170
  "special": true
171
  },
172
- "40018": {
173
  "content": "<extra_id_81>",
174
  "lstrip": true,
175
  "normalized": false,
@@ -177,7 +177,7 @@
177
  "single_word": false,
178
  "special": true
179
  },
180
- "40019": {
181
  "content": "<extra_id_80>",
182
  "lstrip": true,
183
  "normalized": false,
@@ -185,7 +185,7 @@
185
  "single_word": false,
186
  "special": true
187
  },
188
- "40020": {
189
  "content": "<extra_id_79>",
190
  "lstrip": true,
191
  "normalized": false,
@@ -193,7 +193,7 @@
193
  "single_word": false,
194
  "special": true
195
  },
196
- "40021": {
197
  "content": "<extra_id_78>",
198
  "lstrip": true,
199
  "normalized": false,
@@ -201,7 +201,7 @@
201
  "single_word": false,
202
  "special": true
203
  },
204
- "40022": {
205
  "content": "<extra_id_77>",
206
  "lstrip": true,
207
  "normalized": false,
@@ -209,7 +209,7 @@
209
  "single_word": false,
210
  "special": true
211
  },
212
- "40023": {
213
  "content": "<extra_id_76>",
214
  "lstrip": true,
215
  "normalized": false,
@@ -217,7 +217,7 @@
217
  "single_word": false,
218
  "special": true
219
  },
220
- "40024": {
221
  "content": "<extra_id_75>",
222
  "lstrip": true,
223
  "normalized": false,
@@ -225,7 +225,7 @@
225
  "single_word": false,
226
  "special": true
227
  },
228
- "40025": {
229
  "content": "<extra_id_74>",
230
  "lstrip": true,
231
  "normalized": false,
@@ -233,7 +233,7 @@
233
  "single_word": false,
234
  "special": true
235
  },
236
- "40026": {
237
  "content": "<extra_id_73>",
238
  "lstrip": true,
239
  "normalized": false,
@@ -241,7 +241,7 @@
241
  "single_word": false,
242
  "special": true
243
  },
244
- "40027": {
245
  "content": "<extra_id_72>",
246
  "lstrip": true,
247
  "normalized": false,
@@ -249,7 +249,7 @@
249
  "single_word": false,
250
  "special": true
251
  },
252
- "40028": {
253
  "content": "<extra_id_71>",
254
  "lstrip": true,
255
  "normalized": false,
@@ -257,7 +257,7 @@
257
  "single_word": false,
258
  "special": true
259
  },
260
- "40029": {
261
  "content": "<extra_id_70>",
262
  "lstrip": true,
263
  "normalized": false,
@@ -265,7 +265,7 @@
265
  "single_word": false,
266
  "special": true
267
  },
268
- "40030": {
269
  "content": "<extra_id_69>",
270
  "lstrip": true,
271
  "normalized": false,
@@ -273,7 +273,7 @@
273
  "single_word": false,
274
  "special": true
275
  },
276
- "40031": {
277
  "content": "<extra_id_68>",
278
  "lstrip": true,
279
  "normalized": false,
@@ -281,7 +281,7 @@
281
  "single_word": false,
282
  "special": true
283
  },
284
- "40032": {
285
  "content": "<extra_id_67>",
286
  "lstrip": true,
287
  "normalized": false,
@@ -289,7 +289,7 @@
289
  "single_word": false,
290
  "special": true
291
  },
292
- "40033": {
293
  "content": "<extra_id_66>",
294
  "lstrip": true,
295
  "normalized": false,
@@ -297,7 +297,7 @@
297
  "single_word": false,
298
  "special": true
299
  },
300
- "40034": {
301
  "content": "<extra_id_65>",
302
  "lstrip": true,
303
  "normalized": false,
@@ -305,7 +305,7 @@
305
  "single_word": false,
306
  "special": true
307
  },
308
- "40035": {
309
  "content": "<extra_id_64>",
310
  "lstrip": true,
311
  "normalized": false,
@@ -313,7 +313,7 @@
313
  "single_word": false,
314
  "special": true
315
  },
316
- "40036": {
317
  "content": "<extra_id_63>",
318
  "lstrip": true,
319
  "normalized": false,
@@ -321,7 +321,7 @@
321
  "single_word": false,
322
  "special": true
323
  },
324
- "40037": {
325
  "content": "<extra_id_62>",
326
  "lstrip": true,
327
  "normalized": false,
@@ -329,7 +329,7 @@
329
  "single_word": false,
330
  "special": true
331
  },
332
- "40038": {
333
  "content": "<extra_id_61>",
334
  "lstrip": true,
335
  "normalized": false,
@@ -337,7 +337,7 @@
337
  "single_word": false,
338
  "special": true
339
  },
340
- "40039": {
341
  "content": "<extra_id_60>",
342
  "lstrip": true,
343
  "normalized": false,
@@ -345,7 +345,7 @@
345
  "single_word": false,
346
  "special": true
347
  },
348
- "40040": {
349
  "content": "<extra_id_59>",
350
  "lstrip": true,
351
  "normalized": false,
@@ -353,7 +353,7 @@
353
  "single_word": false,
354
  "special": true
355
  },
356
- "40041": {
357
  "content": "<extra_id_58>",
358
  "lstrip": true,
359
  "normalized": false,
@@ -361,7 +361,7 @@
361
  "single_word": false,
362
  "special": true
363
  },
364
- "40042": {
365
  "content": "<extra_id_57>",
366
  "lstrip": true,
367
  "normalized": false,
@@ -369,7 +369,7 @@
369
  "single_word": false,
370
  "special": true
371
  },
372
- "40043": {
373
  "content": "<extra_id_56>",
374
  "lstrip": true,
375
  "normalized": false,
@@ -377,7 +377,7 @@
377
  "single_word": false,
378
  "special": true
379
  },
380
- "40044": {
381
  "content": "<extra_id_55>",
382
  "lstrip": true,
383
  "normalized": false,
@@ -385,7 +385,7 @@
385
  "single_word": false,
386
  "special": true
387
  },
388
- "40045": {
389
  "content": "<extra_id_54>",
390
  "lstrip": true,
391
  "normalized": false,
@@ -393,7 +393,7 @@
393
  "single_word": false,
394
  "special": true
395
  },
396
- "40046": {
397
  "content": "<extra_id_53>",
398
  "lstrip": true,
399
  "normalized": false,
@@ -401,7 +401,7 @@
401
  "single_word": false,
402
  "special": true
403
  },
404
- "40047": {
405
  "content": "<extra_id_52>",
406
  "lstrip": true,
407
  "normalized": false,
@@ -409,7 +409,7 @@
409
  "single_word": false,
410
  "special": true
411
  },
412
- "40048": {
413
  "content": "<extra_id_51>",
414
  "lstrip": true,
415
  "normalized": false,
@@ -417,7 +417,7 @@
417
  "single_word": false,
418
  "special": true
419
  },
420
- "40049": {
421
  "content": "<extra_id_50>",
422
  "lstrip": true,
423
  "normalized": false,
@@ -425,7 +425,7 @@
425
  "single_word": false,
426
  "special": true
427
  },
428
- "40050": {
429
  "content": "<extra_id_49>",
430
  "lstrip": true,
431
  "normalized": false,
@@ -433,7 +433,7 @@
433
  "single_word": false,
434
  "special": true
435
  },
436
- "40051": {
437
  "content": "<extra_id_48>",
438
  "lstrip": true,
439
  "normalized": false,
@@ -441,7 +441,7 @@
441
  "single_word": false,
442
  "special": true
443
  },
444
- "40052": {
445
  "content": "<extra_id_47>",
446
  "lstrip": true,
447
  "normalized": false,
@@ -449,7 +449,7 @@
449
  "single_word": false,
450
  "special": true
451
  },
452
- "40053": {
453
  "content": "<extra_id_46>",
454
  "lstrip": true,
455
  "normalized": false,
@@ -457,7 +457,7 @@
457
  "single_word": false,
458
  "special": true
459
  },
460
- "40054": {
461
  "content": "<extra_id_45>",
462
  "lstrip": true,
463
  "normalized": false,
@@ -465,7 +465,7 @@
465
  "single_word": false,
466
  "special": true
467
  },
468
- "40055": {
469
  "content": "<extra_id_44>",
470
  "lstrip": true,
471
  "normalized": false,
@@ -473,7 +473,7 @@
473
  "single_word": false,
474
  "special": true
475
  },
476
- "40056": {
477
  "content": "<extra_id_43>",
478
  "lstrip": true,
479
  "normalized": false,
@@ -481,7 +481,7 @@
481
  "single_word": false,
482
  "special": true
483
  },
484
- "40057": {
485
  "content": "<extra_id_42>",
486
  "lstrip": true,
487
  "normalized": false,
@@ -489,7 +489,7 @@
489
  "single_word": false,
490
  "special": true
491
  },
492
- "40058": {
493
  "content": "<extra_id_41>",
494
  "lstrip": true,
495
  "normalized": false,
@@ -497,7 +497,7 @@
497
  "single_word": false,
498
  "special": true
499
  },
500
- "40059": {
501
  "content": "<extra_id_40>",
502
  "lstrip": true,
503
  "normalized": false,
@@ -505,7 +505,7 @@
505
  "single_word": false,
506
  "special": true
507
  },
508
- "40060": {
509
  "content": "<extra_id_39>",
510
  "lstrip": true,
511
  "normalized": false,
@@ -513,7 +513,7 @@
513
  "single_word": false,
514
  "special": true
515
  },
516
- "40061": {
517
  "content": "<extra_id_38>",
518
  "lstrip": true,
519
  "normalized": false,
@@ -521,7 +521,7 @@
521
  "single_word": false,
522
  "special": true
523
  },
524
- "40062": {
525
  "content": "<extra_id_37>",
526
  "lstrip": true,
527
  "normalized": false,
@@ -529,7 +529,7 @@
529
  "single_word": false,
530
  "special": true
531
  },
532
- "40063": {
533
  "content": "<extra_id_36>",
534
  "lstrip": true,
535
  "normalized": false,
@@ -537,7 +537,7 @@
537
  "single_word": false,
538
  "special": true
539
  },
540
- "40064": {
541
  "content": "<extra_id_35>",
542
  "lstrip": true,
543
  "normalized": false,
@@ -545,7 +545,7 @@
545
  "single_word": false,
546
  "special": true
547
  },
548
- "40065": {
549
  "content": "<extra_id_34>",
550
  "lstrip": true,
551
  "normalized": false,
@@ -553,7 +553,7 @@
553
  "single_word": false,
554
  "special": true
555
  },
556
- "40066": {
557
  "content": "<extra_id_33>",
558
  "lstrip": true,
559
  "normalized": false,
@@ -561,7 +561,7 @@
561
  "single_word": false,
562
  "special": true
563
  },
564
- "40067": {
565
  "content": "<extra_id_32>",
566
  "lstrip": true,
567
  "normalized": false,
@@ -569,7 +569,7 @@
569
  "single_word": false,
570
  "special": true
571
  },
572
- "40068": {
573
  "content": "<extra_id_31>",
574
  "lstrip": true,
575
  "normalized": false,
@@ -577,7 +577,7 @@
577
  "single_word": false,
578
  "special": true
579
  },
580
- "40069": {
581
  "content": "<extra_id_30>",
582
  "lstrip": true,
583
  "normalized": false,
@@ -585,7 +585,7 @@
585
  "single_word": false,
586
  "special": true
587
  },
588
- "40070": {
589
  "content": "<extra_id_29>",
590
  "lstrip": true,
591
  "normalized": false,
@@ -593,7 +593,7 @@
593
  "single_word": false,
594
  "special": true
595
  },
596
- "40071": {
597
  "content": "<extra_id_28>",
598
  "lstrip": true,
599
  "normalized": false,
@@ -601,7 +601,7 @@
601
  "single_word": false,
602
  "special": true
603
  },
604
- "40072": {
605
  "content": "<extra_id_27>",
606
  "lstrip": true,
607
  "normalized": false,
@@ -609,7 +609,7 @@
609
  "single_word": false,
610
  "special": true
611
  },
612
- "40073": {
613
  "content": "<extra_id_26>",
614
  "lstrip": true,
615
  "normalized": false,
@@ -617,7 +617,7 @@
617
  "single_word": false,
618
  "special": true
619
  },
620
- "40074": {
621
  "content": "<extra_id_25>",
622
  "lstrip": true,
623
  "normalized": false,
@@ -625,7 +625,7 @@
625
  "single_word": false,
626
  "special": true
627
  },
628
- "40075": {
629
  "content": "<extra_id_24>",
630
  "lstrip": true,
631
  "normalized": false,
@@ -633,7 +633,7 @@
633
  "single_word": false,
634
  "special": true
635
  },
636
- "40076": {
637
  "content": "<extra_id_23>",
638
  "lstrip": true,
639
  "normalized": false,
@@ -641,7 +641,7 @@
641
  "single_word": false,
642
  "special": true
643
  },
644
- "40077": {
645
  "content": "<extra_id_22>",
646
  "lstrip": true,
647
  "normalized": false,
@@ -649,7 +649,7 @@
649
  "single_word": false,
650
  "special": true
651
  },
652
- "40078": {
653
  "content": "<extra_id_21>",
654
  "lstrip": true,
655
  "normalized": false,
@@ -657,7 +657,7 @@
657
  "single_word": false,
658
  "special": true
659
  },
660
- "40079": {
661
  "content": "<extra_id_20>",
662
  "lstrip": true,
663
  "normalized": false,
@@ -665,7 +665,7 @@
665
  "single_word": false,
666
  "special": true
667
  },
668
- "40080": {
669
  "content": "<extra_id_19>",
670
  "lstrip": true,
671
  "normalized": false,
@@ -673,7 +673,7 @@
673
  "single_word": false,
674
  "special": true
675
  },
676
- "40081": {
677
  "content": "<extra_id_18>",
678
  "lstrip": true,
679
  "normalized": false,
@@ -681,7 +681,7 @@
681
  "single_word": false,
682
  "special": true
683
  },
684
- "40082": {
685
  "content": "<extra_id_17>",
686
  "lstrip": true,
687
  "normalized": false,
@@ -689,7 +689,7 @@
689
  "single_word": false,
690
  "special": true
691
  },
692
- "40083": {
693
  "content": "<extra_id_16>",
694
  "lstrip": true,
695
  "normalized": false,
@@ -697,7 +697,7 @@
697
  "single_word": false,
698
  "special": true
699
  },
700
- "40084": {
701
  "content": "<extra_id_15>",
702
  "lstrip": true,
703
  "normalized": false,
@@ -705,7 +705,7 @@
705
  "single_word": false,
706
  "special": true
707
  },
708
- "40085": {
709
  "content": "<extra_id_14>",
710
  "lstrip": true,
711
  "normalized": false,
@@ -713,7 +713,7 @@
713
  "single_word": false,
714
  "special": true
715
  },
716
- "40086": {
717
  "content": "<extra_id_13>",
718
  "lstrip": true,
719
  "normalized": false,
@@ -721,7 +721,7 @@
721
  "single_word": false,
722
  "special": true
723
  },
724
- "40087": {
725
  "content": "<extra_id_12>",
726
  "lstrip": true,
727
  "normalized": false,
@@ -729,7 +729,7 @@
729
  "single_word": false,
730
  "special": true
731
  },
732
- "40088": {
733
  "content": "<extra_id_11>",
734
  "lstrip": true,
735
  "normalized": false,
@@ -737,7 +737,7 @@
737
  "single_word": false,
738
  "special": true
739
  },
740
- "40089": {
741
  "content": "<extra_id_10>",
742
  "lstrip": true,
743
  "normalized": false,
@@ -745,7 +745,7 @@
745
  "single_word": false,
746
  "special": true
747
  },
748
- "40090": {
749
  "content": "<extra_id_9>",
750
  "lstrip": true,
751
  "normalized": false,
@@ -753,7 +753,7 @@
753
  "single_word": false,
754
  "special": true
755
  },
756
- "40091": {
757
  "content": "<extra_id_8>",
758
  "lstrip": true,
759
  "normalized": false,
@@ -761,7 +761,7 @@
761
  "single_word": false,
762
  "special": true
763
  },
764
- "40092": {
765
  "content": "<extra_id_7>",
766
  "lstrip": true,
767
  "normalized": false,
@@ -769,7 +769,7 @@
769
  "single_word": false,
770
  "special": true
771
  },
772
- "40093": {
773
  "content": "<extra_id_6>",
774
  "lstrip": true,
775
  "normalized": false,
@@ -777,7 +777,7 @@
777
  "single_word": false,
778
  "special": true
779
  },
780
- "40094": {
781
  "content": "<extra_id_5>",
782
  "lstrip": true,
783
  "normalized": false,
@@ -785,7 +785,7 @@
785
  "single_word": false,
786
  "special": true
787
  },
788
- "40095": {
789
  "content": "<extra_id_4>",
790
  "lstrip": true,
791
  "normalized": false,
@@ -793,7 +793,7 @@
793
  "single_word": false,
794
  "special": true
795
  },
796
- "40096": {
797
  "content": "<extra_id_3>",
798
  "lstrip": true,
799
  "normalized": false,
@@ -801,7 +801,7 @@
801
  "single_word": false,
802
  "special": true
803
  },
804
- "40097": {
805
  "content": "<extra_id_2>",
806
  "lstrip": true,
807
  "normalized": false,
@@ -809,7 +809,7 @@
809
  "single_word": false,
810
  "special": true
811
  },
812
- "40098": {
813
  "content": "<extra_id_1>",
814
  "lstrip": true,
815
  "normalized": false,
@@ -817,7 +817,7 @@
817
  "single_word": false,
818
  "special": true
819
  },
820
- "40099": {
821
  "content": "<extra_id_0>",
822
  "lstrip": true,
823
  "normalized": false,
 
25
  "single_word": false,
26
  "special": true
27
  },
28
+ "16000": {
29
  "content": "<extra_id_99>",
30
  "lstrip": true,
31
  "normalized": false,
 
33
  "single_word": false,
34
  "special": true
35
  },
36
+ "16001": {
37
  "content": "<extra_id_98>",
38
  "lstrip": true,
39
  "normalized": false,
 
41
  "single_word": false,
42
  "special": true
43
  },
44
+ "16002": {
45
  "content": "<extra_id_97>",
46
  "lstrip": true,
47
  "normalized": false,
 
49
  "single_word": false,
50
  "special": true
51
  },
52
+ "16003": {
53
  "content": "<extra_id_96>",
54
  "lstrip": true,
55
  "normalized": false,
 
57
  "single_word": false,
58
  "special": true
59
  },
60
+ "16004": {
61
  "content": "<extra_id_95>",
62
  "lstrip": true,
63
  "normalized": false,
 
65
  "single_word": false,
66
  "special": true
67
  },
68
+ "16005": {
69
  "content": "<extra_id_94>",
70
  "lstrip": true,
71
  "normalized": false,
 
73
  "single_word": false,
74
  "special": true
75
  },
76
+ "16006": {
77
  "content": "<extra_id_93>",
78
  "lstrip": true,
79
  "normalized": false,
 
81
  "single_word": false,
82
  "special": true
83
  },
84
+ "16007": {
85
  "content": "<extra_id_92>",
86
  "lstrip": true,
87
  "normalized": false,
 
89
  "single_word": false,
90
  "special": true
91
  },
92
+ "16008": {
93
  "content": "<extra_id_91>",
94
  "lstrip": true,
95
  "normalized": false,
 
97
  "single_word": false,
98
  "special": true
99
  },
100
+ "16009": {
101
  "content": "<extra_id_90>",
102
  "lstrip": true,
103
  "normalized": false,
 
105
  "single_word": false,
106
  "special": true
107
  },
108
+ "16010": {
109
  "content": "<extra_id_89>",
110
  "lstrip": true,
111
  "normalized": false,
 
113
  "single_word": false,
114
  "special": true
115
  },
116
+ "16011": {
117
  "content": "<extra_id_88>",
118
  "lstrip": true,
119
  "normalized": false,
 
121
  "single_word": false,
122
  "special": true
123
  },
124
+ "16012": {
125
  "content": "<extra_id_87>",
126
  "lstrip": true,
127
  "normalized": false,
 
129
  "single_word": false,
130
  "special": true
131
  },
132
+ "16013": {
133
  "content": "<extra_id_86>",
134
  "lstrip": true,
135
  "normalized": false,
 
137
  "single_word": false,
138
  "special": true
139
  },
140
+ "16014": {
141
  "content": "<extra_id_85>",
142
  "lstrip": true,
143
  "normalized": false,
 
145
  "single_word": false,
146
  "special": true
147
  },
148
+ "16015": {
149
  "content": "<extra_id_84>",
150
  "lstrip": true,
151
  "normalized": false,
 
153
  "single_word": false,
154
  "special": true
155
  },
156
+ "16016": {
157
  "content": "<extra_id_83>",
158
  "lstrip": true,
159
  "normalized": false,
 
161
  "single_word": false,
162
  "special": true
163
  },
164
+ "16017": {
165
  "content": "<extra_id_82>",
166
  "lstrip": true,
167
  "normalized": false,
 
169
  "single_word": false,
170
  "special": true
171
  },
172
+ "16018": {
173
  "content": "<extra_id_81>",
174
  "lstrip": true,
175
  "normalized": false,
 
177
  "single_word": false,
178
  "special": true
179
  },
180
+ "16019": {
181
  "content": "<extra_id_80>",
182
  "lstrip": true,
183
  "normalized": false,
 
185
  "single_word": false,
186
  "special": true
187
  },
188
+ "16020": {
189
  "content": "<extra_id_79>",
190
  "lstrip": true,
191
  "normalized": false,
 
193
  "single_word": false,
194
  "special": true
195
  },
196
+ "16021": {
197
  "content": "<extra_id_78>",
198
  "lstrip": true,
199
  "normalized": false,
 
201
  "single_word": false,
202
  "special": true
203
  },
204
+ "16022": {
205
  "content": "<extra_id_77>",
206
  "lstrip": true,
207
  "normalized": false,
 
209
  "single_word": false,
210
  "special": true
211
  },
212
+ "16023": {
213
  "content": "<extra_id_76>",
214
  "lstrip": true,
215
  "normalized": false,
 
217
  "single_word": false,
218
  "special": true
219
  },
220
+ "16024": {
221
  "content": "<extra_id_75>",
222
  "lstrip": true,
223
  "normalized": false,
 
225
  "single_word": false,
226
  "special": true
227
  },
228
+ "16025": {
229
  "content": "<extra_id_74>",
230
  "lstrip": true,
231
  "normalized": false,
 
233
  "single_word": false,
234
  "special": true
235
  },
236
+ "16026": {
237
  "content": "<extra_id_73>",
238
  "lstrip": true,
239
  "normalized": false,
 
241
  "single_word": false,
242
  "special": true
243
  },
244
+ "16027": {
245
  "content": "<extra_id_72>",
246
  "lstrip": true,
247
  "normalized": false,
 
249
  "single_word": false,
250
  "special": true
251
  },
252
+ "16028": {
253
  "content": "<extra_id_71>",
254
  "lstrip": true,
255
  "normalized": false,
 
257
  "single_word": false,
258
  "special": true
259
  },
260
+ "16029": {
261
  "content": "<extra_id_70>",
262
  "lstrip": true,
263
  "normalized": false,
 
265
  "single_word": false,
266
  "special": true
267
  },
268
+ "16030": {
269
  "content": "<extra_id_69>",
270
  "lstrip": true,
271
  "normalized": false,
 
273
  "single_word": false,
274
  "special": true
275
  },
276
+ "16031": {
277
  "content": "<extra_id_68>",
278
  "lstrip": true,
279
  "normalized": false,
 
281
  "single_word": false,
282
  "special": true
283
  },
284
+ "16032": {
285
  "content": "<extra_id_67>",
286
  "lstrip": true,
287
  "normalized": false,
 
289
  "single_word": false,
290
  "special": true
291
  },
292
+ "16033": {
293
  "content": "<extra_id_66>",
294
  "lstrip": true,
295
  "normalized": false,
 
297
  "single_word": false,
298
  "special": true
299
  },
300
+ "16034": {
301
  "content": "<extra_id_65>",
302
  "lstrip": true,
303
  "normalized": false,
 
305
  "single_word": false,
306
  "special": true
307
  },
308
+ "16035": {
309
  "content": "<extra_id_64>",
310
  "lstrip": true,
311
  "normalized": false,
 
313
  "single_word": false,
314
  "special": true
315
  },
316
+ "16036": {
317
  "content": "<extra_id_63>",
318
  "lstrip": true,
319
  "normalized": false,
 
321
  "single_word": false,
322
  "special": true
323
  },
324
+ "16037": {
325
  "content": "<extra_id_62>",
326
  "lstrip": true,
327
  "normalized": false,
 
329
  "single_word": false,
330
  "special": true
331
  },
332
+ "16038": {
333
  "content": "<extra_id_61>",
334
  "lstrip": true,
335
  "normalized": false,
 
337
  "single_word": false,
338
  "special": true
339
  },
340
+ "16039": {
341
  "content": "<extra_id_60>",
342
  "lstrip": true,
343
  "normalized": false,
 
345
  "single_word": false,
346
  "special": true
347
  },
348
+ "16040": {
349
  "content": "<extra_id_59>",
350
  "lstrip": true,
351
  "normalized": false,
 
353
  "single_word": false,
354
  "special": true
355
  },
356
+ "16041": {
357
  "content": "<extra_id_58>",
358
  "lstrip": true,
359
  "normalized": false,
 
361
  "single_word": false,
362
  "special": true
363
  },
364
+ "16042": {
365
  "content": "<extra_id_57>",
366
  "lstrip": true,
367
  "normalized": false,
 
369
  "single_word": false,
370
  "special": true
371
  },
372
+ "16043": {
373
  "content": "<extra_id_56>",
374
  "lstrip": true,
375
  "normalized": false,
 
377
  "single_word": false,
378
  "special": true
379
  },
380
+ "16044": {
381
  "content": "<extra_id_55>",
382
  "lstrip": true,
383
  "normalized": false,
 
385
  "single_word": false,
386
  "special": true
387
  },
388
+ "16045": {
389
  "content": "<extra_id_54>",
390
  "lstrip": true,
391
  "normalized": false,
 
393
  "single_word": false,
394
  "special": true
395
  },
396
+ "16046": {
397
  "content": "<extra_id_53>",
398
  "lstrip": true,
399
  "normalized": false,
 
401
  "single_word": false,
402
  "special": true
403
  },
404
+ "16047": {
405
  "content": "<extra_id_52>",
406
  "lstrip": true,
407
  "normalized": false,
 
409
  "single_word": false,
410
  "special": true
411
  },
412
+ "16048": {
413
  "content": "<extra_id_51>",
414
  "lstrip": true,
415
  "normalized": false,
 
417
  "single_word": false,
418
  "special": true
419
  },
420
+ "16049": {
421
  "content": "<extra_id_50>",
422
  "lstrip": true,
423
  "normalized": false,
 
425
  "single_word": false,
426
  "special": true
427
  },
428
+ "16050": {
429
  "content": "<extra_id_49>",
430
  "lstrip": true,
431
  "normalized": false,
 
433
  "single_word": false,
434
  "special": true
435
  },
436
+ "16051": {
437
  "content": "<extra_id_48>",
438
  "lstrip": true,
439
  "normalized": false,
 
441
  "single_word": false,
442
  "special": true
443
  },
444
+ "16052": {
445
  "content": "<extra_id_47>",
446
  "lstrip": true,
447
  "normalized": false,
 
449
  "single_word": false,
450
  "special": true
451
  },
452
+ "16053": {
453
  "content": "<extra_id_46>",
454
  "lstrip": true,
455
  "normalized": false,
 
457
  "single_word": false,
458
  "special": true
459
  },
460
+ "16054": {
461
  "content": "<extra_id_45>",
462
  "lstrip": true,
463
  "normalized": false,
 
465
  "single_word": false,
466
  "special": true
467
  },
468
+ "16055": {
469
  "content": "<extra_id_44>",
470
  "lstrip": true,
471
  "normalized": false,
 
473
  "single_word": false,
474
  "special": true
475
  },
476
+ "16056": {
477
  "content": "<extra_id_43>",
478
  "lstrip": true,
479
  "normalized": false,
 
481
  "single_word": false,
482
  "special": true
483
  },
484
+ "16057": {
485
  "content": "<extra_id_42>",
486
  "lstrip": true,
487
  "normalized": false,
 
489
  "single_word": false,
490
  "special": true
491
  },
492
+ "16058": {
493
  "content": "<extra_id_41>",
494
  "lstrip": true,
495
  "normalized": false,
 
497
  "single_word": false,
498
  "special": true
499
  },
500
+ "16059": {
501
  "content": "<extra_id_40>",
502
  "lstrip": true,
503
  "normalized": false,
 
505
  "single_word": false,
506
  "special": true
507
  },
508
+ "16060": {
509
  "content": "<extra_id_39>",
510
  "lstrip": true,
511
  "normalized": false,
 
513
  "single_word": false,
514
  "special": true
515
  },
516
+ "16061": {
517
  "content": "<extra_id_38>",
518
  "lstrip": true,
519
  "normalized": false,
 
521
  "single_word": false,
522
  "special": true
523
  },
524
+ "16062": {
525
  "content": "<extra_id_37>",
526
  "lstrip": true,
527
  "normalized": false,
 
529
  "single_word": false,
530
  "special": true
531
  },
532
+ "16063": {
533
  "content": "<extra_id_36>",
534
  "lstrip": true,
535
  "normalized": false,
 
537
  "single_word": false,
538
  "special": true
539
  },
540
+ "16064": {
541
  "content": "<extra_id_35>",
542
  "lstrip": true,
543
  "normalized": false,
 
545
  "single_word": false,
546
  "special": true
547
  },
548
+ "16065": {
549
  "content": "<extra_id_34>",
550
  "lstrip": true,
551
  "normalized": false,
 
553
  "single_word": false,
554
  "special": true
555
  },
556
+ "16066": {
557
  "content": "<extra_id_33>",
558
  "lstrip": true,
559
  "normalized": false,
 
561
  "single_word": false,
562
  "special": true
563
  },
564
+ "16067": {
565
  "content": "<extra_id_32>",
566
  "lstrip": true,
567
  "normalized": false,
 
569
  "single_word": false,
570
  "special": true
571
  },
572
+ "16068": {
573
  "content": "<extra_id_31>",
574
  "lstrip": true,
575
  "normalized": false,
 
577
  "single_word": false,
578
  "special": true
579
  },
580
+ "16069": {
581
  "content": "<extra_id_30>",
582
  "lstrip": true,
583
  "normalized": false,
 
585
  "single_word": false,
586
  "special": true
587
  },
588
+ "16070": {
589
  "content": "<extra_id_29>",
590
  "lstrip": true,
591
  "normalized": false,
 
593
  "single_word": false,
594
  "special": true
595
  },
596
+ "16071": {
597
  "content": "<extra_id_28>",
598
  "lstrip": true,
599
  "normalized": false,
 
601
  "single_word": false,
602
  "special": true
603
  },
604
+ "16072": {
605
  "content": "<extra_id_27>",
606
  "lstrip": true,
607
  "normalized": false,
 
609
  "single_word": false,
610
  "special": true
611
  },
612
+ "16073": {
613
  "content": "<extra_id_26>",
614
  "lstrip": true,
615
  "normalized": false,
 
617
  "single_word": false,
618
  "special": true
619
  },
620
+ "16074": {
621
  "content": "<extra_id_25>",
622
  "lstrip": true,
623
  "normalized": false,
 
625
  "single_word": false,
626
  "special": true
627
  },
628
+ "16075": {
629
  "content": "<extra_id_24>",
630
  "lstrip": true,
631
  "normalized": false,
 
633
  "single_word": false,
634
  "special": true
635
  },
636
+ "16076": {
637
  "content": "<extra_id_23>",
638
  "lstrip": true,
639
  "normalized": false,
 
641
  "single_word": false,
642
  "special": true
643
  },
644
+ "16077": {
645
  "content": "<extra_id_22>",
646
  "lstrip": true,
647
  "normalized": false,
 
649
  "single_word": false,
650
  "special": true
651
  },
652
+ "16078": {
653
  "content": "<extra_id_21>",
654
  "lstrip": true,
655
  "normalized": false,
 
657
  "single_word": false,
658
  "special": true
659
  },
660
+ "16079": {
661
  "content": "<extra_id_20>",
662
  "lstrip": true,
663
  "normalized": false,
 
665
  "single_word": false,
666
  "special": true
667
  },
668
+ "16080": {
669
  "content": "<extra_id_19>",
670
  "lstrip": true,
671
  "normalized": false,
 
673
  "single_word": false,
674
  "special": true
675
  },
676
+ "16081": {
677
  "content": "<extra_id_18>",
678
  "lstrip": true,
679
  "normalized": false,
 
681
  "single_word": false,
682
  "special": true
683
  },
684
+ "16082": {
685
  "content": "<extra_id_17>",
686
  "lstrip": true,
687
  "normalized": false,
 
689
  "single_word": false,
690
  "special": true
691
  },
692
+ "16083": {
693
  "content": "<extra_id_16>",
694
  "lstrip": true,
695
  "normalized": false,
 
697
  "single_word": false,
698
  "special": true
699
  },
700
+ "16084": {
701
  "content": "<extra_id_15>",
702
  "lstrip": true,
703
  "normalized": false,
 
705
  "single_word": false,
706
  "special": true
707
  },
708
+ "16085": {
709
  "content": "<extra_id_14>",
710
  "lstrip": true,
711
  "normalized": false,
 
713
  "single_word": false,
714
  "special": true
715
  },
716
+ "16086": {
717
  "content": "<extra_id_13>",
718
  "lstrip": true,
719
  "normalized": false,
 
721
  "single_word": false,
722
  "special": true
723
  },
724
+ "16087": {
725
  "content": "<extra_id_12>",
726
  "lstrip": true,
727
  "normalized": false,
 
729
  "single_word": false,
730
  "special": true
731
  },
732
+ "16088": {
733
  "content": "<extra_id_11>",
734
  "lstrip": true,
735
  "normalized": false,
 
737
  "single_word": false,
738
  "special": true
739
  },
740
+ "16089": {
741
  "content": "<extra_id_10>",
742
  "lstrip": true,
743
  "normalized": false,
 
745
  "single_word": false,
746
  "special": true
747
  },
748
+ "16090": {
749
  "content": "<extra_id_9>",
750
  "lstrip": true,
751
  "normalized": false,
 
753
  "single_word": false,
754
  "special": true
755
  },
756
+ "16091": {
757
  "content": "<extra_id_8>",
758
  "lstrip": true,
759
  "normalized": false,
 
761
  "single_word": false,
762
  "special": true
763
  },
764
+ "16092": {
765
  "content": "<extra_id_7>",
766
  "lstrip": true,
767
  "normalized": false,
 
769
  "single_word": false,
770
  "special": true
771
  },
772
+ "16093": {
773
  "content": "<extra_id_6>",
774
  "lstrip": true,
775
  "normalized": false,
 
777
  "single_word": false,
778
  "special": true
779
  },
780
+ "16094": {
781
  "content": "<extra_id_5>",
782
  "lstrip": true,
783
  "normalized": false,
 
785
  "single_word": false,
786
  "special": true
787
  },
788
+ "16095": {
789
  "content": "<extra_id_4>",
790
  "lstrip": true,
791
  "normalized": false,
 
793
  "single_word": false,
794
  "special": true
795
  },
796
+ "16096": {
797
  "content": "<extra_id_3>",
798
  "lstrip": true,
799
  "normalized": false,
 
801
  "single_word": false,
802
  "special": true
803
  },
804
+ "16097": {
805
  "content": "<extra_id_2>",
806
  "lstrip": true,
807
  "normalized": false,
 
809
  "single_word": false,
810
  "special": true
811
  },
812
+ "16098": {
813
  "content": "<extra_id_1>",
814
  "lstrip": true,
815
  "normalized": false,
 
817
  "single_word": false,
818
  "special": true
819
  },
820
+ "16099": {
821
  "content": "<extra_id_0>",
822
  "lstrip": true,
823
  "normalized": false,
src/train_t5.py CHANGED
@@ -692,4 +692,4 @@ def train(args):
692
 
693
  if __name__ == "__main__":
694
  args = parse_args()
695
- train(args)
 
692
 
693
  if __name__ == "__main__":
694
  args = parse_args()
695
+ train(args)
src/train_tokeniser.py CHANGED
@@ -31,9 +31,6 @@ with open("src/data/tokeniser_corpus.txt", "w", encoding="utf-8") as f_out:
31
 
32
  with open(corpus_file, "r", encoding="utf-8") as f_in:
33
  for i, line in enumerate(f_in):
34
- if total_records >= 3000000: # limit total records for tokeniser
35
- break
36
-
37
  item = json.loads(line)
38
  dialect = item["transliteration"].get("dialect", "west")
39
  prefix = DIALECT_PREFIXES.get(dialect, DIALECT_PREFIXES["west"])
@@ -57,10 +54,10 @@ print("Training SentencePiece model...")
57
  spm.SentencePieceTrainer.Train(
58
  input="src/data/tokeniser_corpus.txt",
59
  model_prefix="src/tokeniser/aramt5_sp",
60
- vocab_size=40000, # adjust as needed
61
  model_type="unigram", # worth testing with "bpe"
62
  character_coverage=1.0, # to preserve rare characters
63
- max_sentence_length=8384 * 3, # to handle long sequences
64
  pad_id=0,
65
  unk_id=1,
66
  bos_id=2,
@@ -80,4 +77,4 @@ tokenizer = T5Tokenizer(vocab_file="src/tokeniser/aramt5_sp.model", legacy=False
80
 
81
  tokenizer.save_pretrained("src/tokeniser/")
82
  print("Tokeniser saved to src/tokeniser/")
83
- print("Next step: Run train_t5.py to train the T5 model using this tokeniser.")
 
31
 
32
  with open(corpus_file, "r", encoding="utf-8") as f_in:
33
  for i, line in enumerate(f_in):
 
 
 
34
  item = json.loads(line)
35
  dialect = item["transliteration"].get("dialect", "west")
36
  prefix = DIALECT_PREFIXES.get(dialect, DIALECT_PREFIXES["west"])
 
54
  spm.SentencePieceTrainer.Train(
55
  input="src/data/tokeniser_corpus.txt",
56
  model_prefix="src/tokeniser/aramt5_sp",
57
+ vocab_size=16000, # adjust as needed
58
  model_type="unigram", # worth testing with "bpe"
59
  character_coverage=1.0, # to preserve rare characters
60
+ max_sentence_length=8384 * 2, # to handle long sequences
61
  pad_id=0,
62
  unk_id=1,
63
  bos_id=2,
 
77
 
78
  tokenizer.save_pretrained("src/tokeniser/")
79
  print("Tokeniser saved to src/tokeniser/")
80
+ print("Next step: Run train_t5.py to train the T5 model using this tokeniser.")
tokenizer.json CHANGED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json CHANGED
@@ -49,7 +49,7 @@
49
  "single_word": false,
50
  "special": false
51
  },
52
- "40000": {
53
  "content": "<extra_id_99>",
54
  "lstrip": true,
55
  "normalized": false,
@@ -57,7 +57,7 @@
57
  "single_word": false,
58
  "special": true
59
  },
60
- "40001": {
61
  "content": "<extra_id_98>",
62
  "lstrip": true,
63
  "normalized": false,
@@ -65,7 +65,7 @@
65
  "single_word": false,
66
  "special": true
67
  },
68
- "40002": {
69
  "content": "<extra_id_97>",
70
  "lstrip": true,
71
  "normalized": false,
@@ -73,7 +73,7 @@
73
  "single_word": false,
74
  "special": true
75
  },
76
- "40003": {
77
  "content": "<extra_id_96>",
78
  "lstrip": true,
79
  "normalized": false,
@@ -81,7 +81,7 @@
81
  "single_word": false,
82
  "special": true
83
  },
84
- "40004": {
85
  "content": "<extra_id_95>",
86
  "lstrip": true,
87
  "normalized": false,
@@ -89,7 +89,7 @@
89
  "single_word": false,
90
  "special": true
91
  },
92
- "40005": {
93
  "content": "<extra_id_94>",
94
  "lstrip": true,
95
  "normalized": false,
@@ -97,7 +97,7 @@
97
  "single_word": false,
98
  "special": true
99
  },
100
- "40006": {
101
  "content": "<extra_id_93>",
102
  "lstrip": true,
103
  "normalized": false,
@@ -105,7 +105,7 @@
105
  "single_word": false,
106
  "special": true
107
  },
108
- "40007": {
109
  "content": "<extra_id_92>",
110
  "lstrip": true,
111
  "normalized": false,
@@ -113,7 +113,7 @@
113
  "single_word": false,
114
  "special": true
115
  },
116
- "40008": {
117
  "content": "<extra_id_91>",
118
  "lstrip": true,
119
  "normalized": false,
@@ -121,7 +121,7 @@
121
  "single_word": false,
122
  "special": true
123
  },
124
- "40009": {
125
  "content": "<extra_id_90>",
126
  "lstrip": true,
127
  "normalized": false,
@@ -129,7 +129,7 @@
129
  "single_word": false,
130
  "special": true
131
  },
132
- "40010": {
133
  "content": "<extra_id_89>",
134
  "lstrip": true,
135
  "normalized": false,
@@ -137,7 +137,7 @@
137
  "single_word": false,
138
  "special": true
139
  },
140
- "40011": {
141
  "content": "<extra_id_88>",
142
  "lstrip": true,
143
  "normalized": false,
@@ -145,7 +145,7 @@
145
  "single_word": false,
146
  "special": true
147
  },
148
- "40012": {
149
  "content": "<extra_id_87>",
150
  "lstrip": true,
151
  "normalized": false,
@@ -153,7 +153,7 @@
153
  "single_word": false,
154
  "special": true
155
  },
156
- "40013": {
157
  "content": "<extra_id_86>",
158
  "lstrip": true,
159
  "normalized": false,
@@ -161,7 +161,7 @@
161
  "single_word": false,
162
  "special": true
163
  },
164
- "40014": {
165
  "content": "<extra_id_85>",
166
  "lstrip": true,
167
  "normalized": false,
@@ -169,7 +169,7 @@
169
  "single_word": false,
170
  "special": true
171
  },
172
- "40015": {
173
  "content": "<extra_id_84>",
174
  "lstrip": true,
175
  "normalized": false,
@@ -177,7 +177,7 @@
177
  "single_word": false,
178
  "special": true
179
  },
180
- "40016": {
181
  "content": "<extra_id_83>",
182
  "lstrip": true,
183
  "normalized": false,
@@ -185,7 +185,7 @@
185
  "single_word": false,
186
  "special": true
187
  },
188
- "40017": {
189
  "content": "<extra_id_82>",
190
  "lstrip": true,
191
  "normalized": false,
@@ -193,7 +193,7 @@
193
  "single_word": false,
194
  "special": true
195
  },
196
- "40018": {
197
  "content": "<extra_id_81>",
198
  "lstrip": true,
199
  "normalized": false,
@@ -201,7 +201,7 @@
201
  "single_word": false,
202
  "special": true
203
  },
204
- "40019": {
205
  "content": "<extra_id_80>",
206
  "lstrip": true,
207
  "normalized": false,
@@ -209,7 +209,7 @@
209
  "single_word": false,
210
  "special": true
211
  },
212
- "40020": {
213
  "content": "<extra_id_79>",
214
  "lstrip": true,
215
  "normalized": false,
@@ -217,7 +217,7 @@
217
  "single_word": false,
218
  "special": true
219
  },
220
- "40021": {
221
  "content": "<extra_id_78>",
222
  "lstrip": true,
223
  "normalized": false,
@@ -225,7 +225,7 @@
225
  "single_word": false,
226
  "special": true
227
  },
228
- "40022": {
229
  "content": "<extra_id_77>",
230
  "lstrip": true,
231
  "normalized": false,
@@ -233,7 +233,7 @@
233
  "single_word": false,
234
  "special": true
235
  },
236
- "40023": {
237
  "content": "<extra_id_76>",
238
  "lstrip": true,
239
  "normalized": false,
@@ -241,7 +241,7 @@
241
  "single_word": false,
242
  "special": true
243
  },
244
- "40024": {
245
  "content": "<extra_id_75>",
246
  "lstrip": true,
247
  "normalized": false,
@@ -249,7 +249,7 @@
249
  "single_word": false,
250
  "special": true
251
  },
252
- "40025": {
253
  "content": "<extra_id_74>",
254
  "lstrip": true,
255
  "normalized": false,
@@ -257,7 +257,7 @@
257
  "single_word": false,
258
  "special": true
259
  },
260
- "40026": {
261
  "content": "<extra_id_73>",
262
  "lstrip": true,
263
  "normalized": false,
@@ -265,7 +265,7 @@
265
  "single_word": false,
266
  "special": true
267
  },
268
- "40027": {
269
  "content": "<extra_id_72>",
270
  "lstrip": true,
271
  "normalized": false,
@@ -273,7 +273,7 @@
273
  "single_word": false,
274
  "special": true
275
  },
276
- "40028": {
277
  "content": "<extra_id_71>",
278
  "lstrip": true,
279
  "normalized": false,
@@ -281,7 +281,7 @@
281
  "single_word": false,
282
  "special": true
283
  },
284
- "40029": {
285
  "content": "<extra_id_70>",
286
  "lstrip": true,
287
  "normalized": false,
@@ -289,7 +289,7 @@
289
  "single_word": false,
290
  "special": true
291
  },
292
- "40030": {
293
  "content": "<extra_id_69>",
294
  "lstrip": true,
295
  "normalized": false,
@@ -297,7 +297,7 @@
297
  "single_word": false,
298
  "special": true
299
  },
300
- "40031": {
301
  "content": "<extra_id_68>",
302
  "lstrip": true,
303
  "normalized": false,
@@ -305,7 +305,7 @@
305
  "single_word": false,
306
  "special": true
307
  },
308
- "40032": {
309
  "content": "<extra_id_67>",
310
  "lstrip": true,
311
  "normalized": false,
@@ -313,7 +313,7 @@
313
  "single_word": false,
314
  "special": true
315
  },
316
- "40033": {
317
  "content": "<extra_id_66>",
318
  "lstrip": true,
319
  "normalized": false,
@@ -321,7 +321,7 @@
321
  "single_word": false,
322
  "special": true
323
  },
324
- "40034": {
325
  "content": "<extra_id_65>",
326
  "lstrip": true,
327
  "normalized": false,
@@ -329,7 +329,7 @@
329
  "single_word": false,
330
  "special": true
331
  },
332
- "40035": {
333
  "content": "<extra_id_64>",
334
  "lstrip": true,
335
  "normalized": false,
@@ -337,7 +337,7 @@
337
  "single_word": false,
338
  "special": true
339
  },
340
- "40036": {
341
  "content": "<extra_id_63>",
342
  "lstrip": true,
343
  "normalized": false,
@@ -345,7 +345,7 @@
345
  "single_word": false,
346
  "special": true
347
  },
348
- "40037": {
349
  "content": "<extra_id_62>",
350
  "lstrip": true,
351
  "normalized": false,
@@ -353,7 +353,7 @@
353
  "single_word": false,
354
  "special": true
355
  },
356
- "40038": {
357
  "content": "<extra_id_61>",
358
  "lstrip": true,
359
  "normalized": false,
@@ -361,7 +361,7 @@
361
  "single_word": false,
362
  "special": true
363
  },
364
- "40039": {
365
  "content": "<extra_id_60>",
366
  "lstrip": true,
367
  "normalized": false,
@@ -369,7 +369,7 @@
369
  "single_word": false,
370
  "special": true
371
  },
372
- "40040": {
373
  "content": "<extra_id_59>",
374
  "lstrip": true,
375
  "normalized": false,
@@ -377,7 +377,7 @@
377
  "single_word": false,
378
  "special": true
379
  },
380
- "40041": {
381
  "content": "<extra_id_58>",
382
  "lstrip": true,
383
  "normalized": false,
@@ -385,7 +385,7 @@
385
  "single_word": false,
386
  "special": true
387
  },
388
- "40042": {
389
  "content": "<extra_id_57>",
390
  "lstrip": true,
391
  "normalized": false,
@@ -393,7 +393,7 @@
393
  "single_word": false,
394
  "special": true
395
  },
396
- "40043": {
397
  "content": "<extra_id_56>",
398
  "lstrip": true,
399
  "normalized": false,
@@ -401,7 +401,7 @@
401
  "single_word": false,
402
  "special": true
403
  },
404
- "40044": {
405
  "content": "<extra_id_55>",
406
  "lstrip": true,
407
  "normalized": false,
@@ -409,7 +409,7 @@
409
  "single_word": false,
410
  "special": true
411
  },
412
- "40045": {
413
  "content": "<extra_id_54>",
414
  "lstrip": true,
415
  "normalized": false,
@@ -417,7 +417,7 @@
417
  "single_word": false,
418
  "special": true
419
  },
420
- "40046": {
421
  "content": "<extra_id_53>",
422
  "lstrip": true,
423
  "normalized": false,
@@ -425,7 +425,7 @@
425
  "single_word": false,
426
  "special": true
427
  },
428
- "40047": {
429
  "content": "<extra_id_52>",
430
  "lstrip": true,
431
  "normalized": false,
@@ -433,7 +433,7 @@
433
  "single_word": false,
434
  "special": true
435
  },
436
- "40048": {
437
  "content": "<extra_id_51>",
438
  "lstrip": true,
439
  "normalized": false,
@@ -441,7 +441,7 @@
441
  "single_word": false,
442
  "special": true
443
  },
444
- "40049": {
445
  "content": "<extra_id_50>",
446
  "lstrip": true,
447
  "normalized": false,
@@ -449,7 +449,7 @@
449
  "single_word": false,
450
  "special": true
451
  },
452
- "40050": {
453
  "content": "<extra_id_49>",
454
  "lstrip": true,
455
  "normalized": false,
@@ -457,7 +457,7 @@
457
  "single_word": false,
458
  "special": true
459
  },
460
- "40051": {
461
  "content": "<extra_id_48>",
462
  "lstrip": true,
463
  "normalized": false,
@@ -465,7 +465,7 @@
465
  "single_word": false,
466
  "special": true
467
  },
468
- "40052": {
469
  "content": "<extra_id_47>",
470
  "lstrip": true,
471
  "normalized": false,
@@ -473,7 +473,7 @@
473
  "single_word": false,
474
  "special": true
475
  },
476
- "40053": {
477
  "content": "<extra_id_46>",
478
  "lstrip": true,
479
  "normalized": false,
@@ -481,7 +481,7 @@
481
  "single_word": false,
482
  "special": true
483
  },
484
- "40054": {
485
  "content": "<extra_id_45>",
486
  "lstrip": true,
487
  "normalized": false,
@@ -489,7 +489,7 @@
489
  "single_word": false,
490
  "special": true
491
  },
492
- "40055": {
493
  "content": "<extra_id_44>",
494
  "lstrip": true,
495
  "normalized": false,
@@ -497,7 +497,7 @@
497
  "single_word": false,
498
  "special": true
499
  },
500
- "40056": {
501
  "content": "<extra_id_43>",
502
  "lstrip": true,
503
  "normalized": false,
@@ -505,7 +505,7 @@
505
  "single_word": false,
506
  "special": true
507
  },
508
- "40057": {
509
  "content": "<extra_id_42>",
510
  "lstrip": true,
511
  "normalized": false,
@@ -513,7 +513,7 @@
513
  "single_word": false,
514
  "special": true
515
  },
516
- "40058": {
517
  "content": "<extra_id_41>",
518
  "lstrip": true,
519
  "normalized": false,
@@ -521,7 +521,7 @@
521
  "single_word": false,
522
  "special": true
523
  },
524
- "40059": {
525
  "content": "<extra_id_40>",
526
  "lstrip": true,
527
  "normalized": false,
@@ -529,7 +529,7 @@
529
  "single_word": false,
530
  "special": true
531
  },
532
- "40060": {
533
  "content": "<extra_id_39>",
534
  "lstrip": true,
535
  "normalized": false,
@@ -537,7 +537,7 @@
537
  "single_word": false,
538
  "special": true
539
  },
540
- "40061": {
541
  "content": "<extra_id_38>",
542
  "lstrip": true,
543
  "normalized": false,
@@ -545,7 +545,7 @@
545
  "single_word": false,
546
  "special": true
547
  },
548
- "40062": {
549
  "content": "<extra_id_37>",
550
  "lstrip": true,
551
  "normalized": false,
@@ -553,7 +553,7 @@
553
  "single_word": false,
554
  "special": true
555
  },
556
- "40063": {
557
  "content": "<extra_id_36>",
558
  "lstrip": true,
559
  "normalized": false,
@@ -561,7 +561,7 @@
561
  "single_word": false,
562
  "special": true
563
  },
564
- "40064": {
565
  "content": "<extra_id_35>",
566
  "lstrip": true,
567
  "normalized": false,
@@ -569,7 +569,7 @@
569
  "single_word": false,
570
  "special": true
571
  },
572
- "40065": {
573
  "content": "<extra_id_34>",
574
  "lstrip": true,
575
  "normalized": false,
@@ -577,7 +577,7 @@
577
  "single_word": false,
578
  "special": true
579
  },
580
- "40066": {
581
  "content": "<extra_id_33>",
582
  "lstrip": true,
583
  "normalized": false,
@@ -585,7 +585,7 @@
585
  "single_word": false,
586
  "special": true
587
  },
588
- "40067": {
589
  "content": "<extra_id_32>",
590
  "lstrip": true,
591
  "normalized": false,
@@ -593,7 +593,7 @@
593
  "single_word": false,
594
  "special": true
595
  },
596
- "40068": {
597
  "content": "<extra_id_31>",
598
  "lstrip": true,
599
  "normalized": false,
@@ -601,7 +601,7 @@
601
  "single_word": false,
602
  "special": true
603
  },
604
- "40069": {
605
  "content": "<extra_id_30>",
606
  "lstrip": true,
607
  "normalized": false,
@@ -609,7 +609,7 @@
609
  "single_word": false,
610
  "special": true
611
  },
612
- "40070": {
613
  "content": "<extra_id_29>",
614
  "lstrip": true,
615
  "normalized": false,
@@ -617,7 +617,7 @@
617
  "single_word": false,
618
  "special": true
619
  },
620
- "40071": {
621
  "content": "<extra_id_28>",
622
  "lstrip": true,
623
  "normalized": false,
@@ -625,7 +625,7 @@
625
  "single_word": false,
626
  "special": true
627
  },
628
- "40072": {
629
  "content": "<extra_id_27>",
630
  "lstrip": true,
631
  "normalized": false,
@@ -633,7 +633,7 @@
633
  "single_word": false,
634
  "special": true
635
  },
636
- "40073": {
637
  "content": "<extra_id_26>",
638
  "lstrip": true,
639
  "normalized": false,
@@ -641,7 +641,7 @@
641
  "single_word": false,
642
  "special": true
643
  },
644
- "40074": {
645
  "content": "<extra_id_25>",
646
  "lstrip": true,
647
  "normalized": false,
@@ -649,7 +649,7 @@
649
  "single_word": false,
650
  "special": true
651
  },
652
- "40075": {
653
  "content": "<extra_id_24>",
654
  "lstrip": true,
655
  "normalized": false,
@@ -657,7 +657,7 @@
657
  "single_word": false,
658
  "special": true
659
  },
660
- "40076": {
661
  "content": "<extra_id_23>",
662
  "lstrip": true,
663
  "normalized": false,
@@ -665,7 +665,7 @@
665
  "single_word": false,
666
  "special": true
667
  },
668
- "40077": {
669
  "content": "<extra_id_22>",
670
  "lstrip": true,
671
  "normalized": false,
@@ -673,7 +673,7 @@
673
  "single_word": false,
674
  "special": true
675
  },
676
- "40078": {
677
  "content": "<extra_id_21>",
678
  "lstrip": true,
679
  "normalized": false,
@@ -681,7 +681,7 @@
681
  "single_word": false,
682
  "special": true
683
  },
684
- "40079": {
685
  "content": "<extra_id_20>",
686
  "lstrip": true,
687
  "normalized": false,
@@ -689,7 +689,7 @@
689
  "single_word": false,
690
  "special": true
691
  },
692
- "40080": {
693
  "content": "<extra_id_19>",
694
  "lstrip": true,
695
  "normalized": false,
@@ -697,7 +697,7 @@
697
  "single_word": false,
698
  "special": true
699
  },
700
- "40081": {
701
  "content": "<extra_id_18>",
702
  "lstrip": true,
703
  "normalized": false,
@@ -705,7 +705,7 @@
705
  "single_word": false,
706
  "special": true
707
  },
708
- "40082": {
709
  "content": "<extra_id_17>",
710
  "lstrip": true,
711
  "normalized": false,
@@ -713,7 +713,7 @@
713
  "single_word": false,
714
  "special": true
715
  },
716
- "40083": {
717
  "content": "<extra_id_16>",
718
  "lstrip": true,
719
  "normalized": false,
@@ -721,7 +721,7 @@
721
  "single_word": false,
722
  "special": true
723
  },
724
- "40084": {
725
  "content": "<extra_id_15>",
726
  "lstrip": true,
727
  "normalized": false,
@@ -729,7 +729,7 @@
729
  "single_word": false,
730
  "special": true
731
  },
732
- "40085": {
733
  "content": "<extra_id_14>",
734
  "lstrip": true,
735
  "normalized": false,
@@ -737,7 +737,7 @@
737
  "single_word": false,
738
  "special": true
739
  },
740
- "40086": {
741
  "content": "<extra_id_13>",
742
  "lstrip": true,
743
  "normalized": false,
@@ -745,7 +745,7 @@
745
  "single_word": false,
746
  "special": true
747
  },
748
- "40087": {
749
  "content": "<extra_id_12>",
750
  "lstrip": true,
751
  "normalized": false,
@@ -753,7 +753,7 @@
753
  "single_word": false,
754
  "special": true
755
  },
756
- "40088": {
757
  "content": "<extra_id_11>",
758
  "lstrip": true,
759
  "normalized": false,
@@ -761,7 +761,7 @@
761
  "single_word": false,
762
  "special": true
763
  },
764
- "40089": {
765
  "content": "<extra_id_10>",
766
  "lstrip": true,
767
  "normalized": false,
@@ -769,7 +769,7 @@
769
  "single_word": false,
770
  "special": true
771
  },
772
- "40090": {
773
  "content": "<extra_id_9>",
774
  "lstrip": true,
775
  "normalized": false,
@@ -777,7 +777,7 @@
777
  "single_word": false,
778
  "special": true
779
  },
780
- "40091": {
781
  "content": "<extra_id_8>",
782
  "lstrip": true,
783
  "normalized": false,
@@ -785,7 +785,7 @@
785
  "single_word": false,
786
  "special": true
787
  },
788
- "40092": {
789
  "content": "<extra_id_7>",
790
  "lstrip": true,
791
  "normalized": false,
@@ -793,7 +793,7 @@
793
  "single_word": false,
794
  "special": true
795
  },
796
- "40093": {
797
  "content": "<extra_id_6>",
798
  "lstrip": true,
799
  "normalized": false,
@@ -801,7 +801,7 @@
801
  "single_word": false,
802
  "special": true
803
  },
804
- "40094": {
805
  "content": "<extra_id_5>",
806
  "lstrip": true,
807
  "normalized": false,
@@ -809,7 +809,7 @@
809
  "single_word": false,
810
  "special": true
811
  },
812
- "40095": {
813
  "content": "<extra_id_4>",
814
  "lstrip": true,
815
  "normalized": false,
@@ -817,7 +817,7 @@
817
  "single_word": false,
818
  "special": true
819
  },
820
- "40096": {
821
  "content": "<extra_id_3>",
822
  "lstrip": true,
823
  "normalized": false,
@@ -825,7 +825,7 @@
825
  "single_word": false,
826
  "special": true
827
  },
828
- "40097": {
829
  "content": "<extra_id_2>",
830
  "lstrip": true,
831
  "normalized": false,
@@ -833,7 +833,7 @@
833
  "single_word": false,
834
  "special": true
835
  },
836
- "40098": {
837
  "content": "<extra_id_1>",
838
  "lstrip": true,
839
  "normalized": false,
@@ -841,7 +841,7 @@
841
  "single_word": false,
842
  "special": true
843
  },
844
- "40099": {
845
  "content": "<extra_id_0>",
846
  "lstrip": true,
847
  "normalized": false,
 
49
  "single_word": false,
50
  "special": false
51
  },
52
+ "16000": {
53
  "content": "<extra_id_99>",
54
  "lstrip": true,
55
  "normalized": false,
 
57
  "single_word": false,
58
  "special": true
59
  },
60
+ "16001": {
61
  "content": "<extra_id_98>",
62
  "lstrip": true,
63
  "normalized": false,
 
65
  "single_word": false,
66
  "special": true
67
  },
68
+ "16002": {
69
  "content": "<extra_id_97>",
70
  "lstrip": true,
71
  "normalized": false,
 
73
  "single_word": false,
74
  "special": true
75
  },
76
+ "16003": {
77
  "content": "<extra_id_96>",
78
  "lstrip": true,
79
  "normalized": false,
 
81
  "single_word": false,
82
  "special": true
83
  },
84
+ "16004": {
85
  "content": "<extra_id_95>",
86
  "lstrip": true,
87
  "normalized": false,
 
89
  "single_word": false,
90
  "special": true
91
  },
92
+ "16005": {
93
  "content": "<extra_id_94>",
94
  "lstrip": true,
95
  "normalized": false,
 
97
  "single_word": false,
98
  "special": true
99
  },
100
+ "16006": {
101
  "content": "<extra_id_93>",
102
  "lstrip": true,
103
  "normalized": false,
 
105
  "single_word": false,
106
  "special": true
107
  },
108
+ "16007": {
109
  "content": "<extra_id_92>",
110
  "lstrip": true,
111
  "normalized": false,
 
113
  "single_word": false,
114
  "special": true
115
  },
116
+ "16008": {
117
  "content": "<extra_id_91>",
118
  "lstrip": true,
119
  "normalized": false,
 
121
  "single_word": false,
122
  "special": true
123
  },
124
+ "16009": {
125
  "content": "<extra_id_90>",
126
  "lstrip": true,
127
  "normalized": false,
 
129
  "single_word": false,
130
  "special": true
131
  },
132
+ "16010": {
133
  "content": "<extra_id_89>",
134
  "lstrip": true,
135
  "normalized": false,
 
137
  "single_word": false,
138
  "special": true
139
  },
140
+ "16011": {
141
  "content": "<extra_id_88>",
142
  "lstrip": true,
143
  "normalized": false,
 
145
  "single_word": false,
146
  "special": true
147
  },
148
+ "16012": {
149
  "content": "<extra_id_87>",
150
  "lstrip": true,
151
  "normalized": false,
 
153
  "single_word": false,
154
  "special": true
155
  },
156
+ "16013": {
157
  "content": "<extra_id_86>",
158
  "lstrip": true,
159
  "normalized": false,
 
161
  "single_word": false,
162
  "special": true
163
  },
164
+ "16014": {
165
  "content": "<extra_id_85>",
166
  "lstrip": true,
167
  "normalized": false,
 
169
  "single_word": false,
170
  "special": true
171
  },
172
+ "16015": {
173
  "content": "<extra_id_84>",
174
  "lstrip": true,
175
  "normalized": false,
 
177
  "single_word": false,
178
  "special": true
179
  },
180
+ "16016": {
181
  "content": "<extra_id_83>",
182
  "lstrip": true,
183
  "normalized": false,
 
185
  "single_word": false,
186
  "special": true
187
  },
188
+ "16017": {
189
  "content": "<extra_id_82>",
190
  "lstrip": true,
191
  "normalized": false,
 
193
  "single_word": false,
194
  "special": true
195
  },
196
+ "16018": {
197
  "content": "<extra_id_81>",
198
  "lstrip": true,
199
  "normalized": false,
 
201
  "single_word": false,
202
  "special": true
203
  },
204
+ "16019": {
205
  "content": "<extra_id_80>",
206
  "lstrip": true,
207
  "normalized": false,
 
209
  "single_word": false,
210
  "special": true
211
  },
212
+ "16020": {
213
  "content": "<extra_id_79>",
214
  "lstrip": true,
215
  "normalized": false,
 
217
  "single_word": false,
218
  "special": true
219
  },
220
+ "16021": {
221
  "content": "<extra_id_78>",
222
  "lstrip": true,
223
  "normalized": false,
 
225
  "single_word": false,
226
  "special": true
227
  },
228
+ "16022": {
229
  "content": "<extra_id_77>",
230
  "lstrip": true,
231
  "normalized": false,
 
233
  "single_word": false,
234
  "special": true
235
  },
236
+ "16023": {
237
  "content": "<extra_id_76>",
238
  "lstrip": true,
239
  "normalized": false,
 
241
  "single_word": false,
242
  "special": true
243
  },
244
+ "16024": {
245
  "content": "<extra_id_75>",
246
  "lstrip": true,
247
  "normalized": false,
 
249
  "single_word": false,
250
  "special": true
251
  },
252
+ "16025": {
253
  "content": "<extra_id_74>",
254
  "lstrip": true,
255
  "normalized": false,
 
257
  "single_word": false,
258
  "special": true
259
  },
260
+ "16026": {
261
  "content": "<extra_id_73>",
262
  "lstrip": true,
263
  "normalized": false,
 
265
  "single_word": false,
266
  "special": true
267
  },
268
+ "16027": {
269
  "content": "<extra_id_72>",
270
  "lstrip": true,
271
  "normalized": false,
 
273
  "single_word": false,
274
  "special": true
275
  },
276
+ "16028": {
277
  "content": "<extra_id_71>",
278
  "lstrip": true,
279
  "normalized": false,
 
281
  "single_word": false,
282
  "special": true
283
  },
284
+ "16029": {
285
  "content": "<extra_id_70>",
286
  "lstrip": true,
287
  "normalized": false,
 
289
  "single_word": false,
290
  "special": true
291
  },
292
+ "16030": {
293
  "content": "<extra_id_69>",
294
  "lstrip": true,
295
  "normalized": false,
 
297
  "single_word": false,
298
  "special": true
299
  },
300
+ "16031": {
301
  "content": "<extra_id_68>",
302
  "lstrip": true,
303
  "normalized": false,
 
305
  "single_word": false,
306
  "special": true
307
  },
308
+ "16032": {
309
  "content": "<extra_id_67>",
310
  "lstrip": true,
311
  "normalized": false,
 
313
  "single_word": false,
314
  "special": true
315
  },
316
+ "16033": {
317
  "content": "<extra_id_66>",
318
  "lstrip": true,
319
  "normalized": false,
 
321
  "single_word": false,
322
  "special": true
323
  },
324
+ "16034": {
325
  "content": "<extra_id_65>",
326
  "lstrip": true,
327
  "normalized": false,
 
329
  "single_word": false,
330
  "special": true
331
  },
332
+ "16035": {
333
  "content": "<extra_id_64>",
334
  "lstrip": true,
335
  "normalized": false,
 
337
  "single_word": false,
338
  "special": true
339
  },
340
+ "16036": {
341
  "content": "<extra_id_63>",
342
  "lstrip": true,
343
  "normalized": false,
 
345
  "single_word": false,
346
  "special": true
347
  },
348
+ "16037": {
349
  "content": "<extra_id_62>",
350
  "lstrip": true,
351
  "normalized": false,
 
353
  "single_word": false,
354
  "special": true
355
  },
356
+ "16038": {
357
  "content": "<extra_id_61>",
358
  "lstrip": true,
359
  "normalized": false,
 
361
  "single_word": false,
362
  "special": true
363
  },
364
+ "16039": {
365
  "content": "<extra_id_60>",
366
  "lstrip": true,
367
  "normalized": false,
 
369
  "single_word": false,
370
  "special": true
371
  },
372
+ "16040": {
373
  "content": "<extra_id_59>",
374
  "lstrip": true,
375
  "normalized": false,
 
377
  "single_word": false,
378
  "special": true
379
  },
380
+ "16041": {
381
  "content": "<extra_id_58>",
382
  "lstrip": true,
383
  "normalized": false,
 
385
  "single_word": false,
386
  "special": true
387
  },
388
+ "16042": {
389
  "content": "<extra_id_57>",
390
  "lstrip": true,
391
  "normalized": false,
 
393
  "single_word": false,
394
  "special": true
395
  },
396
+ "16043": {
397
  "content": "<extra_id_56>",
398
  "lstrip": true,
399
  "normalized": false,
 
401
  "single_word": false,
402
  "special": true
403
  },
404
+ "16044": {
405
  "content": "<extra_id_55>",
406
  "lstrip": true,
407
  "normalized": false,
 
409
  "single_word": false,
410
  "special": true
411
  },
412
+ "16045": {
413
  "content": "<extra_id_54>",
414
  "lstrip": true,
415
  "normalized": false,
 
417
  "single_word": false,
418
  "special": true
419
  },
420
+ "16046": {
421
  "content": "<extra_id_53>",
422
  "lstrip": true,
423
  "normalized": false,
 
425
  "single_word": false,
426
  "special": true
427
  },
428
+ "16047": {
429
  "content": "<extra_id_52>",
430
  "lstrip": true,
431
  "normalized": false,
 
433
  "single_word": false,
434
  "special": true
435
  },
436
+ "16048": {
437
  "content": "<extra_id_51>",
438
  "lstrip": true,
439
  "normalized": false,
 
441
  "single_word": false,
442
  "special": true
443
  },
444
+ "16049": {
445
  "content": "<extra_id_50>",
446
  "lstrip": true,
447
  "normalized": false,
 
449
  "single_word": false,
450
  "special": true
451
  },
452
+ "16050": {
453
  "content": "<extra_id_49>",
454
  "lstrip": true,
455
  "normalized": false,
 
457
  "single_word": false,
458
  "special": true
459
  },
460
+ "16051": {
461
  "content": "<extra_id_48>",
462
  "lstrip": true,
463
  "normalized": false,
 
465
  "single_word": false,
466
  "special": true
467
  },
468
+ "16052": {
469
  "content": "<extra_id_47>",
470
  "lstrip": true,
471
  "normalized": false,
 
473
  "single_word": false,
474
  "special": true
475
  },
476
+ "16053": {
477
  "content": "<extra_id_46>",
478
  "lstrip": true,
479
  "normalized": false,
 
481
  "single_word": false,
482
  "special": true
483
  },
484
+ "16054": {
485
  "content": "<extra_id_45>",
486
  "lstrip": true,
487
  "normalized": false,
 
489
  "single_word": false,
490
  "special": true
491
  },
492
+ "16055": {
493
  "content": "<extra_id_44>",
494
  "lstrip": true,
495
  "normalized": false,
 
497
  "single_word": false,
498
  "special": true
499
  },
500
+ "16056": {
501
  "content": "<extra_id_43>",
502
  "lstrip": true,
503
  "normalized": false,
 
505
  "single_word": false,
506
  "special": true
507
  },
508
+ "16057": {
509
  "content": "<extra_id_42>",
510
  "lstrip": true,
511
  "normalized": false,
 
513
  "single_word": false,
514
  "special": true
515
  },
516
+ "16058": {
517
  "content": "<extra_id_41>",
518
  "lstrip": true,
519
  "normalized": false,
 
521
  "single_word": false,
522
  "special": true
523
  },
524
+ "16059": {
525
  "content": "<extra_id_40>",
526
  "lstrip": true,
527
  "normalized": false,
 
529
  "single_word": false,
530
  "special": true
531
  },
532
+ "16060": {
533
  "content": "<extra_id_39>",
534
  "lstrip": true,
535
  "normalized": false,
 
537
  "single_word": false,
538
  "special": true
539
  },
540
+ "16061": {
541
  "content": "<extra_id_38>",
542
  "lstrip": true,
543
  "normalized": false,
 
545
  "single_word": false,
546
  "special": true
547
  },
548
+ "16062": {
549
  "content": "<extra_id_37>",
550
  "lstrip": true,
551
  "normalized": false,
 
553
  "single_word": false,
554
  "special": true
555
  },
556
+ "16063": {
557
  "content": "<extra_id_36>",
558
  "lstrip": true,
559
  "normalized": false,
 
561
  "single_word": false,
562
  "special": true
563
  },
564
+ "16064": {
565
  "content": "<extra_id_35>",
566
  "lstrip": true,
567
  "normalized": false,
 
569
  "single_word": false,
570
  "special": true
571
  },
572
+ "16065": {
573
  "content": "<extra_id_34>",
574
  "lstrip": true,
575
  "normalized": false,
 
577
  "single_word": false,
578
  "special": true
579
  },
580
+ "16066": {
581
  "content": "<extra_id_33>",
582
  "lstrip": true,
583
  "normalized": false,
 
585
  "single_word": false,
586
  "special": true
587
  },
588
+ "16067": {
589
  "content": "<extra_id_32>",
590
  "lstrip": true,
591
  "normalized": false,
 
593
  "single_word": false,
594
  "special": true
595
  },
596
+ "16068": {
597
  "content": "<extra_id_31>",
598
  "lstrip": true,
599
  "normalized": false,
 
601
  "single_word": false,
602
  "special": true
603
  },
604
+ "16069": {
605
  "content": "<extra_id_30>",
606
  "lstrip": true,
607
  "normalized": false,
 
609
  "single_word": false,
610
  "special": true
611
  },
612
+ "16070": {
613
  "content": "<extra_id_29>",
614
  "lstrip": true,
615
  "normalized": false,
 
617
  "single_word": false,
618
  "special": true
619
  },
620
+ "16071": {
621
  "content": "<extra_id_28>",
622
  "lstrip": true,
623
  "normalized": false,
 
625
  "single_word": false,
626
  "special": true
627
  },
628
+ "16072": {
629
  "content": "<extra_id_27>",
630
  "lstrip": true,
631
  "normalized": false,
 
633
  "single_word": false,
634
  "special": true
635
  },
636
+ "16073": {
637
  "content": "<extra_id_26>",
638
  "lstrip": true,
639
  "normalized": false,
 
641
  "single_word": false,
642
  "special": true
643
  },
644
+ "16074": {
645
  "content": "<extra_id_25>",
646
  "lstrip": true,
647
  "normalized": false,
 
649
  "single_word": false,
650
  "special": true
651
  },
652
+ "16075": {
653
  "content": "<extra_id_24>",
654
  "lstrip": true,
655
  "normalized": false,
 
657
  "single_word": false,
658
  "special": true
659
  },
660
+ "16076": {
661
  "content": "<extra_id_23>",
662
  "lstrip": true,
663
  "normalized": false,
 
665
  "single_word": false,
666
  "special": true
667
  },
668
+ "16077": {
669
  "content": "<extra_id_22>",
670
  "lstrip": true,
671
  "normalized": false,
 
673
  "single_word": false,
674
  "special": true
675
  },
676
+ "16078": {
677
  "content": "<extra_id_21>",
678
  "lstrip": true,
679
  "normalized": false,
 
681
  "single_word": false,
682
  "special": true
683
  },
684
+ "16079": {
685
  "content": "<extra_id_20>",
686
  "lstrip": true,
687
  "normalized": false,
 
689
  "single_word": false,
690
  "special": true
691
  },
692
+ "16080": {
693
  "content": "<extra_id_19>",
694
  "lstrip": true,
695
  "normalized": false,
 
697
  "single_word": false,
698
  "special": true
699
  },
700
+ "16081": {
701
  "content": "<extra_id_18>",
702
  "lstrip": true,
703
  "normalized": false,
 
705
  "single_word": false,
706
  "special": true
707
  },
708
+ "16082": {
709
  "content": "<extra_id_17>",
710
  "lstrip": true,
711
  "normalized": false,
 
713
  "single_word": false,
714
  "special": true
715
  },
716
+ "16083": {
717
  "content": "<extra_id_16>",
718
  "lstrip": true,
719
  "normalized": false,
 
721
  "single_word": false,
722
  "special": true
723
  },
724
+ "16084": {
725
  "content": "<extra_id_15>",
726
  "lstrip": true,
727
  "normalized": false,
 
729
  "single_word": false,
730
  "special": true
731
  },
732
+ "16085": {
733
  "content": "<extra_id_14>",
734
  "lstrip": true,
735
  "normalized": false,
 
737
  "single_word": false,
738
  "special": true
739
  },
740
+ "16086": {
741
  "content": "<extra_id_13>",
742
  "lstrip": true,
743
  "normalized": false,
 
745
  "single_word": false,
746
  "special": true
747
  },
748
+ "16087": {
749
  "content": "<extra_id_12>",
750
  "lstrip": true,
751
  "normalized": false,
 
753
  "single_word": false,
754
  "special": true
755
  },
756
+ "16088": {
757
  "content": "<extra_id_11>",
758
  "lstrip": true,
759
  "normalized": false,
 
761
  "single_word": false,
762
  "special": true
763
  },
764
+ "16089": {
765
  "content": "<extra_id_10>",
766
  "lstrip": true,
767
  "normalized": false,
 
769
  "single_word": false,
770
  "special": true
771
  },
772
+ "16090": {
773
  "content": "<extra_id_9>",
774
  "lstrip": true,
775
  "normalized": false,
 
777
  "single_word": false,
778
  "special": true
779
  },
780
+ "16091": {
781
  "content": "<extra_id_8>",
782
  "lstrip": true,
783
  "normalized": false,
 
785
  "single_word": false,
786
  "special": true
787
  },
788
+ "16092": {
789
  "content": "<extra_id_7>",
790
  "lstrip": true,
791
  "normalized": false,
 
793
  "single_word": false,
794
  "special": true
795
  },
796
+ "16093": {
797
  "content": "<extra_id_6>",
798
  "lstrip": true,
799
  "normalized": false,
 
801
  "single_word": false,
802
  "special": true
803
  },
804
+ "16094": {
805
  "content": "<extra_id_5>",
806
  "lstrip": true,
807
  "normalized": false,
 
809
  "single_word": false,
810
  "special": true
811
  },
812
+ "16095": {
813
  "content": "<extra_id_4>",
814
  "lstrip": true,
815
  "normalized": false,
 
817
  "single_word": false,
818
  "special": true
819
  },
820
+ "16096": {
821
  "content": "<extra_id_3>",
822
  "lstrip": true,
823
  "normalized": false,
 
825
  "single_word": false,
826
  "special": true
827
  },
828
+ "16097": {
829
  "content": "<extra_id_2>",
830
  "lstrip": true,
831
  "normalized": false,
 
833
  "single_word": false,
834
  "special": true
835
  },
836
+ "16098": {
837
  "content": "<extra_id_1>",
838
  "lstrip": true,
839
  "normalized": false,
 
841
  "single_word": false,
842
  "special": true
843
  },
844
+ "16099": {
845
  "content": "<extra_id_0>",
846
  "lstrip": true,
847
  "normalized": false,