@kensio/pinyinjs 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/CHANGELOG.md +119 -3
  2. package/NOTICE +9 -0
  3. package/README.md +59 -14
  4. package/data/core.entries +1 -13
  5. package/data/core.freq +0 -0
  6. package/data/core.keys +1 -13
  7. package/data/full.entries +141 -131
  8. package/data/full.freq +0 -0
  9. package/data/full.keys +167 -157
  10. package/data/manifest.json +24 -9
  11. package/data/script.map +26543 -0
  12. package/data/standard.entries +1 -22
  13. package/data/standard.freq +0 -0
  14. package/data/standard.keys +2 -23
  15. package/dist/cli/arguments.d.ts +31 -1
  16. package/dist/cli/arguments.d.ts.map +1 -1
  17. package/dist/cli/arguments.js +30 -1
  18. package/dist/cli/arguments.js.map +1 -1
  19. package/dist/cli/commands.d.ts +11 -0
  20. package/dist/cli/commands.d.ts.map +1 -1
  21. package/dist/cli/commands.js +55 -2
  22. package/dist/cli/commands.js.map +1 -1
  23. package/dist/cli/environment.d.ts.map +1 -1
  24. package/dist/cli/environment.js +2 -1
  25. package/dist/cli/environment.js.map +1 -1
  26. package/dist/cli/help.d.ts.map +1 -1
  27. package/dist/cli/help.js +5 -0
  28. package/dist/cli/help.js.map +1 -1
  29. package/dist/cli/run.d.ts +8 -0
  30. package/dist/cli/run.d.ts.map +1 -1
  31. package/dist/cli/run.js +11 -1
  32. package/dist/cli/run.js.map +1 -1
  33. package/dist/decode/script.d.ts +108 -0
  34. package/dist/decode/script.d.ts.map +1 -0
  35. package/dist/decode/script.js +195 -0
  36. package/dist/decode/script.js.map +1 -0
  37. package/dist/dictionary/dictionary.d.ts +13 -1
  38. package/dist/dictionary/dictionary.d.ts.map +1 -1
  39. package/dist/dictionary/dictionary.js +18 -4
  40. package/dist/dictionary/dictionary.js.map +1 -1
  41. package/dist/dictionary/merge.d.ts.map +1 -1
  42. package/dist/dictionary/merge.js +23 -3
  43. package/dist/dictionary/merge.js.map +1 -1
  44. package/dist/dictionary/script-tables.d.ts +17 -0
  45. package/dist/dictionary/script-tables.d.ts.map +1 -0
  46. package/dist/dictionary/script-tables.js +275 -0
  47. package/dist/dictionary/script-tables.js.map +1 -0
  48. package/dist/dictionary/source.d.ts +18 -0
  49. package/dist/dictionary/source.d.ts.map +1 -1
  50. package/dist/dictionary/source.js +20 -0
  51. package/dist/dictionary/source.js.map +1 -1
  52. package/dist/format/html.d.ts +8 -0
  53. package/dist/format/html.d.ts.map +1 -1
  54. package/dist/format/html.js +46 -5
  55. package/dist/format/html.js.map +1 -1
  56. package/dist/index.d.ts +8 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +5 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/script/conversion.d.ts +102 -0
  61. package/dist/script/conversion.d.ts.map +1 -0
  62. package/dist/script/conversion.js +194 -0
  63. package/dist/script/conversion.js.map +1 -0
  64. package/dist/script/glyphs.d.ts +95 -0
  65. package/dist/script/glyphs.d.ts.map +1 -0
  66. package/dist/script/glyphs.js +236 -0
  67. package/dist/script/glyphs.js.map +1 -0
  68. package/dist/sources/opencc.d.ts +32 -0
  69. package/dist/sources/opencc.d.ts.map +1 -0
  70. package/dist/sources/opencc.js +50 -0
  71. package/dist/sources/opencc.js.map +1 -0
  72. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,8 +9,124 @@ which a dictionary rebuild can change, and the artifact format under `data/`.
9
9
 
10
10
  ## Unreleased
11
11
 
12
+ ### Fixed
13
+
14
+ - **240 dictionary entries could not be looked up at all.** Recognising Hong
15
+ Kong glyph forms on the lookup path means a key written in a form the path
16
+ normalises _away from_ can never be found, and the merge derived 繁體 forms
17
+ per word from Unihan's variant lists with no single standard behind them — so
18
+ it wrote 裏 where the corpus overwhelmingly writes 裡, and 上樑, 中峯 and 义藴
19
+ became keys nothing could reach. The merge now derives canonical glyph forms,
20
+ and keys a headword's canonical spelling alongside it where the phrase corpus
21
+ wrote one with a 繁體 variant. **No key is now unreachable**, and Hong Kong
22
+ spellings resolve slightly better than before: 5,499 of the 9,978 keys with a
23
+ distinct Hong Kong form, against 5,439.
24
+
25
+ Two things had to be got right alongside it. The evidence for "简体 writes
26
+ this character" comes from CC-CEDICT entries whose two columns differ, not
27
+ from the phrase corpus, which is nominally 简体 but carries 峯, 藴 and 枱 of
28
+ its own — counting it cut the table from 50 mappings to 32 and stopped Hong
29
+ Kong text converting at all. And a 繁體 form differing from its 简体 one only
30
+ by glyph normalisation is not evidence about script, or the alias key would
31
+ put that entry's 简体 characters into the 繁體-only set, which is how 发
32
+ briefly stopped being 简体-only.
33
+
34
+ `toScript` drops the pass that was papering over this. Key counts move:
35
+ 723,149 for `full`, 97,997 for `standard`, 16,975 for `core`.
36
+
12
37
  ### Added
13
38
 
39
+ - **`convertToHtml` declares what language it is emitting.** Every syllable
40
+ element now carries `lang="zh-Latn-CN-pinyin"`, or `zh-Latn-TW-pinyin` where
41
+ the conversion read `zh-TW`. Nothing about `yín` on its own says it is
42
+ Mandarin in the Latin alphabet, so without the tag a screen reader pronounces
43
+ it as whatever the surrounding page claims to be — English, usually — and the
44
+ browser hyphenates it that way too. The subtags are all registered, and the
45
+ `pinyin` variant's prefix in the IANA registry is `zh-Latn`.
46
+
47
+ **This changes the markup existing callers get**, which is why it is worth
48
+ saying plainly: the classes are unchanged, and `lang` is a new attribute
49
+ between `class` and `data-alternatives`. `lang: false` — `--no-lang` at the
50
+ command line — leaves it off, for a caller who would rather declare the
51
+ language once on a wrapper of their own than repeat it on every syllable.
52
+
53
+ - **`pinyinjs script`,** script conversion at the command line, with `--to` for
54
+ the target and `--from-script` where the text is too short for detection to
55
+ tell. The lines carry the converted text and nothing else so it pipes;
56
+ `--json` carries the per-character evidence and what was uncertain. Also a
57
+ [script conversion](docs/script-conversion/) page, which the README and the
58
+ docs index now point at — `toScript` shipped with one row in the API table
59
+ and nothing a reader would find.
60
+
61
+ - **`toScript`,** 简体 ↔ 繁體 conversion. 我们后来发现了头发问题 is
62
+ 我們後來發現了頭髮問題. The reading is the evidence, in both directions, and it
63
+ is what nothing else in this space has: 发 is 發 or 髮 and only `fà` tells them
64
+ apart; 干 is 幹, 乾 or 干; 乾 stays 乾 in 乾隆 and simplifies to 干 in 乾燥.
65
+ Every other converter resolves these from a phrase table alone. This one
66
+ segments with the lattice and reads the result, so it generalises to words no
67
+ phrase table lists.
68
+
69
+ Evidence is taken strongest first — a word some source wrote in both scripts,
70
+ then the character at the reading it was decoded with, then the character's
71
+ commonest form — and `toScriptPieces` reports which of those settled every
72
+ character. `isUncertainChoice` marks the last one, the only case that is a
73
+ guess: 下面 is a surface or a bowl of noodles and nothing here can tell, so it
74
+ says so rather than picking silently. Over the gold corpus 97.7% of characters
75
+ are locked and 1.5% are guesses.
76
+
77
+ Targets are BCP-47: `zh-Hans`, `zh-Hant`, `zh-Hant-TW`, `zh-Hant-HK`, with a
78
+ bare `zh-Hant` taking Taiwan. The input script is detected unless `from` names
79
+ it, which matters more than it sounds — plenty of characters are current in
80
+ both scripts, so running 繁體 through the 简→繁 tables would turn 准將 into
81
+ 準將.
82
+
83
+ **This is orthography, not translation.** 軟體 and 软件 are different words
84
+ rather than two spellings of one. OpenCC folds that into script conversion
85
+ with `s2twp`; pinyinjs does not.
86
+
87
+ - **`data/script.map`,** the conversion tables, as their own fetchable file:
88
+ 282 KB, 96 KB brotli, loaded by `loadScriptTables` only when something asks
89
+ to convert. A caller converting hanzi to pinyin pays nothing for it. The
90
+ character tables alone are right for 99.13% of the 267,639 entries whose two
91
+ scripts differ, and the word exception lists cover the rest.
92
+
93
+ - **`hansOnly` and `hantOnly`,** the character sets `detectScript` has always
94
+ taken and nothing shipped. They ride in the same file.
95
+
96
+ - **Round-trip scoring in `pnpm accuracy`.** 繁→简 is near-deterministic, so
97
+ 简→繁→简 has to be the identity for essentially every key — half a million
98
+ cases with no hand-labelling, and every failure a real defect. It reports
99
+ 99.6% over the words in use and 99.3% over every key. The reverse trip is
100
+ lossy by design and is reported rather than targeted.
101
+
102
+ - **Hong Kong 繁體 glyph forms are recognised on the lookup path.** Taiwan and
103
+ Hong Kong write the same characters with the same readings and disagree about
104
+ the standard form of 58 of them — 裡 against 裏, 群 against 羣, 麵 against 麪.
105
+ Hong Kong spellings were missing dictionary keys and falling back to
106
+ converting character by character, so 羣眾 and 麪包 read worse than 群眾 and
107
+ 麵包 did. The lookup path now normalises 繁體 glyph forms to the Taiwan
108
+ standard the keys are already built from: measured over the 9,833 keys with a
109
+ distinct Hong Kong spelling, 2,358 were already keys and normalisation reaches
110
+ a further 5,439. Only the reading is taken from the normalised form — the
111
+ characters a caller gets back are the ones they wrote. `toCanonicalGlyphs`,
112
+ `toRegionalGlyphs` and the `Region` type are exported for it, and
113
+ SCRIPTS-AND-LOCALES.md carries the reasoning.
114
+
115
+ Nineteen of OpenCC's mappings are deliberately not applied, because the
116
+ variant is a live spelling rather than a regional one. Six are current 繁體 —
117
+ 台 appears 164 times in CC-CEDICT against 臺's 208 — and thirteen are current
118
+ **简体**, because the PRC simplification adopted the same 新字形 conventions
119
+ Hong Kong did: 着, 温, 脱, 户, 税, 卧, 悦, 兑, 葱, 幺, 棱, 檐, 痹. Normalising
120
+ those would have rewritten 简体 text, and 走着 `zǒuzhe` is the case that
121
+ caught it.
122
+
123
+ - **OpenCC as a data source.** Its 简体 ↔ 繁體 character tables and the Taiwan
124
+ and Hong Kong variant tables, Apache-2.0, attributed in `NOTICE`. The glyph
125
+ tables are held in `src/script/glyphs.ts` as code rather than shipped as an
126
+ artifact, since 120 mappings do not justify a download and they have to work
127
+ before any dictionary has loaded; `pnpm build:data` re-derives them from
128
+ OpenCC and fails the build if the two have drifted.
129
+
14
130
  - **`slug`,** hanzi to a URL-safe slug: 我想学中文。 is
15
131
  `wo3-xiang3-xue2-zhong1wen2`. Built on the decode rather than on a finished
16
132
  string, which is the whole point of it — 银行 is `yin2hang2` and not
@@ -236,14 +352,14 @@ decoder internals and the build pipeline.
236
352
 
237
353
  ### Accuracy at 1.0.0
238
354
 
239
- Over the 118-case gold corpus, which is committed to the repository rather than
355
+ Over the 124-case gold corpus, which is committed to the repository rather than
240
356
  to the published package, and scored by `pnpm accuracy`:
241
357
 
242
358
  | | lattice | greedy baseline |
243
359
  | ---------------- | --------: | --------------: |
244
- | exact match | **97.5%** | 88.1% |
360
+ | exact match | **97.6%** | 88.7% |
245
361
  | reading accuracy | 99.7% | 98.3% |
246
- | spacing (F1) | **99.8%** | 96.3% |
362
+ | spacing (F1) | **99.8%** | 96.4% |
247
363
 
248
364
  Every figure in that table is asserted against the scorer by
249
365
  `src/changelog.test.ts`, because a number nothing executes goes stale, which is
package/NOTICE CHANGED
@@ -32,6 +32,15 @@ Source: https://raw.githubusercontent.com/fxsjy/jieba/master/jieba/dict.txt
32
32
  Licence: MIT, though the dictionary's own provenance is not documented upstream; recorded here as an accepted unknown
33
33
  Provides: word frequencies and the part-of-speech tags that mark proper nouns
34
34
 
35
+ ## OpenCC
36
+
37
+ Source: https://raw.githubusercontent.com/BYVoid/OpenCC/master/data/dictionary/STCharacters.txt
38
+ https://raw.githubusercontent.com/BYVoid/OpenCC/master/data/dictionary/TSCharacters.txt
39
+ https://raw.githubusercontent.com/BYVoid/OpenCC/master/data/dictionary/TWVariants.txt
40
+ https://raw.githubusercontent.com/BYVoid/OpenCC/master/data/dictionary/HKVariants.txt
41
+ Licence: Apache-2.0
42
+ Provides: the 简体 ↔ 繁體 character tables, and the Taiwan and Hong Kong glyph form tables that separate 裡 from 裏 and 群 from 羣
43
+
35
44
  ## Comparison of Standard Chinese transcription systems (Wikipedia)
36
45
 
37
46
  Source: https://en.wikipedia.org/wiki/Comparison_of_Standard_Chinese_transcription_systems
package/README.md CHANGED
@@ -32,6 +32,9 @@ yin2hang2
32
32
  $ pinyinjs slug 我想学中文。
33
33
  wo3-xiang3-xue2-zhong1wen2
34
34
 
35
+ $ pinyinjs script 我们后来发现了头发问题 --to zh-Hant
36
+ 我們後來發現了頭髮問題
37
+
35
38
  $ pinyinjs explain 银行
36
39
  银行 yínháng
37
40
  yín locked
@@ -57,6 +60,7 @@ běijīng běijīng ㄅㄟˇ ㄐㄧㄥ pei³-ching¹ běijīng beeij
57
60
  | `convert` | hanzi to pinyin |
58
61
  | `html` | the same, as HTML |
59
62
  | `slug` | hanzi to a URL-safe slug |
63
+ | `script` | 简体 ↔ 繁體 conversion |
60
64
  | `explain` | each syllable, how settled it was, and what it beat |
61
65
  | `lookup` | what the dictionary holds for a word |
62
66
  | `syllable` | take written pinyin apart |
@@ -181,7 +185,6 @@ convert(dictionary, text, { notation: "numbers", capitals: "none" });
181
185
  | `punctuation` | `"latin"` | `"latin"`, `"keep"` |
182
186
  | `grouping` | `true` | `false` turns off GB/T 16159 word spacing |
183
187
  | `numbers` | `"read"` | `"keep"` leaves every digit as it was written |
184
- | `numbers` | `"read"` | `"keep"` leaves every digit as it was written |
185
188
  | `sandhi` | `{ yiBu: true, thirdTone: false }` | `{ yiBu?: boolean; thirdTone?: boolean }` |
186
189
 
187
190
  ```ts
@@ -323,13 +326,15 @@ evidence there was, not as a probability.
323
326
  import { convertToHtml } from "@kensio/pinyinjs";
324
327
 
325
328
  convertToHtml(dictionary, "行");
326
- // <span class="py-syllable py-tone-2 py-uncertain"
329
+ // <span class="py-syllable py-tone-2 py-uncertain" lang="zh-Latn-CN-pinyin"
327
330
  // data-alternatives="háng héng hàng">xíng</span>
328
331
  ```
329
332
 
330
333
  One element per syllable, with `py-tone-1` to `py-tone-5` (5 is the neutral
331
334
  tone), and `py-uncertain` plus the rejected readings where the decoder was
332
- guessing. Text that is not Han is escaped, not marked up. No styles are
335
+ guessing. Each one declares itself pinyin — `zh-Latn-TW-pinyin` for a `zh-TW`
336
+ conversion — so that a screen reader does not read it as the language of the
337
+ page around it. Text that is not Han is escaped, not marked up. No styles are
333
338
  included, so write your own:
334
339
 
335
340
  ```css
@@ -341,9 +346,8 @@ included, so write your own:
341
346
  }
342
347
  ```
343
348
 
344
- Takes any `convert` option, plus `toneClasses: false` and
345
- `markUncertain: false`. `toHtml(pieces, options)` renders pieces you already
346
- have.
349
+ Takes any `convert` option, plus `toneClasses: false`, `markUncertain: false`
350
+ and `lang: false`. `toHtml(pieces, options)` renders pieces you already have.
347
351
 
348
352
  ## Look words up
349
353
 
@@ -531,16 +535,57 @@ Third-tone sandhi is off by default: standard orthography writes 你好 as
531
535
 
532
536
  ## Scripts and locales
533
537
 
534
- Script and locale are separate options: Taiwan writes 繁體 with `zh-TW`
535
- readings, but mainland editions of classical texts use 繁體 with `zh-CN`
536
- readings, and Singapore uses 简体.
538
+ Three axes, not one. Taiwan writes 繁體 with `zh-TW` readings, but mainland
539
+ editions of classical texts use 繁體 with `zh-CN` readings, and Singapore uses
540
+ 简体.
541
+
542
+ | Axis | Values | What differs |
543
+ | ----------- | ----------------- | ------------------------------- |
544
+ | Script | `Hans` / `Hant` | which characters are written |
545
+ | Glyph forms | `TW` / `HK` | which 繁體 standard writes them |
546
+ | Locale | `zh-CN` / `zh-TW` | how they are read |
547
+
548
+ Both scripts are dictionary keys, so only the locale is an option to pass. Hong
549
+ Kong's 繁體 forms are recognised on the way in, so 羣眾 and 麪包 read exactly as
550
+ 群眾 and 麵包 do.
551
+
552
+ ## Simplified and traditional
553
+
554
+ `toScript` converts between the scripts, and the reading is what makes it
555
+ accurate. Simplification merged distinct characters; the reading un-merges them.
556
+
557
+ ```ts
558
+ import { loadScriptTables, toScript } from "@kensio/pinyinjs";
559
+
560
+ const tables = await loadScriptTables(source);
561
+
562
+ toScript(dictionary, tables, "我们后来发现了头发问题", { to: "zh-Hant" });
563
+ // "我們後來發現了頭髮問題"
564
+
565
+ toScript(dictionary, tables, "头发", { to: "zh-Hant" }); // "頭髮", tóufà
566
+ toScript(dictionary, tables, "出发", { to: "zh-Hant" }); // "出發", chūfā
567
+ ```
568
+
569
+ 发 is 發 or 髮 and nothing about the character says which. Every other converter
570
+ works from phrase tables alone, so it is right about the words on the list and
571
+ guessing past it.
572
+
573
+ It runs both ways — 乾燥 is `gānzào` and simplifies to 干燥, while 乾隆 is
574
+ `Qiánlóng` and stays 乾隆 — and it targets a region, because there is no
575
+ region-free 繁體:
576
+
577
+ ```ts
578
+ toScript(dictionary, tables, "面包", { to: "zh-Hant-TW" }); // "麵包"
579
+ toScript(dictionary, tables, "面包", { to: "zh-Hant-HK" }); // "麪包"
580
+ ```
537
581
 
538
- | Axis | Values | What differs |
539
- | ------ | ----------------- | ---------------------------- |
540
- | Script | `Hans` / `Hant` | which characters are written |
541
- | Locale | `zh-CN` / `zh-TW` | how they are read |
582
+ `toScriptPieces` reports what settled each character, and which were guesses:
583
+ 下面 is a surface or a bowl of noodles, both `xiàmiàn`, and it says so rather
584
+ than picking silently. The tables load separately from the dictionary, so
585
+ converting hanzi to pinyin costs nothing for them.
542
586
 
543
- Both scripts are dictionary keys, so only the locale is an option to pass.
587
+ This is orthography and not translation — 软件 becomes 軟件, never 軟體. See
588
+ [script conversion](docs/script-conversion/).
544
589
 
545
590
  ## API
546
591
 
package/data/core.entries CHANGED
@@ -714,7 +714,6 @@ liao2 n
714
714
  qi1 zg
715
715
  cheng1 zg
716
716
  chan2 zg
717
- wei3 wei4 j
718
717
  ji1
719
718
  bo1
720
719
  hui4 zg
@@ -1771,7 +1770,6 @@ nie4 zg
1771
1770
  xuan1 v
1772
1771
  liang4 zg
1773
1772
  sang4 sang1
1774
- chi1 v
1775
1773
  qiao2
1776
1774
  yan4
1777
1775
  dan1 chan2,shan4
@@ -5081,7 +5079,6 @@ mi3 g
5081
5079
  chu4 zg
5082
5080
  ge2 zg
5083
5081
  di2 ng
5084
- xu4 ns p
5085
5082
  jiao4 zg
5086
5083
  min3 ag
5087
5084
  jiu4 v
@@ -7133,6 +7130,7 @@ cui3 zg
7133
7130
  ti2 zg
7134
7131
  yang4 zg
7135
7132
  jiang1
7133
+ cong2
7136
7134
  ying3
7137
7135
  xiu3 zg
7138
7136
  shu4 zg
@@ -10024,7 +10022,6 @@ quan3
10024
10022
  qi2 nr
10025
10023
  zhun3
10026
10024
  qian4
10027
- xian4 n
10028
10025
  shou4
10029
10026
  wei2 zg
10030
10027
  qing4 zg qi3,qing3
@@ -10179,7 +10176,6 @@ hui4
10179
10176
  xi4
10180
10177
  se4 zg
10181
10178
  jian3
10182
- jiang1 n
10183
10179
  huan2 zg
10184
10180
  zao3
10185
10181
  xie4 zg
@@ -10756,7 +10752,6 @@ lie4
10756
10752
  shan1
10757
10753
  ting3
10758
10754
  mei2
10759
- chun2
10760
10755
  shen4
10761
10756
  qian3 zg
10762
10757
  de5 te5
@@ -12201,7 +12196,6 @@ jie2
12201
12196
  na4 g
12202
12197
  yi4
12203
12198
  zhong1 d
12204
- zhi3 d zhi1
12205
12199
  xie2
12206
12200
  ren4 zg
12207
12201
  qin1 zg
@@ -12589,7 +12583,6 @@ gao4
12589
12583
  song4
12590
12584
  hui4
12591
12585
  shuo1 zg
12592
- shuo1
12593
12586
  chang4 zg
12594
12587
  shui2 zg
12595
12588
  ke4
@@ -14155,7 +14148,6 @@ na4
14155
14148
  e2 zg
14156
14149
  jue2
14157
14150
  dun4
14158
- gou1
14159
14151
  qian2
14160
14152
  ban3
14161
14153
  sa4 zg
@@ -14206,7 +14198,6 @@ fu2
14206
14198
  yue4
14207
14199
  pi1
14208
14200
  yang1 zg
14209
- bo1 ng
14210
14201
  gou1 zg
14211
14202
  shu4
14212
14203
  zheng1
@@ -14403,7 +14394,6 @@ jian4
14403
14394
  jian4
14404
14395
  si1 ng
14405
14396
  zhe3 n
14406
- zhen1 p
14407
14397
  zhong1 zg
14408
14398
  zi1 zg
14409
14399
  xiu1 zg
@@ -16107,7 +16097,6 @@ ba4 zg
16107
16097
  you2 zg
16108
16098
  gun3 zg
16109
16099
  pi1
16110
- nian2
16111
16100
  tai2
16112
16101
  bao4
16113
16102
  fu4
@@ -16722,7 +16711,6 @@ mai4 zg
16722
16711
  mai4 nr p
16723
16712
  chao3
16724
16713
  fu1 zg
16725
- mian4 n mian5
16726
16714
  mian4
16727
16715
  qu4
16728
16716
  qu1 qu2 q qu3
package/data/core.freq CHANGED
Binary file
package/data/core.keys CHANGED
@@ -714,7 +714,6 @@ B
714
714
  僛
715
715
  僜
716
716
  僝
717
- 僞
718
717
  僟
719
718
  僠
720
719
  僡
@@ -1771,7 +1770,6 @@ B
1771
1770
  喧
1772
1771
  喨
1773
1772
  喪
1774
- 喫
1775
1773
  喬
1776
1774
  喭
1777
1775
  單
@@ -5081,7 +5079,6 @@ B
5081
5079
  敊
5082
5080
  敋
5083
5081
  敌
5084
- 敍
5085
5082
  敎
5086
5083
  敏
5087
5084
  救
@@ -7133,6 +7130,7 @@ B
7133
7130
  漽
7134
7131
  漾
7135
7132
  漿
7133
+ 潀
7136
7134
  潁
7137
7135
  潃
7138
7136
  潄
@@ -10024,7 +10022,6 @@ B
10024
10022
  綦
10025
10023
  綧
10026
10024
  綪
10027
- 綫
10028
10025
  綬
10029
10026
  維
10030
10027
  綮
@@ -10179,7 +10176,6 @@ B
10179
10176
  繫
10180
10177
  繬
10181
10178
  繭
10182
- 繮
10183
10179
  繯
10184
10180
  繰
10185
10181
  繲
@@ -10756,7 +10752,6 @@ B
10756
10752
  脠
10757
10753
  脡
10758
10754
  脢
10759
- 脣
10760
10755
  脤
10761
10756
  脥
10762
10757
  脦
@@ -12201,7 +12196,6 @@ B
12201
12196
  衲
12202
12197
  衵
12203
12198
  衷
12204
- 衹
12205
12199
  衺
12206
12200
  衽
12207
12201
  衾
@@ -12589,7 +12583,6 @@ B
12589
12583
  誦
12590
12584
  誨
12591
12585
  說
12592
- 説
12593
12586
  誯
12594
12587
  誰
12595
12588
  課
@@ -14155,7 +14148,6 @@ B
14155
14148
  鈋
14156
14149
  鈌
14157
14150
  鈍
14158
- 鈎
14159
14151
  鈐
14160
14152
  鈑
14161
14153
  鈒
@@ -14206,7 +14198,6 @@ B
14206
14198
  鉞
14207
14199
  鉟
14208
14200
  鉠
14209
- 鉢
14210
14201
  鉤
14211
14202
  鉥
14212
14203
  鉦
@@ -14403,7 +14394,6 @@ B
14403
14394
  鍵
14404
14395
  鍶
14405
14396
  鍺
14406
- 鍼
14407
14397
  鍾
14408
14398
  鍿
14409
14399
  鎀
@@ -16107,7 +16097,6 @@ B
16107
16097
  鮋
16108
16098
  鮌
16109
16099
  鮍
16110
- 鮎
16111
16100
  鮐
16112
16101
  鮑
16113
16102
  鮒
@@ -16722,7 +16711,6 @@ B
16722
16711
  麦
16723
16712
  麨
16724
16713
  麩
16725
- 麪
16726
16714
  麫
16727
16715
  麮
16728
16716
  麯