@kensio/pinyinjs 1.7.3 → 1.7.5
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/dist/accuracy/score-case.d.ts +23 -0
- package/dist/accuracy/score-case.d.ts.map +1 -0
- package/dist/accuracy/score-case.js +63 -0
- package/dist/accuracy/score-case.js.map +1 -0
- package/dist/accuracy/score.d.ts +1 -8
- package/dist/accuracy/score.d.ts.map +1 -1
- package/dist/accuracy/score.js +1 -55
- package/dist/accuracy/score.js.map +1 -1
- package/dist/cli/arguments.d.ts +4 -290
- package/dist/cli/arguments.d.ts.map +1 -1
- package/dist/cli/arguments.js +5 -357
- package/dist/cli/arguments.js.map +1 -1
- package/dist/cli/check-command.d.ts +9 -0
- package/dist/cli/check-command.d.ts.map +1 -0
- package/dist/cli/check-command.js +95 -0
- package/dist/cli/check-command.js.map +1 -0
- package/dist/cli/cli-input.d.ts +49 -0
- package/dist/cli/cli-input.d.ts.map +1 -0
- package/dist/cli/cli-input.js +31 -0
- package/dist/cli/cli-input.js.map +1 -0
- package/dist/cli/command.d.ts +97 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +40 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands.d.ts +7 -110
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +14 -991
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/convert-command.d.ts +6 -0
- package/dist/cli/convert-command.d.ts.map +1 -0
- package/dist/cli/convert-command.js +52 -0
- package/dist/cli/convert-command.js.map +1 -0
- package/dist/cli/environment.d.ts +1 -1
- package/dist/cli/environment.d.ts.map +1 -1
- package/dist/cli/explain-command.d.ts +6 -0
- package/dist/cli/explain-command.d.ts.map +1 -0
- package/dist/cli/explain-command.js +40 -0
- package/dist/cli/explain-command.js.map +1 -0
- package/dist/cli/explain-syllable.d.ts +10 -0
- package/dist/cli/explain-syllable.d.ts.map +1 -0
- package/dist/cli/explain-syllable.js +70 -0
- package/dist/cli/explain-syllable.js.map +1 -0
- package/dist/cli/flag-help.d.ts +18 -0
- package/dist/cli/flag-help.d.ts.map +1 -0
- package/dist/cli/flag-help.js +78 -0
- package/dist/cli/flag-help.js.map +1 -0
- package/dist/cli/flag-lists.d.ts +49 -0
- package/dist/cli/flag-lists.d.ts.map +1 -0
- package/dist/cli/flag-lists.js +58 -0
- package/dist/cli/flag-lists.js.map +1 -0
- package/dist/cli/flag-values.d.ts +44 -0
- package/dist/cli/flag-values.d.ts.map +1 -0
- package/dist/cli/flag-values.js +56 -0
- package/dist/cli/flag-values.js.map +1 -0
- package/dist/cli/flags.d.ts +193 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +133 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/format-options.d.ts +29 -0
- package/dist/cli/format-options.d.ts.map +1 -0
- package/dist/cli/format-options.js +72 -0
- package/dist/cli/format-options.js.map +1 -0
- package/dist/cli/global-help.d.ts +23 -0
- package/dist/cli/global-help.d.ts.map +1 -0
- package/dist/cli/global-help.js +40 -0
- package/dist/cli/global-help.js.map +1 -0
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +5 -99
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/html-commands.d.ts +13 -0
- package/dist/cli/html-commands.d.ts.map +1 -0
- package/dist/cli/html-commands.js +49 -0
- package/dist/cli/html-commands.js.map +1 -0
- package/dist/cli/info-command.d.ts +7 -0
- package/dist/cli/info-command.d.ts.map +1 -0
- package/dist/cli/info-command.js +39 -0
- package/dist/cli/info-command.js.map +1 -0
- package/dist/cli/lookup-commands.d.ts +10 -0
- package/dist/cli/lookup-commands.d.ts.map +1 -0
- package/dist/cli/lookup-commands.js +101 -0
- package/dist/cli/lookup-commands.js.map +1 -0
- package/dist/cli/match-command.d.ts +11 -0
- package/dist/cli/match-command.d.ts.map +1 -0
- package/dist/cli/match-command.js +76 -0
- package/dist/cli/match-command.js.map +1 -0
- package/dist/cli/number-command.d.ts +12 -0
- package/dist/cli/number-command.d.ts.map +1 -0
- package/dist/cli/number-command.js +89 -0
- package/dist/cli/number-command.js.map +1 -0
- package/dist/cli/options.d.ts +30 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +54 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/run-command.d.ts +24 -0
- package/dist/cli/run-command.d.ts.map +1 -0
- package/dist/cli/run-command.js +40 -0
- package/dist/cli/run-command.js.map +1 -0
- package/dist/cli/run.d.ts +4 -42
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +6 -61
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/script-command.d.ts +10 -0
- package/dist/cli/script-command.d.ts.map +1 -0
- package/dist/cli/script-command.js +58 -0
- package/dist/cli/script-command.js.map +1 -0
- package/dist/cli/segment-command.d.ts +11 -0
- package/dist/cli/segment-command.d.ts.map +1 -0
- package/dist/cli/segment-command.js +53 -0
- package/dist/cli/segment-command.js.map +1 -0
- package/dist/cli/slug-command.d.ts +10 -0
- package/dist/cli/slug-command.d.ts.map +1 -0
- package/dist/cli/slug-command.js +28 -0
- package/dist/cli/slug-command.js.map +1 -0
- package/dist/cli/syllable-command.d.ts +14 -0
- package/dist/cli/syllable-command.d.ts.map +1 -0
- package/dist/cli/syllable-command.js +82 -0
- package/dist/cli/syllable-command.js.map +1 -0
- package/dist/cli/system-table.d.ts +12 -0
- package/dist/cli/system-table.d.ts.map +1 -0
- package/dist/cli/system-table.js +48 -0
- package/dist/cli/system-table.js.map +1 -0
- package/dist/cli/systems.d.ts +57 -0
- package/dist/cli/systems.d.ts.map +1 -0
- package/dist/cli/systems.js +27 -0
- package/dist/cli/systems.js.map +1 -0
- package/dist/cli/transcribe-command.d.ts +18 -0
- package/dist/cli/transcribe-command.d.ts.map +1 -0
- package/dist/cli/transcribe-command.js +86 -0
- package/dist/cli/transcribe-command.js.map +1 -0
- package/dist/cli/transcribe-reading.d.ts +15 -0
- package/dist/cli/transcribe-reading.d.ts.map +1 -0
- package/dist/cli/transcribe-reading.js +90 -0
- package/dist/cli/transcribe-reading.js.map +1 -0
- package/dist/cli/transcribe-rows.d.ts +26 -0
- package/dist/cli/transcribe-rows.d.ts.map +1 -0
- package/dist/cli/transcribe-rows.js +30 -0
- package/dist/cli/transcribe-rows.js.map +1 -0
- package/dist/cli/usage-error.d.ts +9 -0
- package/dist/cli/usage-error.d.ts.map +1 -0
- package/dist/cli/usage-error.js +9 -0
- package/dist/cli/usage-error.js.map +1 -0
- package/dist/decode/alternatives.d.ts +16 -0
- package/dist/decode/alternatives.d.ts.map +1 -0
- package/dist/decode/alternatives.js +31 -0
- package/dist/decode/alternatives.js.map +1 -0
- package/dist/decode/confidence.d.ts.map +1 -1
- package/dist/decode/confidence.js +3 -118
- package/dist/decode/confidence.js.map +1 -1
- package/dist/decode/convert-options.d.ts +116 -0
- package/dist/decode/convert-options.d.ts.map +1 -0
- package/dist/decode/convert-options.js +2 -0
- package/dist/decode/convert-options.js.map +1 -0
- package/dist/decode/convert-pipeline.d.ts +18 -0
- package/dist/decode/convert-pipeline.d.ts.map +1 -0
- package/dist/decode/convert-pipeline.js +66 -0
- package/dist/decode/convert-pipeline.js.map +1 -0
- package/dist/decode/convert.d.ts +9 -118
- package/dist/decode/convert.d.ts.map +1 -1
- package/dist/decode/convert.js +5 -453
- package/dist/decode/convert.js.map +1 -1
- package/dist/decode/decode.d.ts +2 -15
- package/dist/decode/decode.d.ts.map +1 -1
- package/dist/decode/decode.js +2 -121
- package/dist/decode/decode.js.map +1 -1
- package/dist/decode/decoders.d.ts +32 -0
- package/dist/decode/decoders.d.ts.map +1 -0
- package/dist/decode/decoders.js +29 -0
- package/dist/decode/decoders.js.map +1 -0
- package/dist/decode/edge-context.d.ts +38 -0
- package/dist/decode/edge-context.d.ts.map +1 -0
- package/dist/decode/edge-context.js +57 -0
- package/dist/decode/edge-context.js.map +1 -0
- package/dist/decode/hint-lattice.d.ts +45 -0
- package/dist/decode/hint-lattice.d.ts.map +1 -0
- package/dist/decode/hint-lattice.js +140 -0
- package/dist/decode/hint-lattice.js.map +1 -0
- package/dist/decode/hints.d.ts +2 -45
- package/dist/decode/hints.d.ts.map +1 -1
- package/dist/decode/hints.js +1 -139
- package/dist/decode/hints.js.map +1 -1
- package/dist/decode/jiao-rule.d.ts +58 -0
- package/dist/decode/jiao-rule.d.ts.map +1 -0
- package/dist/decode/jiao-rule.js +76 -0
- package/dist/decode/jiao-rule.js.map +1 -0
- package/dist/decode/lattice-costs.d.ts +55 -0
- package/dist/decode/lattice-costs.d.ts.map +1 -0
- package/dist/decode/lattice-costs.js +90 -0
- package/dist/decode/lattice-costs.js.map +1 -0
- package/dist/decode/lattice-edges.d.ts +29 -0
- package/dist/decode/lattice-edges.d.ts.map +1 -0
- package/dist/decode/lattice-edges.js +78 -0
- package/dist/decode/lattice-edges.js.map +1 -0
- package/dist/decode/lattice-slice.d.ts +37 -0
- package/dist/decode/lattice-slice.d.ts.map +1 -0
- package/dist/decode/lattice-slice.js +43 -0
- package/dist/decode/lattice-slice.js.map +1 -0
- package/dist/decode/lattice-types.d.ts +82 -0
- package/dist/decode/lattice-types.d.ts.map +1 -0
- package/dist/decode/lattice-types.js +44 -0
- package/dist/decode/lattice-types.js.map +1 -0
- package/dist/decode/lattice.d.ts +2 -59
- package/dist/decode/lattice.d.ts.map +1 -1
- package/dist/decode/lattice.js +2 -118
- package/dist/decode/lattice.js.map +1 -1
- package/dist/decode/number-pieces.d.ts +62 -0
- package/dist/decode/number-pieces.d.ts.map +1 -0
- package/dist/decode/number-pieces.js +106 -0
- package/dist/decode/number-pieces.js.map +1 -0
- package/dist/decode/numbers.d.ts +53 -0
- package/dist/decode/numbers.d.ts.map +1 -0
- package/dist/decode/numbers.js +69 -0
- package/dist/decode/numbers.js.map +1 -0
- package/dist/decode/pieces.d.ts +78 -0
- package/dist/decode/pieces.d.ts.map +1 -0
- package/dist/decode/pieces.js +136 -0
- package/dist/decode/pieces.js.map +1 -0
- package/dist/decode/polyphone-rules.d.ts +31 -0
- package/dist/decode/polyphone-rules.d.ts.map +1 -0
- package/dist/decode/polyphone-rules.js +159 -0
- package/dist/decode/polyphone-rules.js.map +1 -0
- package/dist/decode/reading-rules.d.ts +2 -97
- package/dist/decode/reading-rules.d.ts.map +1 -1
- package/dist/decode/reading-rules.js +4 -365
- package/dist/decode/reading-rules.js.map +1 -1
- package/dist/decode/rules.d.ts +1 -17
- package/dist/decode/rules.d.ts.map +1 -1
- package/dist/decode/rules.js +1 -43
- package/dist/decode/rules.js.map +1 -1
- package/dist/decode/run-lattice.d.ts +52 -0
- package/dist/decode/run-lattice.d.ts.map +1 -0
- package/dist/decode/run-lattice.js +91 -0
- package/dist/decode/run-lattice.js.map +1 -0
- package/dist/decode/sandhi-tones.d.ts +69 -0
- package/dist/decode/sandhi-tones.d.ts.map +1 -0
- package/dist/decode/sandhi-tones.js +88 -0
- package/dist/decode/sandhi-tones.js.map +1 -0
- package/dist/decode/sandhi.d.ts +1 -1
- package/dist/decode/sandhi.d.ts.map +1 -1
- package/dist/decode/sandhi.js +1 -81
- package/dist/decode/sandhi.js.map +1 -1
- package/dist/decode/script-types.d.ts +76 -0
- package/dist/decode/script-types.d.ts.map +1 -0
- package/dist/decode/script-types.js +35 -0
- package/dist/decode/script-types.js.map +1 -0
- package/dist/decode/script-words.d.ts +32 -0
- package/dist/decode/script-words.d.ts.map +1 -0
- package/dist/decode/script-words.js +77 -0
- package/dist/decode/script-words.js.map +1 -0
- package/dist/decode/script.d.ts +3 -73
- package/dist/decode/script.d.ts.map +1 -1
- package/dist/decode/script.js +3 -109
- package/dist/decode/script.js.map +1 -1
- package/dist/decode/tan-rule.d.ts +68 -0
- package/dist/decode/tan-rule.d.ts.map +1 -0
- package/dist/decode/tan-rule.js +131 -0
- package/dist/decode/tan-rule.js.map +1 -0
- package/dist/decode/write-run.d.ts +28 -0
- package/dist/decode/write-run.d.ts.map +1 -0
- package/dist/decode/write-run.js +77 -0
- package/dist/decode/write-run.js.map +1 -0
- package/dist/dictionary/artifact-claims.d.ts +25 -0
- package/dist/dictionary/artifact-claims.d.ts.map +1 -0
- package/dist/dictionary/artifact-claims.js +47 -0
- package/dist/dictionary/artifact-claims.js.map +1 -0
- package/dist/dictionary/artifact-format.d.ts +86 -0
- package/dist/dictionary/artifact-format.d.ts.map +1 -0
- package/dist/dictionary/artifact-format.js +91 -0
- package/dist/dictionary/artifact-format.js.map +1 -0
- package/dist/dictionary/artifact-read.d.ts +34 -0
- package/dist/dictionary/artifact-read.d.ts.map +1 -0
- package/dist/dictionary/artifact-read.js +114 -0
- package/dist/dictionary/artifact-read.js.map +1 -0
- package/dist/dictionary/artifact.d.ts +4 -63
- package/dist/dictionary/artifact.d.ts.map +1 -1
- package/dist/dictionary/artifact.js +12 -229
- package/dist/dictionary/artifact.js.map +1 -1
- package/dist/dictionary/assertions.d.ts +5 -57
- package/dist/dictionary/assertions.d.ts.map +1 -1
- package/dist/dictionary/assertions.js +4 -317
- package/dist/dictionary/assertions.js.map +1 -1
- package/dist/dictionary/build-assertions.d.ts +12 -0
- package/dist/dictionary/build-assertions.d.ts.map +1 -0
- package/dist/dictionary/build-assertions.js +13 -0
- package/dist/dictionary/build-assertions.js.map +1 -0
- package/dist/dictionary/built-dictionary.d.ts +46 -0
- package/dist/dictionary/built-dictionary.d.ts.map +1 -0
- package/dist/dictionary/built-dictionary.js +97 -0
- package/dist/dictionary/built-dictionary.js.map +1 -0
- package/dist/dictionary/cedict-senses.d.ts +80 -0
- package/dist/dictionary/cedict-senses.d.ts.map +1 -0
- package/dist/dictionary/cedict-senses.js +114 -0
- package/dist/dictionary/cedict-senses.js.map +1 -0
- package/dist/dictionary/character-defaults.d.ts +26 -0
- package/dist/dictionary/character-defaults.d.ts.map +1 -0
- package/dist/dictionary/character-defaults.js +67 -0
- package/dist/dictionary/character-defaults.js.map +1 -0
- package/dist/dictionary/character-readings.d.ts +10 -0
- package/dist/dictionary/character-readings.d.ts.map +1 -0
- package/dist/dictionary/character-readings.js +25 -0
- package/dist/dictionary/character-readings.js.map +1 -0
- package/dist/dictionary/dictionary-entry.d.ts +37 -0
- package/dist/dictionary/dictionary-entry.d.ts.map +1 -0
- package/dist/dictionary/dictionary-entry.js +41 -0
- package/dist/dictionary/dictionary-entry.js.map +1 -0
- package/dist/dictionary/dictionary-readings.d.ts +56 -0
- package/dist/dictionary/dictionary-readings.d.ts.map +1 -0
- package/dist/dictionary/dictionary-readings.js +93 -0
- package/dist/dictionary/dictionary-readings.js.map +1 -0
- package/dist/dictionary/dictionary.d.ts +6 -60
- package/dist/dictionary/dictionary.d.ts.map +1 -1
- package/dist/dictionary/dictionary.js +9 -169
- package/dist/dictionary/dictionary.js.map +1 -1
- package/dist/dictionary/entry-invariants.d.ts +3 -0
- package/dist/dictionary/entry-invariants.d.ts.map +1 -0
- package/dist/dictionary/entry-invariants.js +67 -0
- package/dist/dictionary/entry-invariants.js.map +1 -0
- package/dist/dictionary/entry-lines.d.ts +35 -0
- package/dist/dictionary/entry-lines.d.ts.map +1 -0
- package/dist/dictionary/entry-lines.js +70 -0
- package/dist/dictionary/entry-lines.js.map +1 -0
- package/dist/dictionary/erhua-repair.d.ts +26 -0
- package/dist/dictionary/erhua-repair.d.ts.map +1 -0
- package/dist/dictionary/erhua-repair.js +49 -0
- package/dist/dictionary/erhua-repair.js.map +1 -0
- package/dist/dictionary/frequency-tones.d.ts +74 -0
- package/dist/dictionary/frequency-tones.d.ts.map +1 -0
- package/dist/dictionary/frequency-tones.js +128 -0
- package/dist/dictionary/frequency-tones.js.map +1 -0
- package/dist/dictionary/inventory-invariants.d.ts +3 -0
- package/dist/dictionary/inventory-invariants.d.ts.map +1 -0
- package/dist/dictionary/inventory-invariants.js +54 -0
- package/dist/dictionary/inventory-invariants.js.map +1 -0
- package/dist/dictionary/locale-candidates.d.ts +40 -0
- package/dist/dictionary/locale-candidates.d.ts.map +1 -0
- package/dist/dictionary/locale-candidates.js +77 -0
- package/dist/dictionary/locale-candidates.js.map +1 -0
- package/dist/dictionary/locale-segments.d.ts +47 -0
- package/dist/dictionary/locale-segments.d.ts.map +1 -0
- package/dist/dictionary/locale-segments.js +141 -0
- package/dist/dictionary/locale-segments.js.map +1 -0
- package/dist/dictionary/locale.d.ts +1 -21
- package/dist/dictionary/locale.d.ts.map +1 -1
- package/dist/dictionary/locale.js +9 -198
- package/dist/dictionary/locale.js.map +1 -1
- package/dist/dictionary/merge-types.d.ts +121 -0
- package/dist/dictionary/merge-types.d.ts.map +1 -0
- package/dist/dictionary/merge-types.js +35 -0
- package/dist/dictionary/merge-types.js.map +1 -0
- package/dist/dictionary/merge-word.d.ts +7 -0
- package/dist/dictionary/merge-word.d.ts.map +1 -0
- package/dist/dictionary/merge-word.js +91 -0
- package/dist/dictionary/merge-word.js.map +1 -0
- package/dist/dictionary/merge.d.ts +5 -62
- package/dist/dictionary/merge.d.ts.map +1 -1
- package/dist/dictionary/merge.js +30 -713
- package/dist/dictionary/merge.js.map +1 -1
- package/dist/dictionary/proper-noun.d.ts +28 -0
- package/dist/dictionary/proper-noun.d.ts.map +1 -0
- package/dist/dictionary/proper-noun.js +43 -0
- package/dist/dictionary/proper-noun.js.map +1 -0
- package/dist/dictionary/reading-agreement.d.ts +71 -0
- package/dist/dictionary/reading-agreement.d.ts.map +1 -0
- package/dist/dictionary/reading-agreement.js +156 -0
- package/dist/dictionary/reading-agreement.js.map +1 -0
- package/dist/dictionary/script-conversion.d.ts +28 -0
- package/dist/dictionary/script-conversion.d.ts.map +1 -0
- package/dist/dictionary/script-conversion.js +58 -0
- package/dist/dictionary/script-conversion.js.map +1 -0
- package/dist/dictionary/script-pairings.d.ts +74 -0
- package/dist/dictionary/script-pairings.d.ts.map +1 -0
- package/dist/dictionary/script-pairings.js +120 -0
- package/dist/dictionary/script-pairings.js.map +1 -0
- package/dist/dictionary/script-tables.d.ts.map +1 -1
- package/dist/dictionary/script-tables.js +2 -165
- package/dist/dictionary/script-tables.js.map +1 -1
- package/dist/dictionary/taiwan-reading.d.ts +8 -0
- package/dist/dictionary/taiwan-reading.d.ts.map +1 -0
- package/dist/dictionary/taiwan-reading.js +38 -0
- package/dist/dictionary/taiwan-reading.js.map +1 -0
- package/dist/dictionary/tone-invariants.d.ts +3 -0
- package/dist/dictionary/tone-invariants.d.ts.map +1 -0
- package/dist/dictionary/tone-invariants.js +64 -0
- package/dist/dictionary/tone-invariants.js.map +1 -0
- package/dist/dictionary/traditional-form.d.ts +21 -0
- package/dist/dictionary/traditional-form.d.ts.map +1 -0
- package/dist/dictionary/traditional-form.js +59 -0
- package/dist/dictionary/traditional-form.js.map +1 -0
- package/dist/dictionary/traditional-ranking.d.ts +22 -0
- package/dist/dictionary/traditional-ranking.d.ts.map +1 -0
- package/dist/dictionary/traditional-ranking.js +74 -0
- package/dist/dictionary/traditional-ranking.js.map +1 -0
- package/dist/dictionary/traditional-table.d.ts +51 -0
- package/dist/dictionary/traditional-table.d.ts.map +1 -0
- package/dist/dictionary/traditional-table.js +98 -0
- package/dist/dictionary/traditional-table.js.map +1 -0
- package/dist/dictionary/traditional.d.ts +3 -56
- package/dist/dictionary/traditional.d.ts.map +1 -1
- package/dist/dictionary/traditional.js +3 -186
- package/dist/dictionary/traditional.js.map +1 -1
- package/dist/dictionary/variant-counts.d.ts +39 -0
- package/dist/dictionary/variant-counts.d.ts.map +1 -0
- package/dist/dictionary/variant-counts.js +38 -0
- package/dist/dictionary/variant-counts.js.map +1 -0
- package/dist/dictionary/word-reading.d.ts +26 -0
- package/dist/dictionary/word-reading.d.ts.map +1 -0
- package/dist/dictionary/word-reading.js +76 -0
- package/dist/dictionary/word-reading.js.map +1 -0
- package/dist/dictionary/word-readings.d.ts +15 -0
- package/dist/dictionary/word-readings.d.ts.map +1 -0
- package/dist/dictionary/word-readings.js +38 -0
- package/dist/dictionary/word-readings.js.map +1 -0
- package/dist/format/annotate.d.ts +90 -0
- package/dist/format/annotate.d.ts.map +1 -0
- package/dist/format/annotate.js +168 -0
- package/dist/format/annotate.js.map +1 -0
- package/dist/format/html.d.ts +15 -46
- package/dist/format/html.d.ts.map +1 -1
- package/dist/format/html.js +3 -162
- package/dist/format/html.js.map +1 -1
- package/dist/format/slug-hash.d.ts +51 -0
- package/dist/format/slug-hash.d.ts.map +1 -0
- package/dist/format/slug-hash.js +74 -0
- package/dist/format/slug-hash.js.map +1 -0
- package/dist/format/slug-options.d.ts +98 -0
- package/dist/format/slug-options.d.ts.map +1 -0
- package/dist/format/slug-options.js +2 -0
- package/dist/format/slug-options.js.map +1 -0
- package/dist/format/slug-words.d.ts +27 -0
- package/dist/format/slug-words.d.ts.map +1 -0
- package/dist/format/slug-words.js +0 -0
- package/dist/format/slug-words.js.map +1 -0
- package/dist/format/slug.d.ts +3 -128
- package/dist/format/slug.d.ts.map +1 -1
- package/dist/format/slug.js +0 -0
- package/dist/format/slug.js.map +1 -1
- package/dist/grade/check-readings.d.ts +41 -0
- package/dist/grade/check-readings.d.ts.map +1 -0
- package/dist/grade/check-readings.js +36 -0
- package/dist/grade/check-readings.js.map +1 -0
- package/dist/grade/check.d.ts +4 -4
- package/dist/grade/check.d.ts.map +1 -1
- package/dist/grade/check.js +5 -270
- package/dist/grade/check.js.map +1 -1
- package/dist/grade/pair-syllables.d.ts +48 -0
- package/dist/grade/pair-syllables.d.ts.map +1 -0
- package/dist/grade/pair-syllables.js +71 -0
- package/dist/grade/pair-syllables.js.map +1 -0
- package/dist/grade/reading-syllables.d.ts +62 -0
- package/dist/grade/reading-syllables.d.ts.map +1 -0
- package/dist/grade/reading-syllables.js +58 -0
- package/dist/grade/reading-syllables.js.map +1 -0
- package/dist/grade/reading-tolerance.d.ts +72 -0
- package/dist/grade/reading-tolerance.d.ts.map +1 -0
- package/dist/grade/reading-tolerance.js +107 -0
- package/dist/grade/reading-tolerance.js.map +1 -0
- package/dist/grade/typed-reading.d.ts +28 -0
- package/dist/grade/typed-reading.d.ts.map +1 -0
- package/dist/grade/typed-reading.js +36 -0
- package/dist/grade/typed-reading.js.map +1 -0
- package/dist/numerals/numeral-parse.d.ts +32 -0
- package/dist/numerals/numeral-parse.d.ts.map +1 -0
- package/dist/numerals/numeral-parse.js +44 -0
- package/dist/numerals/numeral-parse.js.map +1 -0
- package/dist/numerals/numeral-shapes.d.ts +89 -0
- package/dist/numerals/numeral-shapes.d.ts.map +1 -0
- package/dist/numerals/numeral-shapes.js +99 -0
- package/dist/numerals/numeral-shapes.js.map +1 -0
- package/dist/numerals/numerals.d.ts.map +1 -1
- package/dist/numerals/numerals.js +2 -36
- package/dist/numerals/numerals.js.map +1 -1
- package/dist/numerals/read-numeral.d.ts +76 -0
- package/dist/numerals/read-numeral.d.ts.map +1 -0
- package/dist/numerals/read-numeral.js +88 -0
- package/dist/numerals/read-numeral.js.map +1 -0
- package/dist/numerals/text.d.ts +3 -37
- package/dist/numerals/text.d.ts.map +1 -1
- package/dist/numerals/text.js +3 -254
- package/dist/numerals/text.js.map +1 -1
- package/dist/numerals/time.d.ts +34 -0
- package/dist/numerals/time.d.ts.map +1 -0
- package/dist/numerals/time.js +93 -0
- package/dist/numerals/time.js.map +1 -0
- package/dist/orthography/address-grouping.d.ts +34 -0
- package/dist/orthography/address-grouping.d.ts.map +1 -0
- package/dist/orthography/address-grouping.js +52 -0
- package/dist/orthography/address-grouping.js.map +1 -0
- package/dist/orthography/grouping.d.ts +3 -87
- package/dist/orthography/grouping.d.ts.map +1 -1
- package/dist/orthography/grouping.js +4 -270
- package/dist/orthography/grouping.js.map +1 -1
- package/dist/orthography/place-grouping.d.ts +39 -0
- package/dist/orthography/place-grouping.d.ts.map +1 -0
- package/dist/orthography/place-grouping.js +83 -0
- package/dist/orthography/place-grouping.js.map +1 -0
- package/dist/orthography/word-grouping.d.ts +48 -0
- package/dist/orthography/word-grouping.d.ts.map +1 -0
- package/dist/orthography/word-grouping.js +147 -0
- package/dist/orthography/word-grouping.js.map +1 -0
- package/dist/script/conversion-format.d.ts +22 -0
- package/dist/script/conversion-format.d.ts.map +1 -0
- package/dist/script/conversion-format.js +22 -0
- package/dist/script/conversion-format.js.map +1 -0
- package/dist/script/conversion-read.d.ts +9 -0
- package/dist/script/conversion-read.d.ts.map +1 -0
- package/dist/script/conversion-read.js +69 -0
- package/dist/script/conversion-read.js.map +1 -0
- package/dist/script/conversion-write.d.ts +14 -0
- package/dist/script/conversion-write.d.ts.map +1 -0
- package/dist/script/conversion-write.js +34 -0
- package/dist/script/conversion-write.js.map +1 -0
- package/dist/script/conversion.d.ts +10 -16
- package/dist/script/conversion.d.ts.map +1 -1
- package/dist/script/conversion.js +2 -115
- package/dist/script/conversion.js.map +1 -1
- package/dist/search/candidate-narrowing.d.ts +56 -0
- package/dist/search/candidate-narrowing.d.ts.map +1 -0
- package/dist/search/candidate-narrowing.js +55 -0
- package/dist/search/candidate-narrowing.js.map +1 -0
- package/dist/search/candidate-query.d.ts +25 -0
- package/dist/search/candidate-query.d.ts.map +1 -0
- package/dist/search/candidate-query.js +28 -0
- package/dist/search/candidate-query.js.map +1 -0
- package/dist/search/candidate-writings.d.ts +24 -0
- package/dist/search/candidate-writings.d.ts.map +1 -0
- package/dist/search/candidate-writings.js +114 -0
- package/dist/search/candidate-writings.js.map +1 -0
- package/dist/search/candidates.d.ts +7 -41
- package/dist/search/candidates.d.ts.map +1 -1
- package/dist/search/candidates.js +10 -164
- package/dist/search/candidates.js.map +1 -1
- package/dist/search/match-chunks.d.ts +19 -0
- package/dist/search/match-chunks.d.ts.map +1 -0
- package/dist/search/match-chunks.js +30 -0
- package/dist/search/match-chunks.js.map +1 -0
- package/dist/search/match-ranking.d.ts +39 -0
- package/dist/search/match-ranking.d.ts.map +1 -0
- package/dist/search/match-ranking.js +51 -0
- package/dist/search/match-ranking.js.map +1 -0
- package/dist/search/match-readings.d.ts +43 -0
- package/dist/search/match-readings.d.ts.map +1 -0
- package/dist/search/match-readings.js +83 -0
- package/dist/search/match-readings.js.map +1 -0
- package/dist/search/match-scoring.d.ts +146 -0
- package/dist/search/match-scoring.d.ts.map +1 -0
- package/dist/search/match-scoring.js +114 -0
- package/dist/search/match-scoring.js.map +1 -0
- package/dist/search/match-search.d.ts +28 -0
- package/dist/search/match-search.d.ts.map +1 -0
- package/dist/search/match-search.js +128 -0
- package/dist/search/match-search.js.map +1 -0
- package/dist/search/match.d.ts +5 -36
- package/dist/search/match.d.ts.map +1 -1
- package/dist/search/match.js +2 -379
- package/dist/search/match.js.map +1 -1
- package/dist/search/reverse-index-build.d.ts +30 -0
- package/dist/search/reverse-index-build.d.ts.map +1 -0
- package/dist/search/reverse-index-build.js +72 -0
- package/dist/search/reverse-index-build.js.map +1 -0
- package/dist/search/reverse-index-format.d.ts +60 -0
- package/dist/search/reverse-index-format.d.ts.map +1 -0
- package/dist/search/reverse-index-format.js +54 -0
- package/dist/search/reverse-index-format.js.map +1 -0
- package/dist/search/reverse-index-groups.d.ts +37 -0
- package/dist/search/reverse-index-groups.d.ts.map +1 -0
- package/dist/search/reverse-index-groups.js +71 -0
- package/dist/search/reverse-index-groups.js.map +1 -0
- package/dist/search/reverse-index-passes.d.ts +78 -0
- package/dist/search/reverse-index-passes.d.ts.map +1 -0
- package/dist/search/reverse-index-passes.js +59 -0
- package/dist/search/reverse-index-passes.js.map +1 -0
- package/dist/search/reverse-index-state.d.ts +36 -0
- package/dist/search/reverse-index-state.d.ts.map +1 -0
- package/dist/search/reverse-index-state.js +95 -0
- package/dist/search/reverse-index-state.js.map +1 -0
- package/dist/search/reverse-index.d.ts +8 -67
- package/dist/search/reverse-index.d.ts.map +1 -1
- package/dist/search/reverse-index.js +4 -255
- package/dist/search/reverse-index.js.map +1 -1
- package/dist/sources/unihan-readings.d.ts +58 -0
- package/dist/sources/unihan-readings.d.ts.map +1 -0
- package/dist/sources/unihan-readings.js +95 -0
- package/dist/sources/unihan-readings.js.map +1 -0
- package/dist/sources/unihan.d.ts +6 -9
- package/dist/sources/unihan.d.ts.map +1 -1
- package/dist/sources/unihan.js +2 -85
- package/dist/sources/unihan.js.map +1 -1
- package/dist/syllable/final-tables.d.ts +23 -0
- package/dist/syllable/final-tables.d.ts.map +1 -0
- package/dist/syllable/final-tables.js +50 -0
- package/dist/syllable/final-tables.js.map +1 -0
- package/dist/syllable/inventory.d.ts +8 -42
- package/dist/syllable/inventory.d.ts.map +1 -1
- package/dist/syllable/inventory.js +9 -918
- package/dist/syllable/inventory.js.map +1 -1
- package/dist/syllable/spellings.d.ts +40 -0
- package/dist/syllable/spellings.d.ts.map +1 -0
- package/dist/syllable/spellings.js +469 -0
- package/dist/syllable/spellings.js.map +1 -0
- package/dist/syllable/syllable-parts.d.ts +31 -0
- package/dist/syllable/syllable-parts.d.ts.map +1 -0
- package/dist/syllable/syllable-parts.js +105 -0
- package/dist/syllable/syllable-parts.js.map +1 -0
- package/dist/syllable/syllable.d.ts +1 -14
- package/dist/syllable/syllable.d.ts.map +1 -1
- package/dist/syllable/syllable.js +3 -144
- package/dist/syllable/syllable.js.map +1 -1
- package/dist/syllable/written-tones.d.ts +6 -0
- package/dist/syllable/written-tones.d.ts.map +1 -0
- package/dist/syllable/written-tones.js +453 -0
- package/dist/syllable/written-tones.js.map +1 -0
- package/dist/transcription/bopomofo-parse.d.ts +42 -0
- package/dist/transcription/bopomofo-parse.d.ts.map +1 -0
- package/dist/transcription/bopomofo-parse.js +92 -0
- package/dist/transcription/bopomofo-parse.js.map +1 -0
- package/dist/transcription/bopomofo-reverse.d.ts +31 -0
- package/dist/transcription/bopomofo-reverse.d.ts.map +1 -0
- package/dist/transcription/bopomofo-reverse.js +48 -0
- package/dist/transcription/bopomofo-reverse.js.map +1 -0
- package/dist/transcription/bopomofo-symbols.d.ts +36 -0
- package/dist/transcription/bopomofo-symbols.d.ts.map +1 -0
- package/dist/transcription/bopomofo-symbols.js +41 -0
- package/dist/transcription/bopomofo-symbols.js.map +1 -0
- package/dist/transcription/bopomofo-tables.d.ts +87 -0
- package/dist/transcription/bopomofo-tables.d.ts.map +1 -0
- package/dist/transcription/bopomofo-tables.js +180 -0
- package/dist/transcription/bopomofo-tables.js.map +1 -0
- package/dist/transcription/bopomofo.d.ts +14 -32
- package/dist/transcription/bopomofo.d.ts.map +1 -1
- package/dist/transcription/bopomofo.js +5 -343
- package/dist/transcription/bopomofo.js.map +1 -1
- package/dist/transcription/gwoyeu-first-second.d.ts +36 -0
- package/dist/transcription/gwoyeu-first-second.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-first-second.js +75 -0
- package/dist/transcription/gwoyeu-first-second.js.map +1 -0
- package/dist/transcription/gwoyeu-spelling.d.ts +38 -0
- package/dist/transcription/gwoyeu-spelling.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-spelling.js +124 -0
- package/dist/transcription/gwoyeu-spelling.js.map +1 -0
- package/dist/transcription/gwoyeu-tables.d.ts +93 -0
- package/dist/transcription/gwoyeu-tables.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-tables.js +205 -0
- package/dist/transcription/gwoyeu-tables.js.map +1 -0
- package/dist/transcription/gwoyeu-tonal-forms.d.ts +49 -0
- package/dist/transcription/gwoyeu-tonal-forms.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-tonal-forms.js +89 -0
- package/dist/transcription/gwoyeu-tonal-forms.js.map +1 -0
- package/dist/transcription/gwoyeu-vowels.d.ts +51 -0
- package/dist/transcription/gwoyeu-vowels.d.ts.map +1 -0
- package/dist/transcription/gwoyeu-vowels.js +58 -0
- package/dist/transcription/gwoyeu-vowels.js.map +1 -0
- package/dist/transcription/gwoyeu.d.ts +1 -26
- package/dist/transcription/gwoyeu.d.ts.map +1 -1
- package/dist/transcription/gwoyeu.js +2 -540
- package/dist/transcription/gwoyeu.js.map +1 -1
- package/dist/transcription/ipa-symbols.d.ts +67 -0
- package/dist/transcription/ipa-symbols.d.ts.map +1 -0
- package/dist/transcription/ipa-symbols.js +135 -0
- package/dist/transcription/ipa-symbols.js.map +1 -0
- package/dist/transcription/ipa.d.ts +2 -10
- package/dist/transcription/ipa.d.ts.map +1 -1
- package/dist/transcription/ipa.js +2 -134
- package/dist/transcription/ipa.js.map +1 -1
- package/dist/transcription/wade-giles-index.d.ts +35 -0
- package/dist/transcription/wade-giles-index.d.ts.map +1 -0
- package/dist/transcription/wade-giles-index.js +110 -0
- package/dist/transcription/wade-giles-index.js.map +1 -0
- package/dist/transcription/wade-giles-parse.d.ts +36 -0
- package/dist/transcription/wade-giles-parse.d.ts.map +1 -0
- package/dist/transcription/wade-giles-parse.js +84 -0
- package/dist/transcription/wade-giles-parse.js.map +1 -0
- package/dist/transcription/wade-giles-spelling.d.ts +61 -0
- package/dist/transcription/wade-giles-spelling.d.ts.map +1 -0
- package/dist/transcription/wade-giles-spelling.js +107 -0
- package/dist/transcription/wade-giles-spelling.js.map +1 -0
- package/dist/transcription/wade-giles-syllable.d.ts +29 -0
- package/dist/transcription/wade-giles-syllable.d.ts.map +1 -0
- package/dist/transcription/wade-giles-syllable.js +90 -0
- package/dist/transcription/wade-giles-syllable.js.map +1 -0
- package/dist/transcription/wade-giles-tables.d.ts +80 -0
- package/dist/transcription/wade-giles-tables.d.ts.map +1 -0
- package/dist/transcription/wade-giles-tables.js +178 -0
- package/dist/transcription/wade-giles-tables.js.map +1 -0
- package/dist/transcription/wade-giles.d.ts +9 -60
- package/dist/transcription/wade-giles.d.ts.map +1 -1
- package/dist/transcription/wade-giles.js +6 -543
- package/dist/transcription/wade-giles.js.map +1 -1
- package/dist/transcription/yale-tables.d.ts +54 -0
- package/dist/transcription/yale-tables.d.ts.map +1 -0
- package/dist/transcription/yale-tables.js +125 -0
- package/dist/transcription/yale-tables.js.map +1 -0
- package/dist/transcription/yale.d.ts.map +1 -1
- package/dist/transcription/yale.js +1 -124
- package/dist/transcription/yale.js.map +1 -1
- package/package.json +2 -2
package/dist/decode/hints.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { toCharacters } from "../script/characters.js";
|
|
2
2
|
import { readSyllable } from "../syllable/syllable.js";
|
|
3
3
|
import { NEUTRAL_TONE } from "../tone/tone.js";
|
|
4
|
-
import { READING_CHARGE, UNKNOWN_COST, } from "./lattice.js";
|
|
5
4
|
/**
|
|
6
5
|
* Whether a hint names a position rather than a word.
|
|
7
6
|
*/
|
|
@@ -73,142 +72,5 @@ export function resolveHints(hints) {
|
|
|
73
72
|
words.sort((left, right) => right.characters.length - left.characters.length);
|
|
74
73
|
return { words, at };
|
|
75
74
|
}
|
|
76
|
-
|
|
77
|
-
* The same hints with every position moved along by an offset.
|
|
78
|
-
*
|
|
79
|
-
* Word hints match on what is written and so are carried over untouched; only
|
|
80
|
-
* the positional ones are counted from somewhere. Used where a run is decoded
|
|
81
|
-
* with context in front of it, which moves the run's own characters up the
|
|
82
|
-
* lattice by the length of that context.
|
|
83
|
-
*/
|
|
84
|
-
export function shiftHints(hints, by) {
|
|
85
|
-
return {
|
|
86
|
-
words: hints.words,
|
|
87
|
-
at: new Map([...hints.at].map(([at, syllable]) => [at + by, syllable])),
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* The hints that fall inside a run, with their positions made relative to it.
|
|
92
|
-
*
|
|
93
|
-
* A caller counts positions from the start of the whole text, while a run is
|
|
94
|
-
* decoded on its own, so the positions have to be moved to where the run put
|
|
95
|
-
* them — and the ones naming a character in some other run dropped, rather than
|
|
96
|
-
* landing on whatever happens to sit at that index here.
|
|
97
|
-
*/
|
|
98
|
-
export function hintsWithin(hints, from, length) {
|
|
99
|
-
const at = new Map();
|
|
100
|
-
for (const [position, syllable] of hints.at) {
|
|
101
|
-
if (position >= from && position < from + length) {
|
|
102
|
-
at.set(position - from, syllable);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return { words: hints.words, at };
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Whether a hint's characters are what stands at a position.
|
|
109
|
-
*/
|
|
110
|
-
function matchesAt(hint, characters, at) {
|
|
111
|
-
return hint.characters.every((character, index) => characters[at + index] === character);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* A caller's readings, put into a lattice that was built without them.
|
|
115
|
-
*
|
|
116
|
-
* Two kinds of hint with deliberately different reach, which is the whole of
|
|
117
|
-
* the semantics:
|
|
118
|
-
*
|
|
119
|
-
* A **word** hint is an assertion about the text it names, so it rewrites the
|
|
120
|
-
* edge spanning exactly those characters and supplies the single-character
|
|
121
|
-
* edges underneath it. It says nothing about a *longer* word that happens to
|
|
122
|
-
* contain it — a bare 长 hint leaves 校长 as `xiàozhǎng`, because the dictionary
|
|
123
|
-
* knowing 校长 is better evidence about that stretch than a caller's remark
|
|
124
|
-
* about one of its characters. That is what makes a corrections table safe to
|
|
125
|
-
* accumulate: entries do not reach into words nobody was thinking about.
|
|
126
|
-
*
|
|
127
|
-
* A **positional** hint is an assertion about one character of one text, and it
|
|
128
|
-
* is the escape hatch precisely because nothing outranks it: it rewrites every
|
|
129
|
-
* edge covering that position, the enclosing word included. Only a reading of
|
|
130
|
-
* one syllable per character can be rewritten this way; a 儿化 edge is a single
|
|
131
|
-
* claim about its whole span and there is no one syllable in it to replace.
|
|
132
|
-
*
|
|
133
|
-
* Nothing is invented that a caller did not write, and nothing is dropped: an
|
|
134
|
-
* edge whose reading no hint touches comes through as it was.
|
|
135
|
-
*/
|
|
136
|
-
export function applyHints(lattice, hints) {
|
|
137
|
-
const { characters } = lattice;
|
|
138
|
-
/** The word hint covering a position, and how far into it that position is. */
|
|
139
|
-
const wordAt = (at) => {
|
|
140
|
-
for (const hint of hints.words) {
|
|
141
|
-
if (hint.reading.length !== hint.characters.length) {
|
|
142
|
-
continue;
|
|
143
|
-
}
|
|
144
|
-
for (let held = 0; held < hint.characters.length; held++) {
|
|
145
|
-
if (at - held >= 0 && matchesAt(hint, characters, at - held)) {
|
|
146
|
-
return { hint, held };
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return undefined;
|
|
151
|
-
};
|
|
152
|
-
const rewrite = (edge) => {
|
|
153
|
-
const span = edge.to - edge.from;
|
|
154
|
-
// A word hint naming exactly this stretch replaces its reading outright,
|
|
155
|
-
// which is the only way a hint can reach a word the dictionary already has
|
|
156
|
-
// an opinion about: 银行 asserted as `yín xíng` has to beat `yínháng`.
|
|
157
|
-
const exact = hints.words.find((hint) => hint.characters.length === span &&
|
|
158
|
-
matchesAt(hint, characters, edge.from));
|
|
159
|
-
let reading = exact === undefined ? edge.reading : exact.reading;
|
|
160
|
-
// Everything below needs one syllable per character to have a syllable to
|
|
161
|
-
// put anywhere.
|
|
162
|
-
if (reading.length === span) {
|
|
163
|
-
reading = reading.map((syllable, index) => {
|
|
164
|
-
const at = edge.from + index;
|
|
165
|
-
const positional = hints.at.get(at);
|
|
166
|
-
if (positional !== undefined) {
|
|
167
|
-
return positional;
|
|
168
|
-
}
|
|
169
|
-
if (span > 1) {
|
|
170
|
-
return syllable;
|
|
171
|
-
}
|
|
172
|
-
// Single-character edges also take what a longer word hint says about
|
|
173
|
-
// this position, so that the split path reads the same as the whole.
|
|
174
|
-
const found = wordAt(at);
|
|
175
|
-
return found?.hint.reading[found.held] ?? syllable;
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
return reading === edge.reading ? edge : { ...edge, reading };
|
|
179
|
-
};
|
|
180
|
-
return {
|
|
181
|
-
characters,
|
|
182
|
-
edges: lattice.edges.map((edges, at) => {
|
|
183
|
-
const rewritten = edges.map((edge) => rewrite(edge));
|
|
184
|
-
// A hint spanning characters no edge covers has nowhere to be written, so
|
|
185
|
-
// it brings its own edge: 玩儿 as `wánr` where the dictionary lacks it.
|
|
186
|
-
const spanning = hints.words.find((hint) => hint.reading.length !== hint.characters.length &&
|
|
187
|
-
matchesAt(hint, characters, at) &&
|
|
188
|
-
!rewritten.some((edge) => edge.to === at + hint.characters.length));
|
|
189
|
-
if (spanning === undefined) {
|
|
190
|
-
return rewritten;
|
|
191
|
-
}
|
|
192
|
-
const to = at + spanning.characters.length;
|
|
193
|
-
return [
|
|
194
|
-
...rewritten,
|
|
195
|
-
{
|
|
196
|
-
from: at,
|
|
197
|
-
to,
|
|
198
|
-
text: spanning.characters.join(""),
|
|
199
|
-
reading: spanning.reading,
|
|
200
|
-
cost: UNKNOWN_COST,
|
|
201
|
-
readingCost: UNKNOWN_COST + READING_CHARGE,
|
|
202
|
-
isProperNoun: false,
|
|
203
|
-
partOfSpeech: "",
|
|
204
|
-
// No dictionary entry backs this one — that is the whole reason it
|
|
205
|
-
// had to be brought along — so it reports itself as the fallback it
|
|
206
|
-
// is. A hint written over an edge that *was* backed keeps that edge's
|
|
207
|
-
// own answer, since the entry still covers those characters.
|
|
208
|
-
isKnown: false,
|
|
209
|
-
},
|
|
210
|
-
];
|
|
211
|
-
}),
|
|
212
|
-
};
|
|
213
|
-
}
|
|
75
|
+
export { applyHints, hintsWithin, shiftHints } from "./hint-lattice.js";
|
|
214
76
|
//# sourceMappingURL=hints.js.map
|
package/dist/decode/hints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hints.js","sourceRoot":"","sources":["../../src/decode/hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAiB,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"hints.js","sourceRoot":"","sources":["../../src/decode/hints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a 教 is teaching or is the noun 教.
|
|
3
|
+
*
|
|
4
|
+
* Teaching takes an object or is followed by aspect, and only a verb takes
|
|
5
|
+
* either, so the tags around it are the evidence.
|
|
6
|
+
*/
|
|
7
|
+
import type { Syllable } from "../syllable/syllable.js";
|
|
8
|
+
import { type EdgeContext, type EdgeRule } from "./rules.js";
|
|
9
|
+
/**
|
|
10
|
+
* Whether a syllable is `jiāo`, the verbal reading of 教.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isJiao(syllable: Syllable | undefined): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* What a 教 that is teaching governs: the thing or the person taught.
|
|
15
|
+
*
|
|
16
|
+
* A pronoun, a common noun, a name or one of the tags jieba gives a subject —
|
|
17
|
+
* 教我, 教英语, 教历史, 教孩子, 教玛丽. `ns` is deliberately absent, since the
|
|
18
|
+
* only 教 with a place tag after it over the corpus is 教青局, an office.
|
|
19
|
+
*/
|
|
20
|
+
export declare const TAUGHT_TAGS: Set<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the 教 at a position is teaching something to somebody.
|
|
23
|
+
*
|
|
24
|
+
* The object is what says so, which is the same shape the modal 得 rule takes:
|
|
25
|
+
* a 教 with a pronoun, a noun or a name after it is governing it, and a 教 with
|
|
26
|
+
* 了, 过, 着 or 得 after it is a verb whatever follows that. A particle in front
|
|
27
|
+
* of it rules it out, since a verb does not follow one.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isTeachingAt(context: EdgeContext, at: number): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* 教 read as `jiāo` where it is teaching rather than a religion.
|
|
32
|
+
*
|
|
33
|
+
* The dictionary stores 教 as `jiào` with `jiāo` as an alternate, and `jiào` is
|
|
34
|
+
* right for the compounds — 教育, 教师, 宗教, 主教 — which are words and reach
|
|
35
|
+
* their reading through the word. What is left is the 教 that stands as a word
|
|
36
|
+
* of its own, and that one is the verb: 他在北京大学教了三年书 came out
|
|
37
|
+
* `jiàole sān nián shū`, and 我教英语, 谁教你法语 and 她教我如何游泳 with it.
|
|
38
|
+
* 教书 is a word and was always `jiāo shū`; nothing carried that across a 了.
|
|
39
|
+
*
|
|
40
|
+
* See {@link isTeachingAt} for what decides it. Forcing the single-character
|
|
41
|
+
* edge is not enough on its own, because a reading spanning two characters
|
|
42
|
+
* carries its own 教 into the position: 王老师教我们汉语 read `jiào` off 师教,
|
|
43
|
+
* and 来教我 off 来教. Those are pairs the dictionary holds with no part of
|
|
44
|
+
* speech and at the cost of a word nothing has ever counted — a reading rather
|
|
45
|
+
* than a word — so a *tagged* word ending in 教 is left alone, which is every
|
|
46
|
+
* one that matters: 任教, 宗教, 主教, 佛教, 传教, 执教, 请教, 家教.
|
|
47
|
+
*
|
|
48
|
+
* Measured over 88,866 lines of Tatoeba and zh.wikipedia, 181 教 decode as a
|
|
49
|
+
* word of their own and every one of them read `jiào`. This moves 158 to
|
|
50
|
+
* `jiāo` and is wrong on three: 统一教创始人, 方法教深思 and 做到了教政分离,
|
|
51
|
+
* where a nominal compound takes an object's shape, the last of them because
|
|
52
|
+
* 做到了 is a word and so the 了 in front is not a particle to look at. Of the
|
|
53
|
+
* 21 it leaves, 8 are right — 诸教中, 教外别传, 董教总, 风教, 教青局 twice, a
|
|
54
|
+
* 教室 reached through a bad split, and a 教 used as a bare noun — and 13 are
|
|
55
|
+
* misses, where jieba tags the object something this does not name.
|
|
56
|
+
*/
|
|
57
|
+
export declare const TEACHING_JIAO: EdgeRule;
|
|
58
|
+
//# sourceMappingURL=jiao-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jiao-rule.d.ts","sourceRoot":"","sources":["../../src/decode/jiao-rule.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,QAAQ,EAId,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAI9D;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,aAA8C,CAAC;AAEvE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAQtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,aAAa,EAAE,QAiB3B,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ASPECT, PARTICLE_TAG, tagOf, wordEndingAt, wordStartingAt, } from "./rules.js";
|
|
2
|
+
/**
|
|
3
|
+
* Whether a syllable is `jiāo`, the verbal reading of 教.
|
|
4
|
+
*/
|
|
5
|
+
export function isJiao(syllable) {
|
|
6
|
+
return (syllable?.initial === "j" && syllable.final === "iao" && syllable.tone === 1);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* What a 教 that is teaching governs: the thing or the person taught.
|
|
10
|
+
*
|
|
11
|
+
* A pronoun, a common noun, a name or one of the tags jieba gives a subject —
|
|
12
|
+
* 教我, 教英语, 教历史, 教孩子, 教玛丽. `ns` is deliberately absent, since the
|
|
13
|
+
* only 教 with a place tag after it over the corpus is 教青局, an office.
|
|
14
|
+
*/
|
|
15
|
+
export const TAUGHT_TAGS = new Set(["r", "n", "nz", "nr", "nt", "ng"]);
|
|
16
|
+
/**
|
|
17
|
+
* Whether the 教 at a position is teaching something to somebody.
|
|
18
|
+
*
|
|
19
|
+
* The object is what says so, which is the same shape the modal 得 rule takes:
|
|
20
|
+
* a 教 with a pronoun, a noun or a name after it is governing it, and a 教 with
|
|
21
|
+
* 了, 过, 着 or 得 after it is a verb whatever follows that. A particle in front
|
|
22
|
+
* of it rules it out, since a verb does not follow one.
|
|
23
|
+
*/
|
|
24
|
+
export function isTeachingAt(context, at) {
|
|
25
|
+
if (tagOf(context, wordEndingAt(context, at)).startsWith(PARTICLE_TAG)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return (ASPECT.has(context.characters[at + 1] ?? "") ||
|
|
29
|
+
TAUGHT_TAGS.has(tagOf(context, wordStartingAt(context, at + 1))));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 教 read as `jiāo` where it is teaching rather than a religion.
|
|
33
|
+
*
|
|
34
|
+
* The dictionary stores 教 as `jiào` with `jiāo` as an alternate, and `jiào` is
|
|
35
|
+
* right for the compounds — 教育, 教师, 宗教, 主教 — which are words and reach
|
|
36
|
+
* their reading through the word. What is left is the 教 that stands as a word
|
|
37
|
+
* of its own, and that one is the verb: 他在北京大学教了三年书 came out
|
|
38
|
+
* `jiàole sān nián shū`, and 我教英语, 谁教你法语 and 她教我如何游泳 with it.
|
|
39
|
+
* 教书 is a word and was always `jiāo shū`; nothing carried that across a 了.
|
|
40
|
+
*
|
|
41
|
+
* See {@link isTeachingAt} for what decides it. Forcing the single-character
|
|
42
|
+
* edge is not enough on its own, because a reading spanning two characters
|
|
43
|
+
* carries its own 教 into the position: 王老师教我们汉语 read `jiào` off 师教,
|
|
44
|
+
* and 来教我 off 来教. Those are pairs the dictionary holds with no part of
|
|
45
|
+
* speech and at the cost of a word nothing has ever counted — a reading rather
|
|
46
|
+
* than a word — so a *tagged* word ending in 教 is left alone, which is every
|
|
47
|
+
* one that matters: 任教, 宗教, 主教, 佛教, 传教, 执教, 请教, 家教.
|
|
48
|
+
*
|
|
49
|
+
* Measured over 88,866 lines of Tatoeba and zh.wikipedia, 181 教 decode as a
|
|
50
|
+
* word of their own and every one of them read `jiào`. This moves 158 to
|
|
51
|
+
* `jiāo` and is wrong on three: 统一教创始人, 方法教深思 and 做到了教政分离,
|
|
52
|
+
* where a nominal compound takes an object's shape, the last of them because
|
|
53
|
+
* 做到了 is a word and so the 了 in front is not a particle to look at. Of the
|
|
54
|
+
* 21 it leaves, 8 are right — 诸教中, 教外别传, 董教总, 风教, 教青局 twice, a
|
|
55
|
+
* 教室 reached through a bad split, and a 教 used as a bare noun — and 13 are
|
|
56
|
+
* misses, where jieba tags the object something this does not name.
|
|
57
|
+
*/
|
|
58
|
+
export const TEACHING_JIAO = {
|
|
59
|
+
name: "teaching-jiao",
|
|
60
|
+
verdictFor: (context) => {
|
|
61
|
+
const { edge } = context;
|
|
62
|
+
if (edge.text === "教") {
|
|
63
|
+
return isJiao(edge.reading[0]) && isTeachingAt(context, edge.from)
|
|
64
|
+
? "force"
|
|
65
|
+
: "keep";
|
|
66
|
+
}
|
|
67
|
+
return edge.partOfSpeech === "" &&
|
|
68
|
+
edge.text.endsWith("教") &&
|
|
69
|
+
edge.reading.length === edge.to - edge.from &&
|
|
70
|
+
!isJiao(edge.reading.at(-1)) &&
|
|
71
|
+
isTeachingAt(context, edge.to - 1)
|
|
72
|
+
? "forbid"
|
|
73
|
+
: "keep";
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=jiao-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jiao-rule.js","sourceRoot":"","sources":["../../src/decode/jiao-rule.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,MAAM,EACN,YAAY,EAGZ,KAAK,EACL,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,QAA8B;IACnD,OAAO,CACL,QAAQ,EAAE,OAAO,KAAK,GAAG,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,OAAoB,EAAE,EAAU;IAC3D,IAAI,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CACjE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,aAAa,GAAa;IACrC,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,CAAC,OAAoB,EAAE,EAAE;QACnC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;gBAChE,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,MAAM,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,KAAK,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI;YAC3C,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,MAAM,CAAC;IACb,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the lattice cost, forwards and backwards.
|
|
3
|
+
*
|
|
4
|
+
* The two sweeps a confidence score is read off: the cheapest way into every
|
|
5
|
+
* position and the cheapest way out of it. An edge is uncertain exactly where
|
|
6
|
+
* some rival edge over the same characters costs nearly as little.
|
|
7
|
+
*/
|
|
8
|
+
import type { ReadingUnit } from "./locking.js";
|
|
9
|
+
import type { Lattice, LatticeEdge } from "./lattice.js";
|
|
10
|
+
import type { CostOf } from "./viterbi.js";
|
|
11
|
+
/**
|
|
12
|
+
* One distinct reading claimed in a stretch, and what claiming it costs.
|
|
13
|
+
*/
|
|
14
|
+
export interface ScoredClaim {
|
|
15
|
+
readonly unit: ReadingUnit;
|
|
16
|
+
readonly cost: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Every distinct reading claimed in a stretch, and the stretch's own best cost.
|
|
20
|
+
*/
|
|
21
|
+
export interface ScoredStretch {
|
|
22
|
+
readonly claims: ReadonlyMap<string, ScoredClaim>;
|
|
23
|
+
readonly best: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The edges leaving one position.
|
|
27
|
+
*/
|
|
28
|
+
export declare function edgesAt(lattice: Lattice, at: number): readonly LatticeEdge[];
|
|
29
|
+
/**
|
|
30
|
+
* Every edge lying wholly inside a stretch.
|
|
31
|
+
*/
|
|
32
|
+
export declare function edgesInside(lattice: Lattice, from: number, to: number): readonly LatticeEdge[];
|
|
33
|
+
/**
|
|
34
|
+
* Cheapest cost of reaching each position in a stretch from its start.
|
|
35
|
+
*/
|
|
36
|
+
export declare function forwardCosts(lattice: Lattice, from: number, to: number, costOf: CostOf): readonly number[];
|
|
37
|
+
/**
|
|
38
|
+
* Cheapest cost of reaching the end of a stretch from each position in it.
|
|
39
|
+
*/
|
|
40
|
+
export declare function backwardCosts(lattice: Lattice, from: number, to: number, costOf: CostOf): readonly number[];
|
|
41
|
+
/**
|
|
42
|
+
* Price every distinct reading a stretch offers.
|
|
43
|
+
*
|
|
44
|
+
* A claim is priced by the cheapest path through the whole stretch that makes
|
|
45
|
+
* it, which is what makes the figures comparable: a reading can be expensive
|
|
46
|
+
* because it forces expensive readings around it as much as because it is
|
|
47
|
+
* itself unlikely. One forward sweep and one backward sweep give that for every
|
|
48
|
+
* edge at once, which is the same work the decode already does in one
|
|
49
|
+
* direction.
|
|
50
|
+
*/
|
|
51
|
+
export declare function scoreClaims(lattice: Lattice, from: number, to: number, costOf: CostOf): ScoredStretch;
|
|
52
|
+
/**
|
|
53
|
+
* What a unit beat: the claims overlapping its span, other than its own.
|
|
54
|
+
*/
|
|
55
|
+
//# sourceMappingURL=lattice-costs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lattice-costs.d.ts","sourceRoot":"","sources":["../../src/decode/lattice-costs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,CAG5E;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,SAAS,WAAW,EAAE,CAMxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GACb,SAAS,MAAM,EAAE,CAiBnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GACb,SAAS,MAAM,EAAE,CAiBnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GACb,aAAa,CAsBf;AAED;;GAEG"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { unitKey, unitsOf } from "./locking.js";
|
|
2
|
+
/**
|
|
3
|
+
* The edges leaving one position.
|
|
4
|
+
*/
|
|
5
|
+
export function edgesAt(lattice, at) {
|
|
6
|
+
/* c8 ignore next -- at is always a position of the run */
|
|
7
|
+
return lattice.edges[at] ?? [];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Every edge lying wholly inside a stretch.
|
|
11
|
+
*/
|
|
12
|
+
export function edgesInside(lattice, from, to) {
|
|
13
|
+
const inside = [];
|
|
14
|
+
for (let at = from; at < to; at++) {
|
|
15
|
+
inside.push(...edgesAt(lattice, at).filter((edge) => edge.to <= to));
|
|
16
|
+
}
|
|
17
|
+
return inside;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Cheapest cost of reaching each position in a stretch from its start.
|
|
21
|
+
*/
|
|
22
|
+
export function forwardCosts(lattice, from, to, costOf) {
|
|
23
|
+
const best = Array.from({ length: to - from + 1 }, () => Infinity);
|
|
24
|
+
best[0] = 0;
|
|
25
|
+
for (let at = from; at < to; at++) {
|
|
26
|
+
/* c8 ignore next 2 -- every position of the stretch is reached and in range */
|
|
27
|
+
const sofar = best[at - from] ?? Infinity;
|
|
28
|
+
for (const edge of edgesAt(lattice, at)) {
|
|
29
|
+
/* c8 ignore next -- the target of an edge inside the stretch is in range */
|
|
30
|
+
const rival = best[edge.to - from] ?? Infinity;
|
|
31
|
+
if (edge.to <= to && sofar + costOf(edge) < rival) {
|
|
32
|
+
best[edge.to - from] = sofar + costOf(edge);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return best;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Cheapest cost of reaching the end of a stretch from each position in it.
|
|
40
|
+
*/
|
|
41
|
+
export function backwardCosts(lattice, from, to, costOf) {
|
|
42
|
+
const best = Array.from({ length: to - from + 1 }, () => Infinity);
|
|
43
|
+
best[to - from] = 0;
|
|
44
|
+
for (let at = to - 1; at >= from; at--) {
|
|
45
|
+
let cheapest = Infinity;
|
|
46
|
+
for (const edge of edgesAt(lattice, at)) {
|
|
47
|
+
/* c8 ignore next -- the target of an edge inside the stretch is in range */
|
|
48
|
+
const onwards = best[edge.to - from] ?? Infinity;
|
|
49
|
+
if (edge.to <= to && costOf(edge) + onwards < cheapest) {
|
|
50
|
+
cheapest = costOf(edge) + onwards;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
best[at - from] = cheapest;
|
|
54
|
+
}
|
|
55
|
+
return best;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Price every distinct reading a stretch offers.
|
|
59
|
+
*
|
|
60
|
+
* A claim is priced by the cheapest path through the whole stretch that makes
|
|
61
|
+
* it, which is what makes the figures comparable: a reading can be expensive
|
|
62
|
+
* because it forces expensive readings around it as much as because it is
|
|
63
|
+
* itself unlikely. One forward sweep and one backward sweep give that for every
|
|
64
|
+
* edge at once, which is the same work the decode already does in one
|
|
65
|
+
* direction.
|
|
66
|
+
*/
|
|
67
|
+
export function scoreClaims(lattice, from, to, costOf) {
|
|
68
|
+
const forward = forwardCosts(lattice, from, to, costOf);
|
|
69
|
+
const backward = backwardCosts(lattice, from, to, costOf);
|
|
70
|
+
const claims = new Map();
|
|
71
|
+
for (const edge of edgesInside(lattice, from, to)) {
|
|
72
|
+
/* c8 ignore next 2 -- both ends of an edge in the stretch are in range */
|
|
73
|
+
const through = (forward[edge.from - from] ?? Infinity) +
|
|
74
|
+
costOf(edge) +
|
|
75
|
+
(backward[edge.to - from] ?? Infinity);
|
|
76
|
+
for (const unit of unitsOf(edge)) {
|
|
77
|
+
const key = unitKey(unit);
|
|
78
|
+
const held = claims.get(key);
|
|
79
|
+
if (held === undefined || through < held.cost) {
|
|
80
|
+
claims.set(key, { unit, cost: through });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/* c8 ignore next -- every position of a stretch is reachable from its start */
|
|
85
|
+
return { claims, best: forward[to - from] ?? Infinity };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* What a unit beat: the claims overlapping its span, other than its own.
|
|
89
|
+
*/
|
|
90
|
+
//# sourceMappingURL=lattice-costs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lattice-costs.js","sourceRoot":"","sources":["../../src/decode/lattice-costs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The edges one position of a lattice offers.
|
|
3
|
+
*
|
|
4
|
+
* A word the dictionary has starting here, or the single character sitting
|
|
5
|
+
* here — the two ways a reading can cover ground, kept apart from assembling
|
|
6
|
+
* them into a lattice.
|
|
7
|
+
*/
|
|
8
|
+
import type { Dictionary } from "../dictionary/dictionary.js";
|
|
9
|
+
import { type LatticeEdge } from "./lattice-types.js";
|
|
10
|
+
export { type Lattice, type LatticeEdge, READING_CHARGE, UNKNOWN_COST, } from "./lattice-types.js";
|
|
11
|
+
/**
|
|
12
|
+
* The edges leaving a position that come from multi-character dictionary words.
|
|
13
|
+
*
|
|
14
|
+
* Walks one character at a time and stops as soon as the dictionary reports
|
|
15
|
+
* that nothing begins with what has been collected, which is what keeps the
|
|
16
|
+
* scan linear in practice rather than quadratic in the longest key.
|
|
17
|
+
*/
|
|
18
|
+
export declare function wordEdgesAt(dictionary: Dictionary, characters: readonly string[], at: number): readonly LatticeEdge[];
|
|
19
|
+
/**
|
|
20
|
+
* The single-character edges leaving a position, one per known reading.
|
|
21
|
+
*
|
|
22
|
+
* Always present, whatever words also start here. Two things depend on that:
|
|
23
|
+
* every position has an outgoing edge, so the lattice is always traversable;
|
|
24
|
+
* and a polyphone offers all of its readings at every position, so scoring has
|
|
25
|
+
* something to choose between rather than only what the word list happens to
|
|
26
|
+
* cover.
|
|
27
|
+
*/
|
|
28
|
+
export declare function characterEdgesAt(dictionary: Dictionary, characters: readonly string[], at: number): readonly LatticeEdge[];
|
|
29
|
+
//# sourceMappingURL=lattice-edges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lattice-edges.d.ts","sourceRoot":"","sources":["../../src/decode/lattice-edges.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAEL,KAAK,WAAW,EAIjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,EAAE,EAAE,MAAM,GACT,SAAS,WAAW,EAAE,CA+BxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,EAAE,EAAE,MAAM,GACT,SAAS,WAAW,EAAE,CAkCxB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ALTERNATE_PENALTY, LONGEST_WORD, READING_CHARGE, UNKNOWN_COST, } from "./lattice-types.js";
|
|
2
|
+
export { READING_CHARGE, UNKNOWN_COST, } from "./lattice-types.js";
|
|
3
|
+
/**
|
|
4
|
+
* The edges leaving a position that come from multi-character dictionary words.
|
|
5
|
+
*
|
|
6
|
+
* Walks one character at a time and stops as soon as the dictionary reports
|
|
7
|
+
* that nothing begins with what has been collected, which is what keeps the
|
|
8
|
+
* scan linear in practice rather than quadratic in the longest key.
|
|
9
|
+
*/
|
|
10
|
+
export function wordEdgesAt(dictionary, characters, at) {
|
|
11
|
+
const edges = [];
|
|
12
|
+
let candidate = "";
|
|
13
|
+
for (let length = 0; length < LONGEST_WORD && at + length < characters.length; length++) {
|
|
14
|
+
/* c8 ignore next -- the loop condition keeps the index in range */
|
|
15
|
+
candidate += characters[at + length] ?? "";
|
|
16
|
+
if (!dictionary.hasPrefix(candidate)) {
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
const entry = length === 0 ? undefined : dictionary.lookup(candidate);
|
|
20
|
+
if (entry !== undefined) {
|
|
21
|
+
edges.push({
|
|
22
|
+
from: at,
|
|
23
|
+
to: at + length + 1,
|
|
24
|
+
text: candidate,
|
|
25
|
+
reading: entry.reading,
|
|
26
|
+
cost: entry.cost,
|
|
27
|
+
readingCost: entry.cost + READING_CHARGE,
|
|
28
|
+
isProperNoun: entry.isProperNoun,
|
|
29
|
+
partOfSpeech: entry.partOfSpeech,
|
|
30
|
+
isKnown: true,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return edges;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The single-character edges leaving a position, one per known reading.
|
|
38
|
+
*
|
|
39
|
+
* Always present, whatever words also start here. Two things depend on that:
|
|
40
|
+
* every position has an outgoing edge, so the lattice is always traversable;
|
|
41
|
+
* and a polyphone offers all of its readings at every position, so scoring has
|
|
42
|
+
* something to choose between rather than only what the word list happens to
|
|
43
|
+
* cover.
|
|
44
|
+
*/
|
|
45
|
+
export function characterEdgesAt(dictionary, characters, at) {
|
|
46
|
+
/* c8 ignore next -- callers only ask about positions inside the run */
|
|
47
|
+
const character = characters[at] ?? "";
|
|
48
|
+
const entry = dictionary.lookup(character);
|
|
49
|
+
if (entry === undefined) {
|
|
50
|
+
// A character with no entry at all: keep it, unread, so that the text still
|
|
51
|
+
// round-trips and the failure is visible rather than silent.
|
|
52
|
+
return [
|
|
53
|
+
{
|
|
54
|
+
from: at,
|
|
55
|
+
to: at + 1,
|
|
56
|
+
text: character,
|
|
57
|
+
reading: [],
|
|
58
|
+
cost: UNKNOWN_COST,
|
|
59
|
+
readingCost: UNKNOWN_COST + READING_CHARGE,
|
|
60
|
+
isProperNoun: false,
|
|
61
|
+
partOfSpeech: "",
|
|
62
|
+
isKnown: false,
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
}
|
|
66
|
+
return dictionary.readingsOf(character).map((reading, rank) => ({
|
|
67
|
+
from: at,
|
|
68
|
+
to: at + 1,
|
|
69
|
+
text: character,
|
|
70
|
+
reading,
|
|
71
|
+
cost: entry.cost + rank * ALTERNATE_PENALTY,
|
|
72
|
+
readingCost: entry.cost + rank * ALTERNATE_PENALTY + READING_CHARGE,
|
|
73
|
+
isProperNoun: entry.isProperNoun,
|
|
74
|
+
partOfSpeech: entry.partOfSpeech,
|
|
75
|
+
isKnown: true,
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=lattice-edges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lattice-edges.js","sourceRoot":"","sources":["../../src/decode/lattice-edges.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,iBAAiB,EAEjB,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAGL,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,UAAsB,EACtB,UAA6B,EAC7B,EAAU;IAEV,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,KACE,IAAI,MAAM,GAAG,CAAC,EACd,MAAM,GAAG,YAAY,IAAI,EAAE,GAAG,MAAM,GAAG,UAAU,CAAC,MAAM,EACxD,MAAM,EAAE,EACR,CAAC;QACD,mEAAmE;QACnE,SAAS,IAAI,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,MAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,EAAE;gBACR,EAAE,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC;gBACnB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,IAAI,GAAG,cAAc;gBACxC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAsB,EACtB,UAA6B,EAC7B,EAAU;IAEV,uEAAuE;IACvE,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,4EAA4E;QAC5E,6DAA6D;QAC7D,OAAO;YACL;gBACE,IAAI,EAAE,EAAE;gBACR,EAAE,EAAE,EAAE,GAAG,CAAC;gBACV,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,YAAY,GAAG,cAAc;gBAC1C,YAAY,EAAE,KAAK;gBACnB,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE,KAAK;aACf;SACF,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,EAAE,EAAE;QACR,EAAE,EAAE,EAAE,GAAG,CAAC;QACV,IAAI,EAAE,SAAS;QACf,OAAO;QACP,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,iBAAiB;QAC3C,WAAW,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,iBAAiB,GAAG,cAAc;QACnE,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,IAAI;KACd,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cutting a lattice down to one run and lining the edges back up.
|
|
3
|
+
*
|
|
4
|
+
* A run is decoded on its own, so its edges are shifted to start at zero and
|
|
5
|
+
* shifted back afterwards.
|
|
6
|
+
*/
|
|
7
|
+
import type { Dictionary } from "../dictionary/dictionary.js";
|
|
8
|
+
import { type Lattice } from "./lattice.js";
|
|
9
|
+
import type { EdgeRule } from "./rules.js";
|
|
10
|
+
import { type ResolvedHints } from "./hints.js";
|
|
11
|
+
/**
|
|
12
|
+
* A lattice to decode over, and where in it the run itself starts.
|
|
13
|
+
*/
|
|
14
|
+
export interface RunLattice {
|
|
15
|
+
readonly lattice: Lattice;
|
|
16
|
+
readonly at: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Whether any reading in the lattice would hold the two sides of a join
|
|
20
|
+
* together.
|
|
21
|
+
*
|
|
22
|
+
* A reading of one syllable per character can be cut anywhere; anything else —
|
|
23
|
+
* 儿化, a character with no reading — is a single claim about its whole span,
|
|
24
|
+
* so a claim spanning the join cannot be reported for the run alone. 1点儿事
|
|
25
|
+
* is that case: 一点儿 is one `yìdiǎnr` over the 一 the context supplied and
|
|
26
|
+
* the 点儿 the run did.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isJoinedAt(lattice: Lattice, at: number): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* The lattice a run decodes over, with whatever context stands in front of it.
|
|
31
|
+
*
|
|
32
|
+
* The context is dropped where a reading would hold it to the run, leaving the
|
|
33
|
+
* run decoded on its own, which is what it would have been before there was any
|
|
34
|
+
* context to give.
|
|
35
|
+
*/
|
|
36
|
+
export declare function runLattice(dictionary: Dictionary, run: string, rules: readonly EdgeRule[], before: string, hints: ResolvedHints | undefined): RunLattice;
|
|
37
|
+
//# sourceMappingURL=lattice-slice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lattice-slice.d.ts","sourceRoot":"","sources":["../../src/decode/lattice-slice.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAG5D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAOhE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GAAG,SAAS,GAC/B,UAAU,CAoBZ"}
|