interscript 2.4.1 → 3.0.0
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/LICENSE +25 -0
- package/README.md +90 -41
- package/dist/cli.d.ts +25 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +327 -0
- package/dist/cli.js.map +1 -0
- package/dist/detector.d.ts +22 -0
- package/dist/detector.d.ts.map +1 -0
- package/dist/detector.js +73 -0
- package/dist/detector.js.map +1 -0
- package/dist/errors.d.ts +26 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +34 -0
- package/dist/errors.js.map +1 -0
- package/dist/http-loader.d.ts +42 -0
- package/dist/http-loader.d.ts.map +1 -0
- package/dist/http-loader.js +95 -0
- package/dist/http-loader.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -0
- package/dist/isc/converter.d.ts +11 -0
- package/dist/isc/converter.d.ts.map +1 -0
- package/dist/isc/converter.js +177 -0
- package/dist/isc/converter.js.map +1 -0
- package/dist/isc/index.d.ts +16 -0
- package/dist/isc/index.d.ts.map +1 -0
- package/dist/isc/index.js +15 -0
- package/dist/isc/index.js.map +1 -0
- package/dist/isc/loader.d.ts +22 -0
- package/dist/isc/loader.d.ts.map +1 -0
- package/dist/isc/loader.js +47 -0
- package/dist/isc/loader.js.map +1 -0
- package/dist/isc/parser.d.ts +14 -0
- package/dist/isc/parser.d.ts.map +1 -0
- package/dist/isc/parser.js +734 -0
- package/dist/isc/parser.js.map +1 -0
- package/dist/isc/types.d.ts +110 -0
- package/dist/isc/types.d.ts.map +1 -0
- package/dist/isc/types.js +19 -0
- package/dist/isc/types.js.map +1 -0
- package/dist/loader.d.ts +49 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +93 -0
- package/dist/loader.js.map +1 -0
- package/dist/loaders.d.ts +23 -0
- package/dist/loaders.d.ts.map +1 -0
- package/dist/loaders.js +40 -0
- package/dist/loaders.js.map +1 -0
- package/dist/loaders.node.d.ts +25 -0
- package/dist/loaders.node.d.ts.map +1 -0
- package/dist/loaders.node.js +42 -0
- package/dist/loaders.node.js.map +1 -0
- package/dist/ml/imf/index.d.ts +6 -0
- package/dist/ml/imf/index.d.ts.map +1 -0
- package/dist/ml/imf/index.js +6 -0
- package/dist/ml/imf/index.js.map +1 -0
- package/dist/ml/imf/loader.d.ts +19 -0
- package/dist/ml/imf/loader.d.ts.map +1 -0
- package/dist/ml/imf/loader.js +59 -0
- package/dist/ml/imf/loader.js.map +1 -0
- package/dist/ml/imf/model.d.ts +28 -0
- package/dist/ml/imf/model.d.ts.map +1 -0
- package/dist/ml/imf/model.js +181 -0
- package/dist/ml/imf/model.js.map +1 -0
- package/dist/ml/imf/registry.d.ts +30 -0
- package/dist/ml/imf/registry.d.ts.map +1 -0
- package/dist/ml/imf/registry.js +140 -0
- package/dist/ml/imf/registry.js.map +1 -0
- package/dist/ml/imf/tokens.d.ts +13 -0
- package/dist/ml/imf/tokens.d.ts.map +1 -0
- package/dist/ml/imf/tokens.js +32 -0
- package/dist/ml/imf/tokens.js.map +1 -0
- package/dist/ml/index.d.ts +24 -0
- package/dist/ml/index.d.ts.map +1 -0
- package/dist/ml/index.js +25 -0
- package/dist/ml/index.js.map +1 -0
- package/dist/ml/models/rababa/cleaner.d.ts +11 -0
- package/dist/ml/models/rababa/cleaner.d.ts.map +1 -0
- package/dist/ml/models/rababa/cleaner.js +21 -0
- package/dist/ml/models/rababa/cleaner.js.map +1 -0
- package/dist/ml/models/rababa/diacritizer.d.ts +37 -0
- package/dist/ml/models/rababa/diacritizer.d.ts.map +1 -0
- package/dist/ml/models/rababa/diacritizer.js +172 -0
- package/dist/ml/models/rababa/diacritizer.js.map +1 -0
- package/dist/ml/models/rababa/encoder.d.ts +40 -0
- package/dist/ml/models/rababa/encoder.d.ts.map +1 -0
- package/dist/ml/models/rababa/encoder.js +57 -0
- package/dist/ml/models/rababa/encoder.js.map +1 -0
- package/dist/ml/models/rababa/haraqat.d.ts +49 -0
- package/dist/ml/models/rababa/haraqat.d.ts.map +1 -0
- package/dist/ml/models/rababa/haraqat.js +89 -0
- package/dist/ml/models/rababa/haraqat.js.map +1 -0
- package/dist/ml/models/rababa/index.d.ts +12 -0
- package/dist/ml/models/rababa/index.d.ts.map +1 -0
- package/dist/ml/models/rababa/index.js +14 -0
- package/dist/ml/models/rababa/index.js.map +1 -0
- package/dist/ml/models/rababa/reconciler.d.ts +29 -0
- package/dist/ml/models/rababa/reconciler.d.ts.map +1 -0
- package/dist/ml/models/rababa/reconciler.js +81 -0
- package/dist/ml/models/rababa/reconciler.js.map +1 -0
- package/dist/ml/models/secryst/index.d.ts +10 -0
- package/dist/ml/models/secryst/index.d.ts.map +1 -0
- package/dist/ml/models/secryst/index.js +12 -0
- package/dist/ml/models/secryst/index.js.map +1 -0
- package/dist/ml/models/secryst/masks.d.ts +33 -0
- package/dist/ml/models/secryst/masks.d.ts.map +1 -0
- package/dist/ml/models/secryst/masks.js +73 -0
- package/dist/ml/models/secryst/masks.js.map +1 -0
- package/dist/ml/models/secryst/translator.d.ts +31 -0
- package/dist/ml/models/secryst/translator.d.ts.map +1 -0
- package/dist/ml/models/secryst/translator.js +112 -0
- package/dist/ml/models/secryst/translator.js.map +1 -0
- package/dist/ml/models/secryst/vocab.d.ts +39 -0
- package/dist/ml/models/secryst/vocab.d.ts.map +1 -0
- package/dist/ml/models/secryst/vocab.js +85 -0
- package/dist/ml/models/secryst/vocab.js.map +1 -0
- package/dist/ml/provision/base.d.ts +14 -0
- package/dist/ml/provision/base.d.ts.map +1 -0
- package/dist/ml/provision/base.js +19 -0
- package/dist/ml/provision/base.js.map +1 -0
- package/dist/ml/provision/index.d.ts +62 -0
- package/dist/ml/provision/index.d.ts.map +1 -0
- package/dist/ml/provision/index.js +107 -0
- package/dist/ml/provision/index.js.map +1 -0
- package/dist/ml/provision/manifest.d.ts +79 -0
- package/dist/ml/provision/manifest.d.ts.map +1 -0
- package/dist/ml/provision/manifest.js +122 -0
- package/dist/ml/provision/manifest.js.map +1 -0
- package/dist/ml/registry.d.ts +35 -0
- package/dist/ml/registry.d.ts.map +1 -0
- package/dist/ml/registry.js +76 -0
- package/dist/ml/registry.js.map +1 -0
- package/dist/ml/session/index.d.ts +55 -0
- package/dist/ml/session/index.d.ts.map +1 -0
- package/dist/ml/session/index.js +57 -0
- package/dist/ml/session/index.js.map +1 -0
- package/dist/ml/session/litert-web.d.ts +50 -0
- package/dist/ml/session/litert-web.d.ts.map +1 -0
- package/dist/ml/session/litert-web.js +146 -0
- package/dist/ml/session/litert-web.js.map +1 -0
- package/dist/ml/session/onnx-node.d.ts +10 -0
- package/dist/ml/session/onnx-node.d.ts.map +1 -0
- package/dist/ml/session/onnx-node.js +62 -0
- package/dist/ml/session/onnx-node.js.map +1 -0
- package/dist/ml/session/onnx-web.d.ts +23 -0
- package/dist/ml/session/onnx-web.d.ts.map +1 -0
- package/dist/ml/session/onnx-web.js +74 -0
- package/dist/ml/session/onnx-web.js.map +1 -0
- package/dist/ml/types.d.ts +113 -0
- package/dist/ml/types.d.ts.map +1 -0
- package/dist/ml/types.js +7 -0
- package/dist/ml/types.js.map +1 -0
- package/dist/runtime/compile-item.d.ts +53 -0
- package/dist/runtime/compile-item.d.ts.map +1 -0
- package/dist/runtime/compile-item.js +278 -0
- package/dist/runtime/compile-item.js.map +1 -0
- package/dist/runtime/context.d.ts +33 -0
- package/dist/runtime/context.d.ts.map +1 -0
- package/dist/runtime/context.js +67 -0
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/executor.d.ts +18 -0
- package/dist/runtime/executor.d.ts.map +1 -0
- package/dist/runtime/executor.js +228 -0
- package/dist/runtime/executor.js.map +1 -0
- package/dist/runtime/interpreter.d.ts +30 -0
- package/dist/runtime/interpreter.d.ts.map +1 -0
- package/dist/runtime/interpreter.js +130 -0
- package/dist/runtime/interpreter.js.map +1 -0
- package/dist/stdlib/ml.d.ts +55 -0
- package/dist/stdlib/ml.d.ts.map +1 -0
- package/dist/stdlib/ml.js +114 -0
- package/dist/stdlib/ml.js.map +1 -0
- package/dist/stdlib.d.ts +96 -0
- package/dist/stdlib.d.ts.map +1 -0
- package/dist/stdlib.js +160 -0
- package/dist/stdlib.js.map +1 -0
- package/dist/types.d.ts +167 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -0
- package/package.json +78 -18
- package/LICENSE.md +0 -31
- package/README.adoc +0 -78
- package/src/maps/acadsin-zho-Hani-Latn-2002.js +0 -9
- package/src/maps/alalc-amh-Ethi-Latn-1997.js +0 -8
- package/src/maps/alalc-amh-Ethi-Latn-2011.js +0 -7
- package/src/maps/alalc-ara-Arab-Latn-1997.js +0 -8
- package/src/maps/alalc-asm-Deva-Latn-1997.js +0 -50
- package/src/maps/alalc-asm-Deva-Latn-2012.js +0 -7
- package/src/maps/alalc-aze-Arab-Latn-1997.js +0 -11
- package/src/maps/alalc-aze-Cyrl-Latn-1997.js +0 -9
- package/src/maps/alalc-bel-Cyrl-Latn-1997.js +0 -8
- package/src/maps/alalc-ben-Beng-Latn-1997.js +0 -52
- package/src/maps/alalc-ben-Beng-Latn-2017.js +0 -9
- package/src/maps/alalc-bul-Cyrl-Latn-1997.js +0 -10
- package/src/maps/alalc-div-Thaa-Latn-1997.js +0 -38
- package/src/maps/alalc-div-Thaa-Latn-2012.js +0 -7
- package/src/maps/alalc-ell-Grek-Latn-1997.js +0 -25
- package/src/maps/alalc-ell-Grek-Latn-2010.js +0 -27
- package/src/maps/alalc-guj-Gujr-Latn-1997.js +0 -50
- package/src/maps/alalc-guj-Gujr-Latn-2011.js +0 -7
- package/src/maps/alalc-hin-Deva-Latn-1997.js +0 -60
- package/src/maps/alalc-hin-Deva-Latn-2011.js +0 -7
- package/src/maps/alalc-kan-Kana-Latn-1997.js +0 -51
- package/src/maps/alalc-kan-Kana-Latn-2011.js +0 -7
- package/src/maps/alalc-kat-Geok-Latn-1997.js +0 -8
- package/src/maps/alalc-kat-Geok-Latn-2011.js +0 -7
- package/src/maps/alalc-kat-Geor-Latn-1997.js +0 -8
- package/src/maps/alalc-kat-Geor-Latn-2011.js +0 -7
- package/src/maps/alalc-kor-Hang-Latn-1997.js +0 -9
- package/src/maps/alalc-mal-Mlym-Latn-1997.js +0 -52
- package/src/maps/alalc-mal-Mlym-Latn-2012.js +0 -7
- package/src/maps/alalc-mar-Deva-Latn-1997.js +0 -13
- package/src/maps/alalc-mar-Deva-Latn-2011.js +0 -7
- package/src/maps/alalc-mkd-Cyrl-Latn-1997.js +0 -17
- package/src/maps/alalc-mkd-Cyrl-Latn-2013.js +0 -17
- package/src/maps/alalc-mon-Cyrl-Latn-1997.js +0 -8
- package/src/maps/alalc-ori-Orya-Latn-1997.js +0 -55
- package/src/maps/alalc-ori-Orya-Latn-2011.js +0 -7
- package/src/maps/alalc-pan-Guru-Latn-1997.js +0 -17
- package/src/maps/alalc-pan-Guru-Latn-2011.js +0 -7
- package/src/maps/alalc-per-Arab-Latn-1997.js +0 -11
- package/src/maps/alalc-pli-Deva-Latn-2012.js +0 -13
- package/src/maps/alalc-pra-Deva-Latn-2012.js +0 -7
- package/src/maps/alalc-rus-Cyrl-Latn-1997.js +0 -9
- package/src/maps/alalc-rus-Cyrl-Latn-2012.js +0 -9
- package/src/maps/alalc-san-Deva-Latn-2012.js +0 -49
- package/src/maps/alalc-sin-Sinh-Latn-1997.js +0 -54
- package/src/maps/alalc-sin-Sinh-Latn-2011.js +0 -7
- package/src/maps/alalc-srp-Cyrl-Latn-1997.js +0 -17
- package/src/maps/alalc-srp-Cyrl-Latn-2013.js +0 -15
- package/src/maps/alalc-tam-Taml-Latn-1997.js +0 -9
- package/src/maps/alalc-tam-Taml-Latn-2011.js +0 -7
- package/src/maps/alalc-tel-Telu-Latn-1997.js +0 -54
- package/src/maps/alalc-tel-Telu-Latn-2011.js +0 -7
- package/src/maps/alalc-tir-Ethi-Latn-1997.js +0 -8
- package/src/maps/alalc-tir-Ethi-Latn-2011.js +0 -7
- package/src/maps/alalc-ukr-Cyrl-Latn-1997.js +0 -9
- package/src/maps/alalc-ukr-Cyrl-Latn-2011.js +0 -7
- package/src/maps/apcbg-bul-Cyrl-Latn-1995.js +0 -8
- package/src/maps/az-aze-Cyrl-Latn-1939.js +0 -8
- package/src/maps/az-aze-Cyrl-Latn-1958.js +0 -11
- package/src/maps/bas-rus-Cyrl-Latn-2017-bss.js +0 -10
- package/src/maps/bas-rus-Cyrl-Latn-2017-oss.js +0 -10
- package/src/maps/bgn-jpn-Hrkt-Latn-1962.js +0 -10
- package/src/maps/bgn-kor-Hang-Latn-1943.js +0 -9
- package/src/maps/bgn-kor-Kore-Latn-1943.js +0 -10
- package/src/maps/bgna-bul-Cyrl-Latn-2006.js +0 -7
- package/src/maps/bgna-bul-Cyrl-Latn-2009.js +0 -7
- package/src/maps/bgnpcgn-amh-Ethi-Latn-1967.js +0 -8
- package/src/maps/bgnpcgn-ara-Arab-Latn-1956.js +0 -25
- package/src/maps/bgnpcgn-arm-Armn-Latn-1981.js +0 -8
- package/src/maps/bgnpcgn-aze-Cyrl-Latn-1993.js +0 -8
- package/src/maps/bgnpcgn-bak-Cyrl-Latn-2007.js +0 -16
- package/src/maps/bgnpcgn-bal-Arab-Latn-2008.js +0 -9
- package/src/maps/bgnpcgn-bel-Cyrl-Latn-1979.js +0 -12
- package/src/maps/bgnpcgn-bul-Cyrl-Latn-1952.js +0 -12
- package/src/maps/bgnpcgn-bul-Cyrl-Latn-2013.js +0 -10
- package/src/maps/bgnpcgn-che-Cyrl-Latn-2008.js +0 -15
- package/src/maps/bgnpcgn-deu-Latn-Latn-2000.js +0 -12
- package/src/maps/bgnpcgn-div-Thaa-Latn-1972.js +0 -13
- package/src/maps/bgnpcgn-div-Thaa-Latn-1988.js +0 -9
- package/src/maps/bgnpcgn-ell-Grek-Latn-1962.js +0 -52
- package/src/maps/bgnpcgn-ell-Grek-Latn-1996.js +0 -7
- package/src/maps/bgnpcgn-fao-Latn-Latn-1964.js +0 -11
- package/src/maps/bgnpcgn-fao-Latn-Latn-1968.js +0 -7
- package/src/maps/bgnpcgn-fas-Arab-Latn-1956.js +0 -8
- package/src/maps/bgnpcgn-isl-Latn-Latn-1964.js +0 -10
- package/src/maps/bgnpcgn-isl-Latn-Latn-1968.js +0 -7
- package/src/maps/bgnpcgn-jpn-Hrkt-Latn-1976.js +0 -10
- package/src/maps/bgnpcgn-kat-Geor-Latn-1981.js +0 -8
- package/src/maps/bgnpcgn-kat-Geor-Latn-2009.js +0 -7
- package/src/maps/bgnpcgn-kaz-Cyrl-Latn-1979.js +0 -8
- package/src/maps/bgnpcgn-kir-Cyrl-Latn-1979.js +0 -8
- package/src/maps/bgnpcgn-kor-Hang-Latn-kn-1945.js +0 -52
- package/src/maps/bgnpcgn-kor-Hang-Latn-rok-2011.js +0 -8
- package/src/maps/bgnpcgn-kor-Kore-Latn-rok-2011.js +0 -8
- package/src/maps/bgnpcgn-kur-Arab-Latn-2007.js +0 -9
- package/src/maps/bgnpcgn-mkd-Cyrl-Latn-1981.js +0 -15
- package/src/maps/bgnpcgn-mkd-Cyrl-Latn-2013.js +0 -17
- package/src/maps/bgnpcgn-mon-Cyrl-Latn-1964.js +0 -12
- package/src/maps/bgnpcgn-nep-Deva-Latn-2011.js +0 -13
- package/src/maps/bgnpcgn-per-Arab-Latn-1958.js +0 -10
- package/src/maps/bgnpcgn-prs-Arab-Latn-2007.js +0 -25
- package/src/maps/bgnpcgn-prs-Arab-Latn-yaghoubi.js +0 -8
- package/src/maps/bgnpcgn-pus-Arab-Latn-1968.js +0 -26
- package/src/maps/bgnpcgn-ron-Cyrl-Latn-2002.js +0 -23
- package/src/maps/bgnpcgn-rue-Cyrl-Latn-2016.js +0 -8
- package/src/maps/bgnpcgn-rus-Cyrl-Latn-1947.js +0 -52
- package/src/maps/bgnpcgn-sme-Latn-Latn-1984.js +0 -8
- package/src/maps/bgnpcgn-srp-Cyrl-Latn-1962.js +0 -7
- package/src/maps/bgnpcgn-srp-Cyrl-Latn-2005.js +0 -15
- package/src/maps/bgnpcgn-tat-Cyrl-Latn-2007.js +0 -27
- package/src/maps/bgnpcgn-tgk-Cyrl-Latn-1994.js +0 -12
- package/src/maps/bgnpcgn-tir-Ethi-Latn-2007.js +0 -8
- package/src/maps/bgnpcgn-ukr-Cyrl-Latn-1965.js +0 -9
- package/src/maps/bgnpcgn-ukr-Cyrl-Latn-2019.js +0 -9
- package/src/maps/bgnpcgn-urd-Arab-Latn-2007.js +0 -25
- package/src/maps/bgnpcgn-uzb-Cyrl-Latn-1979.js +0 -12
- package/src/maps/bgnpcgn-uzb-Cyrl-Latn-2000.js +0 -11
- package/src/maps/bgnpcgn-zho-Hans-Latn-1979.js +0 -8
- package/src/maps/bis-asm-Beng-Latn-13194-1991.js +0 -14
- package/src/maps/bis-ben-Beng-Latn-13194-1991.js +0 -14
- package/src/maps/bis-dev-Deva-Latn-13194-1991.js +0 -14
- package/src/maps/bis-guj-Gujr-Latn-13194-1991.js +0 -14
- package/src/maps/bis-kan-Kana-Latn-13194-1991.js +0 -14
- package/src/maps/bis-mlm-Mlym-Latn-13194-1991.js +0 -14
- package/src/maps/bis-ori-Orya-Latn-13194-1991.js +0 -14
- package/src/maps/bis-pnj-Guru-Latn-13194-1991.js +0 -14
- package/src/maps/bis-tel-Telu-Latn-13194-1991.js +0 -14
- package/src/maps/bis-tml-Taml-Latn-13194-1991.js +0 -14
- package/src/maps/by-bel-Cyrl-Latn-1998.js +0 -19
- package/src/maps/by-bel-Cyrl-Latn-2007.js +0 -7
- package/src/maps/din-grc-Grek-Latn-31634-2011-t1.js +0 -23
- package/src/maps/din-hin-Deva-Latn-33904-2018.js +0 -9
- package/src/maps/din-kat-Geor-Latn-32707-2010.js +0 -8
- package/src/maps/din-mar-Deva-Latn-33904-2018.js +0 -9
- package/src/maps/din-nep-Deva-Latn-33904-2018.js +0 -9
- package/src/maps/din-pli-Deva-Latn-33904-2018.js +0 -7
- package/src/maps/din-pra-Deva-Latn-33904-2018.js +0 -7
- package/src/maps/din-san-Deva-Latn-33904-2018.js +0 -51
- package/src/maps/din-tam-Taml-Latn-33903-2016.js +0 -34
- package/src/maps/dos-nep-Deva-Latn-1997.js +0 -9
- package/src/maps/elot-ell-Grek-Latn-743-1982-tl.js +0 -53
- package/src/maps/elot-ell-Grek-Latn-743-1982-ts.js +0 -53
- package/src/maps/elot-ell-Grek-Latn-743-2001-tl.js +0 -7
- package/src/maps/elot-ell-Grek-Latn-743-2001-ts.js +0 -7
- package/src/maps/ggg-kat-Geor-Latn-2002.js +0 -8
- package/src/maps/gki-bel-Cyrl-Latn-1992.js +0 -9
- package/src/maps/gki-bel-Cyrl-Latn-2000.js +0 -18
- package/src/maps/gost-rus-Cyrl-Latn-16876-71-1983.js +0 -10
- package/src/maps/gost-rus-Cyrl-Latn-7.79-2000-2002.js +0 -9
- package/src/maps/hk-yue-Hani-Latn-1888.js +0 -10
- package/src/maps/icao-bel-Cyrl-Latn-9303.js +0 -8
- package/src/maps/icao-bul-Cyrl-Latn-9303.js +0 -8
- package/src/maps/icao-fas-Arab-Latn-9303.js +0 -8
- package/src/maps/icao-heb-Hebr-Latn-9303.js +0 -8
- package/src/maps/icao-mkd-Cyrl-Latn-9303.js +0 -8
- package/src/maps/icao-rus-Cyrl-Latn-9303.js +0 -8
- package/src/maps/icao-srp-Cyrl-Latn-9303.js +0 -8
- package/src/maps/icao-ukr-Cyrl-Latn-9303.js +0 -8
- package/src/maps/index.json +0 -1
- package/src/maps/iso-ara-Arab-Latn-233-1984.js +0 -24
- package/src/maps/iso-ara-Arab-Latn-233-2-1993.js +0 -12
- package/src/maps/iso-asm-Beng-Latn-15919-2001.js +0 -9
- package/src/maps/iso-ben-Beng-Latn-15919-2001.js +0 -9
- package/src/maps/iso-ell-Grek-Latn-843-1997-t1.js +0 -15
- package/src/maps/iso-ell-Grek-Latn-843-1997-t2.js +0 -9
- package/src/maps/iso-guj-Gujr-Latn-15919-2001.js +0 -9
- package/src/maps/iso-hin-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-inc-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-jpn-Hrkt-Latn-3602-1989.js +0 -10
- package/src/maps/iso-kan-Kana-Latn-15919-2001.js +0 -9
- package/src/maps/iso-kat-Geor-Latn-9984-1996.js +0 -8
- package/src/maps/iso-kor-Hang-Latn-1996-method1.js +0 -14
- package/src/maps/iso-kor-Hang-Latn-1996-method2.js +0 -13
- package/src/maps/iso-mal-Mlym-Latn-15919-2001.js +0 -12
- package/src/maps/iso-mar-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-nep-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-ori-Orya-Latn-15919-2001.js +0 -9
- package/src/maps/iso-pan-Guru-Latn-15919-2001.js +0 -9
- package/src/maps/iso-pli-Beng-Latn-15919-2001.js +0 -7
- package/src/maps/iso-pli-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-pli-Sinh-Latn-15919-2001.js +0 -9
- package/src/maps/iso-pli-Thai-Latn-15919-2001.js +0 -7
- package/src/maps/iso-pra-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-prs-Arab-Latn-233-3-1999.js +0 -8
- package/src/maps/iso-rus-Cyrl-Latn-9-1995.js +0 -8
- package/src/maps/iso-san-Deva-Latn-15919-2001.js +0 -9
- package/src/maps/iso-tam-Taml-Latn-15919-2001.js +0 -9
- package/src/maps/iso-tel-Telu-Latn-15919-2001.js +0 -9
- package/src/maps/iso-tha-Thai-Latn-11940-1998.js +0 -9
- package/src/maps/kp-kor-Hang-Latn-2002.js +0 -78
- package/src/maps/lshk-yue-Hani-Latn-jyutping-1993.js +0 -8
- package/src/maps/masm-mon-Cyrl-Latn-5217-2012.js +0 -8
- package/src/maps/masm-mon-Latn-Cyrl-5217-2012.js +0 -18
- package/src/maps/mext-jpn-Hrkt-Latn-1954.js +0 -16
- package/src/maps/moct-kor-Hang-Latn-2000.js +0 -112
- package/src/maps/mofa-jpn-Hrkt-Latn-1989.js +0 -14
- package/src/maps/mv-div-Thaa-Latn-1987.js +0 -58
- package/src/maps/mvd-bel-Cyrl-Latn-2008.js +0 -36
- package/src/maps/mvd-bel-Cyrl-Latn-2010.js +0 -11
- package/src/maps/mvd-rus-Cyrl-Latn-2008.js +0 -19
- package/src/maps/mvd-rus-Cyrl-Latn-2010.js +0 -9
- package/src/maps/odni-ara-Arab-Latn-2004.js +0 -7
- package/src/maps/odni-ara-Arab-Latn-2015.js +0 -10
- package/src/maps/odni-aze-Cyrl-Latn-2015.js +0 -18
- package/src/maps/odni-bel-Cyrl-Latn-2015.js +0 -8
- package/src/maps/odni-bul-Cyrl-Latn-2005.js +0 -8
- package/src/maps/odni-bul-Cyrl-Latn-2015.js +0 -13
- package/src/maps/odni-che-Cyrl-Latn-2015.js +0 -13
- package/src/maps/odni-fas-Arab-Latn-2004.js +0 -8
- package/src/maps/odni-fas-Arab-Latn-2015.js +0 -8
- package/src/maps/odni-hin-Deva-Latn-2004.js +0 -8
- package/src/maps/odni-hin-Deva-Latn-2015.js +0 -8
- package/src/maps/odni-kat-Geor-Latn-2015.js +0 -8
- package/src/maps/odni-kaz-Cyrl-Latn-2015.js +0 -20
- package/src/maps/odni-kir-Cyrl-Latn-2015.js +0 -18
- package/src/maps/odni-kor-Hang-Latn-2015.js +0 -92
- package/src/maps/odni-mkd-Cyrl-Latn-2005.js +0 -7
- package/src/maps/odni-mkd-Cyrl-Latn-2015.js +0 -8
- package/src/maps/odni-prs-Arab-Latn-2004.js +0 -9
- package/src/maps/odni-prs-Arab-Latn-2015.js +0 -9
- package/src/maps/odni-pus-Arab-Latn-2011.js +0 -10
- package/src/maps/odni-rus-Cyrl-Latn-2015.js +0 -8
- package/src/maps/odni-srp-Cyrl-Latn-2005.js +0 -7
- package/src/maps/odni-srp-Cyrl-Latn-2015.js +0 -8
- package/src/maps/odni-tat-Cyrl-Latn-2015.js +0 -19
- package/src/maps/odni-tgk-Cyrl-Latn-2015.js +0 -21
- package/src/maps/odni-tuk-Cyrl-Latn-2015.js +0 -13
- package/src/maps/odni-uig-Cyrl-Latn-2015.js +0 -17
- package/src/maps/odni-ukr-Cyrl-Latn-2015.js +0 -9
- package/src/maps/odni-urd-Arab-Latn-2015.js +0 -8
- package/src/maps/odni-uzb-Cyrl-Latn-2015.js +0 -13
- package/src/maps/posix.js +0 -5
- package/src/maps/sac-zho-Hans-Latn-1979.js +0 -8
- package/src/maps/sasm-mon-Mong-Latn-general-1978.js +0 -8
- package/src/maps/sasm-mon-Mong-Latn-phonetic-1978.js +0 -9
- package/src/maps/ses-ara-Arab-Latn-1930.js +0 -10
- package/src/maps/stategeocadastre-ukr-Cyrl-Latn-1993.js +0 -19
- package/src/maps/ua-ukr-Cyrl-Latn-1996.js +0 -21
- package/src/maps/ua-ukr-Cyrl-Latn-2007.js +0 -16
- package/src/maps/ua-ukr-Cyrl-Latn-2010.js +0 -11
- package/src/maps/un-amh-Ethi-Latn-2016.js +0 -9
- package/src/maps/un-ara-Arab-Latn-1971.js +0 -13
- package/src/maps/un-ara-Arab-Latn-1972.js +0 -13
- package/src/maps/un-ara-Arab-Latn-2017.js +0 -24
- package/src/maps/un-asm-Beng-Latn-1972.js +0 -50
- package/src/maps/un-bel-Cyrl-Latn-2007.js +0 -7
- package/src/maps/un-ben-Beng-Latn-2016.js +0 -8
- package/src/maps/un-bul-Cyrl-Latn-1977.js +0 -14
- package/src/maps/un-ell-Grek-Latn-1987-phonetic.js +0 -83
- package/src/maps/un-ell-Grek-Latn-1987-tl.js +0 -7
- package/src/maps/un-ell-Grek-Latn-1987-ts.js +0 -7
- package/src/maps/un-guj-Gujr-Latn-1972.js +0 -45
- package/src/maps/un-hin-Deva-Latn-2016.js +0 -91
- package/src/maps/un-kan-Kana-Latn-2016.js +0 -45
- package/src/maps/un-mal-Mlym-Latn-1972.js +0 -48
- package/src/maps/un-mar-Deva-Latn-2016.js +0 -11
- package/src/maps/un-mkd-Cyrl-Latn-1977.js +0 -21
- package/src/maps/un-mon-Mong-Latn-general-2013.js +0 -7
- package/src/maps/un-mon-Mong-Latn-phonetic-2013.js +0 -7
- package/src/maps/un-nep-Deva-Latn-1972.js +0 -91
- package/src/maps/un-nep-Deva-Latn-2013.js +0 -7
- package/src/maps/un-ori-Orya-Latn-1972.js +0 -48
- package/src/maps/un-pan-Guru-Latn-1972.js +0 -87
- package/src/maps/un-prs-Arab-Latn-1967.js +0 -11
- package/src/maps/un-rus-Cyrl-Latn-1987.js +0 -9
- package/src/maps/un-sin-Sinh-Latn-1972.js +0 -46
- package/src/maps/un-srp-Cyrl-Latn-1997.js +0 -7
- package/src/maps/un-tam-Taml-Latn-1972.js +0 -34
- package/src/maps/un-tel-Telu-Latn-1972.js +0 -46
- package/src/maps/un-ukr-Cyrl-Latn-1998.js +0 -10
- package/src/maps/un-ukr-Cyrl-Latn-2012.js +0 -7
- package/src/maps/un-urd-Arab-Latn-1972.js +0 -25
- package/src/maps/unicode.js +0 -7
- package/src/maps/var-Cyrl.js +0 -7
- package/src/maps/var-amh-Ethi-Latn-eae-2003.js +0 -8
- package/src/maps/var-gez-Ethi-Latn-eae-2003.js +0 -7
- package/src/maps/var-hin-Deva-Latn-hunterian-1872.js +0 -12
- package/src/maps/var-jpn-Hrkt-Latn-hepburn-1886.js +0 -18
- package/src/maps/var-jpn-Hrkt-Latn-hepburn-1954.js +0 -17
- package/src/maps/var-kor-Hang-Hang-jamo.js +0 -8
- package/src/maps/var-kor-Hang-Latn-mr-1939.js +0 -355
- package/src/maps/var-kor-Kore-Hang-2013.js +0 -8
- package/src/maps/var-kor-Kore-Latn-mr-1939.js +0 -10
- package/src/maps/var-kor.js +0 -19
- package/src/maps/var-mar-Deva-Latn-hunterian-1872.js +0 -7
- package/src/maps/var-mon-Mong-Latn-1930.js +0 -8
- package/src/maps/var-mon-Mong-Latn-lessing.js +0 -14
- package/src/maps/var-mon-Mong-Latn-vpmc.js +0 -10
- package/src/maps/var-pra-Deva-Latn-iast-1912.js +0 -7
- package/src/maps/var-san-Deva-Latn-iast-1912.js +0 -9
- package/src/maps/var-zho-Hani-Latn-wd-1979.js +0 -13
- package/src/stdlib.js +0 -294
- package/test/test.js +0 -26
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rababa diacritizer — port of `rababa/lib/rababa/arabic/diacritizer.rb`.
|
|
3
|
+
*
|
|
4
|
+
* Pipeline:
|
|
5
|
+
* text → clean → strip diacritics → encode to IDs
|
|
6
|
+
* → ONNX inference ({src, lengths}) → logits
|
|
7
|
+
* → argmax over classes → haraqat IDs
|
|
8
|
+
* → combine: original letters + predicted haraqat
|
|
9
|
+
* → reconcile with original input (preserves non-Arabic chars)
|
|
10
|
+
*
|
|
11
|
+
* The model file is loaded by the provisioner; we receive an
|
|
12
|
+
* InferenceSession + config artifacts.
|
|
13
|
+
*/
|
|
14
|
+
import { ArabicEncoder } from "./encoder.js";
|
|
15
|
+
import { reconcileStrings } from "./reconciler.js";
|
|
16
|
+
import { ID_TO_HARAAQAT, INPUT_ID_TO_SYMBOL } from "./haraqat.js";
|
|
17
|
+
const DEFAULT_CONFIG = {
|
|
18
|
+
maxLen: 200,
|
|
19
|
+
batchSize: 1,
|
|
20
|
+
textEncoder: "ArabicEncoderWithStartSymbol",
|
|
21
|
+
textCleaner: "valid_arabic_cleaners",
|
|
22
|
+
};
|
|
23
|
+
class RababaModelImpl {
|
|
24
|
+
kind = "rababa";
|
|
25
|
+
session;
|
|
26
|
+
encoder;
|
|
27
|
+
config;
|
|
28
|
+
constructor(session, config) {
|
|
29
|
+
this.session = session;
|
|
30
|
+
this.config = config;
|
|
31
|
+
this.encoder = new ArabicEncoder({
|
|
32
|
+
cleaner: config.textCleaner === "valid_arabic_cleaners" ? "arabic" : "basic",
|
|
33
|
+
startSymbol: config.textEncoder === "ArabicEncoderWithStartSymbol",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async diacritize(text) {
|
|
37
|
+
// Truncate if too long
|
|
38
|
+
let truncated = text;
|
|
39
|
+
if (truncated.length > this.config.maxLen) {
|
|
40
|
+
truncated = truncated.slice(0, this.config.maxLen);
|
|
41
|
+
}
|
|
42
|
+
// Clean → strip existing diacritics → encode
|
|
43
|
+
const cleaned = this.encoder.clean(truncated);
|
|
44
|
+
const stripped = this.stripDiacritics(cleaned);
|
|
45
|
+
const sequence = this.encoder.inputToSequence(stripped);
|
|
46
|
+
if (sequence.length === 0)
|
|
47
|
+
return truncated;
|
|
48
|
+
// Replicate the sequence batch_size times, padded to maxLen.
|
|
49
|
+
// The trained rababa model is fixed-shape [batch_size, max_len].
|
|
50
|
+
// We replicate the input row batch_size times (matching Ruby's
|
|
51
|
+
// diacritize_text) and pad each row to maxLen with the pad token.
|
|
52
|
+
const batchSize = this.config.batchSize;
|
|
53
|
+
const maxLen = this.config.maxLen;
|
|
54
|
+
const padToken = this.encoder.inputPadId;
|
|
55
|
+
const flat = [];
|
|
56
|
+
for (let b = 0; b < batchSize; b++) {
|
|
57
|
+
for (let i = 0; i < maxLen; i++) {
|
|
58
|
+
flat.push(i < sequence.length ? sequence[i] : padToken);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Inference: {src, lengths}
|
|
62
|
+
const src = {
|
|
63
|
+
name: "src",
|
|
64
|
+
type: "int64",
|
|
65
|
+
data: new BigInt64Array(flat.map((n) => BigInt(n))),
|
|
66
|
+
dims: [batchSize, maxLen],
|
|
67
|
+
};
|
|
68
|
+
const lengths = {
|
|
69
|
+
name: "lengths",
|
|
70
|
+
type: "int64",
|
|
71
|
+
data: new BigInt64Array(Array(batchSize).fill(BigInt(maxLen))),
|
|
72
|
+
dims: [batchSize],
|
|
73
|
+
};
|
|
74
|
+
const outputs = await this.session.run({ src, lengths });
|
|
75
|
+
// Outputs[0] is the predictions tensor: [batch, seq, classes].
|
|
76
|
+
const out = outputs[this.session.outputNames[0]];
|
|
77
|
+
if (!out)
|
|
78
|
+
throw new Error("Rababa model produced no output");
|
|
79
|
+
const preds = argmaxBatch(out, sequence.length);
|
|
80
|
+
const combined = combineTextAndHaraqat(sequence, preds, this.encoder.inputPadId);
|
|
81
|
+
return reconcileStrings(cleaned, combined);
|
|
82
|
+
}
|
|
83
|
+
/** Unified MLModel interface — delegates to diacritize. */
|
|
84
|
+
async transform(input) {
|
|
85
|
+
return this.diacritize(input);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Strip haraqat from text — direct port of the Ruby
|
|
89
|
+
* remove_diacritics. We reuse the encoder's vocab check.
|
|
90
|
+
*/
|
|
91
|
+
stripDiacritics(text) {
|
|
92
|
+
return Array.from(text)
|
|
93
|
+
.filter((c) => !/[ً-ْ]/.test(c))
|
|
94
|
+
.join("");
|
|
95
|
+
}
|
|
96
|
+
async dispose() {
|
|
97
|
+
await this.session.dispose();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Argmax over the last axis of a [batch, seq, classes] tensor.
|
|
102
|
+
* Returns one class index per (batch, seq) position.
|
|
103
|
+
*/
|
|
104
|
+
function argmaxBatch(tensor, seqLen) {
|
|
105
|
+
const dims = tensor.dims;
|
|
106
|
+
// Last dim is classes
|
|
107
|
+
const classCount = dims[dims.length - 1];
|
|
108
|
+
const out = [];
|
|
109
|
+
// Treat data as flat floats or ints
|
|
110
|
+
const data = tensor.data;
|
|
111
|
+
for (let i = 0; i < seqLen; i++) {
|
|
112
|
+
let best = 0;
|
|
113
|
+
let bestVal = -Infinity;
|
|
114
|
+
const base = i * classCount;
|
|
115
|
+
for (let c = 0; c < classCount; c++) {
|
|
116
|
+
const v = typeof data[base + c] === "bigint" ? Number(data[base + c]) : data[base + c];
|
|
117
|
+
if (v > bestVal) {
|
|
118
|
+
bestVal = v;
|
|
119
|
+
best = c;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
out.push(best);
|
|
123
|
+
}
|
|
124
|
+
return out;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Combine input token IDs + haraqat IDs into a diacritized string.
|
|
128
|
+
* Direct port of `combine_text_and_haraqat`.
|
|
129
|
+
*/
|
|
130
|
+
function combineTextAndHaraqat(vecTxt, vecHaraqat, padId) {
|
|
131
|
+
let text = "";
|
|
132
|
+
for (let i = 0; i < vecTxt.length; i++) {
|
|
133
|
+
const txt = vecTxt[i];
|
|
134
|
+
if (txt === padId)
|
|
135
|
+
break;
|
|
136
|
+
const haraq = vecHaraqat[i] ?? 0;
|
|
137
|
+
const symbol = INPUT_ID_TO_SYMBOL[txt] ?? "";
|
|
138
|
+
const haraqStr = ID_TO_HARAAQAT[haraq] ?? "";
|
|
139
|
+
// Skip the pad and unused start tokens in the target vocab —
|
|
140
|
+
// they decode to "P" or "" and shouldn't appear in output.
|
|
141
|
+
if (haraqStr === "P")
|
|
142
|
+
continue;
|
|
143
|
+
text += symbol + haraqStr;
|
|
144
|
+
}
|
|
145
|
+
return text;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Factory: builds a RababaModel from a session + artifacts.
|
|
149
|
+
*
|
|
150
|
+
* Registered as the factory for kind "rababa" in src/ml/index.ts.
|
|
151
|
+
*/
|
|
152
|
+
export async function createRababaModel(params) {
|
|
153
|
+
const config = params.config ?? parseConfig(params.artifacts["config.json"]);
|
|
154
|
+
return new RababaModelImpl(params.session, config);
|
|
155
|
+
}
|
|
156
|
+
function parseConfig(raw) {
|
|
157
|
+
if (!raw)
|
|
158
|
+
return DEFAULT_CONFIG;
|
|
159
|
+
try {
|
|
160
|
+
const json = typeof raw === "string" ? JSON.parse(raw) : JSON.parse(new TextDecoder().decode(raw));
|
|
161
|
+
return {
|
|
162
|
+
maxLen: Number(json.max_len ?? json.maxLen ?? DEFAULT_CONFIG.maxLen),
|
|
163
|
+
batchSize: Number(json.batch_size ?? json.batchSize ?? DEFAULT_CONFIG.batchSize),
|
|
164
|
+
textEncoder: (json.text_encoder ?? DEFAULT_CONFIG.textEncoder),
|
|
165
|
+
textCleaner: (json.text_cleaner ?? DEFAULT_CONFIG.textCleaner),
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return DEFAULT_CONFIG;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=diacritizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diacritizer.js","sourceRoot":"","sources":["../../../../src/ml/models/rababa/diacritizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text encoder — port of `rababa/lib/rababa/arabic/encoders.rb`.
|
|
3
|
+
*
|
|
4
|
+
* Converts input text into integer sequences the model can consume.
|
|
5
|
+
* Two methods:
|
|
6
|
+
* - inputToSequence(text): string → number[] (token IDs)
|
|
7
|
+
* - reverse: optional, defaults to false (matches Ruby default)
|
|
8
|
+
*
|
|
9
|
+
* The Ruby BasicArabicEncoder + ArabicEncoderWithStartSymbol collapse
|
|
10
|
+
* to a single class with options — they share the same vocab.
|
|
11
|
+
*/
|
|
12
|
+
export interface ArabicEncoderOptions {
|
|
13
|
+
readonly cleaner?: "basic" | "arabic";
|
|
14
|
+
readonly reverseInput?: boolean;
|
|
15
|
+
readonly startSymbol?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare class ArabicEncoder {
|
|
18
|
+
readonly inputSymbolToId: Readonly<Record<string, number>>;
|
|
19
|
+
readonly inputIdToSymbol: readonly string[];
|
|
20
|
+
readonly inputPadId: number;
|
|
21
|
+
readonly startSymbolId: number | null;
|
|
22
|
+
private readonly cleanerType;
|
|
23
|
+
private readonly reverse;
|
|
24
|
+
constructor(opts?: ArabicEncoderOptions);
|
|
25
|
+
clean(text: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Strip existing haraqat from `text`. Used before encoding so the
|
|
28
|
+
* model doesn't see its own output as input.
|
|
29
|
+
*/
|
|
30
|
+
removeDiacritics(text: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Convert a cleaned, diacritics-stripped string into a sequence
|
|
33
|
+
* of token IDs.
|
|
34
|
+
*
|
|
35
|
+
* Skips characters not in the vocab (the Ruby version's
|
|
36
|
+
* `.map.reject { |i| i.nil? }`).
|
|
37
|
+
*/
|
|
38
|
+
inputToSequence(text: string): number[];
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=encoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../../src/ml/models/rababa/encoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,eAAe,mCAAqB;IAC7C,QAAQ,CAAC,eAAe,oBAAqB;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,IAAI,GAAE,oBAAyB;IAO3C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3B;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMtC;;;;;;OAMG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;CASxC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text encoder — port of `rababa/lib/rababa/arabic/encoders.rb`.
|
|
3
|
+
*
|
|
4
|
+
* Converts input text into integer sequences the model can consume.
|
|
5
|
+
* Two methods:
|
|
6
|
+
* - inputToSequence(text): string → number[] (token IDs)
|
|
7
|
+
* - reverse: optional, defaults to false (matches Ruby default)
|
|
8
|
+
*
|
|
9
|
+
* The Ruby BasicArabicEncoder + ArabicEncoderWithStartSymbol collapse
|
|
10
|
+
* to a single class with options — they share the same vocab.
|
|
11
|
+
*/
|
|
12
|
+
import { INPUT_ID_TO_SYMBOL, INPUT_SYMBOL_TO_ID, PAD_SYMBOL } from "./haraqat.js";
|
|
13
|
+
import { cleanArabic, cleanBasic } from "./cleaner.js";
|
|
14
|
+
export class ArabicEncoder {
|
|
15
|
+
inputSymbolToId = INPUT_SYMBOL_TO_ID;
|
|
16
|
+
inputIdToSymbol = INPUT_ID_TO_SYMBOL;
|
|
17
|
+
inputPadId;
|
|
18
|
+
startSymbolId;
|
|
19
|
+
cleanerType;
|
|
20
|
+
reverse;
|
|
21
|
+
constructor(opts = {}) {
|
|
22
|
+
this.cleanerType = opts.cleaner ?? "arabic";
|
|
23
|
+
this.reverse = opts.reverseInput ?? false;
|
|
24
|
+
this.inputPadId = INPUT_SYMBOL_TO_ID[PAD_SYMBOL];
|
|
25
|
+
this.startSymbolId = opts.startSymbol ? 0 : null;
|
|
26
|
+
}
|
|
27
|
+
clean(text) {
|
|
28
|
+
return this.cleanerType === "arabic" ? cleanArabic(text) : cleanBasic(text);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Strip existing haraqat from `text`. Used before encoding so the
|
|
32
|
+
* model doesn't see its own output as input.
|
|
33
|
+
*/
|
|
34
|
+
removeDiacritics(text) {
|
|
35
|
+
return Array.from(text)
|
|
36
|
+
.filter((c) => !(c in this.inputSymbolToId === false && /[ً-ْ]/.test(c)))
|
|
37
|
+
.join("");
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Convert a cleaned, diacritics-stripped string into a sequence
|
|
41
|
+
* of token IDs.
|
|
42
|
+
*
|
|
43
|
+
* Skips characters not in the vocab (the Ruby version's
|
|
44
|
+
* `.map.reject { |i| i.nil? }`).
|
|
45
|
+
*/
|
|
46
|
+
inputToSequence(text) {
|
|
47
|
+
const chars = this.reverse ? Array.from(text).reverse() : Array.from(text);
|
|
48
|
+
const out = [];
|
|
49
|
+
for (const c of chars) {
|
|
50
|
+
const id = this.inputSymbolToId[c];
|
|
51
|
+
if (id !== undefined)
|
|
52
|
+
out.push(id);
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../../../src/ml/models/rababa/encoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAQtD,MAAM,OAAO,aAAa;IACf,eAAe,GAAG,kBAAkB,CAAA;IACpC,eAAe,GAAG,kBAAkB,CAAA;IACpC,UAAU,CAAQ;IAClB,aAAa,CAAe;IACpB,WAAW,CAAoB;IAC/B,OAAO,CAAS;IAEjC,YAAY,OAA6B,EAAE;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAA;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK,CAAA;QACzC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAE,CAAA;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7E,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,IAAY;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACxE,IAAI,CAAC,EAAE,CAAC,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,IAAY;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1E,MAAM,GAAG,GAAa,EAAE,CAAA;QACxB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YAClC,IAAI,EAAE,KAAK,SAAS;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACpC,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arabic haraqat (diacritic marks) + character classes.
|
|
3
|
+
*
|
|
4
|
+
* Direct port of `rababa/lib/rababa/arabic.rb` constants. These are
|
|
5
|
+
* Unicode code-point references — kept exactly as the Ruby source
|
|
6
|
+
* defines them so the encoder vocab matches the trained model.
|
|
7
|
+
*/
|
|
8
|
+
/** Single haraqat (basic diacritics). */
|
|
9
|
+
export declare const HARAQAT: readonly ["ْ", "ّ", "ٌ", "ٍ", "ِ", "ً", "َ", "ُ"];
|
|
10
|
+
/** Unicode escapes of HARAQAT for clarity. */
|
|
11
|
+
export declare const UHARAQAT: readonly ["ْ", "ّ", "ٌ", "ٍ", "ِ", "ً", "َ", "ُ"];
|
|
12
|
+
/** Punctuations allowed by the Arabic cleaner. */
|
|
13
|
+
export declare const PUNCTUATIONS: readonly [".", "،", ":", "؛", "-", "؟"];
|
|
14
|
+
/** Arabic characters the model accepts (including space). */
|
|
15
|
+
export declare const ARAB_CHARS = "\u0649\u0639\u0638\u062D\u0631\u0633\u064A\u0634\u0636\u0642 \u062B\u0644\u0635\u0637\u0643\u0622\u0645\u0627\u0625\u0647\u0632\u0621\u0623\u0641\u0624\u063A\u062C\u0626\u062F\u0629\u062E\u0648\u0628\u0630\u062A\u0646";
|
|
16
|
+
/** Arabic characters without the space. */
|
|
17
|
+
export declare const ARAB_CHARS_NO_SPACE = "\u0649\u0639\u0638\u062D\u0631\u0633\u064A\u0634\u0636\u0642\u062B\u0644\u0635\u0637\u0643\u0622\u0645\u0627\u0625\u0647\u0632\u0621\u0623\u0641\u0624\u063A\u062C\u0626\u062F\u0629\u062E\u0648\u0628\u0630\u062A\u0646";
|
|
18
|
+
/** Valid Arabic characters for the cleaner's whitelist. */
|
|
19
|
+
export declare const VALID_ARABIC: string[];
|
|
20
|
+
/**
|
|
21
|
+
* Map of basic haraqat → display name. Used for human-readable
|
|
22
|
+
* diagnostics; the model uses indices into ALL_POSSIBLE_HARAQAT.
|
|
23
|
+
*/
|
|
24
|
+
export declare const BASIC_HARAQAT: Readonly<Record<string, string>>;
|
|
25
|
+
/**
|
|
26
|
+
* Complete output vocabulary: every haraqat combination the model
|
|
27
|
+
* can predict. Index into this dict = target token ID.
|
|
28
|
+
*
|
|
29
|
+
* Order matters — must match the model's training-time vocab order.
|
|
30
|
+
*/
|
|
31
|
+
export declare const ALL_POSSIBLE_HARAQAT: Readonly<Record<string, string>>;
|
|
32
|
+
/**
|
|
33
|
+
* Reverse lookup: haraqat string → index. Matches the encoder's
|
|
34
|
+
* `@target_symbol_to_id`.
|
|
35
|
+
*/
|
|
36
|
+
export declare const HARAAQAT_TO_ID: Readonly<Record<string, number>>;
|
|
37
|
+
export declare const ID_TO_HARAAQAT: readonly string[];
|
|
38
|
+
/**
|
|
39
|
+
* Input vocab used by BasicArabicEncoder. Index 0 = pad ("P");
|
|
40
|
+
* remaining indices match the source's input_chars string.
|
|
41
|
+
*
|
|
42
|
+
* Direct port of `rababa/lib/rababa/arabic/encoders.rb:84`.
|
|
43
|
+
*/
|
|
44
|
+
export declare const INPUT_CHARS = "\u0628\u0636.\u063A\u0649\u0647\u0638\u062E\u0629\u061F:\u0637\u0633\u060C\u061B\u0641\u0646\u062F\u0624\u0644\u0648\u0626\u0622\u0643-\u064A\u0630\u0627\u0635\u0634\u062D\u0632\u0621\u0645\u0623\u062C\u0625 \u062A\u0631\u0642\u0639\u062B";
|
|
45
|
+
export declare const PAD_SYMBOL = "P";
|
|
46
|
+
export declare const INPUT_VOCAB: readonly string[];
|
|
47
|
+
export declare const INPUT_SYMBOL_TO_ID: Readonly<Record<string, number>>;
|
|
48
|
+
export declare const INPUT_ID_TO_SYMBOL: readonly string[];
|
|
49
|
+
//# sourceMappingURL=haraqat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"haraqat.d.ts","sourceRoot":"","sources":["../../../../src/ml/models/rababa/haraqat.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,yCAAyC;AACzC,eAAO,MAAM,OAAO,mDAAoD,CAAA;AAExE,8CAA8C;AAC9C,eAAO,MAAM,QAAQ,mDAAoD,CAAA;AAEzE,kDAAkD;AAClD,eAAO,MAAM,YAAY,yCAA0C,CAAA;AAEnE,6DAA6D;AAC7D,eAAO,MAAM,UAAU,8NAA0C,CAAA;AAEjE,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,6NAAyC,CAAA;AAEzE,2DAA2D;AAC3D,eAAO,MAAM,YAAY,UAA8B,CAAA;AAEvD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASzD,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBhE,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE3D,CAAA;AAaD,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAI3C,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,mPAAgD,CAAA;AAExE,eAAO,MAAM,UAAU,MAAM,CAAA;AAC7B,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAAiC,CAAA;AAC1E,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE/D,CAAA;AACD,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAAgB,CAAA"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arabic haraqat (diacritic marks) + character classes.
|
|
3
|
+
*
|
|
4
|
+
* Direct port of `rababa/lib/rababa/arabic.rb` constants. These are
|
|
5
|
+
* Unicode code-point references — kept exactly as the Ruby source
|
|
6
|
+
* defines them so the encoder vocab matches the trained model.
|
|
7
|
+
*/
|
|
8
|
+
/** Single haraqat (basic diacritics). */
|
|
9
|
+
export const HARAQAT = ["ْ", "ّ", "ٌ", "ٍ", "ِ", "ً", "َ", "ُ"];
|
|
10
|
+
/** Unicode escapes of HARAQAT for clarity. */
|
|
11
|
+
export const UHARAQAT = ["ْ", "ّ", "ٌ", "ٍ", "ِ", "ً", "َ", "ُ"];
|
|
12
|
+
/** Punctuations allowed by the Arabic cleaner. */
|
|
13
|
+
export const PUNCTUATIONS = [".", "،", ":", "؛", "-", "؟"];
|
|
14
|
+
/** Arabic characters the model accepts (including space). */
|
|
15
|
+
export const ARAB_CHARS = "ىعظحرسيشضق ثلصطكآماإهزءأفؤغجئدةخوبذتن";
|
|
16
|
+
/** Arabic characters without the space. */
|
|
17
|
+
export const ARAB_CHARS_NO_SPACE = "ىعظحرسيشضقثلصطكآماإهزءأفؤغجئدةخوبذتن";
|
|
18
|
+
/** Valid Arabic characters for the cleaner's whitelist. */
|
|
19
|
+
export const VALID_ARABIC = [...HARAQAT, ...ARAB_CHARS];
|
|
20
|
+
/**
|
|
21
|
+
* Map of basic haraqat → display name. Used for human-readable
|
|
22
|
+
* diagnostics; the model uses indices into ALL_POSSIBLE_HARAQAT.
|
|
23
|
+
*/
|
|
24
|
+
export const BASIC_HARAQAT = Object.freeze({
|
|
25
|
+
"َ": "Fatha",
|
|
26
|
+
"ً": "Fathatah",
|
|
27
|
+
"ُ": "Damma",
|
|
28
|
+
"ٌ": "Dammatan",
|
|
29
|
+
"ِ": "Kasra",
|
|
30
|
+
"ٍ": "Kasratan",
|
|
31
|
+
"ْ": "Sukun",
|
|
32
|
+
"ّ": "Shaddah",
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Complete output vocabulary: every haraqat combination the model
|
|
36
|
+
* can predict. Index into this dict = target token ID.
|
|
37
|
+
*
|
|
38
|
+
* Order matters — must match the model's training-time vocab order.
|
|
39
|
+
*/
|
|
40
|
+
export const ALL_POSSIBLE_HARAQAT = Object.freeze({
|
|
41
|
+
"": "No Diacritic",
|
|
42
|
+
"َ": "Fatha",
|
|
43
|
+
"ً": "Fathatah",
|
|
44
|
+
"ُ": "Damma",
|
|
45
|
+
"ٌ": "Dammatan",
|
|
46
|
+
"ِ": "Kasra",
|
|
47
|
+
"ٍ": "Kasratan",
|
|
48
|
+
"ْ": "Sukun",
|
|
49
|
+
"ّ": "Shaddah",
|
|
50
|
+
"َّ": "Shaddah + Fatha",
|
|
51
|
+
"ًّ": "Shaddah + Fathatah",
|
|
52
|
+
"ُّ": "Shaddah + Damma",
|
|
53
|
+
"ٌّ": "Shaddah + Dammatan",
|
|
54
|
+
"ِّ": "Shaddah + Kasra",
|
|
55
|
+
"ٍّ": "Shaddah + Kasratan",
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Reverse lookup: haraqat string → index. Matches the encoder's
|
|
59
|
+
* `@target_symbol_to_id`.
|
|
60
|
+
*/
|
|
61
|
+
export const HARAAQAT_TO_ID = Object.freeze(Object.fromEntries(Object.keys(ALL_POSSIBLE_HARAQAT).map((k, i) => [k, i])));
|
|
62
|
+
/**
|
|
63
|
+
* Reverse lookup: index → haraqat string. Matches the encoder's
|
|
64
|
+
* `@target_id_to_symbol`.
|
|
65
|
+
*
|
|
66
|
+
* The model's target vocab is `[@pad] + ALL_POSSIBLE_HARAQAT.keys`,
|
|
67
|
+
* so index 0 = pad ("P", treated as no-op) and indices 1..15 are
|
|
68
|
+
* the haraqat combinations. The model output has 17 classes (extra
|
|
69
|
+
* slot for start token "s" used during training); the last index
|
|
70
|
+
* is unused at inference time and decodes to "".
|
|
71
|
+
*/
|
|
72
|
+
const TARGET_PAD_SYMBOL = "P";
|
|
73
|
+
export const ID_TO_HARAAQAT = [
|
|
74
|
+
TARGET_PAD_SYMBOL,
|
|
75
|
+
...Object.keys(ALL_POSSIBLE_HARAQAT),
|
|
76
|
+
"",
|
|
77
|
+
];
|
|
78
|
+
/**
|
|
79
|
+
* Input vocab used by BasicArabicEncoder. Index 0 = pad ("P");
|
|
80
|
+
* remaining indices match the source's input_chars string.
|
|
81
|
+
*
|
|
82
|
+
* Direct port of `rababa/lib/rababa/arabic/encoders.rb:84`.
|
|
83
|
+
*/
|
|
84
|
+
export const INPUT_CHARS = "بض.غىهظخة؟:طس،؛فندؤلوئآك-يذاصشحزءمأجإ ترقعث";
|
|
85
|
+
export const PAD_SYMBOL = "P";
|
|
86
|
+
export const INPUT_VOCAB = [PAD_SYMBOL, ...INPUT_CHARS];
|
|
87
|
+
export const INPUT_SYMBOL_TO_ID = Object.freeze(Object.fromEntries(INPUT_VOCAB.map((s, i) => [s, i])));
|
|
88
|
+
export const INPUT_ID_TO_SYMBOL = INPUT_VOCAB;
|
|
89
|
+
//# sourceMappingURL=haraqat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"haraqat.js","sourceRoot":"","sources":["../../../../src/ml/models/rababa/haraqat.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,yCAAyC;AACzC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;AAExE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;AAEzE,kDAAkD;AAClD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;AAEnE,6DAA6D;AAC7D,MAAM,CAAC,MAAM,UAAU,GAAG,uCAAuC,CAAA;AAEjE,2CAA2C;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,sCAAsC,CAAA;AAEzE,2DAA2D;AAC3D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,UAAU,CAAC,CAAA;AAEvD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAqC,MAAM,CAAC,MAAM,CAAC;IAC3E,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,SAAS;CACf,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAqC,MAAM,CAAC,MAAM,CAAC;IAClF,EAAE,EAAE,cAAc;IAClB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,oBAAoB;CAC3B,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAqC,MAAM,CAAC,MAAM,CAC3E,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,iBAAiB;IACjB,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACpC,EAAE;CACH,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,6CAA6C,CAAA;AAExE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAsB,CAAC,UAAU,EAAE,GAAG,WAAW,CAAC,CAAA;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAqC,MAAM,CAAC,MAAM,CAC/E,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACtD,CAAA;AACD,MAAM,CAAC,MAAM,kBAAkB,GAAsB,WAAW,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rababa model registration — side-effect import.
|
|
3
|
+
*
|
|
4
|
+
* Importing this module registers the "rababa" factory with the ML
|
|
5
|
+
* registry. Done in `src/ml/index.ts` so end users don't need to.
|
|
6
|
+
*/
|
|
7
|
+
export type { RababaModel, RababaConfig } from "./diacritizer.js";
|
|
8
|
+
export { ArabicEncoder } from "./encoder.js";
|
|
9
|
+
export { reconcileStrings } from "./reconciler.js";
|
|
10
|
+
export { cleanArabic, cleanBasic, collapseWhitespace } from "./cleaner.js";
|
|
11
|
+
export * from "./haraqat.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ml/models/rababa/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC1E,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rababa model registration — side-effect import.
|
|
3
|
+
*
|
|
4
|
+
* Importing this module registers the "rababa" factory with the ML
|
|
5
|
+
* registry. Done in `src/ml/index.ts` so end users don't need to.
|
|
6
|
+
*/
|
|
7
|
+
import { registerModel } from "../../registry.js";
|
|
8
|
+
import { createRababaModel } from "./diacritizer.js";
|
|
9
|
+
registerModel("rababa", async (params) => createRababaModel(params));
|
|
10
|
+
export { ArabicEncoder } from "./encoder.js";
|
|
11
|
+
export { reconcileStrings } from "./reconciler.js";
|
|
12
|
+
export { cleanArabic, cleanBasic, collapseWhitespace } from "./cleaner.js";
|
|
13
|
+
export * from "./haraqat.js";
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ml/models/rababa/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;AAGpE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC1E,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reconciler — port of `rababa/lib/rababa/arabic/reconciler.rb`.
|
|
3
|
+
*
|
|
4
|
+
* Given:
|
|
5
|
+
* - strOriginal: original text including digits, punctuation, etc.
|
|
6
|
+
* - strDiacritized: model output (Arabic letters + haraqat only;
|
|
7
|
+
* non-Arabic chars dropped by the encoder)
|
|
8
|
+
*
|
|
9
|
+
* Produce a merged string where:
|
|
10
|
+
* - Arabic letters from `strOriginal` get the haraqat from the
|
|
11
|
+
* matching position in `strDiacritized`
|
|
12
|
+
* - Non-Arabic chars from `strOriginal` are preserved at their
|
|
13
|
+
* original positions
|
|
14
|
+
*
|
|
15
|
+
* The Ruby algorithm:
|
|
16
|
+
* 1. Build pivot map: pairs of (idx_dia, idx_ori) where the chars match
|
|
17
|
+
* 2. Walk both strings, emitting chars from original until next pivot,
|
|
18
|
+
* then chars from diacritized until next pivot, then the matched
|
|
19
|
+
* char itself
|
|
20
|
+
* 3. Finalize: remaining diacritized chars, then remaining original chars
|
|
21
|
+
*
|
|
22
|
+
* Direct port — same shape, same edge cases.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Merge original + diacritized into the final output. Direct port of
|
|
26
|
+
* `reconcile_strings`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function reconcileStrings(strOriginal: string, strDiacritized: string): string;
|
|
29
|
+
//# sourceMappingURL=reconciler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../../../../src/ml/models/rababa/reconciler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAkCH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CA2BpF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reconciler — port of `rababa/lib/rababa/arabic/reconciler.rb`.
|
|
3
|
+
*
|
|
4
|
+
* Given:
|
|
5
|
+
* - strOriginal: original text including digits, punctuation, etc.
|
|
6
|
+
* - strDiacritized: model output (Arabic letters + haraqat only;
|
|
7
|
+
* non-Arabic chars dropped by the encoder)
|
|
8
|
+
*
|
|
9
|
+
* Produce a merged string where:
|
|
10
|
+
* - Arabic letters from `strOriginal` get the haraqat from the
|
|
11
|
+
* matching position in `strDiacritized`
|
|
12
|
+
* - Non-Arabic chars from `strOriginal` are preserved at their
|
|
13
|
+
* original positions
|
|
14
|
+
*
|
|
15
|
+
* The Ruby algorithm:
|
|
16
|
+
* 1. Build pivot map: pairs of (idx_dia, idx_ori) where the chars match
|
|
17
|
+
* 2. Walk both strings, emitting chars from original until next pivot,
|
|
18
|
+
* then chars from diacritized until next pivot, then the matched
|
|
19
|
+
* char itself
|
|
20
|
+
* 3. Finalize: remaining diacritized chars, then remaining original chars
|
|
21
|
+
*
|
|
22
|
+
* Direct port — same shape, same edge cases.
|
|
23
|
+
*/
|
|
24
|
+
import { ARAB_CHARS_NO_SPACE } from "./haraqat.js";
|
|
25
|
+
const HARAQAT_SET = new Set(["ْ", "ّ", "ٌ", "ٍ", "ِ", "ً", "َ", "ُ"]);
|
|
26
|
+
const ARAB_CHARS_SET = new Set(ARAB_CHARS_NO_SPACE);
|
|
27
|
+
/**
|
|
28
|
+
* Find indices where `dOriginal` and `dDiacritized` agree. Two-pointer
|
|
29
|
+
* scan: for each char in diacritized, find next matching char in original.
|
|
30
|
+
*/
|
|
31
|
+
function buildPivotMap(dOriginal, dDiacritized) {
|
|
32
|
+
const out = [];
|
|
33
|
+
let idxOri = 0;
|
|
34
|
+
for (let idxDia = 0; idxDia < dDiacritized.length; idxDia++) {
|
|
35
|
+
const cDia = dDiacritized[idxDia];
|
|
36
|
+
for (let i = idxOri; i <= dOriginal.length; i++) {
|
|
37
|
+
if (cDia === dOriginal[i]) {
|
|
38
|
+
idxOri = i;
|
|
39
|
+
out.push({ idxDia, idxOri });
|
|
40
|
+
// Skip past arabic letters to avoid double-counting
|
|
41
|
+
if (ARAB_CHARS_SET.has(cDia))
|
|
42
|
+
idxOri++;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Merge original + diacritized into the final output. Direct port of
|
|
51
|
+
* `reconcile_strings`.
|
|
52
|
+
*/
|
|
53
|
+
export function reconcileStrings(strOriginal, strDiacritized) {
|
|
54
|
+
const dOriginal = Array.from(strOriginal).filter((c) => !HARAQAT_SET.has(c));
|
|
55
|
+
const dDiacritized = Array.from(strDiacritized);
|
|
56
|
+
const pivots = buildPivotMap(dOriginal, dDiacritized);
|
|
57
|
+
let out = "";
|
|
58
|
+
let ptDia = 0;
|
|
59
|
+
let ptOri = 0;
|
|
60
|
+
for (const { idxDia, idxOri } of pivots) {
|
|
61
|
+
if (ptOri < idxOri) {
|
|
62
|
+
for (let i = ptOri; i < idxOri; i++)
|
|
63
|
+
out += dOriginal[i];
|
|
64
|
+
}
|
|
65
|
+
if (ptDia < idxDia) {
|
|
66
|
+
for (let i = ptDia; i < idxDia; i++)
|
|
67
|
+
out += dDiacritized[i];
|
|
68
|
+
}
|
|
69
|
+
out += dOriginal[idxOri] ?? "";
|
|
70
|
+
ptDia = idxDia + 1;
|
|
71
|
+
ptOri = idxOri + 1;
|
|
72
|
+
}
|
|
73
|
+
// Trailing diacritized chars
|
|
74
|
+
for (let i = ptDia; i < dDiacritized.length; i++)
|
|
75
|
+
out += dDiacritized[i];
|
|
76
|
+
// Trailing original chars
|
|
77
|
+
for (let i = ptOri; i < dOriginal.length; i++)
|
|
78
|
+
out += dOriginal[i];
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=reconciler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../../../../src/ml/models/rababa/reconciler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AACrE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAOnD;;;GAGG;AACH,SAAS,aAAa,CAAC,SAA4B,EAAE,YAA+B;IAClF,MAAM,GAAG,GAAY,EAAE,CAAA;IACvB,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAE,CAAA;QAClC,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1B,MAAM,GAAG,CAAC,CAAA;gBACV,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC5B,oDAAoD;gBACpD,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,MAAM,EAAE,CAAA;gBACtC,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,cAAsB;IAC1E,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5E,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAErD,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxC,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;gBAAE,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAA;QAC1D,CAAC;QACD,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;gBAAE,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;QAC7D,CAAC;QACD,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAC9B,KAAK,GAAG,MAAM,GAAG,CAAC,CAAA;QAClB,KAAK,GAAG,MAAM,GAAG,CAAC,CAAA;IACpB,CAAC;IAED,6BAA6B;IAC7B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;IACxE,0BAA0B;IAC1B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAA;IAElE,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secryst model registration — side-effect import.
|
|
3
|
+
*
|
|
4
|
+
* Importing this module registers the "secryst" factory with the ML
|
|
5
|
+
* registry. Done in `src/ml/index.ts` so end users don't need to.
|
|
6
|
+
*/
|
|
7
|
+
export type { SecrystModel } from "./translator.js";
|
|
8
|
+
export { Vocab, parseVocabYaml, buildVocabs } from "./vocab.js";
|
|
9
|
+
export { causalMask, paddingMask, buildMasks } from "./masks.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ml/models/secryst/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secryst model registration — side-effect import.
|
|
3
|
+
*
|
|
4
|
+
* Importing this module registers the "secryst" factory with the ML
|
|
5
|
+
* registry. Done in `src/ml/index.ts` so end users don't need to.
|
|
6
|
+
*/
|
|
7
|
+
import { registerModel } from "../../registry.js";
|
|
8
|
+
import { createSecrystModel } from "./translator.js";
|
|
9
|
+
registerModel("secryst", async (params) => createSecrystModel(params));
|
|
10
|
+
export { Vocab, parseVocabYaml, buildVocabs } from "./vocab.js";
|
|
11
|
+
export { causalMask, paddingMask, buildMasks } from "./masks.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ml/models/secryst/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAA;AAGtE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
|