@kensio/pinyinjs 1.7.4 → 1.7.6
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 +128 -123
- package/data/full.entries +2595 -2595
- package/data/manifest.json +5 -5
- package/data/script.map +66 -3
- 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/chang-context.d.ts +27 -0
- package/dist/decode/chang-context.d.ts.map +1 -0
- package/dist/decode/chang-context.js +66 -0
- package/dist/decode/chang-context.js.map +1 -0
- package/dist/decode/chang-rule.d.ts +37 -0
- package/dist/decode/chang-rule.d.ts.map +1 -0
- package/dist/decode/chang-rule.js +169 -0
- package/dist/decode/chang-rule.js.map +1 -0
- package/dist/decode/confidence.d.ts +11 -3
- package/dist/decode/confidence.d.ts.map +1 -1
- package/dist/decode/confidence.js +14 -121
- 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 +67 -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/de-rule.d.ts +54 -0
- package/dist/decode/de-rule.d.ts.map +1 -0
- package/dist/decode/de-rule.js +113 -0
- package/dist/decode/de-rule.js.map +1 -0
- 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 +154 -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 +64 -0
- package/dist/decode/jiao-rule.d.ts.map +1 -0
- package/dist/decode/jiao-rule.js +115 -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 +101 -0
- package/dist/decode/lattice-types.d.ts.map +1 -0
- package/dist/decode/lattice-types.js +63 -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 +11 -0
- package/dist/decode/polyphone-rules.d.ts.map +1 -0
- package/dist/decode/polyphone-rules.js +11 -0
- package/dist/decode/polyphone-rules.js.map +1 -0
- package/dist/decode/reading-rules.d.ts +3 -126
- package/dist/decode/reading-rules.d.ts.map +1 -1
- package/dist/decode/reading-rules.js +8 -434
- 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/run-words.d.ts +17 -0
- package/dist/decode/run-words.d.ts.map +1 -0
- package/dist/decode/run-words.js +29 -0
- package/dist/decode/run-words.js.map +1 -0
- package/dist/decode/sandhi-input.d.ts +30 -0
- package/dist/decode/sandhi-input.d.ts.map +1 -0
- package/dist/decode/sandhi-input.js +35 -0
- package/dist/decode/sandhi-input.js.map +1 -0
- package/dist/decode/sandhi-tones.d.ts +97 -0
- package/dist/decode/sandhi-tones.d.ts.map +1 -0
- package/dist/decode/sandhi-tones.js +139 -0
- package/dist/decode/sandhi-tones.js.map +1 -0
- package/dist/decode/sandhi.d.ts +10 -7
- package/dist/decode/sandhi.d.ts.map +1 -1
- package/dist/decode/sandhi.js +11 -88
- 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 +21 -0
- package/dist/decode/write-run.d.ts.map +1 -0
- package/dist/decode/write-run.js +42 -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 +87 -0
- package/dist/dictionary/cedict-senses.d.ts.map +1 -0
- package/dist/dictionary/cedict-senses.js +126 -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/constituent-repair.d.ts +36 -0
- package/dist/dictionary/constituent-repair.d.ts.map +1 -0
- package/dist/dictionary/constituent-repair.js +117 -0
- package/dist/dictionary/constituent-repair.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 +127 -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-walk.d.ts +27 -0
- package/dist/dictionary/merge-walk.d.ts.map +1 -0
- package/dist/dictionary/merge-walk.js +49 -0
- package/dist/dictionary/merge-walk.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 +32 -725
- 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 +41 -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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- 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
|
@@ -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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { allEdges } from "./lattice.js";
|
|
2
|
+
import { toCharacters } from "../script/characters.js";
|
|
3
|
+
import { shiftHints } from "./hints.js";
|
|
4
|
+
import { ruledLattice } from "./run-lattice.js";
|
|
5
|
+
/**
|
|
6
|
+
* Whether any reading in the lattice would hold the two sides of a join
|
|
7
|
+
* together.
|
|
8
|
+
*
|
|
9
|
+
* A reading of one syllable per character can be cut anywhere; anything else —
|
|
10
|
+
* 儿化, a character with no reading — is a single claim about its whole span,
|
|
11
|
+
* so a claim spanning the join cannot be reported for the run alone. 1点儿事
|
|
12
|
+
* is that case: 一点儿 is one `yìdiǎnr` over the 一 the context supplied and
|
|
13
|
+
* the 点儿 the run did.
|
|
14
|
+
*/
|
|
15
|
+
export function isJoinedAt(lattice, at) {
|
|
16
|
+
return allEdges(lattice).some((edge) => edge.from < at &&
|
|
17
|
+
edge.to > at &&
|
|
18
|
+
edge.reading.length !== edge.to - edge.from);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The lattice a run decodes over, with whatever context stands in front of it.
|
|
22
|
+
*
|
|
23
|
+
* The context is dropped where a reading would hold it to the run, leaving the
|
|
24
|
+
* run decoded on its own, which is what it would have been before there was any
|
|
25
|
+
* context to give.
|
|
26
|
+
*/
|
|
27
|
+
export function runLattice(dictionary, run, rules, before, hints) {
|
|
28
|
+
const alone = () => ({
|
|
29
|
+
lattice: ruledLattice(dictionary, run, rules, hints),
|
|
30
|
+
at: 0,
|
|
31
|
+
});
|
|
32
|
+
if (before === "") {
|
|
33
|
+
return alone();
|
|
34
|
+
}
|
|
35
|
+
const held = toCharacters(before).length;
|
|
36
|
+
// The context is decoded with the run, so every hint position moves along
|
|
37
|
+
// with it. Shifting a copy keeps the caller's positions relative to the run
|
|
38
|
+
// they were given for.
|
|
39
|
+
const lattice = ruledLattice(dictionary, before + run, rules, hints === undefined ? undefined : shiftHints(hints, held));
|
|
40
|
+
const at = held;
|
|
41
|
+
return isJoinedAt(lattice, at) ? alone() : { lattice, at };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=lattice-slice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lattice-slice.js","sourceRoot":"","sources":["../../src/decode/lattice-slice.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAgB,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAsB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAUhD;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,EAAU;IACrD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,GAAG,EAAE;QACd,IAAI,CAAC,EAAE,GAAG,EAAE;QACZ,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,UAAsB,EACtB,GAAW,EACX,KAA0B,EAC1B,MAAc,EACd,KAAgC;IAEhC,MAAM,KAAK,GAAG,GAAe,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;QACpD,EAAE,EAAE,CAAC;KACN,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,OAAO,KAAK,EAAE,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACzC,0EAA0E;IAC1E,4EAA4E;IAC5E,uBAAuB;IACvB,MAAM,OAAO,GAAG,YAAY,CAC1B,UAAU,EACV,MAAM,GAAG,GAAG,EACZ,KAAK,EACL,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAC1D,CAAC;IACF,MAAM,EAAE,GAAG,IAAI,CAAC;IAChB,OAAO,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a lattice is made of, and what each edge costs it.
|
|
3
|
+
*
|
|
4
|
+
* The costs are the whole of the decode's judgement in four numbers, so they
|
|
5
|
+
* sit together and are stated once.
|
|
6
|
+
*/
|
|
7
|
+
import type { Syllable } from "../syllable/syllable.js";
|
|
8
|
+
/**
|
|
9
|
+
* One candidate reading of one stretch of characters.
|
|
10
|
+
*
|
|
11
|
+
* An edge runs from character position `from` to position `to`, exclusive, and
|
|
12
|
+
* carries the syllables that stretch is read as. The reading is *not* required
|
|
13
|
+
* to have one syllable per character: 玩儿 covers two characters and reads as
|
|
14
|
+
* the single syllable `wánr`, which is the case that stops the lattice being a
|
|
15
|
+
* simple per-character grid.
|
|
16
|
+
*/
|
|
17
|
+
export interface LatticeEdge {
|
|
18
|
+
readonly from: number;
|
|
19
|
+
readonly to: number;
|
|
20
|
+
readonly text: string;
|
|
21
|
+
readonly reading: readonly Syllable[];
|
|
22
|
+
/** What this edge costs the spacing decode: a quantised `−log P(word)`. */
|
|
23
|
+
readonly cost: number;
|
|
24
|
+
/** What this edge costs the reading decode. See {@link READING_CHARGE}. */
|
|
25
|
+
readonly readingCost: number;
|
|
26
|
+
readonly isProperNoun: boolean;
|
|
27
|
+
readonly partOfSpeech: string;
|
|
28
|
+
/** Whether a dictionary entry backs this edge, rather than a fallback. */
|
|
29
|
+
readonly isKnown: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Every candidate reading of a Han run, as a DAG over character positions.
|
|
33
|
+
*/
|
|
34
|
+
export interface Lattice {
|
|
35
|
+
readonly characters: readonly string[];
|
|
36
|
+
/** Edges leaving each position, indexed by that position. */
|
|
37
|
+
readonly edges: readonly (readonly LatticeEdge[])[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* How far ahead a match is looked for.
|
|
41
|
+
*
|
|
42
|
+
* The prefix check stops a scan long before this in practice; it is a guard
|
|
43
|
+
* against pathological input, not a real limit.
|
|
44
|
+
*/
|
|
45
|
+
export declare const LONGEST_WORD = 16;
|
|
46
|
+
/**
|
|
47
|
+
* What each step down a character's list of readings adds to the edge cost.
|
|
48
|
+
*
|
|
49
|
+
* A character's readings arrive most likely first, and nothing else in the data
|
|
50
|
+
* says how much more likely. One frequency bucket per step is the smallest
|
|
51
|
+
* separation that still ranks them, and it keeps a rare reading of a common
|
|
52
|
+
* character from outbidding a real dictionary word.
|
|
53
|
+
*/
|
|
54
|
+
export declare const ALTERNATE_PENALTY = 1;
|
|
55
|
+
/**
|
|
56
|
+
* What every edge costs the reading decode on top of its word cost.
|
|
57
|
+
*
|
|
58
|
+
* The two decodes want different things, which is the asymmetry ALGORITHM.md
|
|
59
|
+
* builds on. Spacing asks which segmentation the corpus makes likeliest, and
|
|
60
|
+
* `−log P(word)` answers it. Readings ask something else: 地气 is rarer than 地
|
|
61
|
+
* followed by 气, so the unigram model is right to split it and the reading
|
|
62
|
+
* that falls out — `de qì` — is still wrong, because the dictionary states
|
|
63
|
+
* outright that those two characters together read `dì qì`. A stored reading is
|
|
64
|
+
* evidence about the characters; a character's default reading is only a prior.
|
|
65
|
+
*
|
|
66
|
+
* So the reading decode charges per *edge*, and the charge is what a word is
|
|
67
|
+
* worth against the frequencies around it. The whole frequency scale is 15
|
|
68
|
+
* buckets wide, so a charge of 15 already makes the rarest possible word beat
|
|
69
|
+
* the two commonest possible characters. This was 16 for most of the project's
|
|
70
|
+
* life, and with `WORD_CHARGE` on top of it the real price of a word boundary
|
|
71
|
+
* was 20.62 — five buckets past the point where frequency can say anything at
|
|
72
|
+
* all. Every 那是 in the language read `nà shi` on the strength of one
|
|
73
|
+
* colloquial CC-CEDICT entry no corpus has ever counted, and 都会, 过得, 得了
|
|
74
|
+
* and 的哥 went the same way.
|
|
75
|
+
*
|
|
76
|
+
* At 6 the price is 10.62 and the arithmetic decides something. A word loses
|
|
77
|
+
* its span to a two-character split when the two characters are more than
|
|
78
|
+
* 25.62 buckets better than it, which needs a word nothing attests standing
|
|
79
|
+
* against two characters near the top of the scale. An attested word survives
|
|
80
|
+
* whatever is beside it, so 地气 is still `dì qì`.
|
|
81
|
+
*
|
|
82
|
+
* Measured over the 88,866 lines of Tatoeba and zh.wikipedia the stage-4 rules
|
|
83
|
+
* were sized against, moving 16 to 6 changes 822 of 139,682 Han runs. The
|
|
84
|
+
* changes are 那是 (303), 都 read `dū` (141), 得 read `dé` after a verb (98),
|
|
85
|
+
* 为 read `wéi` where it means *for* (36), 一个 (27), and a tail of 了, 只, 中,
|
|
86
|
+
* 说 and 的. Against them stand 21 老是, 11 等地 and 10 倒是, where the word
|
|
87
|
+
* really was one word. On CPP's 20,139 hand-labelled polyphones it is 91.48%
|
|
88
|
+
* either way, and the gold corpus does not move.
|
|
89
|
+
*
|
|
90
|
+
* Word frequency survives as the tiebreak between paths covering the same span
|
|
91
|
+
* with the same number of words.
|
|
92
|
+
*/
|
|
93
|
+
export declare const READING_CHARGE = 6;
|
|
94
|
+
/**
|
|
95
|
+
* What an edge covering a character no dictionary entry knows costs.
|
|
96
|
+
*
|
|
97
|
+
* Above the worst cost a real entry can carry, so that any known reading is
|
|
98
|
+
* preferred to none.
|
|
99
|
+
*/
|
|
100
|
+
export declare const UNKNOWN_COST = 32;
|
|
101
|
+
//# sourceMappingURL=lattice-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lattice-types.d.ts","sourceRoot":"","sources":["../../src/decode/lattice-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC;CACrD;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,KAAK,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How far ahead a match is looked for.
|
|
3
|
+
*
|
|
4
|
+
* The prefix check stops a scan long before this in practice; it is a guard
|
|
5
|
+
* against pathological input, not a real limit.
|
|
6
|
+
*/
|
|
7
|
+
export const LONGEST_WORD = 16;
|
|
8
|
+
/**
|
|
9
|
+
* What each step down a character's list of readings adds to the edge cost.
|
|
10
|
+
*
|
|
11
|
+
* A character's readings arrive most likely first, and nothing else in the data
|
|
12
|
+
* says how much more likely. One frequency bucket per step is the smallest
|
|
13
|
+
* separation that still ranks them, and it keeps a rare reading of a common
|
|
14
|
+
* character from outbidding a real dictionary word.
|
|
15
|
+
*/
|
|
16
|
+
export const ALTERNATE_PENALTY = 1;
|
|
17
|
+
/**
|
|
18
|
+
* What every edge costs the reading decode on top of its word cost.
|
|
19
|
+
*
|
|
20
|
+
* The two decodes want different things, which is the asymmetry ALGORITHM.md
|
|
21
|
+
* builds on. Spacing asks which segmentation the corpus makes likeliest, and
|
|
22
|
+
* `−log P(word)` answers it. Readings ask something else: 地气 is rarer than 地
|
|
23
|
+
* followed by 气, so the unigram model is right to split it and the reading
|
|
24
|
+
* that falls out — `de qì` — is still wrong, because the dictionary states
|
|
25
|
+
* outright that those two characters together read `dì qì`. A stored reading is
|
|
26
|
+
* evidence about the characters; a character's default reading is only a prior.
|
|
27
|
+
*
|
|
28
|
+
* So the reading decode charges per *edge*, and the charge is what a word is
|
|
29
|
+
* worth against the frequencies around it. The whole frequency scale is 15
|
|
30
|
+
* buckets wide, so a charge of 15 already makes the rarest possible word beat
|
|
31
|
+
* the two commonest possible characters. This was 16 for most of the project's
|
|
32
|
+
* life, and with `WORD_CHARGE` on top of it the real price of a word boundary
|
|
33
|
+
* was 20.62 — five buckets past the point where frequency can say anything at
|
|
34
|
+
* all. Every 那是 in the language read `nà shi` on the strength of one
|
|
35
|
+
* colloquial CC-CEDICT entry no corpus has ever counted, and 都会, 过得, 得了
|
|
36
|
+
* and 的哥 went the same way.
|
|
37
|
+
*
|
|
38
|
+
* At 6 the price is 10.62 and the arithmetic decides something. A word loses
|
|
39
|
+
* its span to a two-character split when the two characters are more than
|
|
40
|
+
* 25.62 buckets better than it, which needs a word nothing attests standing
|
|
41
|
+
* against two characters near the top of the scale. An attested word survives
|
|
42
|
+
* whatever is beside it, so 地气 is still `dì qì`.
|
|
43
|
+
*
|
|
44
|
+
* Measured over the 88,866 lines of Tatoeba and zh.wikipedia the stage-4 rules
|
|
45
|
+
* were sized against, moving 16 to 6 changes 822 of 139,682 Han runs. The
|
|
46
|
+
* changes are 那是 (303), 都 read `dū` (141), 得 read `dé` after a verb (98),
|
|
47
|
+
* 为 read `wéi` where it means *for* (36), 一个 (27), and a tail of 了, 只, 中,
|
|
48
|
+
* 说 and 的. Against them stand 21 老是, 11 等地 and 10 倒是, where the word
|
|
49
|
+
* really was one word. On CPP's 20,139 hand-labelled polyphones it is 91.48%
|
|
50
|
+
* either way, and the gold corpus does not move.
|
|
51
|
+
*
|
|
52
|
+
* Word frequency survives as the tiebreak between paths covering the same span
|
|
53
|
+
* with the same number of words.
|
|
54
|
+
*/
|
|
55
|
+
export const READING_CHARGE = 6;
|
|
56
|
+
/**
|
|
57
|
+
* What an edge covering a character no dictionary entry knows costs.
|
|
58
|
+
*
|
|
59
|
+
* Above the worst cost a real entry can carry, so that any known reading is
|
|
60
|
+
* preferred to none.
|
|
61
|
+
*/
|
|
62
|
+
export const UNKNOWN_COST = 32;
|
|
63
|
+
//# sourceMappingURL=lattice-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lattice-types.js","sourceRoot":"","sources":["../../src/decode/lattice-types.ts"],"names":[],"mappings":"AAyCA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC"}
|
package/dist/decode/lattice.d.ts
CHANGED
|
@@ -1,64 +1,7 @@
|
|
|
1
1
|
import type { Dictionary } from "../dictionary/dictionary.js";
|
|
2
|
-
import type { Syllable } from "../syllable/syllable.js";
|
|
3
2
|
import { type ResolvedHints } from "./hints.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
* An edge runs from character position `from` to position `to`, exclusive, and
|
|
8
|
-
* carries the syllables that stretch is read as. The reading is *not* required
|
|
9
|
-
* to have one syllable per character: 玩儿 covers two characters and reads as
|
|
10
|
-
* the single syllable `wánr`, which is the case that stops the lattice being a
|
|
11
|
-
* simple per-character grid.
|
|
12
|
-
*/
|
|
13
|
-
export interface LatticeEdge {
|
|
14
|
-
readonly from: number;
|
|
15
|
-
readonly to: number;
|
|
16
|
-
readonly text: string;
|
|
17
|
-
readonly reading: readonly Syllable[];
|
|
18
|
-
/** What this edge costs the spacing decode: a quantised `−log P(word)`. */
|
|
19
|
-
readonly cost: number;
|
|
20
|
-
/** What this edge costs the reading decode. See {@link READING_CHARGE}. */
|
|
21
|
-
readonly readingCost: number;
|
|
22
|
-
readonly isProperNoun: boolean;
|
|
23
|
-
readonly partOfSpeech: string;
|
|
24
|
-
/** Whether a dictionary entry backs this edge, rather than a fallback. */
|
|
25
|
-
readonly isKnown: boolean;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Every candidate reading of a Han run, as a DAG over character positions.
|
|
29
|
-
*/
|
|
30
|
-
export interface Lattice {
|
|
31
|
-
readonly characters: readonly string[];
|
|
32
|
-
/** Edges leaving each position, indexed by that position. */
|
|
33
|
-
readonly edges: readonly (readonly LatticeEdge[])[];
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* What every edge costs the reading decode on top of its word cost.
|
|
37
|
-
*
|
|
38
|
-
* The two decodes want different things, which is the asymmetry ALGORITHM.md
|
|
39
|
-
* builds on. Spacing asks which segmentation the corpus makes likeliest, and
|
|
40
|
-
* `−log P(word)` answers it. Readings ask something else: 地气 is rarer than 地
|
|
41
|
-
* followed by 气, so the unigram model is right to split it and the reading
|
|
42
|
-
* that falls out — `de qì` — is still wrong, because the dictionary states
|
|
43
|
-
* outright that those two characters together read `dì qì`. A stored reading is
|
|
44
|
-
* evidence about the characters; a character's default reading is only a prior.
|
|
45
|
-
*
|
|
46
|
-
* So the reading decode charges per *edge* heavily enough that dictionary
|
|
47
|
-
* evidence outranks frequency: at 16 an attested word always beats splitting it
|
|
48
|
-
* into characters, however common those characters are, since the worst word
|
|
49
|
-
* costs `15 + 16` and the best two-character split costs `0 + 16` twice. Word
|
|
50
|
-
* frequency survives as the tiebreak between paths covering the same span with
|
|
51
|
-
* the same number of words. That ordering — fewest words first, frequency
|
|
52
|
-
* second — is the one ALGORITHM.md already gives its data-free fallback tier.
|
|
53
|
-
*/
|
|
54
|
-
export declare const READING_CHARGE = 16;
|
|
55
|
-
/**
|
|
56
|
-
* What an edge covering a character no dictionary entry knows costs.
|
|
57
|
-
*
|
|
58
|
-
* Above the worst cost a real entry can carry, so that any known reading is
|
|
59
|
-
* preferred to none.
|
|
60
|
-
*/
|
|
61
|
-
export declare const UNKNOWN_COST = 32;
|
|
3
|
+
import type { Lattice, LatticeEdge } from "./lattice-types.js";
|
|
4
|
+
export { type Lattice, type LatticeEdge, READING_CHARGE, UNKNOWN_COST, } from "./lattice-types.js";
|
|
62
5
|
/**
|
|
63
6
|
* Build the lattice of every way a Han run could be read.
|
|
64
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lattice.d.ts","sourceRoot":"","sources":["../../src/decode/lattice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,
|
|
1
|
+
{"version":3,"file":"lattice.d.ts","sourceRoot":"","sources":["../../src/decode/lattice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAG5B;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAaT;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,WAAW,EAAE,CAEjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAuB7D"}
|