@kensio/pinyinjs 1.2.0 → 1.2.2

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 (51) hide show
  1. package/CHANGELOG.md +111 -16
  2. package/README.md +35 -35
  3. package/data/core.entries +89 -89
  4. package/data/full.entries +257 -257
  5. package/data/manifest.json +6 -6
  6. package/data/standard.entries +102 -102
  7. package/dist/decode/convert.d.ts.map +1 -1
  8. package/dist/decode/convert.js +91 -40
  9. package/dist/decode/convert.js.map +1 -1
  10. package/dist/decode/decode.d.ts +12 -2
  11. package/dist/decode/decode.d.ts.map +1 -1
  12. package/dist/decode/decode.js +64 -7
  13. package/dist/decode/decode.js.map +1 -1
  14. package/dist/decode/reading-rules.d.ts +57 -0
  15. package/dist/decode/reading-rules.d.ts.map +1 -1
  16. package/dist/decode/reading-rules.js +178 -1
  17. package/dist/decode/reading-rules.js.map +1 -1
  18. package/dist/dictionary/assertions.d.ts.map +1 -1
  19. package/dist/dictionary/assertions.js +20 -0
  20. package/dist/dictionary/assertions.js.map +1 -1
  21. package/dist/dictionary/locale.d.ts +55 -0
  22. package/dist/dictionary/locale.d.ts.map +1 -0
  23. package/dist/dictionary/locale.js +323 -0
  24. package/dist/dictionary/locale.js.map +1 -0
  25. package/dist/dictionary/merge.d.ts +3 -1
  26. package/dist/dictionary/merge.d.ts.map +1 -1
  27. package/dist/dictionary/merge.js +54 -10
  28. package/dist/dictionary/merge.js.map +1 -1
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -2
  32. package/dist/index.js.map +1 -1
  33. package/dist/numerals/cardinal.d.ts +15 -1
  34. package/dist/numerals/cardinal.d.ts.map +1 -1
  35. package/dist/numerals/cardinal.js +8 -1
  36. package/dist/numerals/cardinal.js.map +1 -1
  37. package/dist/numerals/characters.d.ts +9 -0
  38. package/dist/numerals/characters.d.ts.map +1 -1
  39. package/dist/numerals/characters.js +18 -0
  40. package/dist/numerals/characters.js.map +1 -1
  41. package/dist/numerals/numerals.d.ts.map +1 -1
  42. package/dist/numerals/numerals.js +12 -4
  43. package/dist/numerals/numerals.js.map +1 -1
  44. package/dist/numerals/text.d.ts +23 -9
  45. package/dist/numerals/text.d.ts.map +1 -1
  46. package/dist/numerals/text.js +93 -9
  47. package/dist/numerals/text.js.map +1 -1
  48. package/dist/orthography/capitals.d.ts.map +1 -1
  49. package/dist/orthography/capitals.js +25 -8
  50. package/dist/orthography/capitals.js.map +1 -1
  51. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/decode/convert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,+BAA+B,CAAC;AAOvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EAElB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIzD,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAG9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,kCAAkC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACtC,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACpD;AAibD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,SAAS,cAAc,EAAE,CAE3B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,SAAS,cAAc,EAAE,CAE3B"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/decode/convert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,+BAA+B,CAAC;AAQvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EAElB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAKzD,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAG9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,kCAAkC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACtC,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACpD;AA2fD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,SAAS,cAAc,EAAE,CAE3B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,SAAS,cAAc,EAAE,CAE3B"}
@@ -1,3 +1,4 @@
1
+ import { isSameReading } from "../dictionary/entry.js";
1
2
  import { markWord } from "../orthography/apostrophe.js";
2
3
  import { capitaliseSentenceParts, capitaliseWord, isSentence, } from "../orthography/capitals.js";
3
4
  import { applyGrouping } from "../orthography/grouping.js";
@@ -7,6 +8,7 @@ import { toCharacters } from "../script/characters.js";
7
8
  import { writeSyllable, } from "../syllable/syllable.js";
8
9
  import { decodeRun, decodeRunScored } from "./decode.js";
9
10
  import { decodeGreedily } from "./greedy.js";
11
+ import { READING_RULES } from "./reading-rules.js";
10
12
  import { splitRuns } from "./runs.js";
11
13
  import { applySandhi } from "./sandhi.js";
12
14
  /**
@@ -14,12 +16,26 @@ import { applySandhi } from "./sandhi.js";
14
16
  *
15
17
  * `zh-TW` is stored as a delta, so a word with no Taiwan reading simply reads
16
18
  * the same in both.
19
+ *
20
+ * The delta is measured against the entry's own 普通话 reading, so it only
21
+ * applies where the decode settled on that reading. A polyphone the decode read
22
+ * some other way — 长 as `cháng` where its entry reads `zhǎng`, 差 as `chā`
23
+ * where its entry reads `chà` — is a different sense of the word, and the delta
24
+ * beside the entry says nothing about it. Replacing the reading there would
25
+ * discard what the lattice worked out in favour of a reading of the wrong
26
+ * syllable entirely.
17
27
  */
18
28
  function readingFor(dictionary, word, locale) {
19
29
  if (locale !== "zh-TW") {
20
30
  return word.reading;
21
31
  }
22
- return dictionary.lookup(word.text)?.taiwanReading ?? word.reading;
32
+ const entry = dictionary.lookup(word.text);
33
+ if (entry?.taiwanReading === undefined) {
34
+ return word.reading;
35
+ }
36
+ return isSameReading(entry.reading, word.reading)
37
+ ? entry.taiwanReading
38
+ : word.reading;
23
39
  }
24
40
  /**
25
41
  * Text that writes no syllable: a space, or a run that was never Han.
@@ -53,14 +69,22 @@ function writeWord(reading, confidence, word, written) {
53
69
  * A decoder that reports no confidence at all, which is every decoder but one.
54
70
  */
55
71
  function unscored(decode) {
56
- return (dictionary, run) => decode(dictionary, run).map((word) => ({ word, confidence: [] }));
72
+ return (dictionary, run, before) => decode(dictionary, run, before).map((word) => ({ word, confidence: [] }));
57
73
  }
58
74
  /**
59
75
  * The lattice decoder, reporting nothing about its own confidence.
60
76
  */
61
- const LATTICE = unscored(decodeRun);
77
+ const LATTICE = unscored((dictionary, run, before) => decodeRun(dictionary, run, READING_RULES, before));
78
+ /**
79
+ * The lattice decoder, with what each reading was chosen over.
80
+ */
81
+ const SCORED = (dictionary, run, before) => decodeRunScored(dictionary, run, READING_RULES, before);
62
82
  /**
63
83
  * The greedy baseline, which has nothing to report either way.
84
+ *
85
+ * The context in front of a run goes unused: longest-match has no way to weigh
86
+ * one segmentation against another, which is the whole reason it is the
87
+ * baseline, and a 汉字 it cannot report would only be another thing to trim.
64
88
  */
65
89
  const GREEDY = unscored(decodeGreedily);
66
90
  /**
@@ -112,27 +136,50 @@ function wordsOf(decoded, dictionary, isGrouped) {
112
136
  : decoded;
113
137
  }
114
138
  /**
115
- * What comes after a run: the first character of the next Han, and its first
116
- * syllable.
139
+ * The Han either side of a run, as the two characters a number goes on.
117
140
  *
118
- * A number's only context. The character decides how it is read — 年 makes
119
- * 1998 a year, 个 makes 3 a count — and the syllable is what a 一 ending the
120
- * number assimilates to.
141
+ * A number's context, bar one syllable of it. The characters decide how it is
142
+ * read — 年 makes 1998 a year, 个 makes 3 a count and 2 两, and 第 makes 2 an
143
+ * ordinal — and characters are all they are, so this is known before anything
144
+ * has been decoded. Which is what lets the numbers be read first and the decode
145
+ * of the Han after them see what the digits stood for.
121
146
  */
122
- function following(runs, decoded, at) {
147
+ function surroundingCharacters(runs, at) {
148
+ const previous = runs[at - 1];
123
149
  const next = runs[at + 1];
124
- const isAfterHan = runs[at - 1]?.isHan === true;
125
- if (next?.isHan !== true) {
126
- return { after: { character: "", syllable: undefined }, isAfterHan };
127
- }
150
+ return {
151
+ following: next?.isHan === true ? (toCharacters(next.text)[0] ?? "") : "",
152
+ preceding: previous?.isHan === true
153
+ ? (toCharacters(previous.text).at(-1) ?? "")
154
+ : "",
155
+ };
156
+ }
157
+ /**
158
+ * What surrounds a run once it has been decoded: the character after it, and
159
+ * the syllable that character is read as.
160
+ *
161
+ * The syllable is the one part of a number's context that a decode has to
162
+ * supply, and it is what a 一 ending the number assimilates to.
163
+ */
164
+ function surrounding(runs, decoded, at) {
128
165
  return {
129
166
  after: {
130
- character: toCharacters(next.text)[0] ?? "",
167
+ character: surroundingCharacters(runs, at).following,
131
168
  syllable: decoded[at + 1]?.[0]?.word.reading[0],
132
169
  },
133
- isAfterHan,
170
+ isAfterHan: runs[at - 1]?.isHan === true,
134
171
  };
135
172
  }
173
+ /**
174
+ * The 汉字 a number in front of a Han run stands for, for that run's decode.
175
+ *
176
+ * Only the last segment of the run before, because only that one touches the
177
+ * Han: the D of 3D银行 comes between them, and a decode of 银行 that saw 三
178
+ * beside it would be reading a text nobody wrote.
179
+ */
180
+ function numeralBefore(segments) {
181
+ return segments.at(-1)?.hanzi ?? "";
182
+ }
136
183
  /**
137
184
  * Whether a character wants a space between it and a number read out.
138
185
  *
@@ -153,7 +200,7 @@ function isSpaced(before, after) {
153
200
  * a time's minutes are `sānshí` rather than `sān shí` — the same grouping the
154
201
  * number would get if the text had written 6点30分 out in 汉字.
155
202
  */
156
- function groupedPieces(spelled, said, words, written) {
203
+ function groupedPieces(spelled, said, words, apostrophe) {
157
204
  const pieces = [];
158
205
  let at = 0;
159
206
  for (const length of words) {
@@ -161,7 +208,7 @@ function groupedPieces(spelled, said, words, written) {
161
208
  pieces.push(plainPiece(" "));
162
209
  }
163
210
  const group = spelled.slice(at, at + length);
164
- for (const [index, text] of markWord(group, written.apostrophe).entries()) {
211
+ for (const [index, text] of markWord(group, apostrophe).entries()) {
165
212
  pieces.push({
166
213
  text,
167
214
  syllable: said[at + index],
@@ -183,21 +230,25 @@ function groupedPieces(spelled, said, words, written) {
183
230
  */
184
231
  function numberPieces(said, segment, written) {
185
232
  const spelled = said.map((syllable) => writeSyllable(syllable, written.notation));
186
- // A run that says where its words break gets them: a time is `liù diǎn
187
- // sānshí fēn`, with the hour and the minutes each a word of their own.
188
- if (segment.words !== undefined) {
189
- return groupedPieces(spelled, said, segment.words, written);
190
- }
191
- // A decimal is not one word either: everything after the 点 is read digit by
192
- // digit, so 3.14 is `sān diǎn yī sì`.
193
- if (segment.style === "digits" || (segment.hanzi ?? "").includes("点")) {
233
+ if (segment.style === "digits") {
194
234
  return spelled.flatMap((text, at) => [
195
235
  ...(at === 0 ? [] : [plainPiece(" ")]),
196
236
  { text, syllable: said[at], confidence: undefined },
197
237
  ]);
198
238
  }
199
239
  const isNumbered = written.notation === "numbers" || written.notation === "superscript";
200
- return markWord(spelled, isNumbered ? "never" : written.apostrophe).map((text, at) => ({ text, syllable: said[at], confidence: undefined }));
240
+ const apostrophe = isNumbered ? "never" : written.apostrophe;
241
+ // A run that says where its words break gets them: a time is `liù diǎn
242
+ // sānshí fēn` and a decimal is `qīshíwǔ diǎn wǔ`, each counted part a word
243
+ // of its own and everything after the 点 a digit at a time.
244
+ if (segment.words !== undefined) {
245
+ return groupedPieces(spelled, said, segment.words, apostrophe);
246
+ }
247
+ return markWord(spelled, apostrophe).map((text, at) => ({
248
+ text,
249
+ syllable: said[at],
250
+ confidence: undefined,
251
+ }));
201
252
  }
202
253
  /**
203
254
  * A stand-in for the pinyin either side of a run, which ends in a letter.
@@ -214,10 +265,7 @@ function runEdge(isHan) {
214
265
  * stretch is being said rather than shown, so its parts take the spacing of
215
266
  * words — 3D打印 is `sān D dǎyìn` — and punctuation still takes none.
216
267
  */
217
- function writeNumbers(text, context, written, options) {
218
- const segments = options.numbers === "keep"
219
- ? []
220
- : readNumbersIn(text, context.after.character);
268
+ function writeNumbers(text, segments, context, written, options) {
221
269
  if (segments.every((segment) => segment.reading === undefined)) {
222
270
  return [plainPiece(text)];
223
271
  }
@@ -246,12 +294,18 @@ function convertWith(decode, dictionary, text, options) {
246
294
  const { locale = "zh-CN", notation = "marks", apostrophe = "always", capitals = "auto", punctuation = "latin", grouping = true, numbers = "read", sandhi, } = options;
247
295
  const written = { notation, apostrophe, capitals };
248
296
  const converted = [];
249
- // Decoded before anything is written, because a number needs to know what
250
- // follows it — 1998年 is a year and 3个 is a count — and what follows it is
251
- // in the next run.
252
297
  const runs = [...splitRuns(text)];
253
- const decoded = runs.map((run) => run.isHan
254
- ? wordsOf(decode(dictionary, run.text), dictionary, grouping)
298
+ // Read before anything is decoded, because a number needs to know what
299
+ // follows it — 1998年 is a year and 3个 is a count — and the character that
300
+ // decides it is there for the reading without a decode of its own.
301
+ const read = runs.map((run, at) => run.isHan || numbers === "keep"
302
+ ? []
303
+ : readNumbersIn(run.text, surroundingCharacters(runs, at)));
304
+ // Decoded before anything is written, because a number's sandhi needs the
305
+ // syllable after it, and because a Han run needs the number in front of it:
306
+ // 2个人 is `liǎng gè rén` and 个人 on its own is the word `gèrén`.
307
+ const decoded = runs.map((run, at) => run.isHan
308
+ ? wordsOf(decode(dictionary, run.text, numeralBefore(read[at - 1] ?? [])), dictionary, grouping)
255
309
  : []);
256
310
  for (const [at, run] of runs.entries()) {
257
311
  const words = decoded[at] ?? [];
@@ -259,10 +313,7 @@ function convertWith(decode, dictionary, text, options) {
259
313
  converted.push(...writeRun(dictionary, words, locale, written, sandhi));
260
314
  continue;
261
315
  }
262
- converted.push(...writeNumbers(run.text, following(runs, decoded, at), written, {
263
- numbers,
264
- sandhi,
265
- }));
316
+ converted.push(...writeNumbers(run.text, read[at] ?? [], surrounding(runs, decoded, at), written, { sandhi }));
266
317
  }
267
318
  let pieces = converted;
268
319
  // Both of these read the whole conversion rather than one run: a sentence
@@ -316,7 +367,7 @@ export function convert(dictionary, text, options = {}) {
316
367
  * {@link convert} runs.
317
368
  */
318
369
  export function convertPieces(dictionary, text, options = {}) {
319
- return convertWith(decodeRunScored, dictionary, text, options);
370
+ return convertWith(SCORED, dictionary, text, options);
320
371
  }
321
372
  /**
322
373
  * Join a conversion's pieces back into the text they spell.
@@ -1 +1 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/decode/convert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/decode/convert.ts"],"names":[],"mappings":"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"}
@@ -27,8 +27,14 @@ export declare function decodeSpacing(lattice: Lattice): readonly number[];
27
27
  * Stages 1 to 3 of ALGORITHM.md end to end — build every candidate reading,
28
28
  * lock the positions that cannot vary, score the rest — where the greedy
29
29
  * baseline commits to the longest match at each position and never revisits it.
30
+ *
31
+ * `before` is 汉字 standing in front of the run that the decode should see and
32
+ * not report: the 汉字 a number written in digits would have been written with.
33
+ * A run is decoded on its own without it, and a run reached that way has no idea
34
+ * what preceded it — 个人 alone is the word `gèrén`, while the 两 of 2个人 makes
35
+ * 两个 the word and leaves 人 to itself.
30
36
  */
31
- export declare function decodeRun(dictionary: Dictionary, run: string, rules?: readonly EdgeRule[]): readonly DecodedWord[];
37
+ export declare function decodeRun(dictionary: Dictionary, run: string, rules?: readonly EdgeRule[], before?: string): readonly DecodedWord[];
32
38
  /**
33
39
  * Decode a Han run, keeping what each reading was chosen over.
34
40
  *
@@ -36,6 +42,10 @@ export declare function decodeRun(dictionary: Dictionary, run: string, rules?: r
36
42
  * candidates kept rather than discarded. Separate because the extra sweep is
37
43
  * only worth running for a caller that will use the answer — rendering
38
44
  * uncertain readings differently, or reporting them.
45
+ *
46
+ * `before` is the context {@link decodeRun} takes, and means the same here: it
47
+ * is decoded with the run and reported with neither words nor confidence of its
48
+ * own.
39
49
  */
40
- export declare function decodeRunScored(dictionary: Dictionary, run: string, rules?: readonly EdgeRule[]): readonly ScoredWord[];
50
+ export declare function decodeRunScored(dictionary: Dictionary, run: string, rules?: readonly EdgeRule[], before?: string): readonly ScoredWord[];
41
51
  //# sourceMappingURL=decode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/decode/decode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAGjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEzD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,iBAAiB,GAC5B,SAAS,WAAW,EAAE,CAmBxB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAIjE;AA2ED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,SAAS,QAAQ,EAAkB,GACzC,SAAS,WAAW,EAAE,CAMxB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,SAAS,QAAQ,EAAkB,GACzC,SAAS,UAAU,EAAE,CAavB"}
1
+ {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/decode/decode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAAqC,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAGjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEzD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,iBAAiB,GAC5B,SAAS,WAAW,EAAE,CAmBxB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAIjE;AAgJD;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,SAAS,QAAQ,EAAkB,EAC1C,MAAM,SAAK,GACV,SAAS,WAAW,EAAE,CAOxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,SAAS,QAAQ,EAAkB,EAC1C,MAAM,SAAK,GACV,SAAS,UAAU,EAAE,CAcvB"}
@@ -1,5 +1,6 @@
1
+ import { toCharacters } from "../script/characters.js";
1
2
  import { scoreReadings } from "./confidence.js";
2
- import { buildLattice, cutPoints } from "./lattice.js";
3
+ import { allEdges, buildLattice, cutPoints } from "./lattice.js";
3
4
  import { isSettled, projectReadings, settledUnits, unitsOf, } from "./locking.js";
4
5
  import { READING_RULES } from "./reading-rules.js";
5
6
  import { applyEdgeRules } from "./rules.js";
@@ -97,17 +98,68 @@ function wordFrom(dictionary, lattice, group) {
97
98
  function ruledLattice(dictionary, run, rules) {
98
99
  return applyEdgeRules(buildLattice(dictionary, run), dictionary, rules);
99
100
  }
101
+ /**
102
+ * Whether any reading in the lattice would hold the two sides of a join
103
+ * together.
104
+ *
105
+ * A reading of one syllable per character can be cut anywhere; anything else —
106
+ * 儿化, a character with no reading — is a single claim about its whole span,
107
+ * so a claim spanning the join cannot be reported for the run alone. 1点儿事
108
+ * is that case: 一点儿 is one `yìdiǎnr` over the 一 the context supplied and
109
+ * the 点儿 the run did.
110
+ */
111
+ function isJoinedAt(lattice, at) {
112
+ return allEdges(lattice).some((edge) => edge.from < at &&
113
+ edge.to > at &&
114
+ edge.reading.length !== edge.to - edge.from);
115
+ }
116
+ /**
117
+ * The lattice a run decodes over, with whatever context stands in front of it.
118
+ *
119
+ * The context is dropped where a reading would hold it to the run, leaving the
120
+ * run decoded on its own, which is what it would have been before there was any
121
+ * context to give.
122
+ */
123
+ function runLattice(dictionary, run, rules, before) {
124
+ const alone = () => ({
125
+ lattice: ruledLattice(dictionary, run, rules),
126
+ at: 0,
127
+ });
128
+ if (before === "") {
129
+ return alone();
130
+ }
131
+ const lattice = ruledLattice(dictionary, before + run, rules);
132
+ const at = toCharacters(before).length;
133
+ return isJoinedAt(lattice, at) ? alone() : { lattice, at };
134
+ }
135
+ /**
136
+ * Cut a decode of the whole lattice down to the run at the end of it.
137
+ *
138
+ * Everything before `at` was context rather than run — 汉字 a caller put in
139
+ * front so that the decode could see them — and is dropped once it has done its
140
+ * work.
141
+ */
142
+ function runGroups({ lattice, at }, units) {
143
+ return groupUnits(units.filter((unit) => unit.from >= at), decodeSpacing(lattice).filter((from) => from >= at));
144
+ }
100
145
  /**
101
146
  * Decode a Han run with the lattice: the recommended path.
102
147
  *
103
148
  * Stages 1 to 3 of ALGORITHM.md end to end — build every candidate reading,
104
149
  * lock the positions that cannot vary, score the rest — where the greedy
105
150
  * baseline commits to the longest match at each position and never revisits it.
151
+ *
152
+ * `before` is 汉字 standing in front of the run that the decode should see and
153
+ * not report: the 汉字 a number written in digits would have been written with.
154
+ * A run is decoded on its own without it, and a run reached that way has no idea
155
+ * what preceded it — 个人 alone is the word `gèrén`, while the 两 of 2个人 makes
156
+ * 两个 the word and leaves 人 to itself.
106
157
  */
107
- export function decodeRun(dictionary, run, rules = READING_RULES) {
108
- const lattice = ruledLattice(dictionary, run, rules);
158
+ export function decodeRun(dictionary, run, rules = READING_RULES, before = "") {
159
+ const held = runLattice(dictionary, run, rules, before);
160
+ const { lattice } = held;
109
161
  const units = decodeReadings(lattice, projectReadings(lattice));
110
- return groupUnits(units, decodeSpacing(lattice)).map((group) => wordFrom(dictionary, lattice, group));
162
+ return runGroups(held, units).map((group) => wordFrom(dictionary, lattice, group));
111
163
  }
112
164
  /**
113
165
  * Decode a Han run, keeping what each reading was chosen over.
@@ -116,11 +168,16 @@ export function decodeRun(dictionary, run, rules = READING_RULES) {
116
168
  * candidates kept rather than discarded. Separate because the extra sweep is
117
169
  * only worth running for a caller that will use the answer — rendering
118
170
  * uncertain readings differently, or reporting them.
171
+ *
172
+ * `before` is the context {@link decodeRun} takes, and means the same here: it
173
+ * is decoded with the run and reported with neither words nor confidence of its
174
+ * own.
119
175
  */
120
- export function decodeRunScored(dictionary, run, rules = READING_RULES) {
121
- const lattice = ruledLattice(dictionary, run, rules);
176
+ export function decodeRunScored(dictionary, run, rules = READING_RULES, before = "") {
177
+ const held = runLattice(dictionary, run, rules, before);
178
+ const { lattice } = held;
122
179
  const units = scoreReadings(lattice, projectReadings(lattice));
123
- return groupUnits(units, decodeSpacing(lattice)).map((group) => ({
180
+ return runGroups(held, units).map((group) => ({
124
181
  word: wordFrom(dictionary, lattice, group),
125
182
  confidence: group.flatMap((unit) => unit.reading.map(() => ({
126
183
  isLocked: unit.isLocked,
@@ -1 +1 @@
1
- {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/decode/decode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/decode/decode.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,63 @@ export declare const MODAL_DE: EdgeRule;
49
49
  * 门铃儿 and a row of Mongol names transliterated with 儿.
50
50
  */
51
51
  export declare const ATTESTED_ERHUA: EdgeRule;
52
+ /**
53
+ * 教 read as `jiāo` where it is teaching rather than a religion.
54
+ *
55
+ * The dictionary stores 教 as `jiào` with `jiāo` as an alternate, and `jiào` is
56
+ * right for the compounds — 教育, 教师, 宗教, 主教 — which are words and reach
57
+ * their reading through the word. What is left is the 教 that stands as a word
58
+ * of its own, and that one is the verb: 他在北京大学教了三年书 came out
59
+ * `jiàole sān nián shū`, and 我教英语, 谁教你法语 and 她教我如何游泳 with it.
60
+ * 教书 is a word and was always `jiāo shū`; nothing carried that across a 了.
61
+ *
62
+ * See {@link isTeachingAt} for what decides it. Forcing the single-character
63
+ * edge is not enough on its own, because a reading spanning two characters
64
+ * carries its own 教 into the position: 王老师教我们汉语 read `jiào` off 师教,
65
+ * and 来教我 off 来教. Those are pairs the dictionary holds with no part of
66
+ * speech and at the cost of a word nothing has ever counted — a reading rather
67
+ * than a word — so a *tagged* word ending in 教 is left alone, which is every
68
+ * one that matters: 任教, 宗教, 主教, 佛教, 传教, 执教, 请教, 家教.
69
+ *
70
+ * Measured over 88,866 lines of Tatoeba and zh.wikipedia, 181 教 decode as a
71
+ * word of their own and every one of them read `jiào`. This moves 158 to
72
+ * `jiāo` and is wrong on three: 统一教创始人, 方法教深思 and 做到了教政分离,
73
+ * where a nominal compound takes an object's shape, the last of them because
74
+ * 做到了 is a word and so the 了 in front is not a particle to look at. Of the
75
+ * 21 it leaves, 8 are right — 诸教中, 教外别传, 董教总, 风教, 教青局 twice, a
76
+ * 教室 reached through a bad split, and a 教 used as a bare noun — and 13 are
77
+ * misses, where jieba tags the object something this does not name.
78
+ */
79
+ export declare const TEACHING_JIAO: EdgeRule;
80
+ /**
81
+ * A 量词 with a number in front of it does not start the next word.
82
+ *
83
+ * 三个人 is three people and came out `sān gèrén`, three *personals*, because
84
+ * 个人 is a common noun and nothing weighed it against the 个 belonging to the
85
+ * 三 in front of it. The same swallow takes 一杯水 into 杯水, 两家俱乐部 into
86
+ * 家俱 and 一天天 into 天天; digits reach it too, since a run decoded after a
87
+ * number sees that number — see `decodeRun` — so 2个人 is the same case.
88
+ *
89
+ * What makes it decidable is that the dictionary tags the 量词: 个, 次, 天, 位,
90
+ * 杯 and 匹 are `q`, while the characters that only look like measure words in
91
+ * this position are not — 分 is `v`, 部 and 成 are `n`, 年 and 点 are `m`. So
92
+ * 五分钟, 三部分, 五成分, 五年级 and 三点钟 are untouched, and those are exactly
93
+ * the words a blanket rule would break. A word that is itself a 量词 is kept as
94
+ * well, since 分钟 and 点钟 are units rather than something being counted.
95
+ *
96
+ * Only the edge *starting at the 量词* is forbidden, so a number and its
97
+ * measure written solid survive whole where the dictionary has them: 一辈子 and
98
+ * 一会儿 are entries covering the number too, and the decode still reaches them.
99
+ *
100
+ * Measured over the same 88,866 lines of Tatoeba and zh.wikipedia the other
101
+ * rules were sized against, it forbids 561 edges across 144 shapes — 个人 203
102
+ * of them, then 杯水, 天一, 口气, 些小 and 家人 — and moves 53 decodes, since
103
+ * most of what it takes away the cost model was not going to choose anyway.
104
+ * Three of the 53 are wrong: 一批评, 这一名词 and 六七股灾, where the 一 and the
105
+ * 六七 count nothing and no tag says so. Exactly one reading changes over the
106
+ * corpus and it is a fix, 下了两天雨 having read 天雨 as `tiān yù`.
107
+ */
108
+ export declare const COUNTED_MEASURE: EdgeRule;
52
109
  /**
53
110
  * The rules the lattice decode applies, in order.
54
111
  */
@@ -1 +1 @@
1
- {"version":3,"file":"reading-rules.d.ts","sourceRoot":"","sources":["../../src/decode/reading-rules.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,QAAQ,EAId,MAAM,YAAY,CAAC;AAgCpB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,QAAQ,EAAE,QActB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,EAAE,QAY5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,QAAQ,EAA+B,CAAC"}
1
+ {"version":3,"file":"reading-rules.d.ts","sourceRoot":"","sources":["../../src/decode/reading-rules.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,QAAQ,EAId,MAAM,YAAY,CAAC;AAgCpB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,QAAQ,EAAE,QActB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,EAAE,QAY5B,CAAC;AAqDF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,aAAa,EAAE,QAiB3B,CAAC;AAsCF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,eAAe,EAAE,QAuB7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,QAAQ,EAK5C,CAAC"}