@kensio/pinyinjs 1.7.8 → 1.7.9
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.
- package/README.md +18 -2
- package/data/core.entries +2259 -2259
- package/data/core.freq +0 -0
- package/data/full.counts +0 -0
- package/data/full.entries +2289 -2289
- package/data/full.freq +0 -0
- package/data/manifest.json +8 -8
- package/data/standard.entries +2257 -2257
- package/data/standard.freq +0 -0
- package/dist/cli/flag-lists.d.ts +2 -1
- package/dist/cli/flag-lists.d.ts.map +1 -1
- package/dist/cli/flag-lists.js.map +1 -1
- package/dist/cli/format-options.d.ts +5 -1
- package/dist/cli/format-options.d.ts.map +1 -1
- package/dist/cli/format-options.js +9 -2
- package/dist/cli/format-options.js.map +1 -1
- package/dist/cli/html-commands.d.ts.map +1 -1
- package/dist/cli/html-commands.js +15 -3
- package/dist/cli/html-commands.js.map +1 -1
- package/dist/cli/systems.d.ts +15 -43
- package/dist/cli/systems.d.ts.map +1 -1
- package/dist/cli/systems.js +9 -12
- package/dist/cli/systems.js.map +1 -1
- package/dist/decode/guo-rule.d.ts +64 -0
- package/dist/decode/guo-rule.d.ts.map +1 -0
- package/dist/decode/guo-rule.js +138 -0
- package/dist/decode/guo-rule.js.map +1 -0
- package/dist/decode/reading-rules.d.ts +1 -0
- package/dist/decode/reading-rules.d.ts.map +1 -1
- package/dist/decode/reading-rules.js +3 -0
- package/dist/decode/reading-rules.js.map +1 -1
- package/dist/dictionary/frequency-table.d.ts +46 -0
- package/dist/dictionary/frequency-table.d.ts.map +1 -1
- package/dist/dictionary/frequency-table.js +37 -8
- package/dist/dictionary/frequency-table.js.map +1 -1
- package/dist/dictionary/merge-types.d.ts +12 -0
- package/dist/dictionary/merge-types.d.ts.map +1 -1
- package/dist/dictionary/merge-types.js.map +1 -1
- package/dist/dictionary/merge-word.d.ts.map +1 -1
- package/dist/dictionary/merge-word.js +2 -2
- package/dist/dictionary/merge-word.js.map +1 -1
- package/dist/dictionary/merge.d.ts.map +1 -1
- package/dist/dictionary/merge.js +11 -1
- package/dist/dictionary/merge.js.map +1 -1
- package/dist/dictionary/name-mass.d.ts +42 -0
- package/dist/dictionary/name-mass.d.ts.map +1 -0
- package/dist/dictionary/name-mass.js +66 -0
- package/dist/dictionary/name-mass.js.map +1 -0
- package/dist/dictionary/proper-noun.d.ts +8 -1
- package/dist/dictionary/proper-noun.d.ts.map +1 -1
- package/dist/dictionary/proper-noun.js +13 -3
- package/dist/dictionary/proper-noun.js.map +1 -1
- package/dist/dictionary/script-pairings.d.ts +12 -0
- package/dist/dictionary/script-pairings.d.ts.map +1 -1
- package/dist/dictionary/script-pairings.js +20 -0
- package/dist/dictionary/script-pairings.js.map +1 -1
- package/dist/dictionary/traditional-carry.d.ts +23 -0
- package/dist/dictionary/traditional-carry.d.ts.map +1 -0
- package/dist/dictionary/traditional-carry.js +201 -0
- package/dist/dictionary/traditional-carry.js.map +1 -0
- package/dist/format/annotate.d.ts.map +1 -1
- package/dist/format/annotate.js +3 -3
- package/dist/format/annotate.js.map +1 -1
- package/dist/format/html.d.ts +41 -6
- package/dist/format/html.d.ts.map +1 -1
- package/dist/format/html.js +34 -83
- package/dist/format/html.js.map +1 -1
- package/dist/format/language-tag.d.ts +57 -0
- package/dist/format/language-tag.d.ts.map +1 -0
- package/dist/format/language-tag.js +76 -0
- package/dist/format/language-tag.js.map +1 -0
- package/dist/format/syllable-span.d.ts +10 -0
- package/dist/format/syllable-span.d.ts.map +1 -0
- package/dist/format/syllable-span.js +87 -0
- package/dist/format/syllable-span.js.map +1 -0
- package/dist/format/transcribed.d.ts +36 -0
- package/dist/format/transcribed.d.ts.map +1 -0
- package/dist/format/transcribed.js +38 -0
- package/dist/format/transcribed.js.map +1 -0
- package/dist/format/transcription.d.ts.map +1 -1
- package/dist/format/transcription.js +7 -19
- package/dist/format/transcription.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/transcription/systems.d.ts +82 -0
- package/dist/transcription/systems.d.ts.map +1 -0
- package/dist/transcription/systems.js +64 -0
- package/dist/transcription/systems.js.map +1 -0
- package/package.json +1 -1
- package/dist/cli/system-table.d.ts +0 -12
- package/dist/cli/system-table.d.ts.map +0 -1
- package/dist/cli/system-table.js +0 -48
- package/dist/cli/system-table.js.map +0 -1
|
@@ -15,19 +15,48 @@ const MAX_BUCKET = FREQUENCY_BUCKETS - 1;
|
|
|
15
15
|
* A bucket is `log f` on a scale where the most frequent word in the corpus
|
|
16
16
|
* reaches {@link MAX_BUCKET}, so bucket *b* stands for `log f = b · L / 15`
|
|
17
17
|
* where `L = log(1 + f_max)`. The decoder wants `−log P = log N − log f`, which
|
|
18
|
-
* on that same scale is `15 · log N / L − b
|
|
19
|
-
* `15 · (log N / L − 1)` rather than the 1 that was here before.
|
|
18
|
+
* on that same scale is `15 · log N / L − b`, so the constant term is
|
|
19
|
+
* `15 · (log N / L − 1)` rather than the 1 that was here before. That
|
|
20
|
+
* arithmetic is {@link derivedWordCharge}, and the build holds this constant to
|
|
21
|
+
* it, since a constant in `src/` is the one thing a corpus refresh cannot
|
|
22
|
+
* bring with it.
|
|
20
23
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
24
|
+
* **`N` is jieba's corpus**, which is where every count in the dictionary comes
|
|
25
|
+
* from. As the build parses it, 60,101,964 occurrences over 349,045 words with
|
|
26
|
+
* 了 the busiest at 883,634, giving `log N = 17.91`, `L = 13.69` and a charge
|
|
27
|
+
* of 4.62. Only the *ratio* of the two logarithms matters, and it moves slowly.
|
|
28
|
+
* Doubling every count in the corpus shifts it by 0.05.
|
|
29
|
+
*
|
|
30
|
+
* **Summing `full.counts` gives 82,372,768, and that is not `N`.** The artifact
|
|
31
|
+
* attributes one corpus to more keys than jieba has words. A 繁體 spelling
|
|
32
|
+
* claims its 简体 entry's count, and `traditional-carry.ts` lends a count to a
|
|
33
|
+
* 繁體 character holding an entry of its own. 银行 and 銀行 are one word met
|
|
34
|
+
* once and two keys counted twice, and 20,447,271 of that total sits on keys
|
|
35
|
+
* jieba does not list at all.
|
|
25
36
|
*
|
|
26
37
|
* The value is load-bearing. At the old charge of 1 the lattice decoder read
|
|
27
38
|
* 还给 as 还 + 给 and 还是 as 还 + 是, because two common characters summed to
|
|
28
|
-
* less than one uncommon word
|
|
39
|
+
* less than one uncommon word. At the derived charge both stay whole.
|
|
40
|
+
*
|
|
41
|
+
* **Its exact value inside a unit is not.** Buckets are integers, so a path
|
|
42
|
+
* carrying *k* words more than its rival turns on where `k · charge` falls
|
|
43
|
+
* between two of them. 4.62 and 4.97 agree at `k` of 1 and 2 and first differ
|
|
44
|
+
* at 3. Converted at 4.97, 63 of the 139,682 Han runs in 88,866 lines of
|
|
45
|
+
* Tatoeba and zh.wikipedia come out differently, and every one of the 63
|
|
46
|
+
* decodes into as many words as it did before. They are exact ties in the
|
|
47
|
+
* bucket sum, re-broken by the order the floats happened to be added in.
|
|
48
|
+
*/
|
|
49
|
+
export const WORD_CHARGE = 4.62;
|
|
50
|
+
/**
|
|
51
|
+
* The charge a corpus derives, for the build to hold {@link WORD_CHARGE} to.
|
|
52
|
+
*
|
|
53
|
+
* `total` is the corpus, counted once. `highest` is the largest count in it,
|
|
54
|
+
* which is what {@link FrequencyTable.build} scales the buckets by, so the two
|
|
55
|
+
* have to be read off the same corpus for the result to mean anything.
|
|
29
56
|
*/
|
|
30
|
-
|
|
57
|
+
export function derivedWordCharge(total, highest) {
|
|
58
|
+
return MAX_BUCKET * (Math.log(total) / Math.log1p(highest) - 1);
|
|
59
|
+
}
|
|
31
60
|
/**
|
|
32
61
|
* Quantised word frequencies, packed two to a byte.
|
|
33
62
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frequency-table.js","sourceRoot":"","sources":["../../src/dictionary/frequency-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC,MAAM,UAAU,GAAG,iBAAiB,GAAG,CAAC,CAAC;AAEzC
|
|
1
|
+
{"version":3,"file":"frequency-table.js","sourceRoot":"","sources":["../../src/dictionary/frequency-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import type { JiebaEntry } from "../sources/jieba.js";
|
|
|
9
9
|
import type { UnihanReadings, UnihanVariants } from "../sources/unihan.js";
|
|
10
10
|
import type { Syllable } from "../syllable/syllable.js";
|
|
11
11
|
import type { DictionaryEntry } from "./entry.js";
|
|
12
|
+
import type { NameMassTable } from "./name-mass.js";
|
|
12
13
|
import type { TraditionalTable } from "./traditional-table.js";
|
|
13
14
|
/**
|
|
14
15
|
* The parsed sources the merge combines.
|
|
@@ -62,6 +63,15 @@ export interface MergeStats {
|
|
|
62
63
|
readonly properNounVetoes: number;
|
|
63
64
|
/** Entries whose parts CC-CEDICT's capitalisation divides. */
|
|
64
65
|
readonly nameBoundaries: number;
|
|
66
|
+
/**
|
|
67
|
+
* 繁體 spellings given the part of speech their 简体 word carries. See
|
|
68
|
+
* {@link import("./traditional-carry.js").carryToTraditional}.
|
|
69
|
+
*/
|
|
70
|
+
readonly carriedTags: number;
|
|
71
|
+
/** 繁體 spellings given the corpus count their 简体 word carries. */
|
|
72
|
+
readonly carriedCounts: number;
|
|
73
|
+
/** 繁體 spellings given the proper-noun bit their 简体 word carries. */
|
|
74
|
+
readonly carriedCapitals: number;
|
|
65
75
|
/** Words dropped because no source gave a usable reading. */
|
|
66
76
|
readonly rejected: number;
|
|
67
77
|
}
|
|
@@ -87,6 +97,8 @@ export interface WordSources {
|
|
|
87
97
|
readonly cedictByHant: ReadonlyMap<string, readonly CedictEntry[]>;
|
|
88
98
|
readonly phrase: ReadonlyMap<string, readonly string[]>;
|
|
89
99
|
readonly jieba: ReadonlyMap<string, JiebaEntry>;
|
|
100
|
+
/** What each character heads in jieba's word list, for {@link import("./proper-noun.js").properNounOf}. */
|
|
101
|
+
readonly nameMass: NameMassTable;
|
|
90
102
|
readonly unihanReadings: ReadonlyMap<string, UnihanReadings>;
|
|
91
103
|
readonly traditional: TraditionalTable;
|
|
92
104
|
readonly defaults: ReadonlyMap<string, readonly Syllable[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-types.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"merge-types.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-types.js","sourceRoot":"","sources":["../../src/dictionary/merge-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge-types.js","sourceRoot":"","sources":["../../src/dictionary/merge-types.ts"],"names":[],"mappings":"AAoIA;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,sBAAsB,EAAE,CAAC;IACzB,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,CAAC;IACrB,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;IACjB,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;CACf,CAAC;AAYF;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAgB,EAAE,KAAgB;IACzD,OAAO;QACL,sBAAsB,EACpB,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB;QAC7D,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY;QACrD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB;QACvE,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;QAClD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB;QACjE,cAAc,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc;QAC3D,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB;QACjE,cAAc,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc;QAC3D,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;QAC/C,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;QAClD,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;KACnD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-word.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge-word.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,UAAU,EAAY,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/E,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE3E;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"merge-word.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge-word.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,UAAU,EAAY,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/E,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE3E;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,UAAU,CAgHxE"}
|
|
@@ -19,7 +19,7 @@ import { NO_TALLY } from "./merge-types.js";
|
|
|
19
19
|
* Merge one word.
|
|
20
20
|
*/
|
|
21
21
|
export function mergeWord(word, sources) {
|
|
22
|
-
const { cedictByWord, cedictByHant, phrase, jieba, unihanReadings, traditional, defaults, } = sources;
|
|
22
|
+
const { cedictByWord, cedictByHant, phrase, jieba, nameMass, unihanReadings, traditional, defaults, } = sources;
|
|
23
23
|
const cedictEntries = cedictByWord.get(word) ?? [];
|
|
24
24
|
const cedictReadings = cedictReadingsOf(word, cedictEntries);
|
|
25
25
|
// Every reading CC-CEDICT gives this spelling, under either script.
|
|
@@ -47,7 +47,7 @@ export function mergeWord(word, sources) {
|
|
|
47
47
|
const taiwan = taiwanReadingOf(word, senses, senseReadings, reading, unihanReadings.get(word));
|
|
48
48
|
// ── Frequency, part of speech and the proper noun bit ─────
|
|
49
49
|
const jiebaEntry = jieba.get(word);
|
|
50
|
-
const { isProperNoun, boundaries, isVetoed } = properNounOf(word, jiebaEntry, cedictEntries, senses, reading);
|
|
50
|
+
const { isProperNoun, boundaries, isVetoed } = properNounOf(word, jiebaEntry, cedictEntries, senses, reading, nameMass);
|
|
51
51
|
// ── Polyphone priors, for single characters only ──────────
|
|
52
52
|
const isCharacter = isSingleCharacter(word);
|
|
53
53
|
const characterReadings = defaults.get(word) ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-word.js","sourceRoot":"","sources":["../../src/dictionary/merge-word.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAwB,aAAa,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAmB,QAAQ,EAAoB,MAAM,kBAAkB,CAAC;AAI/E;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,OAAoB;IAC1D,MAAM,EACJ,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,KAAK,EACL,cAAc,EACd,WAAW,EACX,QAAQ,GACT,GAAG,OAAO,CAAC;IAEZ,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC7D,oEAAoE;IACpE,MAAM,aAAa,GAAG;QACpB,GAAG,cAAc;QACjB,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KACxD,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GACjB,aAAa,KAAK,SAAS;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,aAAa,CAC3B,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,cAAc,EACd,aAAa,CACd,CAAC;IACF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE;YAC3D,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,iBAAiB,CACjE,IAAI,EACJ,aAAa,EACb,OAAO,EACP,OAAO,EACP,WAAW,CACZ,CAAC;IAEF,6DAA6D;IAC7D,MAAM,MAAM,GAAG,eAAe,CAC5B,IAAI,EACJ,MAAM,EACN,aAAa,EACb,OAAO,EACP,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CACzB,CAAC;IAEF,6DAA6D;IAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,YAAY,CACzD,IAAI,EACJ,UAAU,EACV,aAAa,EACb,MAAM,EACN,OAAO,
|
|
1
|
+
{"version":3,"file":"merge-word.js","sourceRoot":"","sources":["../../src/dictionary/merge-word.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAE/E,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9E;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,CAsE/D"}
|
package/dist/dictionary/merge.js
CHANGED
|
@@ -11,6 +11,8 @@ import { buildCharacterDefaults } from "./character-defaults.js";
|
|
|
11
11
|
import { repairConstituentReadings } from "./constituent-repair.js";
|
|
12
12
|
import { settleMeasureTones } from "./measure-tone.js";
|
|
13
13
|
import { mergeWords, wordList } from "./merge-walk.js";
|
|
14
|
+
import { countNameMass } from "./name-mass.js";
|
|
15
|
+
import { carryToTraditional } from "./traditional-carry.js";
|
|
14
16
|
/**
|
|
15
17
|
* Build the merged dictionary from the four parsed sources.
|
|
16
18
|
*
|
|
@@ -34,6 +36,7 @@ export function mergeSources(sources) {
|
|
|
34
36
|
cedictByHant,
|
|
35
37
|
phrase,
|
|
36
38
|
jieba: sources.jieba,
|
|
39
|
+
nameMass: countNameMass(sources.jieba),
|
|
37
40
|
unihanReadings: sources.unihanReadings,
|
|
38
41
|
traditional,
|
|
39
42
|
defaults,
|
|
@@ -53,8 +56,12 @@ export function mergeSources(sources) {
|
|
|
53
56
|
// readings, both scripts' keys and the frequencies all have to be settled
|
|
54
57
|
// before a compound can be asked what it is made of.
|
|
55
58
|
const localised = composeLocaleDeltas(held.entries);
|
|
59
|
+
// ── 繁體 spellings given their 简体 word's tag and count ────
|
|
60
|
+
// Last, and over the finished key set, because the pairing it reads is the
|
|
61
|
+
// 繁體 form each entry names and every pass above can still change one.
|
|
62
|
+
const carried = carryToTraditional(localised.entries);
|
|
56
63
|
return {
|
|
57
|
-
entries:
|
|
64
|
+
entries: carried.entries,
|
|
58
65
|
rejected,
|
|
59
66
|
stats: {
|
|
60
67
|
...counts,
|
|
@@ -62,6 +69,9 @@ export function mergeSources(sources) {
|
|
|
62
69
|
settledMeasureTones: measured.settled,
|
|
63
70
|
repairedConstituents: held.repaired,
|
|
64
71
|
composedTaiwanReadings: localised.composed,
|
|
72
|
+
carriedTags: carried.carriedTags,
|
|
73
|
+
carriedCounts: carried.carriedCounts,
|
|
74
|
+
carriedCapitals: carried.carriedCapitals,
|
|
65
75
|
rejected: rejected.size,
|
|
66
76
|
},
|
|
67
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/dictionary/merge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAK5D;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,OAAqB;IAChD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnC,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtE,6EAA6E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,kCAAkC;IAClC,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEvE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,sBAAsB,CACvE,OAAO,EACP,YAAY,EACZ,YAAY,CACb,CAAC;IAEF,MAAM,WAAW,GAAgB;QAC/B,YAAY;QACZ,YAAY;QACZ,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;QACtC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,WAAW;QACX,QAAQ;KACT,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAU,CAC9C,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,EACtD,WAAW,CACZ,CAAC;IAEF,6DAA6D;IAC7D,8EAA8E;IAC9E,oEAAoE;IACpE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE7C,8DAA8D;IAC9D,4EAA4E;IAC5E,8EAA8E;IAC9E,0CAA0C;IAC1C,MAAM,IAAI,GAAG,yBAAyB,CACpC,QAAQ,CAAC,OAAO,EAChB,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,CACxC,CAAC;IAEF,8DAA8D;IAC9D,4EAA4E;IAC5E,0EAA0E;IAC1E,qDAAqD;IACrD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpD,2DAA2D;IAC3D,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEtD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ;QACR,KAAK,EAAE;YACL,GAAG,MAAM;YACT,eAAe;YACf,mBAAmB,EAAE,QAAQ,CAAC,OAAO;YACrC,oBAAoB,EAAE,IAAI,CAAC,QAAQ;YACnC,sBAAsB,EAAE,SAAS,CAAC,QAAQ;YAC1C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACxB;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type JiebaEntry } from "../sources/jieba.js";
|
|
2
|
+
/**
|
|
3
|
+
* The corpus mass of the words one character begins, split by what they are.
|
|
4
|
+
*/
|
|
5
|
+
export interface NameMass {
|
|
6
|
+
/** Occurrences of the names it begins. */
|
|
7
|
+
readonly asName: number;
|
|
8
|
+
/** Occurrences of the ordinary words it begins. */
|
|
9
|
+
readonly asWord: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* What each character heads, keyed by the character.
|
|
13
|
+
*/
|
|
14
|
+
export type NameMassTable = ReadonlyMap<string, NameMass>;
|
|
15
|
+
/**
|
|
16
|
+
* Count what every character heads in jieba's dictionary.
|
|
17
|
+
*
|
|
18
|
+
* **Only the first character of a word counts.** A capital opens a name and the
|
|
19
|
+
* question here is what opens one, so 德 is counted for 德国 and not for 伍德.
|
|
20
|
+
* Counting the inside of a name too would say that 德 is a name character,
|
|
21
|
+
* which is true and answers a different question from the one the capital asks.
|
|
22
|
+
*
|
|
23
|
+
* Single characters are skipped, since a character heading itself would only
|
|
24
|
+
* confirm whatever tag it already carries.
|
|
25
|
+
*/
|
|
26
|
+
export declare function countNameMass(jieba: ReadonlyMap<string, JiebaEntry>): NameMassTable;
|
|
27
|
+
/**
|
|
28
|
+
* Whether jieba's corpus met a character at the head of a name more often than
|
|
29
|
+
* as a word.
|
|
30
|
+
*
|
|
31
|
+
* The character's own count is on the side of the words, because a bare
|
|
32
|
+
* character in a 简体 corpus is a word being used as one. 帅 heads 155
|
|
33
|
+
* occurrences of names against 86 of words, which would pass, and it was
|
|
34
|
+
* counted 795 times on its own reading `shuài` and meaning handsome, which
|
|
35
|
+
* settles it the other way.
|
|
36
|
+
*
|
|
37
|
+
* A character jieba never saw heading a word has nothing on either side and
|
|
38
|
+
* fails. What that costs is a 繁體 character, whose 简体 pairing lends it the
|
|
39
|
+
* answer afterwards in `traditional-carry.ts`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function leadsNames(mass: NameMassTable, character: string, frequency: number): boolean;
|
|
42
|
+
//# sourceMappingURL=name-mass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-mass.d.ts","sourceRoot":"","sources":["../../src/dictionary/name-mass.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,GACrC,aAAa,CAmBf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How much of jieba's corpus a character carries at the head of a name.
|
|
3
|
+
*
|
|
4
|
+
* A word is usually one thing, and 北京 being a place in its only sense settles
|
|
5
|
+
* what 北京 is. A character is a morpheme that turns up in hundreds of words,
|
|
6
|
+
* and nearly every character that is a surname is an ordinary word besides. 王
|
|
7
|
+
* is `Wáng` and `wáng` the king, 连 is `Lián` and "even", 云 is `Yún` and a
|
|
8
|
+
* cloud. Neither source settles that on its own. jieba tags the bare character
|
|
9
|
+
* `nr` for all three, and CC-CEDICT gives all three a capitalised sense and a
|
|
10
|
+
* lowercase one.
|
|
11
|
+
*
|
|
12
|
+
* What separates them is how often each is met as a name, and jieba's own word
|
|
13
|
+
* list carries it. The character heads words there, each with a corpus count
|
|
14
|
+
* and a tag of its own. 李 heads 40,346 occurrences of names against 9,787 of
|
|
15
|
+
* ordinary words, and 连 heads 2,102 against 23,042 of 连续, 连接 and 连忙.
|
|
16
|
+
* Counted this way the surnames separate from the words that happen to be
|
|
17
|
+
* surnames, and the list that comes out is the one a reader would write down:
|
|
18
|
+
* 陈, 赵, 杨, 吴, 朱, 郭, 蒋, 蔡 and about a hundred others.
|
|
19
|
+
*/
|
|
20
|
+
import { toCharacters } from "../script/characters.js";
|
|
21
|
+
import { isProperNounTag } from "../sources/jieba.js";
|
|
22
|
+
/**
|
|
23
|
+
* Count what every character heads in jieba's dictionary.
|
|
24
|
+
*
|
|
25
|
+
* **Only the first character of a word counts.** A capital opens a name and the
|
|
26
|
+
* question here is what opens one, so 德 is counted for 德国 and not for 伍德.
|
|
27
|
+
* Counting the inside of a name too would say that 德 is a name character,
|
|
28
|
+
* which is true and answers a different question from the one the capital asks.
|
|
29
|
+
*
|
|
30
|
+
* Single characters are skipped, since a character heading itself would only
|
|
31
|
+
* confirm whatever tag it already carries.
|
|
32
|
+
*/
|
|
33
|
+
export function countNameMass(jieba) {
|
|
34
|
+
const mass = new Map();
|
|
35
|
+
for (const [word, entry] of jieba) {
|
|
36
|
+
const characters = toCharacters(word);
|
|
37
|
+
const head = characters[0];
|
|
38
|
+
if (characters.length < 2 || head === undefined) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const held = mass.get(head) ?? { asName: 0, asWord: 0 };
|
|
42
|
+
mass.set(head, isProperNounTag(entry.partOfSpeech)
|
|
43
|
+
? { asName: held.asName + entry.frequency, asWord: held.asWord }
|
|
44
|
+
: { asName: held.asName, asWord: held.asWord + entry.frequency });
|
|
45
|
+
}
|
|
46
|
+
return mass;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Whether jieba's corpus met a character at the head of a name more often than
|
|
50
|
+
* as a word.
|
|
51
|
+
*
|
|
52
|
+
* The character's own count is on the side of the words, because a bare
|
|
53
|
+
* character in a 简体 corpus is a word being used as one. 帅 heads 155
|
|
54
|
+
* occurrences of names against 86 of words, which would pass, and it was
|
|
55
|
+
* counted 795 times on its own reading `shuài` and meaning handsome, which
|
|
56
|
+
* settles it the other way.
|
|
57
|
+
*
|
|
58
|
+
* A character jieba never saw heading a word has nothing on either side and
|
|
59
|
+
* fails. What that costs is a 繁體 character, whose 简体 pairing lends it the
|
|
60
|
+
* answer afterwards in `traditional-carry.ts`.
|
|
61
|
+
*/
|
|
62
|
+
export function leadsNames(mass, character, frequency) {
|
|
63
|
+
const held = mass.get(character);
|
|
64
|
+
return held !== undefined && held.asName > held.asWord + frequency;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=name-mass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-mass.js","sourceRoot":"","sources":["../../src/dictionary/name-mass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AAiBvE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAsC;IAEtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEzC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,GAAG,CACN,IAAI,EACJ,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC;YACjC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YAChE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU,CACxB,IAAmB,EACnB,SAAiB,EACjB,SAAiB;IAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AACrE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type CedictEntry } from "../sources/cedict.js";
|
|
2
2
|
import { type JiebaEntry } from "../sources/jieba.js";
|
|
3
3
|
import type { Syllable } from "../syllable/syllable.js";
|
|
4
|
+
import { type NameMassTable } from "./name-mass.js";
|
|
4
5
|
/**
|
|
5
6
|
* What the sources between them say about a word's name-hood.
|
|
6
7
|
*/
|
|
@@ -23,6 +24,12 @@ export interface ProperNoun {
|
|
|
23
24
|
* The boundary is only looked for where the word survived the veto and reads
|
|
24
25
|
* one syllable per character: 儿化 reads two characters as one syllable and
|
|
25
26
|
* could not be cut by a count of characters.
|
|
27
|
+
*
|
|
28
|
+
* **A single character has to lead names as well**, which neither source can
|
|
29
|
+
* say on its own and jieba's word list can. See
|
|
30
|
+
* {@link import("./name-mass.js").leadsNames}. 411 characters carried the bit
|
|
31
|
+
* on one capitalised sense, and 他连再见也不说 came out `tā Lián zàijiàn yě bù
|
|
32
|
+
* shuō`.
|
|
26
33
|
*/
|
|
27
|
-
export declare function properNounOf(word: string, jiebaEntry: JiebaEntry | undefined, cedictEntries: readonly CedictEntry[], senses: readonly CedictEntry[], reading: readonly Syllable[]): ProperNoun;
|
|
34
|
+
export declare function properNounOf(word: string, jiebaEntry: JiebaEntry | undefined, cedictEntries: readonly CedictEntry[], senses: readonly CedictEntry[], reading: readonly Syllable[], nameMass: NameMassTable): ProperNoun;
|
|
28
35
|
//# sourceMappingURL=proper-noun.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proper-noun.d.ts","sourceRoot":"","sources":["../../src/dictionary/proper-noun.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"proper-noun.d.ts","sourceRoot":"","sources":["../../src/dictionary/proper-noun.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,aAAa,EAAE,SAAS,WAAW,EAAE,EACrC,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,QAAQ,EAAE,aAAa,GACtB,UAAU,CAuBZ"}
|
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
* 城市, 阿姨, 智能卡 and 花生仁 are all tagged nr or nz, and the decoder
|
|
7
7
|
* capitalises straight off this bit.
|
|
8
8
|
*/
|
|
9
|
-
import { characterCount } from "../script/characters.js";
|
|
9
|
+
import { characterCount, isSingleCharacter } from "../script/characters.js";
|
|
10
10
|
import { nameBoundariesOf } from "../sources/cedict.js";
|
|
11
11
|
import { isProperNounTag } from "../sources/jieba.js";
|
|
12
|
+
import { leadsNames } from "./name-mass.js";
|
|
12
13
|
/**
|
|
13
14
|
* Settle it for one word.
|
|
14
15
|
*
|
|
@@ -21,13 +22,22 @@ import { isProperNounTag } from "../sources/jieba.js";
|
|
|
21
22
|
* The boundary is only looked for where the word survived the veto and reads
|
|
22
23
|
* one syllable per character: 儿化 reads two characters as one syllable and
|
|
23
24
|
* could not be cut by a count of characters.
|
|
25
|
+
*
|
|
26
|
+
* **A single character has to lead names as well**, which neither source can
|
|
27
|
+
* say on its own and jieba's word list can. See
|
|
28
|
+
* {@link import("./name-mass.js").leadsNames}. 411 characters carried the bit
|
|
29
|
+
* on one capitalised sense, and 他连再见也不说 came out `tā Lián zàijiàn yě bù
|
|
30
|
+
* shuō`.
|
|
24
31
|
*/
|
|
25
|
-
export function properNounOf(word, jiebaEntry, cedictEntries, senses, reading) {
|
|
32
|
+
export function properNounOf(word, jiebaEntry, cedictEntries, senses, reading, nameMass) {
|
|
26
33
|
const partOfSpeech = jiebaEntry?.partOfSpeech ?? "";
|
|
27
|
-
const
|
|
34
|
+
const proposed = jiebaEntry === undefined
|
|
28
35
|
? cedictEntries.some((entry) => entry.isProperNoun)
|
|
29
36
|
: isProperNounTag(partOfSpeech) &&
|
|
30
37
|
(senses.length === 0 || senses.some((entry) => entry.isProperNoun));
|
|
38
|
+
const isProperNoun = proposed &&
|
|
39
|
+
(!isSingleCharacter(word) ||
|
|
40
|
+
leadsNames(nameMass, word, jiebaEntry?.frequency ?? 0));
|
|
31
41
|
const isAligned = characterCount(word) === reading.length;
|
|
32
42
|
const boundaries = isProperNoun && isAligned
|
|
33
43
|
? (cedictEntries
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proper-noun.js","sourceRoot":"","sources":["../../src/dictionary/proper-noun.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"proper-noun.js","sourceRoot":"","sources":["../../src/dictionary/proper-noun.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAoB,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAsB,MAAM,gBAAgB,CAAC;AAahE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,UAAkC,EAClC,aAAqC,EACrC,MAA8B,EAC9B,OAA4B,EAC5B,QAAuB;IAEvB,MAAM,YAAY,GAAG,UAAU,EAAE,YAAY,IAAI,EAAE,CAAC;IACpD,MAAM,QAAQ,GACZ,UAAU,KAAK,SAAS;QACtB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;QACnD,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC;YAC7B,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1E,MAAM,YAAY,GAChB,QAAQ;QACR,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACvB,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC;IAC1D,MAAM,UAAU,GACd,YAAY,IAAI,SAAS;QACvB,CAAC,CAAC,CAAC,aAAa;aACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aAChD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IACT,OAAO;QACL,YAAY;QACZ,UAAU;QACV,QAAQ,EAAE,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY;KACzD,CAAC;AACJ,CAAC"}
|
|
@@ -71,4 +71,16 @@ export declare function tableOf(observed: Map<string, ByReading>): ReadonlyMap<s
|
|
|
71
71
|
* character.
|
|
72
72
|
*/
|
|
73
73
|
export declare function alignedReadings(entry: DictionaryEntry): readonly (Syllable | undefined)[];
|
|
74
|
+
/**
|
|
75
|
+
* Just the 简→繁 character table, for a caller that needs the pairing and not
|
|
76
|
+
* the rest of the artifact.
|
|
77
|
+
*
|
|
78
|
+
* The word exception lists and the detection sets are the expensive half of
|
|
79
|
+
* `buildScriptTables` and answer different questions. What is left is one
|
|
80
|
+
* pass over the entries and the aggregate it makes, which is the only thing
|
|
81
|
+
* that can say which of a character's several 繁體 forms is the one people
|
|
82
|
+
* write. CC-CEDICT holds `旹 时` as an old variant of 時, so 时's own entry can
|
|
83
|
+
* name 旹 as its 繁體 form while every word 时 appears in says 時.
|
|
84
|
+
*/
|
|
85
|
+
export declare function traditionalCharacterTable(entries: readonly DictionaryEntry[]): ReadonlyMap<string, CharacterConversion>;
|
|
74
86
|
//# sourceMappingURL=script-pairings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script-pairings.d.ts","sourceRoot":"","sources":["../../src/dictionary/script-pairings.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,GAAG,KAAK,CAAC;AAEtB;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,eAAe,GACrB,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAiBxD;AAED;;GAEG;AACH,wBAAgB,KAAK,CACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAChC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,IAAI,CASN;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GAAG,SAAS,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAkB7C;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAC/B,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAS1C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,GACrB,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,CAGnC"}
|
|
1
|
+
{"version":3,"file":"script-pairings.d.ts","sourceRoot":"","sources":["../../src/dictionary/script-pairings.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,GAAG,KAAK,CAAC;AAEtB;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,eAAe,GACrB,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAiBxD;AAED;;GAEG;AACH,wBAAgB,KAAK,CACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAChC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,IAAI,CASN;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GAAG,SAAS,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAkB7C;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAC/B,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAS1C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,GACrB,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,CAGnC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,SAAS,eAAe,EAAE,GAClC,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAQ1C"}
|
|
@@ -117,4 +117,24 @@ export function alignedReadings(entry) {
|
|
|
117
117
|
const characters = toCharacters(entry.hans).length;
|
|
118
118
|
return entry.readings.cn.length === characters ? entry.readings.cn : [];
|
|
119
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Just the 简→繁 character table, for a caller that needs the pairing and not
|
|
122
|
+
* the rest of the artifact.
|
|
123
|
+
*
|
|
124
|
+
* The word exception lists and the detection sets are the expensive half of
|
|
125
|
+
* `buildScriptTables` and answer different questions. What is left is one
|
|
126
|
+
* pass over the entries and the aggregate it makes, which is the only thing
|
|
127
|
+
* that can say which of a character's several 繁體 forms is the one people
|
|
128
|
+
* write. CC-CEDICT holds `旹 时` as an old variant of 時, so 时's own entry can
|
|
129
|
+
* name 旹 as its 繁體 form while every word 时 appears in says 時.
|
|
130
|
+
*/
|
|
131
|
+
export function traditionalCharacterTable(entries) {
|
|
132
|
+
const counts = new Map();
|
|
133
|
+
for (const entry of entries) {
|
|
134
|
+
for (const { hans, hant, key } of pairingsOf(entry)) {
|
|
135
|
+
tally(counts, hans, hant, key, 1);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return tableOf(counts);
|
|
139
|
+
}
|
|
120
140
|
//# sourceMappingURL=script-pairings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script-pairings.js","sourceRoot":"","sources":["../../src/dictionary/script-pairings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"script-pairings.js","sourceRoot":"","sources":["../../src/dictionary/script-pairings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DictionaryEntry } from "./entry.js";
|
|
2
|
+
/**
|
|
3
|
+
* Whether a tag says anything about the word.
|
|
4
|
+
*/
|
|
5
|
+
export declare function isTagged(partOfSpeech: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* The entries after the carry, and how many took each field.
|
|
8
|
+
*/
|
|
9
|
+
export interface CarriedEntries {
|
|
10
|
+
readonly entries: readonly DictionaryEntry[];
|
|
11
|
+
readonly carriedTags: number;
|
|
12
|
+
readonly carriedCounts: number;
|
|
13
|
+
readonly carriedCapitals: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Give every 繁體 headword the tag and the count its 简体 word carries.
|
|
17
|
+
*
|
|
18
|
+
* Neither overwrites something the source stated. A spelling jieba classified
|
|
19
|
+
* keeps its own tag, and a spelling jieba counted more often than its 简体 word
|
|
20
|
+
* keeps its own count.
|
|
21
|
+
*/
|
|
22
|
+
export declare function carryToTraditional(entries: readonly DictionaryEntry[]): CarriedEntries;
|
|
23
|
+
//# sourceMappingURL=traditional-carry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traditional-carry.d.ts","sourceRoot":"","sources":["../../src/dictionary/traditional-carry.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkBlD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAqID;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,eAAe,EAAE,GAClC,cAAc,CA0ChB"}
|