@kensio/pinyinjs 1.1.0 → 1.2.1

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 (38) hide show
  1. package/CHANGELOG.md +48 -4
  2. package/data/core.entries +89 -89
  3. package/data/full.entries +257 -257
  4. package/data/manifest.json +6 -6
  5. package/data/standard.entries +102 -102
  6. package/dist/cli/commands.d.ts +8 -0
  7. package/dist/cli/commands.d.ts.map +1 -1
  8. package/dist/cli/commands.js +6 -1
  9. package/dist/cli/commands.js.map +1 -1
  10. package/dist/decode/convert.d.ts.map +1 -1
  11. package/dist/decode/convert.js +31 -12
  12. package/dist/decode/convert.js.map +1 -1
  13. package/dist/dictionary/assertions.d.ts.map +1 -1
  14. package/dist/dictionary/assertions.js +20 -0
  15. package/dist/dictionary/assertions.js.map +1 -1
  16. package/dist/dictionary/locale.d.ts +55 -0
  17. package/dist/dictionary/locale.d.ts.map +1 -0
  18. package/dist/dictionary/locale.js +323 -0
  19. package/dist/dictionary/locale.js.map +1 -0
  20. package/dist/dictionary/merge.d.ts +3 -1
  21. package/dist/dictionary/merge.d.ts.map +1 -1
  22. package/dist/dictionary/merge.js +54 -10
  23. package/dist/dictionary/merge.js.map +1 -1
  24. package/dist/format/transcription.d.ts +22 -1
  25. package/dist/format/transcription.d.ts.map +1 -1
  26. package/dist/format/transcription.js +6 -2
  27. package/dist/format/transcription.js.map +1 -1
  28. package/dist/index.d.ts +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/numerals/text.d.ts +5 -4
  32. package/dist/numerals/text.d.ts.map +1 -1
  33. package/dist/numerals/text.js +26 -1
  34. package/dist/numerals/text.js.map +1 -1
  35. package/dist/orthography/capitals.d.ts.map +1 -1
  36. package/dist/orthography/capitals.js +25 -8
  37. package/dist/orthography/capitals.js.map +1 -1
  38. package/package.json +1 -1
@@ -0,0 +1,323 @@
1
+ import { isSingleCharacter, toCharacters } from "../script/characters.js";
2
+ import { isSameReading } from "./entry.js";
3
+ import { FrequencyTable } from "./frequency-table.js";
4
+ /**
5
+ * Compounds whose constituent's 國語 reading must not be carried over.
6
+ *
7
+ * The composition below only fires where the compound reads its constituent
8
+ * exactly as that constituent's own entry does, which rules out most of the ways
9
+ * it could be wrong. What it cannot rule out is a homograph: two words spelled
10
+ * and read identically in 普通话, of which only one shifts in 國語. 相亲 is
11
+ * `xiāngqīn` either way when it means "mutually close" and `xiàngqīn` in Taiwan
12
+ * when it means a matchmaking meeting, and nothing in the data distinguishes the
13
+ * two senses.
14
+ *
15
+ * **Keep this small**, for the same reason
16
+ * {@link import("./overrides.js").READING_OVERRIDES} is kept small. Three
17
+ * exclusions against the 100 compounds the composition settles is the measured
18
+ * ratio; a list growing much past that would mean the alignment check has
19
+ * stopped carrying its weight and the rule itself needs revisiting.
20
+ */
21
+ export const LOCALE_COMPOSITION_EXCLUSIONS = [
22
+ {
23
+ word: "相亲相爱",
24
+ reason: "相亲 here is 相 + 亲 in the reciprocal sense, `xiāngqīn`, not the matchmaking word that reads `xiàngqīn` in 國語.",
25
+ },
26
+ {
27
+ word: "腹背相亲",
28
+ reason: "The same reciprocal 相亲, so the same reading in both locales.",
29
+ },
30
+ {
31
+ word: "洋为中用",
32
+ reason: "中 is 中国 and 用 is its own verb: 洋为中用 is not built on the word 中用, which is what reads `zhòngyòng` in 國語.",
33
+ },
34
+ ];
35
+ /**
36
+ * The exclusions as a set, for the composition to consult.
37
+ */
38
+ const EXCLUDED = new Set(LOCALE_COMPOSITION_EXCLUSIONS.map((exclusion) => exclusion.word));
39
+ /**
40
+ * What each word in a segmentation costs on top of its frequency.
41
+ *
42
+ * The same charge, and for the same reason, as `READING_CHARGE` in
43
+ * `src/decode/lattice.ts`: it orders candidate segmentations by fewest words
44
+ * first and frequency second. That ordering is what decides 皮夹克 is 皮 + 夹克
45
+ * rather than 皮夹 + 克, which is the difference between leaving `pí jiákè`
46
+ * alone and mistaking it for the wallet 皮夹 that reads `pí jiá` in 國語.
47
+ *
48
+ * Duplicated rather than imported because the decoder sits above the dictionary
49
+ * and must not be depended on from inside it. The two are kept in step by
50
+ * `src/dictionary/locale.test.ts`, which asserts the segmentations this value
51
+ * produces rather than the value itself.
52
+ */
53
+ const WORD_CHARGE = 16;
54
+ /**
55
+ * Every key an entry answers to, under either script.
56
+ */
57
+ function keysOf(entry) {
58
+ return [entry.hans, entry.hant, ...(entry.hantVariants ?? [])];
59
+ }
60
+ /**
61
+ * A compound's constituent words, and the readings they carry.
62
+ *
63
+ * Indexed by every key an entry claims, so that a 繁體 headword segments into
64
+ * 繁體 constituents. Headwords are set first and never displaced, which is the
65
+ * same precedence the artifact and the build assertions use: 发 and 髮 both claim
66
+ * 发, and the entry the key names has to win.
67
+ */
68
+ class ConstituentIndex {
69
+ #byKey;
70
+ #cost;
71
+ /**
72
+ * Index entries by key, quantising their frequencies the way the decoder will.
73
+ */
74
+ constructor(entries) {
75
+ const byKey = new Map();
76
+ for (const entry of entries) {
77
+ byKey.set(entry.hans, entry);
78
+ }
79
+ for (const entry of entries) {
80
+ for (const form of keysOf(entry)) {
81
+ if (!byKey.has(form)) {
82
+ byKey.set(form, entry);
83
+ }
84
+ }
85
+ }
86
+ // Costs come from the same quantised table the artifact ships, so that a
87
+ // segmentation decided here is the one the decoder would have reached.
88
+ const table = FrequencyTable.build(entries.map((entry) => entry.frequency));
89
+ const byEntry = new Map();
90
+ for (const [at, entry] of entries.entries()) {
91
+ byEntry.set(entry, table.costOf(at));
92
+ }
93
+ const cost = new Map();
94
+ for (const [key, entry] of byKey) {
95
+ /* c8 ignore next -- every key was indexed from one of these entries */
96
+ cost.set(key, (byEntry.get(entry) ?? 0) + WORD_CHARGE);
97
+ }
98
+ this.#byKey = byKey;
99
+ this.#cost = cost;
100
+ }
101
+ /**
102
+ * Relax every word starting at one position, improving the costs it reaches.
103
+ *
104
+ * One step of the shortest-path scan, lifted out of its enclosing loop.
105
+ */
106
+ #relaxFrom(word, characters, from, best, previous) {
107
+ /* c8 ignore next -- the caller only relaxes from a position in range */
108
+ const reached = best[from] ?? Infinity;
109
+ let candidate = "";
110
+ for (let to = from; to < characters.length; to++) {
111
+ /* c8 ignore next -- the loop condition keeps the index in range */
112
+ candidate += characters[to] ?? "";
113
+ // The whole word is not a segmentation of itself.
114
+ const entry = candidate === word ? undefined : this.#byKey.get(candidate);
115
+ const total = reached + this.costOf(candidate);
116
+ /* c8 ignore next -- `to + 1` is at most `length`, which `best` holds */
117
+ if (entry !== undefined && total < (best[to + 1] ?? Infinity)) {
118
+ best[to + 1] = total;
119
+ previous[to + 1] = { entry, text: candidate, from, to: to + 1 };
120
+ }
121
+ }
122
+ }
123
+ /**
124
+ * What a key costs a segmentation that uses it.
125
+ */
126
+ costOf(key) {
127
+ /* c8 ignore next -- only asked about keys the index just returned */
128
+ return this.#cost.get(key) ?? WORD_CHARGE;
129
+ }
130
+ /**
131
+ * The likeliest way to cut a word into *other* dictionary words.
132
+ *
133
+ * The whole word is excluded from its own segmentation, which is the point:
134
+ * 垃圾分类 is a dictionary word, so a decoder handed the text would stop there
135
+ * and never ask what it is made of. This asks anyway.
136
+ *
137
+ * Returns undefined when no path of known words covers the word, which is
138
+ * common — most compounds contain a character no shorter word claims.
139
+ */
140
+ segment(word) {
141
+ const characters = toCharacters(word);
142
+ const length = characters.length;
143
+ const best = Array.from({ length: length + 1 }, () => Infinity);
144
+ const previous = Array.from({ length: length + 1 });
145
+ best[0] = 0;
146
+ for (let from = 0; from < length; from++) {
147
+ /* c8 ignore next -- the loop condition keeps the index in range */
148
+ if ((best[from] ?? Infinity) !== Infinity) {
149
+ this.#relaxFrom(word, characters, from, best, previous);
150
+ }
151
+ }
152
+ /* c8 ignore next -- `best` is built one longer than the word */
153
+ if ((best[length] ?? Infinity) === Infinity) {
154
+ return undefined;
155
+ }
156
+ const path = [];
157
+ let at = length;
158
+ while (at > 0) {
159
+ const step = previous[at];
160
+ /* c8 ignore next 3 -- a finite cost at `at` means a step reached it */
161
+ if (step === undefined) {
162
+ return undefined;
163
+ }
164
+ path.unshift(step);
165
+ at = step.from;
166
+ }
167
+ return path;
168
+ }
169
+ }
170
+ /**
171
+ * The 國語 reading a compound inherits from its constituents, or undefined.
172
+ *
173
+ * Only a **multi-character** constituent may contribute. A character's delta
174
+ * reaches every compound that character appears in, and surviving the merge's
175
+ * sense test — see `isOwnSense` — does not make one locale-wide. 期 carries
176
+ * `qí`, which 國語 really does read everywhere, but 會 carries `huǐ`, and
177
+ * propagating it would rewrite 三合会 as `sānhéhuǐ`. Measured on the full
178
+ * dictionary, allowing characters to contribute composes 3,743 entries against
179
+ * the 101 that multi-character words compose.
180
+ */
181
+ function composedReading(entry, path, settled) {
182
+ const reading = entry.readings.cn;
183
+ const composed = [];
184
+ let isContributed = false;
185
+ for (const part of path) {
186
+ const span = reading.slice(part.from, part.to);
187
+ // A constituent an earlier round composed counts as carrying a delta, which
188
+ // is what lets 中看不中用 inherit through 不中用.
189
+ const taiwan = settled.get(part.entry.hans) ?? part.entry.readings.tw;
190
+ if (taiwan === undefined || isSingleCharacter(part.text)) {
191
+ composed.push(...span);
192
+ continue;
193
+ }
194
+ // The compound has to read this constituent the way the constituent's own
195
+ // entry reads it. Where it does not, the compound is using another sense —
196
+ // 浑身解数 is `xiè shù` and 解数 is a word, but a compound reading `jiě shù`
197
+ // there would be a different word wearing the same characters, and its
198
+ // 國語 reading says nothing about this one.
199
+ if (!isSameReading(part.entry.readings.cn, span)) {
200
+ return undefined;
201
+ }
202
+ composed.push(...taiwan);
203
+ isContributed = true;
204
+ }
205
+ return isContributed ? composed : undefined;
206
+ }
207
+ /**
208
+ * Whether a compound can be asked what it is made of at all.
209
+ *
210
+ * A reading of one syllable per character is what lets a character span be cut
211
+ * out of the compound's reading and replaced. 儿化 folds two characters into one
212
+ * syllable and punctuation reads as none, so neither lines up and both are left
213
+ * alone.
214
+ */
215
+ function isComposable(entry) {
216
+ const characters = toCharacters(entry.hans);
217
+ return (characters.length > 2 &&
218
+ entry.readings.cn.length === characters.length &&
219
+ !EXCLUDED.has(entry.hans) &&
220
+ !EXCLUDED.has(entry.hant));
221
+ }
222
+ /**
223
+ * Whether any delta-carrying word appears inside this one.
224
+ *
225
+ * A cheap filter ahead of the segmentation: only a few hundred words carry a
226
+ * delta, against 461,623 entries, and enumerating one word's substrings costs
227
+ * far less than segmenting it.
228
+ */
229
+ function hasMarkedConstituent(word, marked) {
230
+ const characters = toCharacters(word);
231
+ return characters.some((_, from) => {
232
+ let candidate = "";
233
+ return characters.slice(from).some((character) => {
234
+ candidate += character;
235
+ return candidate !== word && marked.has(candidate);
236
+ });
237
+ });
238
+ }
239
+ /**
240
+ * How many times the pass may feed its own output back in.
241
+ *
242
+ * 中看不中用 needs two rounds: 不中用 is itself a compound with no delta of its
243
+ * own, so only once it has been composed can the phrase containing it inherit
244
+ * one. Nothing measured needs a third, and the bound is what stops a cycle in
245
+ * the data from turning into a loop here.
246
+ */
247
+ const ROUNDS = 4;
248
+ /**
249
+ * Give a compound the 國語 reading its constituents already carry.
250
+ *
251
+ * The gap this closes: `zh-TW` is a delta over `zh-CN`, and a source marks that
252
+ * delta on whichever headword it happened to list. CC-CEDICT marks 垃圾 and
253
+ * 垃圾桶 but not 垃圾分类, and because the decoder prefers the longest word it
254
+ * finds, 垃圾分类 is decoded whole and 垃圾's delta is never consulted — so a
255
+ * locale switch that visibly works on 垃圾 appears to do nothing on 垃圾分类.
256
+ * Patching the entries a source missed would be endless; the compounds are
257
+ * open-class and the marked words are not.
258
+ *
259
+ * Three things keep it from overreaching, and all three are load-bearing:
260
+ *
261
+ * 1. **Segmentation, not substring.** 运行状况 contains 行状, which carries a
262
+ * delta, but cuts as 运行 + 状况 and never as 运 + 行状 + 况.
263
+ * 2. **The constituent must be read here as its own entry reads it**, or the
264
+ * compound means something else by those characters.
265
+ * 3. **Only whole words contribute**, never single characters — see
266
+ * {@link composedReading} for what allowing them costs.
267
+ *
268
+ * What survives all three is a homograph the data cannot see, which is what
269
+ * {@link LOCALE_COMPOSITION_EXCLUSIONS} is for.
270
+ */
271
+ export function composeLocaleDeltas(entries) {
272
+ const index = new ConstituentIndex(entries);
273
+ // Only a compound containing a delta-carrying word can gain one, and there
274
+ // are a few hundred such words against 461,623 entries. Enumerating each
275
+ // entry's substrings against that set costs far less than segmenting every
276
+ // entry would.
277
+ const marked = new Set();
278
+ for (const entry of entries) {
279
+ if (entry.readings.tw !== undefined && !isSingleCharacter(entry.hans)) {
280
+ for (const key of keysOf(entry)) {
281
+ marked.add(key);
282
+ }
283
+ }
284
+ }
285
+ // Candidates are fixed after the first sweep: composing a delta never makes a
286
+ // new compound eligible, only changes what an eligible one inherits.
287
+ const candidates = entries.filter((entry) => entry.readings.tw === undefined &&
288
+ isComposable(entry) &&
289
+ hasMarkedConstituent(entry.hans, marked));
290
+ const settled = new Map();
291
+ /**
292
+ * Settle one compound, reporting whether that changed what it reads.
293
+ */
294
+ const didCompose = (entry) => {
295
+ const path = index.segment(entry.hans);
296
+ const reading = path === undefined ? undefined : composedReading(entry, path, settled);
297
+ // A composition that comes back identical to the 普通话 reading is not a
298
+ // delta at all, and one identical to the last round's is not news.
299
+ if (reading === undefined || isSameReading(reading, entry.readings.cn)) {
300
+ return false;
301
+ }
302
+ const held = settled.get(entry.hans);
303
+ if (held !== undefined && isSameReading(held, reading)) {
304
+ return false;
305
+ }
306
+ settled.set(entry.hans, reading);
307
+ return true;
308
+ };
309
+ for (let round = 0; round < ROUNDS; round++) {
310
+ const changed = candidates.filter((entry) => didCompose(entry)).length;
311
+ if (changed === 0) {
312
+ break;
313
+ }
314
+ }
315
+ const composed = entries.map((entry) => {
316
+ const reading = settled.get(entry.hans);
317
+ return reading === undefined
318
+ ? entry
319
+ : { ...entry, readings: { ...entry.readings, tw: reading } };
320
+ });
321
+ return { entries: composed, composed: settled.size };
322
+ }
323
+ //# sourceMappingURL=locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/dictionary/locale.ts"],"names":[],"mappings":"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"}
@@ -29,8 +29,10 @@ export interface MergeStats {
29
29
  readonly scriptPairs: number;
30
30
  /** Entries a source writes more than one 繁體 spelling of. */
31
31
  readonly variantSpellings: number;
32
- /** Entries carrying a zh-TW reading delta. */
32
+ /** Entries carrying a zh-TW reading delta a source stated. */
33
33
  readonly taiwanReadings: number;
34
+ /** Compounds given a zh-TW delta composed from their constituents. */
35
+ readonly composedTaiwanReadings: number;
34
36
  /**
35
37
  * Words jieba tagged a proper noun that CC-CEDICT's lowercase pinyin vetoed.
36
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,YAAY,CAAC;AAcjE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7D,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,8CAA8C;IAC9C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAyQD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,CAiS/D"}
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,YAAY,CAAC;AAejE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7D,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,sEAAsE;IACtE,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAqSD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,CAyT/D"}
@@ -5,6 +5,7 @@ import { FREQUENCY_FIELD, } from "../sources/unihan.js";
5
5
  import { NEUTRAL_TONE } from "../tone/tone.js";
6
6
  import { isSameReading } from "./entry.js";
7
7
  import { attachErhua, isErFinal, NON_ERHUA_ER_WORDS } from "./erhua.js";
8
+ import { composeLocaleDeltas } from "./locale.js";
8
9
  import { OVERRIDE_READINGS } from "./overrides.js";
9
10
  import { ERHUA_TOKEN, readAlignedReading, readDictionaryReading, } from "./reading.js";
10
11
  import { pairScripts, TraditionalTable, } from "./traditional.js";
@@ -18,14 +19,15 @@ function byCodeUnit(left, right) {
18
19
  return left > right ? 1 : 0;
19
20
  }
20
21
  /**
21
- * CC-CEDICT's entries for a word, keyed by its 简体 form.
22
+ * CC-CEDICT's entries for a word, keyed by one of its two written forms.
22
23
  */
23
- function indexCedict(cedict) {
24
+ function indexCedict(cedict, formOf) {
24
25
  const byWord = new Map();
25
26
  for (const entry of cedict) {
26
- const existing = byWord.get(entry.simplified);
27
+ const form = formOf(entry);
28
+ const existing = byWord.get(form);
27
29
  if (existing === undefined) {
28
- byWord.set(entry.simplified, [entry]);
30
+ byWord.set(form, [entry]);
29
31
  }
30
32
  else {
31
33
  existing.push(entry);
@@ -171,6 +173,28 @@ function cedictReadingsOf(word, entries) {
171
173
  .map((entry) => readDictionaryReading(word, entry.readings))
172
174
  .filter((reading) => reading !== undefined);
173
175
  }
176
+ /**
177
+ * Whether a proposed 國語 reading is really another 普通话 sense of the word.
178
+ *
179
+ * The test that separates a locale shift from a sense selection, which the
180
+ * sources write the same way and mean differently. 地 is offered `dì` against a
181
+ * 普通话 `de` — but CC-CEDICT lists 地[de5] and 地[di4] as two entries, so `dì`
182
+ * is what 地 reads in 普通话 when it means the ground, not what 國語 does to the
183
+ * particle. The adverbial 地 is `de` in Taipei too, and 4,240 entries end in it.
184
+ * 都 is the same shape, and so are 着, 应, 差, 称, 斗, 舍, 薄 and 万.
185
+ *
186
+ * A genuine delta leaves no such trace: nothing in 普通话 reads 和 as `hàn`, 期
187
+ * as `qí` or 垃 as `lè`, which is why those survive this and 71 characters and
188
+ * 3 words do not.
189
+ *
190
+ * Only CC-CEDICT is consulted. Unihan's reading fields carry rare and historical
191
+ * pronunciations alongside current ones — 驯 is listed `xún` somewhere in them —
192
+ * and a reading no one uses today is not evidence that a source meant a sense
193
+ * rather than a locale.
194
+ */
195
+ function isOwnSense(taiwan, senseReadings) {
196
+ return senseReadings.some((sense) => isSameReading(sense, taiwan));
197
+ }
174
198
  /**
175
199
  * Strip the tone marks from a reading, for comparing two spellings.
176
200
  */
@@ -241,7 +265,12 @@ function characterSyllable(character, reading) {
241
265
  */
242
266
  export function mergeSources(sources) {
243
267
  const { unihanReadings, unihanVariants, phrase, cedict, jieba } = sources;
244
- const cedictByWord = indexCedict(cedict);
268
+ const cedictByWord = indexCedict(cedict, (entry) => entry.simplified);
269
+ // Only ever read for {@link isOwnSense}. A 繁體-only headword keeps its senses
270
+ // under whichever 简体 form each one simplifies to — 沈 is `chén` under 沉 and
271
+ // 誰 is `shéi` under 谁 — so the 简体 index alone cannot say what a character
272
+ // like that already reads in 普通话.
273
+ const cedictByHant = indexCedict(cedict, (entry) => entry.traditional);
245
274
  // ── Character defaults, which every later step leans on ────
246
275
  const defaults = new Map();
247
276
  for (const [character, readings] of unihanReadings) {
@@ -280,6 +309,11 @@ export function mergeSources(sources) {
280
309
  for (const word of [...words].toSorted(byCodeUnit)) {
281
310
  const cedictEntries = cedictByWord.get(word) ?? [];
282
311
  const cedictReadings = cedictReadingsOf(word, cedictEntries);
312
+ // Every reading CC-CEDICT gives this spelling, under either script.
313
+ const senseReadings = [
314
+ ...cedictReadings,
315
+ ...cedictReadingsOf(word, cedictByHant.get(word) ?? []),
316
+ ];
283
317
  const phraseReading = phrase.get(word);
284
318
  const phraseAligned = phraseReading === undefined
285
319
  ? undefined
@@ -398,9 +432,12 @@ export function mergeSources(sources) {
398
432
  variantSpellings++;
399
433
  }
400
434
  // ── zh-TW delta ───────────────────────────────────────────
401
- const taiwanTokens = sense?.taiwanReadings ??
402
- cedictEntries.find((entry) => entry.taiwanReadings !== undefined)
403
- ?.taiwanReadings;
435
+ // Only from a sense that reads the way this entry reads. CC-CEDICT hangs
436
+ // `Taiwan pr.` on one sense of a headword and the others know nothing about
437
+ // it: 著 is marked `zhuó` on the chess-move sense that reads `zhāo`, and
438
+ // reaching across for it gave the aspect particle 着 a 國語 reading of
439
+ // `zhuó`.
440
+ const taiwanTokens = senses.find((entry) => entry.taiwanReadings !== undefined)?.taiwanReadings;
404
441
  const unihanTaiwan = unihanReadings.get(word)?.taiwanReading;
405
442
  let taiwan;
406
443
  if (taiwanTokens !== undefined) {
@@ -410,7 +447,8 @@ export function mergeSources(sources) {
410
447
  const syllable = characterSyllable(word, unihanTaiwan);
411
448
  taiwan = syllable === undefined ? undefined : [syllable];
412
449
  }
413
- if (taiwan !== undefined && isSameReading(taiwan, reading)) {
450
+ if (taiwan !== undefined &&
451
+ (isSameReading(taiwan, reading) || isOwnSense(taiwan, senseReadings))) {
414
452
  taiwan = undefined;
415
453
  }
416
454
  if (taiwan !== undefined) {
@@ -480,8 +518,13 @@ export function mergeSources(sources) {
480
518
  cedictWords++;
481
519
  }
482
520
  }
521
+ // ── zh-TW deltas the sources marked only on a constituent ──
522
+ // Last, because it segments each compound against the finished entries: the
523
+ // readings, both scripts' keys and the frequencies all have to be settled
524
+ // before a compound can be asked what it is made of.
525
+ const localised = composeLocaleDeltas(entries);
483
526
  return {
484
- entries,
527
+ entries: localised.entries,
485
528
  rejected,
486
529
  stats: {
487
530
  characters,
@@ -493,6 +536,7 @@ export function mergeSources(sources) {
493
536
  scriptPairs,
494
537
  variantSpellings,
495
538
  taiwanReadings,
539
+ composedTaiwanReadings: localised.composed,
496
540
  properNounVetoes,
497
541
  nameBoundaries,
498
542
  rejected: rejected.size,
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,24 @@ import type { Syllable } from "../syllable/syllable.js";
11
11
  * level.
12
12
  */
13
13
  export type WriteWord = (syllables: readonly Syllable[]) => string;
14
+ /**
15
+ * What a system wants of the capitals the conversion settled.
16
+ *
17
+ * `capitals` is whether the system writes them at all, and it defaults to true
18
+ * because a romanisation does: Wade-Giles, Yale and Gwoyeu Romatzyh are ways of
19
+ * writing Chinese in the Latin alphabet, so a proper noun and the first word of
20
+ * a sentence take a capital in each of them exactly as they do in pinyin.
21
+ *
22
+ * **IPA is not a romanisation and takes none.** It is a transcription, and its
23
+ * letters are symbols rather than an alphabet: `[T]` is not `[t]` in a larger
24
+ * size but a symbol the IPA does not have, and `[Tʰa˥]` for 他 is not a louder
25
+ * `[tʰa˥]` but nothing at all. Bopomofo is a script without case, so it says
26
+ * the same thing for a different reason — nothing there has a capital to write
27
+ * either.
28
+ */
29
+ export interface TranscriptionOptions {
30
+ readonly capitals?: boolean;
31
+ }
14
32
  /**
15
33
  * Write a conversion in another transcription system, word by word.
16
34
  *
@@ -36,8 +54,11 @@ export type WriteWord = (syllables: readonly Syllable[]) => string;
36
54
  *
37
55
  * Takes the pieces {@link convertPieces} produces, as `toHtml` does, so that
38
56
  * one conversion can be rendered more than one way.
57
+ *
58
+ * `{ capitals: false }` drops the capitals rather than carrying them over, for
59
+ * the systems that have none to write — see {@link TranscriptionOptions}.
39
60
  */
40
- export declare function toTranscription(pieces: readonly ConvertedPiece[], writeWord: WriteWord): string;
61
+ export declare function toTranscription(pieces: readonly ConvertedPiece[], writeWord: WriteWord, options?: TranscriptionOptions): string;
41
62
  /**
42
63
  * Convert hanzi to Wade-Giles, end to end.
43
64
  *
@@ -1 +1 @@
1
- {"version":3,"file":"transcription.d.ts","sourceRoot":"","sources":["../../src/format/transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,KAAK,MAAM,CAAC;AAuBnE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,SAAS,EAAE,SAAS,GACnB,MAAM,CA4BR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,MAAM,CASR"}
1
+ {"version":3,"file":"transcription.d.ts","sourceRoot":"","sources":["../../src/format/transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,KAAK,MAAM,CAAC;AAEnE;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,oBAAyB,GACjC,MAAM,CA6BR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,MAAM,CASR"}
@@ -44,8 +44,12 @@ function capitalised(text) {
44
44
  *
45
45
  * Takes the pieces {@link convertPieces} produces, as `toHtml` does, so that
46
46
  * one conversion can be rendered more than one way.
47
+ *
48
+ * `{ capitals: false }` drops the capitals rather than carrying them over, for
49
+ * the systems that have none to write — see {@link TranscriptionOptions}.
47
50
  */
48
- export function toTranscription(pieces, writeWord) {
51
+ export function toTranscription(pieces, writeWord, options = {}) {
52
+ const { capitals = true } = options;
49
53
  const written = [];
50
54
  let word = [];
51
55
  let hasCapital = false;
@@ -54,7 +58,7 @@ export function toTranscription(pieces, writeWord) {
54
58
  return;
55
59
  }
56
60
  const one = writeWord(word);
57
- written.push(hasCapital ? capitalised(one) : one);
61
+ written.push(hasCapital && capitals ? capitalised(one) : one);
58
62
  word = [];
59
63
  hasCapital = false;
60
64
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transcription.js","sourceRoot":"","sources":["../../src/format/transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAcpE;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,mEAAmE;IACnE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAiC,EACjC,SAAoB;IAEpB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,IAAI,GAAe,EAAE,CAAC;IAC1B,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,GAAG,EAAE,CAAC;QACV,UAAU,GAAG,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,wEAAwE;QACxE,yDAAyD;QACzD,UAAU,KAAK,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAsB,EACtB,IAAY,EACZ,OAAO,GAAmB,EAAE;IAE5B,OAAO,eAAe,CACpB,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,EACxC,CAAC,SAAS,EAAE,EAAE,CACZ,kBAAkB,CAChB,SAAS,EACT,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CACrD,CACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transcription.js","sourceRoot":"","sources":["../../src/format/transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAiCpE;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,mEAAmE;IACnE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAiC,EACjC,SAAoB,EACpB,OAAO,GAAyB,EAAE;IAElC,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACpC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,IAAI,GAAe,EAAE,CAAC;IAC1B,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,GAAG,EAAE,CAAC;QACV,UAAU,GAAG,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,wEAAwE;QACxE,yDAAyD;QACzD,UAAU,KAAK,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAsB,EACtB,IAAY,EACZ,OAAO,GAAmB,EAAE;IAE5B,OAAO,eAAe,CACpB,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,EACxC,CAAC,SAAS,EAAE,EAAE,CACZ,kBAAkB,CAChB,SAAS,EACT,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CACrD,CACJ,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -33,7 +33,7 @@ export { isUncertain, scoreReadings } from "./decode/confidence.js";
33
33
  export type { ReadingAlternative, ReadingConfidence, ScoredUnit, } from "./decode/confidence.js";
34
34
  export { decodeReadings, decodeRun, decodeRunScored, decodeSpacing, } from "./decode/decode.js";
35
35
  export { convertToHtml, toHtml } from "./format/html.js";
36
- export { convertToWadeGiles, toTranscription, type WriteWord, } from "./format/transcription.js";
36
+ export { convertToWadeGiles, toTranscription, type TranscriptionOptions, type WriteWord, } from "./format/transcription.js";
37
37
  export type { HtmlOptions } from "./format/html.js";
38
38
  export { decodeGreedily } from "./decode/greedy.js";
39
39
  export { allEdges, buildLattice, cutPoints, READING_CHARGE, } from "./decode/lattice.js";