@mailwoman/corpus 9.2.0 → 9.3.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/README.md +22 -22
- package/data/PROVENANCE.md +7 -7
- package/lib/adapters/ban/adapter.ts +190 -0
- package/lib/adapters/ban/street-decompose.ts +66 -0
- package/lib/adapters/fcc-bdc/adapter.ts +174 -0
- package/lib/adapters/geonames/adapter.ts +199 -0
- package/lib/adapters/geonames-postal/adapter.ts +122 -0
- package/lib/adapters/gnaf/adapter.ts +149 -0
- package/lib/adapters/gnaf/assemble.ts +225 -0
- package/lib/adapters/index.ts +153 -0
- package/lib/adapters/openaddresses/adapter.ts +251 -0
- package/lib/adapters/overture/adapter.ts +162 -0
- package/lib/adapters/state-hi-schools/adapter.ts +170 -0
- package/lib/adapters/state-hi-schools/workbook.ts +35 -0
- package/lib/adapters/synth-po-box/adapter.ts +204 -0
- package/lib/adapters/tiger/adapter.ts +252 -0
- package/lib/adapters/tiger/street-decompose.ts +83 -0
- package/lib/adapters/usgov-hrsa-fqhc/adapter.ts +167 -0
- package/lib/adapters/usgov-imls-pls/adapter.ts +143 -0
- package/lib/adapters/usgov-irs-bmf/adapter.ts +151 -0
- package/lib/adapters/usgov-nad/adapter.ts +334 -0
- package/lib/adapters/usgov-nppes/adapter.ts +151 -0
- package/lib/adapters/usgov-samhsa-treatment-locator/adapter.ts +193 -0
- package/lib/adapters/utils/index.ts +307 -0
- package/lib/adapters/wof-admin-jp/adapter.ts +214 -0
- package/lib/adapters/wof-admin-json/adapter.ts +231 -0
- package/lib/adapters/wof-json-rows.ts +129 -0
- package/lib/adapters/wof-postalcode-json/adapter.ts +176 -0
- package/lib/build.ts +378 -0
- package/lib/env.ts +50 -0
- package/lib/index.ts +13 -0
- package/lib/name-prone-us-suffixes.ts +12 -0
- package/lib/recipes/anchor-absorption.ts +101 -0
- package/lib/recipes/bare-country.ts +95 -0
- package/lib/recipes/boundary-stress.ts +100 -0
- package/lib/recipes/cn-organizational-units.ts +199 -0
- package/lib/recipes/country-balanced.ts +509 -0
- package/lib/recipes/cz-pcfirst-preposition.ts +111 -0
- package/lib/recipes/fr-admin-split.ts +242 -0
- package/lib/recipes/fr-bare-street.ts +170 -0
- package/lib/recipes/fr-fragment.ts +333 -0
- package/lib/recipes/fr-lieudit.ts +301 -0
- package/lib/recipes/fr-order.ts +245 -0
- package/lib/recipes/german.ts +359 -0
- package/lib/recipes/house-venue.ts +92 -0
- package/lib/recipes/index.ts +97 -0
- package/lib/recipes/intersection.ts +618 -0
- package/lib/recipes/locale.ts +599 -0
- package/lib/recipes/nl-postcode.ts +115 -0
- package/lib/recipes/no-fragment.ts +219 -0
- package/lib/recipes/no-street-led.ts +141 -0
- package/lib/recipes/no-street.ts +90 -0
- package/lib/recipes/po-box-cedex.ts +976 -0
- package/lib/recipes/po-box.ts +123 -0
- package/lib/recipes/reviewed-postcode-tail.ts +190 -0
- package/lib/recipes/scaffold.ts +469 -0
- package/lib/recipes/si-bare-village.ts +97 -0
- package/lib/recipes/street-affix.ts +804 -0
- package/lib/recipes/street-bare.ts +100 -0
- package/lib/recipes/street.ts +81 -0
- package/lib/recipes/sub-venue-sources.ts +877 -0
- package/lib/recipes/sub-venue.ts +997 -0
- package/lib/recipes/trailing-region.ts +183 -0
- package/lib/recipes/unit.ts +304 -0
- package/lib/runner.ts +312 -0
- package/lib/synthesizers/anchor-absorption.ts +288 -0
- package/lib/synthesizers/boundary-stress.ts +532 -0
- package/lib/synthesizers/german.ts +260 -0
- package/lib/synthesizers/house-venue.ts +308 -0
- package/lib/synthesizers/intersection.ts +233 -0
- package/lib/synthesizers/no-street.ts +327 -0
- package/lib/synthesizers/po-box.ts +323 -0
- package/lib/synthesizers/street.ts +269 -0
- package/lib/synthesizers/utils.ts +993 -0
- package/lib/test-kit/corpus-recipe.ts +86 -0
- package/lib/test-kit/index.ts +100 -0
- package/lib/tools/align-slice.ts +68 -0
- package/lib/tools/audit.ts +403 -0
- package/lib/tools/corpus-stats.ts +136 -0
- package/lib/tools/fetch/ban.ts +289 -0
- package/lib/tools/fetch/download.ts +262 -0
- package/lib/tools/fetch/geonames-dump.ts +257 -0
- package/lib/tools/fetch/geonames-postal.ts +180 -0
- package/lib/tools/fetch/hrsa.ts +59 -0
- package/lib/tools/fetch/imls-pls.ts +149 -0
- package/lib/tools/fetch/index.ts +147 -0
- package/lib/tools/fetch/nad.ts +341 -0
- package/lib/tools/fetch/nppes.ts +165 -0
- package/lib/tools/fetch/openaddresses.ts +347 -0
- package/lib/tools/fetch/ourairports.ts +170 -0
- package/lib/tools/fetch/ppd.ts +121 -0
- package/lib/tools/fetch/state-hi-schools.ts +161 -0
- package/lib/tools/fetch/state-sources.ts +146 -0
- package/lib/tools/fetch/tiger-full.ts +308 -0
- package/lib/tools/fetch/wikidata-subvenue.ts +384 -0
- package/lib/tools/golden-expand.ts +574 -0
- package/lib/tools/golden-promote.ts +337 -0
- package/lib/tools/golden-relabel-street.ts +683 -0
- package/lib/tools/index.ts +28 -0
- package/lib/tools/ingest-csv.ts +378 -0
- package/lib/tools/jsonl-to-parquet.ts +207 -0
- package/lib/tools/lint-slice-vocab.ts +388 -0
- package/lib/tools/lint-slice.ts +496 -0
- package/lib/tools/overlay-manifest.ts +148 -0
- package/lib/tools/overture-subvenue.ts +209 -0
- package/lib/tools/postcode-triples.ts +363 -0
- package/lib/tools/slice-kryptonite.ts +137 -0
- package/lib/tools/slice-translit.ts +218 -0
- package/lib/tools/sub-venue/harvest.ts +234 -0
- package/lib/tools/sub-venue/head-nouns.ts +245 -0
- package/lib/tools/sub-venue/surfaces.ts +95 -0
- package/lib/tools/sub-venue/table.ts +281 -0
- package/lib/tools/sub-venue/wikidata.ts +85 -0
- package/lib/tools/sub-venue-lexicon.ts +429 -0
- package/lib/tools/sub-venue-promotions.ts +330 -0
- package/lib/types.ts +247 -0
- package/lib/utils/align.ts +330 -0
- package/lib/utils/golden.ts +189 -0
- package/lib/utils/index.ts +14 -0
- package/lib/utils/parquet.ts +582 -0
- package/lib/utils/slice-stats.ts +95 -0
- package/lib/utils/split.ts +279 -0
- package/lib/utils/tokenize.ts +120 -0
- package/lib/utils/wof-json.ts +247 -0
- package/out/adapters/ban/adapter.d.ts.map +1 -0
- package/out/adapters/ban/adapter.js +149 -0
- package/out/adapters/ban/adapter.js.map +1 -0
- package/out/adapters/ban/street-decompose.d.ts.map +1 -0
- package/out/adapters/ban/street-decompose.js +51 -0
- package/out/adapters/ban/street-decompose.js.map +1 -0
- package/out/adapters/fcc-bdc/adapter.d.ts.map +1 -0
- package/out/adapters/fcc-bdc/adapter.js +144 -0
- package/out/adapters/fcc-bdc/adapter.js.map +1 -0
- package/out/adapters/geonames/adapter.d.ts.map +1 -0
- package/out/adapters/geonames/adapter.js +176 -0
- package/out/adapters/geonames/adapter.js.map +1 -0
- package/out/adapters/geonames-postal/adapter.d.ts +54 -0
- package/out/adapters/geonames-postal/adapter.d.ts.map +1 -0
- package/out/adapters/geonames-postal/adapter.js +107 -0
- package/out/adapters/geonames-postal/adapter.js.map +1 -0
- package/out/adapters/gnaf/adapter.d.ts +49 -0
- package/out/adapters/gnaf/adapter.d.ts.map +1 -0
- package/out/adapters/gnaf/adapter.js +124 -0
- package/out/adapters/gnaf/adapter.js.map +1 -0
- package/out/adapters/gnaf/assemble.d.ts +65 -0
- package/out/adapters/gnaf/assemble.d.ts.map +1 -0
- package/out/adapters/gnaf/assemble.js +154 -0
- package/out/adapters/gnaf/assemble.js.map +1 -0
- package/out/adapters/index.d.ts +51 -0
- package/out/adapters/index.d.ts.map +1 -0
- package/out/adapters/index.js +95 -0
- package/out/adapters/index.js.map +1 -0
- package/out/adapters/openaddresses/adapter.d.ts.map +1 -0
- package/out/adapters/openaddresses/adapter.js +186 -0
- package/out/adapters/openaddresses/adapter.js.map +1 -0
- package/out/adapters/overture/adapter.d.ts +48 -0
- package/out/adapters/overture/adapter.d.ts.map +1 -0
- package/out/adapters/overture/adapter.js +125 -0
- package/out/adapters/overture/adapter.js.map +1 -0
- package/out/adapters/state-hi-schools/adapter.d.ts +46 -0
- package/out/adapters/state-hi-schools/adapter.d.ts.map +1 -0
- package/out/adapters/state-hi-schools/adapter.js +145 -0
- package/out/adapters/state-hi-schools/adapter.js.map +1 -0
- package/out/adapters/state-hi-schools/workbook.d.ts +29 -0
- package/out/adapters/state-hi-schools/workbook.d.ts.map +1 -0
- package/out/adapters/state-hi-schools/workbook.js +20 -0
- package/out/adapters/state-hi-schools/workbook.js.map +1 -0
- package/out/adapters/state-ia-contractors/adapter.d.ts.map +1 -0
- package/out/adapters/state-ia-contractors/adapter.js.map +1 -0
- package/out/adapters/state-ny-notaries/adapter.d.ts.map +1 -0
- package/out/adapters/state-ny-notaries/adapter.js.map +1 -0
- package/out/adapters/state-tx-notaries/adapter.d.ts.map +1 -0
- package/out/adapters/state-tx-notaries/adapter.js.map +1 -0
- package/out/adapters/synth-po-box/adapter.d.ts.map +1 -0
- package/out/adapters/synth-po-box/adapter.js +140 -0
- package/out/adapters/synth-po-box/adapter.js.map +1 -0
- package/out/adapters/tiger/adapter.d.ts +55 -0
- package/out/adapters/tiger/adapter.d.ts.map +1 -0
- package/out/adapters/tiger/adapter.js +201 -0
- package/out/adapters/tiger/adapter.js.map +1 -0
- package/out/adapters/tiger/street-decompose.d.ts.map +1 -0
- package/out/adapters/tiger/street-decompose.js +68 -0
- package/out/adapters/tiger/street-decompose.js.map +1 -0
- package/out/adapters/usgov-hrsa-fqhc/adapter.d.ts +56 -0
- package/out/adapters/usgov-hrsa-fqhc/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-hrsa-fqhc/adapter.js +132 -0
- package/out/adapters/usgov-hrsa-fqhc/adapter.js.map +1 -0
- package/out/adapters/usgov-imls-pls/adapter.d.ts +36 -0
- package/out/adapters/usgov-imls-pls/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-imls-pls/adapter.js +114 -0
- package/out/adapters/usgov-imls-pls/adapter.js.map +1 -0
- package/out/adapters/usgov-irs-bmf/adapter.d.ts +37 -0
- package/out/adapters/usgov-irs-bmf/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-irs-bmf/adapter.js +120 -0
- package/out/adapters/usgov-irs-bmf/adapter.js.map +1 -0
- package/out/adapters/usgov-nad/adapter.d.ts +48 -0
- package/out/adapters/usgov-nad/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-nad/adapter.js +249 -0
- package/out/adapters/usgov-nad/adapter.js.map +1 -0
- package/out/adapters/usgov-nppes/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-nppes/adapter.js +118 -0
- package/out/adapters/usgov-nppes/adapter.js.map +1 -0
- package/out/adapters/usgov-samhsa-treatment-locator/adapter.d.ts.map +1 -0
- package/out/adapters/usgov-samhsa-treatment-locator/adapter.js +154 -0
- package/out/adapters/usgov-samhsa-treatment-locator/adapter.js.map +1 -0
- package/out/adapters/utils/index.d.ts +191 -0
- package/out/adapters/utils/index.d.ts.map +1 -0
- package/out/adapters/utils/index.js +206 -0
- package/out/adapters/utils/index.js.map +1 -0
- package/out/adapters/wof-admin-jp/adapter.d.ts.map +1 -0
- package/out/adapters/wof-admin-jp/adapter.js +161 -0
- package/out/adapters/wof-admin-jp/adapter.js.map +1 -0
- package/out/adapters/wof-admin-json/adapter.d.ts +79 -0
- package/out/adapters/wof-admin-json/adapter.d.ts.map +1 -0
- package/out/adapters/wof-admin-json/adapter.js +197 -0
- package/out/adapters/wof-admin-json/adapter.js.map +1 -0
- package/out/adapters/wof-json-rows.d.ts +62 -0
- package/out/adapters/wof-json-rows.d.ts.map +1 -0
- package/out/adapters/wof-json-rows.js +83 -0
- package/out/adapters/wof-json-rows.js.map +1 -0
- package/out/adapters/wof-postalcode-json/adapter.d.ts +65 -0
- package/out/adapters/wof-postalcode-json/adapter.d.ts.map +1 -0
- package/out/adapters/wof-postalcode-json/adapter.js +151 -0
- package/out/adapters/wof-postalcode-json/adapter.js.map +1 -0
- package/out/build.d.ts +132 -0
- package/out/build.d.ts.map +1 -0
- package/out/build.js +245 -0
- package/out/build.js.map +1 -0
- package/out/codex/us-fips-state.d.ts.map +1 -0
- package/out/codex/us-fips-state.js.map +1 -0
- package/out/env.d.ts +46 -0
- package/out/env.d.ts.map +1 -0
- package/out/env.js +46 -0
- package/out/env.js.map +1 -0
- package/out/index.d.ts +13 -0
- package/out/index.d.ts.map +1 -0
- package/out/index.js +13 -0
- package/out/index.js.map +1 -0
- package/out/name-prone-us-suffixes.d.ts +12 -0
- package/out/name-prone-us-suffixes.d.ts.map +1 -0
- package/out/name-prone-us-suffixes.js +12 -0
- package/out/name-prone-us-suffixes.js.map +1 -0
- package/out/recipes/anchor-absorption.d.ts +20 -0
- package/out/recipes/anchor-absorption.d.ts.map +1 -0
- package/out/recipes/anchor-absorption.js +81 -0
- package/out/recipes/anchor-absorption.js.map +1 -0
- package/out/recipes/bare-country.d.ts +25 -0
- package/out/recipes/bare-country.d.ts.map +1 -0
- package/out/recipes/bare-country.js +87 -0
- package/out/recipes/bare-country.js.map +1 -0
- package/out/recipes/boundary-stress.d.ts +20 -0
- package/out/recipes/boundary-stress.d.ts.map +1 -0
- package/out/recipes/boundary-stress.js +83 -0
- package/out/recipes/boundary-stress.js.map +1 -0
- package/out/recipes/cn-organizational-units.d.ts +36 -0
- package/out/recipes/cn-organizational-units.d.ts.map +1 -0
- package/out/recipes/cn-organizational-units.js +159 -0
- package/out/recipes/cn-organizational-units.js.map +1 -0
- package/out/recipes/country-balanced.d.ts +32 -0
- package/out/recipes/country-balanced.d.ts.map +1 -0
- package/out/recipes/country-balanced.js +393 -0
- package/out/recipes/country-balanced.js.map +1 -0
- package/out/recipes/cz-pcfirst-preposition.d.ts +22 -0
- package/out/recipes/cz-pcfirst-preposition.d.ts.map +1 -0
- package/out/recipes/cz-pcfirst-preposition.js +100 -0
- package/out/recipes/cz-pcfirst-preposition.js.map +1 -0
- package/out/recipes/fr-admin-split.d.ts +38 -0
- package/out/recipes/fr-admin-split.d.ts.map +1 -0
- package/out/recipes/fr-admin-split.js +192 -0
- package/out/recipes/fr-admin-split.js.map +1 -0
- package/out/recipes/fr-bare-street.d.ts +28 -0
- package/out/recipes/fr-bare-street.d.ts.map +1 -0
- package/out/recipes/fr-bare-street.js +143 -0
- package/out/recipes/fr-bare-street.js.map +1 -0
- package/out/recipes/fr-fragment.d.ts +77 -0
- package/out/recipes/fr-fragment.d.ts.map +1 -0
- package/out/recipes/fr-fragment.js +276 -0
- package/out/recipes/fr-fragment.js.map +1 -0
- package/out/recipes/fr-lieudit.d.ts +32 -0
- package/out/recipes/fr-lieudit.d.ts.map +1 -0
- package/out/recipes/fr-lieudit.js +227 -0
- package/out/recipes/fr-lieudit.js.map +1 -0
- package/out/recipes/fr-order.d.ts +38 -0
- package/out/recipes/fr-order.d.ts.map +1 -0
- package/out/recipes/fr-order.js +197 -0
- package/out/recipes/fr-order.js.map +1 -0
- package/out/recipes/german.d.ts +44 -0
- package/out/recipes/german.d.ts.map +1 -0
- package/out/recipes/german.js +288 -0
- package/out/recipes/german.js.map +1 -0
- package/out/recipes/house-venue.d.ts +18 -0
- package/out/recipes/house-venue.d.ts.map +1 -0
- package/out/recipes/house-venue.js +73 -0
- package/out/recipes/house-venue.js.map +1 -0
- package/out/recipes/index.d.ts +24 -0
- package/out/recipes/index.d.ts.map +1 -0
- package/out/recipes/index.js +91 -0
- package/out/recipes/index.js.map +1 -0
- package/out/recipes/intersection.d.ts +42 -0
- package/out/recipes/intersection.d.ts.map +1 -0
- package/out/recipes/intersection.js +452 -0
- package/out/recipes/intersection.js.map +1 -0
- package/out/recipes/locale.d.ts +136 -0
- package/out/recipes/locale.d.ts.map +1 -0
- package/out/recipes/locale.js +460 -0
- package/out/recipes/locale.js.map +1 -0
- package/out/recipes/nl-postcode.d.ts +26 -0
- package/out/recipes/nl-postcode.d.ts.map +1 -0
- package/out/recipes/nl-postcode.js +102 -0
- package/out/recipes/nl-postcode.js.map +1 -0
- package/out/recipes/no-fragment.d.ts +43 -0
- package/out/recipes/no-fragment.d.ts.map +1 -0
- package/out/recipes/no-fragment.js +182 -0
- package/out/recipes/no-fragment.js.map +1 -0
- package/out/recipes/no-street-led.d.ts +24 -0
- package/out/recipes/no-street-led.d.ts.map +1 -0
- package/out/recipes/no-street-led.js +113 -0
- package/out/recipes/no-street-led.js.map +1 -0
- package/out/recipes/no-street.d.ts +18 -0
- package/out/recipes/no-street.d.ts.map +1 -0
- package/out/recipes/no-street.js +71 -0
- package/out/recipes/no-street.js.map +1 -0
- package/out/recipes/po-box-cedex.d.ts +38 -0
- package/out/recipes/po-box-cedex.d.ts.map +1 -0
- package/out/recipes/po-box-cedex.js +767 -0
- package/out/recipes/po-box-cedex.js.map +1 -0
- package/out/recipes/po-box.d.ts +17 -0
- package/out/recipes/po-box.d.ts.map +1 -0
- package/out/recipes/po-box.js +100 -0
- package/out/recipes/po-box.js.map +1 -0
- package/out/recipes/reviewed-postcode-tail.d.ts +47 -0
- package/out/recipes/reviewed-postcode-tail.d.ts.map +1 -0
- package/out/recipes/reviewed-postcode-tail.js +125 -0
- package/out/recipes/reviewed-postcode-tail.js.map +1 -0
- package/out/recipes/scaffold.d.ts +324 -0
- package/out/recipes/scaffold.d.ts.map +1 -0
- package/out/recipes/scaffold.js +186 -0
- package/out/recipes/scaffold.js.map +1 -0
- package/out/recipes/si-bare-village.d.ts +32 -0
- package/out/recipes/si-bare-village.d.ts.map +1 -0
- package/out/recipes/si-bare-village.js +88 -0
- package/out/recipes/si-bare-village.js.map +1 -0
- package/out/recipes/street-affix.d.ts +89 -0
- package/out/recipes/street-affix.d.ts.map +1 -0
- package/out/recipes/street-affix.js +563 -0
- package/out/recipes/street-affix.js.map +1 -0
- package/out/recipes/street-bare.d.ts +25 -0
- package/out/recipes/street-bare.d.ts.map +1 -0
- package/out/recipes/street-bare.js +86 -0
- package/out/recipes/street-bare.js.map +1 -0
- package/out/recipes/street.d.ts +15 -0
- package/out/recipes/street.d.ts.map +1 -0
- package/out/recipes/street.js +69 -0
- package/out/recipes/street.js.map +1 -0
- package/out/recipes/sub-venue-sources.d.ts +229 -0
- package/out/recipes/sub-venue-sources.d.ts.map +1 -0
- package/out/recipes/sub-venue-sources.js +653 -0
- package/out/recipes/sub-venue-sources.js.map +1 -0
- package/out/recipes/sub-venue.d.ts +269 -0
- package/out/recipes/sub-venue.d.ts.map +1 -0
- package/out/recipes/sub-venue.js +725 -0
- package/out/recipes/sub-venue.js.map +1 -0
- package/out/recipes/trailing-region.d.ts +74 -0
- package/out/recipes/trailing-region.d.ts.map +1 -0
- package/out/recipes/trailing-region.js +157 -0
- package/out/recipes/trailing-region.js.map +1 -0
- package/out/recipes/unit.d.ts +29 -0
- package/out/recipes/unit.d.ts.map +1 -0
- package/out/recipes/unit.js +230 -0
- package/out/recipes/unit.js.map +1 -0
- package/out/runner.d.ts +130 -0
- package/out/runner.d.ts.map +1 -0
- package/out/runner.js +185 -0
- package/out/runner.js.map +1 -0
- package/out/synthesizers/anchor-absorption.d.ts +63 -0
- package/out/synthesizers/anchor-absorption.d.ts.map +1 -0
- package/out/synthesizers/anchor-absorption.js +221 -0
- package/out/synthesizers/anchor-absorption.js.map +1 -0
- package/out/synthesizers/boundary-stress.d.ts +78 -0
- package/out/synthesizers/boundary-stress.d.ts.map +1 -0
- package/out/synthesizers/boundary-stress.js +455 -0
- package/out/synthesizers/boundary-stress.js.map +1 -0
- package/out/synthesizers/german.d.ts +115 -0
- package/out/synthesizers/german.d.ts.map +1 -0
- package/out/synthesizers/german.js +149 -0
- package/out/synthesizers/german.js.map +1 -0
- package/out/synthesizers/house-venue.d.ts +56 -0
- package/out/synthesizers/house-venue.d.ts.map +1 -0
- package/out/synthesizers/house-venue.js +247 -0
- package/out/synthesizers/house-venue.js.map +1 -0
- package/out/synthesizers/intersection.d.ts +52 -0
- package/out/synthesizers/intersection.d.ts.map +1 -0
- package/out/synthesizers/intersection.js +175 -0
- package/out/synthesizers/intersection.js.map +1 -0
- package/out/synthesizers/no-street.d.ts +72 -0
- package/out/synthesizers/no-street.d.ts.map +1 -0
- package/out/synthesizers/no-street.js +262 -0
- package/out/synthesizers/no-street.js.map +1 -0
- package/out/synthesizers/po-box.d.ts +108 -0
- package/out/synthesizers/po-box.d.ts.map +1 -0
- package/out/synthesizers/po-box.js +250 -0
- package/out/synthesizers/po-box.js.map +1 -0
- package/out/synthesizers/street.d.ts +54 -0
- package/out/synthesizers/street.d.ts.map +1 -0
- package/out/synthesizers/street.js +218 -0
- package/out/synthesizers/street.js.map +1 -0
- package/out/synthesizers/utils.d.ts +241 -0
- package/out/synthesizers/utils.d.ts.map +1 -0
- package/out/synthesizers/utils.js +776 -0
- package/out/synthesizers/utils.js.map +1 -0
- package/out/test-kit/corpus-recipe.d.ts +59 -0
- package/out/test-kit/corpus-recipe.d.ts.map +1 -0
- package/out/test-kit/corpus-recipe.js +39 -0
- package/out/test-kit/corpus-recipe.js.map +1 -0
- package/out/test-kit/index.d.ts +48 -0
- package/out/test-kit/index.d.ts.map +1 -0
- package/out/test-kit/index.js +78 -0
- package/out/test-kit/index.js.map +1 -0
- package/out/tools/align-slice.d.ts +7 -0
- package/out/tools/align-slice.d.ts.map +1 -0
- package/out/tools/align-slice.js +55 -0
- package/out/tools/align-slice.js.map +1 -0
- package/out/tools/audit.d.ts +29 -0
- package/out/tools/audit.d.ts.map +1 -0
- package/out/tools/audit.js +282 -0
- package/out/tools/audit.js.map +1 -0
- package/out/tools/corpus-stats.d.ts +44 -0
- package/out/tools/corpus-stats.d.ts.map +1 -0
- package/out/tools/corpus-stats.js +102 -0
- package/out/tools/corpus-stats.js.map +1 -0
- package/out/tools/fetch/ban.d.ts +31 -0
- package/out/tools/fetch/ban.d.ts.map +1 -0
- package/out/tools/fetch/ban.js +239 -0
- package/out/tools/fetch/ban.js.map +1 -0
- package/out/tools/fetch/download.d.ts +117 -0
- package/out/tools/fetch/download.d.ts.map +1 -0
- package/out/tools/fetch/download.js +160 -0
- package/out/tools/fetch/download.js.map +1 -0
- package/out/tools/fetch/geonames-dump.d.ts +91 -0
- package/out/tools/fetch/geonames-dump.d.ts.map +1 -0
- package/out/tools/fetch/geonames-dump.js +171 -0
- package/out/tools/fetch/geonames-dump.js.map +1 -0
- package/out/tools/fetch/geonames-postal.d.ts +76 -0
- package/out/tools/fetch/geonames-postal.d.ts.map +1 -0
- package/out/tools/fetch/geonames-postal.js +126 -0
- package/out/tools/fetch/geonames-postal.js.map +1 -0
- package/out/tools/fetch/hrsa.d.ts +18 -0
- package/out/tools/fetch/hrsa.d.ts.map +1 -0
- package/out/tools/fetch/hrsa.js +46 -0
- package/out/tools/fetch/hrsa.js.map +1 -0
- package/out/tools/fetch/imls-pls.d.ts +25 -0
- package/out/tools/fetch/imls-pls.d.ts.map +1 -0
- package/out/tools/fetch/imls-pls.js +108 -0
- package/out/tools/fetch/imls-pls.js.map +1 -0
- package/out/tools/fetch/index.d.ts +144 -0
- package/out/tools/fetch/index.d.ts.map +1 -0
- package/out/tools/fetch/index.js +143 -0
- package/out/tools/fetch/index.js.map +1 -0
- package/out/tools/fetch/nad.d.ts +70 -0
- package/out/tools/fetch/nad.d.ts.map +1 -0
- package/out/tools/fetch/nad.js +234 -0
- package/out/tools/fetch/nad.js.map +1 -0
- package/out/tools/fetch/nppes.d.ts +26 -0
- package/out/tools/fetch/nppes.d.ts.map +1 -0
- package/out/tools/fetch/nppes.js +126 -0
- package/out/tools/fetch/nppes.js.map +1 -0
- package/out/tools/fetch/openaddresses.d.ts +9 -0
- package/out/tools/fetch/openaddresses.d.ts.map +1 -0
- package/out/tools/fetch/openaddresses.js +279 -0
- package/out/tools/fetch/openaddresses.js.map +1 -0
- package/out/tools/fetch/ourairports.d.ts +45 -0
- package/out/tools/fetch/ourairports.d.ts.map +1 -0
- package/out/tools/fetch/ourairports.js +128 -0
- package/out/tools/fetch/ourairports.js.map +1 -0
- package/out/tools/fetch/ppd.d.ts.map +1 -0
- package/out/tools/fetch/ppd.js +85 -0
- package/out/tools/fetch/ppd.js.map +1 -0
- package/out/tools/fetch/state-hi-schools.d.ts +26 -0
- package/out/tools/fetch/state-hi-schools.d.ts.map +1 -0
- package/out/tools/fetch/state-hi-schools.js +112 -0
- package/out/tools/fetch/state-hi-schools.js.map +1 -0
- package/out/tools/fetch/state-sources.d.ts +26 -0
- package/out/tools/fetch/state-sources.d.ts.map +1 -0
- package/out/tools/fetch/state-sources.js +111 -0
- package/out/tools/fetch/state-sources.js.map +1 -0
- package/out/tools/fetch/tiger-full.d.ts +22 -0
- package/out/tools/fetch/tiger-full.d.ts.map +1 -0
- package/out/tools/fetch/tiger-full.js +217 -0
- package/out/tools/fetch/tiger-full.js.map +1 -0
- package/out/tools/fetch/wikidata-subvenue.d.ts +171 -0
- package/out/tools/fetch/wikidata-subvenue.d.ts.map +1 -0
- package/out/tools/fetch/wikidata-subvenue.js +274 -0
- package/out/tools/fetch/wikidata-subvenue.js.map +1 -0
- package/out/tools/gb-title-case.d.ts.map +1 -0
- package/out/tools/gb-title-case.js.map +1 -0
- package/out/tools/golden-expand.d.ts +90 -0
- package/out/tools/golden-expand.d.ts.map +1 -0
- package/out/tools/golden-expand.js +406 -0
- package/out/tools/golden-expand.js.map +1 -0
- package/out/tools/golden-promote.d.ts.map +1 -0
- package/out/tools/golden-promote.js +240 -0
- package/out/tools/golden-promote.js.map +1 -0
- package/out/tools/golden-relabel-street.d.ts +196 -0
- package/out/tools/golden-relabel-street.d.ts.map +1 -0
- package/out/tools/golden-relabel-street.js +440 -0
- package/out/tools/golden-relabel-street.js.map +1 -0
- package/out/tools/index.d.ts +28 -0
- package/out/tools/index.d.ts.map +1 -0
- package/out/tools/index.js +28 -0
- package/out/tools/index.js.map +1 -0
- package/out/tools/ingest-csv.d.ts.map +1 -0
- package/out/tools/ingest-csv.js +265 -0
- package/out/tools/ingest-csv.js.map +1 -0
- package/out/tools/jsonl-to-parquet.d.ts +61 -0
- package/out/tools/jsonl-to-parquet.d.ts.map +1 -0
- package/out/tools/jsonl-to-parquet.js +150 -0
- package/out/tools/jsonl-to-parquet.js.map +1 -0
- package/out/tools/lint-slice-vocab.d.ts +90 -0
- package/out/tools/lint-slice-vocab.d.ts.map +1 -0
- package/out/tools/lint-slice-vocab.js +267 -0
- package/out/tools/lint-slice-vocab.js.map +1 -0
- package/out/tools/lint-slice.d.ts +93 -0
- package/out/tools/lint-slice.d.ts.map +1 -0
- package/out/tools/lint-slice.js +322 -0
- package/out/tools/lint-slice.js.map +1 -0
- package/out/tools/overlay-manifest.d.ts +39 -0
- package/out/tools/overlay-manifest.d.ts.map +1 -0
- package/out/tools/overlay-manifest.js +90 -0
- package/out/tools/overlay-manifest.js.map +1 -0
- package/out/tools/overture-subvenue.d.ts +112 -0
- package/out/tools/overture-subvenue.d.ts.map +1 -0
- package/out/tools/overture-subvenue.js +139 -0
- package/out/tools/overture-subvenue.js.map +1 -0
- package/out/tools/postcode-triples.d.ts +174 -0
- package/out/tools/postcode-triples.d.ts.map +1 -0
- package/out/tools/postcode-triples.js +292 -0
- package/out/tools/postcode-triples.js.map +1 -0
- package/out/tools/slice-kryptonite.d.ts +32 -0
- package/out/tools/slice-kryptonite.d.ts.map +1 -0
- package/out/tools/slice-kryptonite.js +99 -0
- package/out/tools/slice-kryptonite.js.map +1 -0
- package/out/tools/slice-translit.d.ts +51 -0
- package/out/tools/slice-translit.d.ts.map +1 -0
- package/out/tools/slice-translit.js +166 -0
- package/out/tools/slice-translit.js.map +1 -0
- package/out/tools/sub-venue/harvest.d.ts +100 -0
- package/out/tools/sub-venue/harvest.d.ts.map +1 -0
- package/out/tools/sub-venue/harvest.js +168 -0
- package/out/tools/sub-venue/harvest.js.map +1 -0
- package/out/tools/sub-venue/head-nouns.d.ts +50 -0
- package/out/tools/sub-venue/head-nouns.d.ts.map +1 -0
- package/out/tools/sub-venue/head-nouns.js +213 -0
- package/out/tools/sub-venue/head-nouns.js.map +1 -0
- package/out/tools/sub-venue/surfaces.d.ts +45 -0
- package/out/tools/sub-venue/surfaces.d.ts.map +1 -0
- package/out/tools/sub-venue/surfaces.js +77 -0
- package/out/tools/sub-venue/surfaces.js.map +1 -0
- package/out/tools/sub-venue/table.d.ts +229 -0
- package/out/tools/sub-venue/table.d.ts.map +1 -0
- package/out/tools/sub-venue/table.js +108 -0
- package/out/tools/sub-venue/table.js.map +1 -0
- package/out/tools/sub-venue/wikidata.d.ts +26 -0
- package/out/tools/sub-venue/wikidata.d.ts.map +1 -0
- package/out/tools/sub-venue/wikidata.js +62 -0
- package/out/tools/sub-venue/wikidata.js.map +1 -0
- package/out/tools/sub-venue-lexicon.d.ts +156 -0
- package/out/tools/sub-venue-lexicon.d.ts.map +1 -0
- package/out/tools/sub-venue-lexicon.js +283 -0
- package/out/tools/sub-venue-lexicon.js.map +1 -0
- package/out/tools/sub-venue-promotions.d.ts +94 -0
- package/out/tools/sub-venue-promotions.d.ts.map +1 -0
- package/out/tools/sub-venue-promotions.js +266 -0
- package/out/tools/sub-venue-promotions.js.map +1 -0
- package/out/types.d.ts +221 -0
- package/out/types.d.ts.map +1 -0
- package/out/types.js.map +1 -0
- package/out/utils/align.d.ts +93 -0
- package/out/utils/align.d.ts.map +1 -0
- package/out/utils/align.js +234 -0
- package/out/utils/align.js.map +1 -0
- package/out/utils/golden.d.ts +85 -0
- package/out/utils/golden.d.ts.map +1 -0
- package/out/utils/golden.js +127 -0
- package/out/utils/golden.js.map +1 -0
- package/out/utils/index.d.ts +14 -0
- package/out/utils/index.d.ts.map +1 -0
- package/out/utils/index.js +14 -0
- package/out/utils/index.js.map +1 -0
- package/out/utils/license.d.ts.map +1 -0
- package/out/utils/license.js.map +1 -0
- package/out/utils/parquet.d.ts +178 -0
- package/out/utils/parquet.d.ts.map +1 -0
- package/out/utils/parquet.js +371 -0
- package/out/utils/parquet.js.map +1 -0
- package/out/utils/slice-stats.d.ts +52 -0
- package/out/utils/slice-stats.d.ts.map +1 -0
- package/out/utils/slice-stats.js +58 -0
- package/out/utils/slice-stats.js.map +1 -0
- package/out/utils/split.d.ts +128 -0
- package/out/utils/split.d.ts.map +1 -0
- package/out/utils/split.js +204 -0
- package/out/utils/split.js.map +1 -0
- package/out/utils/tokenize.d.ts +64 -0
- package/out/utils/tokenize.d.ts.map +1 -0
- package/out/utils/tokenize.js +82 -0
- package/out/utils/tokenize.js.map +1 -0
- package/out/utils/wof-json.d.ts +113 -0
- package/out/utils/wof-json.d.ts.map +1 -0
- package/out/utils/wof-json.js +173 -0
- package/out/utils/wof-json.js.map +1 -0
- package/package.json +259 -194
- package/out/src/adapters/ban/adapter.d.ts.map +0 -1
- package/out/src/adapters/ban/adapter.js +0 -149
- package/out/src/adapters/ban/adapter.js.map +0 -1
- package/out/src/adapters/ban/street-decompose.d.ts.map +0 -1
- package/out/src/adapters/ban/street-decompose.js +0 -75
- package/out/src/adapters/ban/street-decompose.js.map +0 -1
- package/out/src/adapters/fcc-bdc/adapter.d.ts.map +0 -1
- package/out/src/adapters/fcc-bdc/adapter.js +0 -144
- package/out/src/adapters/fcc-bdc/adapter.js.map +0 -1
- package/out/src/adapters/geonames/adapter.d.ts.map +0 -1
- package/out/src/adapters/geonames/adapter.js +0 -176
- package/out/src/adapters/geonames/adapter.js.map +0 -1
- package/out/src/adapters/geonames-postal/adapter.d.ts +0 -41
- package/out/src/adapters/geonames-postal/adapter.d.ts.map +0 -1
- package/out/src/adapters/geonames-postal/adapter.js +0 -104
- package/out/src/adapters/geonames-postal/adapter.js.map +0 -1
- package/out/src/adapters/gnaf/adapter.d.ts +0 -49
- package/out/src/adapters/gnaf/adapter.d.ts.map +0 -1
- package/out/src/adapters/gnaf/adapter.js +0 -124
- package/out/src/adapters/gnaf/adapter.js.map +0 -1
- package/out/src/adapters/gnaf/assemble.d.ts +0 -65
- package/out/src/adapters/gnaf/assemble.d.ts.map +0 -1
- package/out/src/adapters/gnaf/assemble.js +0 -154
- package/out/src/adapters/gnaf/assemble.js.map +0 -1
- package/out/src/adapters/index.d.ts +0 -51
- package/out/src/adapters/index.d.ts.map +0 -1
- package/out/src/adapters/index.js +0 -95
- package/out/src/adapters/index.js.map +0 -1
- package/out/src/adapters/openaddresses/adapter.d.ts.map +0 -1
- package/out/src/adapters/openaddresses/adapter.js +0 -186
- package/out/src/adapters/openaddresses/adapter.js.map +0 -1
- package/out/src/adapters/overture/adapter.d.ts +0 -48
- package/out/src/adapters/overture/adapter.d.ts.map +0 -1
- package/out/src/adapters/overture/adapter.js +0 -125
- package/out/src/adapters/overture/adapter.js.map +0 -1
- package/out/src/adapters/state-hi-schools/adapter.d.ts +0 -47
- package/out/src/adapters/state-hi-schools/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-hi-schools/adapter.js +0 -133
- package/out/src/adapters/state-hi-schools/adapter.js.map +0 -1
- package/out/src/adapters/state-ia-contractors/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-ia-contractors/adapter.js.map +0 -1
- package/out/src/adapters/state-ny-notaries/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-ny-notaries/adapter.js.map +0 -1
- package/out/src/adapters/state-tx-notaries/adapter.d.ts.map +0 -1
- package/out/src/adapters/state-tx-notaries/adapter.js.map +0 -1
- package/out/src/adapters/synth-po-box/adapter.d.ts.map +0 -1
- package/out/src/adapters/synth-po-box/adapter.js +0 -140
- package/out/src/adapters/synth-po-box/adapter.js.map +0 -1
- package/out/src/adapters/tiger/adapter.d.ts +0 -55
- package/out/src/adapters/tiger/adapter.d.ts.map +0 -1
- package/out/src/adapters/tiger/adapter.js +0 -201
- package/out/src/adapters/tiger/adapter.js.map +0 -1
- package/out/src/adapters/tiger/street-decompose.d.ts.map +0 -1
- package/out/src/adapters/tiger/street-decompose.js +0 -90
- package/out/src/adapters/tiger/street-decompose.js.map +0 -1
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.d.ts +0 -47
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.js +0 -139
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.js.map +0 -1
- package/out/src/adapters/usgov-imls-pls/adapter.d.ts +0 -36
- package/out/src/adapters/usgov-imls-pls/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-imls-pls/adapter.js +0 -114
- package/out/src/adapters/usgov-imls-pls/adapter.js.map +0 -1
- package/out/src/adapters/usgov-irs-bmf/adapter.d.ts +0 -37
- package/out/src/adapters/usgov-irs-bmf/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-irs-bmf/adapter.js +0 -124
- package/out/src/adapters/usgov-irs-bmf/adapter.js.map +0 -1
- package/out/src/adapters/usgov-nad/adapter.d.ts +0 -48
- package/out/src/adapters/usgov-nad/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-nad/adapter.js +0 -252
- package/out/src/adapters/usgov-nad/adapter.js.map +0 -1
- package/out/src/adapters/usgov-nppes/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-nppes/adapter.js +0 -116
- package/out/src/adapters/usgov-nppes/adapter.js.map +0 -1
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.d.ts.map +0 -1
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.js +0 -156
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.js.map +0 -1
- package/out/src/adapters/utils/index.d.ts +0 -150
- package/out/src/adapters/utils/index.d.ts.map +0 -1
- package/out/src/adapters/utils/index.js +0 -159
- package/out/src/adapters/utils/index.js.map +0 -1
- package/out/src/adapters/wof-admin-jp/adapter.d.ts.map +0 -1
- package/out/src/adapters/wof-admin-jp/adapter.js +0 -164
- package/out/src/adapters/wof-admin-jp/adapter.js.map +0 -1
- package/out/src/adapters/wof-admin-json/adapter.d.ts +0 -82
- package/out/src/adapters/wof-admin-json/adapter.d.ts.map +0 -1
- package/out/src/adapters/wof-admin-json/adapter.js +0 -224
- package/out/src/adapters/wof-admin-json/adapter.js.map +0 -1
- package/out/src/adapters/wof-json-rows.d.ts +0 -32
- package/out/src/adapters/wof-json-rows.d.ts.map +0 -1
- package/out/src/adapters/wof-json-rows.js +0 -45
- package/out/src/adapters/wof-json-rows.js.map +0 -1
- package/out/src/adapters/wof-postalcode-json/adapter.d.ts +0 -65
- package/out/src/adapters/wof-postalcode-json/adapter.d.ts.map +0 -1
- package/out/src/adapters/wof-postalcode-json/adapter.js +0 -160
- package/out/src/adapters/wof-postalcode-json/adapter.js.map +0 -1
- package/out/src/build.d.ts +0 -132
- package/out/src/build.d.ts.map +0 -1
- package/out/src/build.js +0 -251
- package/out/src/build.js.map +0 -1
- package/out/src/codex/us-fips-state.d.ts.map +0 -1
- package/out/src/codex/us-fips-state.js.map +0 -1
- package/out/src/index.d.ts +0 -14
- package/out/src/index.d.ts.map +0 -1
- package/out/src/index.js +0 -14
- package/out/src/index.js.map +0 -1
- package/out/src/name-prone-us-suffixes.d.ts +0 -12
- package/out/src/name-prone-us-suffixes.d.ts.map +0 -1
- package/out/src/name-prone-us-suffixes.js +0 -12
- package/out/src/name-prone-us-suffixes.js.map +0 -1
- package/out/src/parquet-wrapper/index.d.ts +0 -9
- package/out/src/parquet-wrapper/index.d.ts.map +0 -1
- package/out/src/parquet-wrapper/index.js +0 -9
- package/out/src/parquet-wrapper/index.js.map +0 -1
- package/out/src/parquet-wrapper/reader.d.ts +0 -34
- package/out/src/parquet-wrapper/reader.d.ts.map +0 -1
- package/out/src/parquet-wrapper/reader.js +0 -69
- package/out/src/parquet-wrapper/reader.js.map +0 -1
- package/out/src/parquet-wrapper/schema.d.ts +0 -49
- package/out/src/parquet-wrapper/schema.d.ts.map +0 -1
- package/out/src/parquet-wrapper/schema.js +0 -55
- package/out/src/parquet-wrapper/schema.js.map +0 -1
- package/out/src/parquet-wrapper/writer.d.ts +0 -46
- package/out/src/parquet-wrapper/writer.d.ts.map +0 -1
- package/out/src/parquet-wrapper/writer.js +0 -76
- package/out/src/parquet-wrapper/writer.js.map +0 -1
- package/out/src/runner.d.ts +0 -126
- package/out/src/runner.d.ts.map +0 -1
- package/out/src/runner.js +0 -189
- package/out/src/runner.js.map +0 -1
- package/out/src/shard-recipes/anchor-absorption.d.ts +0 -20
- package/out/src/shard-recipes/anchor-absorption.d.ts.map +0 -1
- package/out/src/shard-recipes/anchor-absorption.js +0 -82
- package/out/src/shard-recipes/anchor-absorption.js.map +0 -1
- package/out/src/shard-recipes/bare-country.d.ts +0 -25
- package/out/src/shard-recipes/bare-country.d.ts.map +0 -1
- package/out/src/shard-recipes/bare-country.js +0 -87
- package/out/src/shard-recipes/bare-country.js.map +0 -1
- package/out/src/shard-recipes/boundary-stress.d.ts +0 -20
- package/out/src/shard-recipes/boundary-stress.d.ts.map +0 -1
- package/out/src/shard-recipes/boundary-stress.js +0 -83
- package/out/src/shard-recipes/boundary-stress.js.map +0 -1
- package/out/src/shard-recipes/country-balanced.d.ts +0 -32
- package/out/src/shard-recipes/country-balanced.d.ts.map +0 -1
- package/out/src/shard-recipes/country-balanced.js +0 -406
- package/out/src/shard-recipes/country-balanced.js.map +0 -1
- package/out/src/shard-recipes/cz-pcfirst-preposition.d.ts +0 -22
- package/out/src/shard-recipes/cz-pcfirst-preposition.d.ts.map +0 -1
- package/out/src/shard-recipes/cz-pcfirst-preposition.js +0 -100
- package/out/src/shard-recipes/cz-pcfirst-preposition.js.map +0 -1
- package/out/src/shard-recipes/fr-admin-split.d.ts +0 -38
- package/out/src/shard-recipes/fr-admin-split.d.ts.map +0 -1
- package/out/src/shard-recipes/fr-admin-split.js +0 -188
- package/out/src/shard-recipes/fr-admin-split.js.map +0 -1
- package/out/src/shard-recipes/fr-bare-street.d.ts +0 -28
- package/out/src/shard-recipes/fr-bare-street.d.ts.map +0 -1
- package/out/src/shard-recipes/fr-bare-street.js +0 -143
- package/out/src/shard-recipes/fr-bare-street.js.map +0 -1
- package/out/src/shard-recipes/fr-fragment.d.ts +0 -77
- package/out/src/shard-recipes/fr-fragment.d.ts.map +0 -1
- package/out/src/shard-recipes/fr-fragment.js +0 -276
- package/out/src/shard-recipes/fr-fragment.js.map +0 -1
- package/out/src/shard-recipes/fr-lieudit.d.ts +0 -32
- package/out/src/shard-recipes/fr-lieudit.d.ts.map +0 -1
- package/out/src/shard-recipes/fr-lieudit.js +0 -226
- package/out/src/shard-recipes/fr-lieudit.js.map +0 -1
- package/out/src/shard-recipes/fr-order.d.ts +0 -38
- package/out/src/shard-recipes/fr-order.d.ts.map +0 -1
- package/out/src/shard-recipes/fr-order.js +0 -208
- package/out/src/shard-recipes/fr-order.js.map +0 -1
- package/out/src/shard-recipes/german.d.ts +0 -23
- package/out/src/shard-recipes/german.d.ts.map +0 -1
- package/out/src/shard-recipes/german.js +0 -132
- package/out/src/shard-recipes/german.js.map +0 -1
- package/out/src/shard-recipes/house-venue.d.ts +0 -18
- package/out/src/shard-recipes/house-venue.d.ts.map +0 -1
- package/out/src/shard-recipes/house-venue.js +0 -74
- package/out/src/shard-recipes/house-venue.js.map +0 -1
- package/out/src/shard-recipes/index.d.ts +0 -24
- package/out/src/shard-recipes/index.d.ts.map +0 -1
- package/out/src/shard-recipes/index.js +0 -89
- package/out/src/shard-recipes/index.js.map +0 -1
- package/out/src/shard-recipes/intersection.d.ts +0 -42
- package/out/src/shard-recipes/intersection.d.ts.map +0 -1
- package/out/src/shard-recipes/intersection.js +0 -460
- package/out/src/shard-recipes/intersection.js.map +0 -1
- package/out/src/shard-recipes/locale.d.ts +0 -135
- package/out/src/shard-recipes/locale.d.ts.map +0 -1
- package/out/src/shard-recipes/locale.js +0 -459
- package/out/src/shard-recipes/locale.js.map +0 -1
- package/out/src/shard-recipes/nl-postcode.d.ts +0 -26
- package/out/src/shard-recipes/nl-postcode.d.ts.map +0 -1
- package/out/src/shard-recipes/nl-postcode.js +0 -102
- package/out/src/shard-recipes/nl-postcode.js.map +0 -1
- package/out/src/shard-recipes/no-fragment.d.ts +0 -43
- package/out/src/shard-recipes/no-fragment.d.ts.map +0 -1
- package/out/src/shard-recipes/no-fragment.js +0 -188
- package/out/src/shard-recipes/no-fragment.js.map +0 -1
- package/out/src/shard-recipes/no-street-led.d.ts +0 -24
- package/out/src/shard-recipes/no-street-led.d.ts.map +0 -1
- package/out/src/shard-recipes/no-street-led.js +0 -121
- package/out/src/shard-recipes/no-street-led.js.map +0 -1
- package/out/src/shard-recipes/no-street.d.ts +0 -18
- package/out/src/shard-recipes/no-street.d.ts.map +0 -1
- package/out/src/shard-recipes/no-street.js +0 -72
- package/out/src/shard-recipes/no-street.js.map +0 -1
- package/out/src/shard-recipes/po-box-cedex.d.ts +0 -38
- package/out/src/shard-recipes/po-box-cedex.d.ts.map +0 -1
- package/out/src/shard-recipes/po-box-cedex.js +0 -726
- package/out/src/shard-recipes/po-box-cedex.js.map +0 -1
- package/out/src/shard-recipes/po-box.d.ts +0 -17
- package/out/src/shard-recipes/po-box.d.ts.map +0 -1
- package/out/src/shard-recipes/po-box.js +0 -101
- package/out/src/shard-recipes/po-box.js.map +0 -1
- package/out/src/shard-recipes/reviewed-postcode-tail.d.ts +0 -47
- package/out/src/shard-recipes/reviewed-postcode-tail.d.ts.map +0 -1
- package/out/src/shard-recipes/reviewed-postcode-tail.js +0 -125
- package/out/src/shard-recipes/reviewed-postcode-tail.js.map +0 -1
- package/out/src/shard-recipes/scaffold.d.ts +0 -246
- package/out/src/shard-recipes/scaffold.d.ts.map +0 -1
- package/out/src/shard-recipes/scaffold.js +0 -137
- package/out/src/shard-recipes/scaffold.js.map +0 -1
- package/out/src/shard-recipes/si-bare-village.d.ts +0 -32
- package/out/src/shard-recipes/si-bare-village.d.ts.map +0 -1
- package/out/src/shard-recipes/si-bare-village.js +0 -88
- package/out/src/shard-recipes/si-bare-village.js.map +0 -1
- package/out/src/shard-recipes/street-affix.d.ts +0 -89
- package/out/src/shard-recipes/street-affix.d.ts.map +0 -1
- package/out/src/shard-recipes/street-affix.js +0 -578
- package/out/src/shard-recipes/street-affix.js.map +0 -1
- package/out/src/shard-recipes/street-bare.d.ts +0 -25
- package/out/src/shard-recipes/street-bare.d.ts.map +0 -1
- package/out/src/shard-recipes/street-bare.js +0 -86
- package/out/src/shard-recipes/street-bare.js.map +0 -1
- package/out/src/shard-recipes/street.d.ts +0 -15
- package/out/src/shard-recipes/street.d.ts.map +0 -1
- package/out/src/shard-recipes/street.js +0 -69
- package/out/src/shard-recipes/street.js.map +0 -1
- package/out/src/shard-recipes/sub-venue-sources.d.ts +0 -228
- package/out/src/shard-recipes/sub-venue-sources.d.ts.map +0 -1
- package/out/src/shard-recipes/sub-venue-sources.js +0 -664
- package/out/src/shard-recipes/sub-venue-sources.js.map +0 -1
- package/out/src/shard-recipes/sub-venue.d.ts +0 -269
- package/out/src/shard-recipes/sub-venue.d.ts.map +0 -1
- package/out/src/shard-recipes/sub-venue.js +0 -710
- package/out/src/shard-recipes/sub-venue.js.map +0 -1
- package/out/src/shard-recipes/trailing-region.d.ts +0 -74
- package/out/src/shard-recipes/trailing-region.d.ts.map +0 -1
- package/out/src/shard-recipes/trailing-region.js +0 -157
- package/out/src/shard-recipes/trailing-region.js.map +0 -1
- package/out/src/shard-recipes/unit.d.ts +0 -29
- package/out/src/shard-recipes/unit.d.ts.map +0 -1
- package/out/src/shard-recipes/unit.js +0 -243
- package/out/src/shard-recipes/unit.js.map +0 -1
- package/out/src/synthesizers/anchor-absorption.d.ts +0 -63
- package/out/src/synthesizers/anchor-absorption.d.ts.map +0 -1
- package/out/src/synthesizers/anchor-absorption.js +0 -223
- package/out/src/synthesizers/anchor-absorption.js.map +0 -1
- package/out/src/synthesizers/boundary-stress.d.ts +0 -78
- package/out/src/synthesizers/boundary-stress.d.ts.map +0 -1
- package/out/src/synthesizers/boundary-stress.js +0 -455
- package/out/src/synthesizers/boundary-stress.js.map +0 -1
- package/out/src/synthesizers/german.d.ts +0 -107
- package/out/src/synthesizers/german.d.ts.map +0 -1
- package/out/src/synthesizers/german.js +0 -148
- package/out/src/synthesizers/german.js.map +0 -1
- package/out/src/synthesizers/house-venue.d.ts +0 -56
- package/out/src/synthesizers/house-venue.d.ts.map +0 -1
- package/out/src/synthesizers/house-venue.js +0 -267
- package/out/src/synthesizers/house-venue.js.map +0 -1
- package/out/src/synthesizers/intersection.d.ts +0 -52
- package/out/src/synthesizers/intersection.d.ts.map +0 -1
- package/out/src/synthesizers/intersection.js +0 -175
- package/out/src/synthesizers/intersection.js.map +0 -1
- package/out/src/synthesizers/no-street.d.ts +0 -72
- package/out/src/synthesizers/no-street.d.ts.map +0 -1
- package/out/src/synthesizers/no-street.js +0 -282
- package/out/src/synthesizers/no-street.js.map +0 -1
- package/out/src/synthesizers/po-box.d.ts +0 -104
- package/out/src/synthesizers/po-box.d.ts.map +0 -1
- package/out/src/synthesizers/po-box.js +0 -266
- package/out/src/synthesizers/po-box.js.map +0 -1
- package/out/src/synthesizers/street.d.ts +0 -54
- package/out/src/synthesizers/street.d.ts.map +0 -1
- package/out/src/synthesizers/street.js +0 -221
- package/out/src/synthesizers/street.js.map +0 -1
- package/out/src/synthesizers/utils.d.ts +0 -203
- package/out/src/synthesizers/utils.d.ts.map +0 -1
- package/out/src/synthesizers/utils.js +0 -708
- package/out/src/synthesizers/utils.js.map +0 -1
- package/out/src/tools/align-shard.d.ts +0 -8
- package/out/src/tools/align-shard.d.ts.map +0 -1
- package/out/src/tools/align-shard.js +0 -56
- package/out/src/tools/align-shard.js.map +0 -1
- package/out/src/tools/audit.d.ts +0 -28
- package/out/src/tools/audit.d.ts.map +0 -1
- package/out/src/tools/audit.js +0 -285
- package/out/src/tools/audit.js.map +0 -1
- package/out/src/tools/corpus-stats.d.ts +0 -44
- package/out/src/tools/corpus-stats.d.ts.map +0 -1
- package/out/src/tools/corpus-stats.js +0 -138
- package/out/src/tools/corpus-stats.js.map +0 -1
- package/out/src/tools/fetch/ban.d.ts +0 -31
- package/out/src/tools/fetch/ban.d.ts.map +0 -1
- package/out/src/tools/fetch/ban.js +0 -239
- package/out/src/tools/fetch/ban.js.map +0 -1
- package/out/src/tools/fetch/download.d.ts +0 -78
- package/out/src/tools/fetch/download.d.ts.map +0 -1
- package/out/src/tools/fetch/download.js +0 -116
- package/out/src/tools/fetch/download.js.map +0 -1
- package/out/src/tools/fetch/geonames-dump.d.ts +0 -87
- package/out/src/tools/fetch/geonames-dump.d.ts.map +0 -1
- package/out/src/tools/fetch/geonames-dump.js +0 -178
- package/out/src/tools/fetch/geonames-dump.js.map +0 -1
- package/out/src/tools/fetch/geonames-postal.d.ts +0 -76
- package/out/src/tools/fetch/geonames-postal.d.ts.map +0 -1
- package/out/src/tools/fetch/geonames-postal.js +0 -125
- package/out/src/tools/fetch/geonames-postal.js.map +0 -1
- package/out/src/tools/fetch/hrsa.d.ts +0 -18
- package/out/src/tools/fetch/hrsa.d.ts.map +0 -1
- package/out/src/tools/fetch/hrsa.js +0 -46
- package/out/src/tools/fetch/hrsa.js.map +0 -1
- package/out/src/tools/fetch/imls-pls.d.ts +0 -25
- package/out/src/tools/fetch/imls-pls.d.ts.map +0 -1
- package/out/src/tools/fetch/imls-pls.js +0 -108
- package/out/src/tools/fetch/imls-pls.js.map +0 -1
- package/out/src/tools/fetch/index.d.ts +0 -144
- package/out/src/tools/fetch/index.d.ts.map +0 -1
- package/out/src/tools/fetch/index.js +0 -143
- package/out/src/tools/fetch/index.js.map +0 -1
- package/out/src/tools/fetch/nad.d.ts +0 -70
- package/out/src/tools/fetch/nad.d.ts.map +0 -1
- package/out/src/tools/fetch/nad.js +0 -234
- package/out/src/tools/fetch/nad.js.map +0 -1
- package/out/src/tools/fetch/nppes.d.ts +0 -26
- package/out/src/tools/fetch/nppes.d.ts.map +0 -1
- package/out/src/tools/fetch/nppes.js +0 -126
- package/out/src/tools/fetch/nppes.js.map +0 -1
- package/out/src/tools/fetch/openaddresses.d.ts +0 -61
- package/out/src/tools/fetch/openaddresses.d.ts.map +0 -1
- package/out/src/tools/fetch/openaddresses.js +0 -317
- package/out/src/tools/fetch/openaddresses.js.map +0 -1
- package/out/src/tools/fetch/ourairports.d.ts +0 -45
- package/out/src/tools/fetch/ourairports.d.ts.map +0 -1
- package/out/src/tools/fetch/ourairports.js +0 -128
- package/out/src/tools/fetch/ourairports.js.map +0 -1
- package/out/src/tools/fetch/ppd.d.ts.map +0 -1
- package/out/src/tools/fetch/ppd.js +0 -100
- package/out/src/tools/fetch/ppd.js.map +0 -1
- package/out/src/tools/fetch/state-hi-schools.d.ts +0 -25
- package/out/src/tools/fetch/state-hi-schools.d.ts.map +0 -1
- package/out/src/tools/fetch/state-hi-schools.js +0 -162
- package/out/src/tools/fetch/state-hi-schools.js.map +0 -1
- package/out/src/tools/fetch/state-sources.d.ts +0 -26
- package/out/src/tools/fetch/state-sources.d.ts.map +0 -1
- package/out/src/tools/fetch/state-sources.js +0 -111
- package/out/src/tools/fetch/state-sources.js.map +0 -1
- package/out/src/tools/fetch/tiger-full.d.ts +0 -42
- package/out/src/tools/fetch/tiger-full.d.ts.map +0 -1
- package/out/src/tools/fetch/tiger-full.js +0 -248
- package/out/src/tools/fetch/tiger-full.js.map +0 -1
- package/out/src/tools/fetch/wikidata-subvenue.d.ts +0 -171
- package/out/src/tools/fetch/wikidata-subvenue.d.ts.map +0 -1
- package/out/src/tools/fetch/wikidata-subvenue.js +0 -275
- package/out/src/tools/fetch/wikidata-subvenue.js.map +0 -1
- package/out/src/tools/gb-title-case.d.ts.map +0 -1
- package/out/src/tools/gb-title-case.js.map +0 -1
- package/out/src/tools/golden-expand.d.ts +0 -90
- package/out/src/tools/golden-expand.d.ts.map +0 -1
- package/out/src/tools/golden-expand.js +0 -413
- package/out/src/tools/golden-expand.js.map +0 -1
- package/out/src/tools/golden-promote.d.ts.map +0 -1
- package/out/src/tools/golden-promote.js +0 -244
- package/out/src/tools/golden-promote.js.map +0 -1
- package/out/src/tools/golden-relabel-street.d.ts +0 -196
- package/out/src/tools/golden-relabel-street.d.ts.map +0 -1
- package/out/src/tools/golden-relabel-street.js +0 -440
- package/out/src/tools/golden-relabel-street.js.map +0 -1
- package/out/src/tools/index.d.ts +0 -28
- package/out/src/tools/index.d.ts.map +0 -1
- package/out/src/tools/index.js +0 -28
- package/out/src/tools/index.js.map +0 -1
- package/out/src/tools/ingest-csv.d.ts.map +0 -1
- package/out/src/tools/ingest-csv.js +0 -296
- package/out/src/tools/ingest-csv.js.map +0 -1
- package/out/src/tools/jsonl-to-parquet.d.ts +0 -61
- package/out/src/tools/jsonl-to-parquet.d.ts.map +0 -1
- package/out/src/tools/jsonl-to-parquet.js +0 -164
- package/out/src/tools/jsonl-to-parquet.js.map +0 -1
- package/out/src/tools/lint-shard-vocab.d.ts +0 -90
- package/out/src/tools/lint-shard-vocab.d.ts.map +0 -1
- package/out/src/tools/lint-shard-vocab.js +0 -281
- package/out/src/tools/lint-shard-vocab.js.map +0 -1
- package/out/src/tools/lint-shard.d.ts +0 -93
- package/out/src/tools/lint-shard.d.ts.map +0 -1
- package/out/src/tools/lint-shard.js +0 -354
- package/out/src/tools/lint-shard.js.map +0 -1
- package/out/src/tools/overlay-manifest.d.ts +0 -39
- package/out/src/tools/overlay-manifest.d.ts.map +0 -1
- package/out/src/tools/overlay-manifest.js +0 -98
- package/out/src/tools/overlay-manifest.js.map +0 -1
- package/out/src/tools/overture-subvenue.d.ts +0 -112
- package/out/src/tools/overture-subvenue.d.ts.map +0 -1
- package/out/src/tools/overture-subvenue.js +0 -144
- package/out/src/tools/overture-subvenue.js.map +0 -1
- package/out/src/tools/postcode-triples.d.ts +0 -175
- package/out/src/tools/postcode-triples.d.ts.map +0 -1
- package/out/src/tools/postcode-triples.js +0 -304
- package/out/src/tools/postcode-triples.js.map +0 -1
- package/out/src/tools/shard-kryptonite.d.ts +0 -32
- package/out/src/tools/shard-kryptonite.d.ts.map +0 -1
- package/out/src/tools/shard-kryptonite.js +0 -100
- package/out/src/tools/shard-kryptonite.js.map +0 -1
- package/out/src/tools/shard-translit.d.ts +0 -51
- package/out/src/tools/shard-translit.d.ts.map +0 -1
- package/out/src/tools/shard-translit.js +0 -175
- package/out/src/tools/shard-translit.js.map +0 -1
- package/out/src/tools/sub-venue/harvest.d.ts +0 -100
- package/out/src/tools/sub-venue/harvest.d.ts.map +0 -1
- package/out/src/tools/sub-venue/harvest.js +0 -168
- package/out/src/tools/sub-venue/harvest.js.map +0 -1
- package/out/src/tools/sub-venue/head-nouns.d.ts +0 -50
- package/out/src/tools/sub-venue/head-nouns.d.ts.map +0 -1
- package/out/src/tools/sub-venue/head-nouns.js +0 -210
- package/out/src/tools/sub-venue/head-nouns.js.map +0 -1
- package/out/src/tools/sub-venue/surfaces.d.ts +0 -45
- package/out/src/tools/sub-venue/surfaces.d.ts.map +0 -1
- package/out/src/tools/sub-venue/surfaces.js +0 -77
- package/out/src/tools/sub-venue/surfaces.js.map +0 -1
- package/out/src/tools/sub-venue/table.d.ts +0 -229
- package/out/src/tools/sub-venue/table.d.ts.map +0 -1
- package/out/src/tools/sub-venue/table.js +0 -108
- package/out/src/tools/sub-venue/table.js.map +0 -1
- package/out/src/tools/sub-venue/wikidata.d.ts +0 -26
- package/out/src/tools/sub-venue/wikidata.d.ts.map +0 -1
- package/out/src/tools/sub-venue/wikidata.js +0 -62
- package/out/src/tools/sub-venue/wikidata.js.map +0 -1
- package/out/src/tools/sub-venue-lexicon.d.ts +0 -156
- package/out/src/tools/sub-venue-lexicon.d.ts.map +0 -1
- package/out/src/tools/sub-venue-lexicon.js +0 -282
- package/out/src/tools/sub-venue-lexicon.js.map +0 -1
- package/out/src/tools/sub-venue-promotions.d.ts +0 -94
- package/out/src/tools/sub-venue-promotions.d.ts.map +0 -1
- package/out/src/tools/sub-venue-promotions.js +0 -266
- package/out/src/tools/sub-venue-promotions.js.map +0 -1
- package/out/src/types.d.ts +0 -221
- package/out/src/types.d.ts.map +0 -1
- package/out/src/types.js.map +0 -1
- package/out/src/utils/align.d.ts +0 -93
- package/out/src/utils/align.d.ts.map +0 -1
- package/out/src/utils/align.js +0 -234
- package/out/src/utils/align.js.map +0 -1
- package/out/src/utils/golden.d.ts +0 -69
- package/out/src/utils/golden.d.ts.map +0 -1
- package/out/src/utils/golden.js +0 -127
- package/out/src/utils/golden.js.map +0 -1
- package/out/src/utils/index.d.ts +0 -14
- package/out/src/utils/index.d.ts.map +0 -1
- package/out/src/utils/index.js +0 -14
- package/out/src/utils/index.js.map +0 -1
- package/out/src/utils/license.d.ts.map +0 -1
- package/out/src/utils/license.js.map +0 -1
- package/out/src/utils/parquet.d.ts +0 -162
- package/out/src/utils/parquet.d.ts.map +0 -1
- package/out/src/utils/parquet.js +0 -262
- package/out/src/utils/parquet.js.map +0 -1
- package/out/src/utils/split.d.ts +0 -127
- package/out/src/utils/split.d.ts.map +0 -1
- package/out/src/utils/split.js +0 -204
- package/out/src/utils/split.js.map +0 -1
- package/out/src/utils/tokenize.d.ts +0 -56
- package/out/src/utils/tokenize.d.ts.map +0 -1
- package/out/src/utils/tokenize.js +0 -48
- package/out/src/utils/tokenize.js.map +0 -1
- package/out/src/utils/wof-json.d.ts +0 -109
- package/out/src/utils/wof-json.d.ts.map +0 -1
- package/out/src/utils/wof-json.js +0 -173
- package/out/src/utils/wof-json.js.map +0 -1
- package/src/adapters/ban/adapter.ts +0 -191
- package/src/adapters/ban/street-decompose.ts +0 -96
- package/src/adapters/fcc-bdc/adapter.ts +0 -174
- package/src/adapters/geonames/adapter.ts +0 -200
- package/src/adapters/geonames-postal/adapter.ts +0 -119
- package/src/adapters/gnaf/adapter.ts +0 -149
- package/src/adapters/gnaf/assemble.ts +0 -226
- package/src/adapters/index.ts +0 -149
- package/src/adapters/openaddresses/adapter.ts +0 -251
- package/src/adapters/overture/adapter.ts +0 -162
- package/src/adapters/state-hi-schools/adapter.ts +0 -164
- package/src/adapters/synth-po-box/adapter.ts +0 -204
- package/src/adapters/tiger/adapter.ts +0 -253
- package/src/adapters/tiger/street-decompose.ts +0 -111
- package/src/adapters/usgov-hrsa-fqhc/adapter.ts +0 -183
- package/src/adapters/usgov-imls-pls/adapter.ts +0 -143
- package/src/adapters/usgov-irs-bmf/adapter.ts +0 -163
- package/src/adapters/usgov-nad/adapter.ts +0 -348
- package/src/adapters/usgov-nppes/adapter.ts +0 -159
- package/src/adapters/usgov-samhsa-treatment-locator/adapter.ts +0 -204
- package/src/adapters/utils/index.ts +0 -233
- package/src/adapters/wof-admin-jp/adapter.ts +0 -216
- package/src/adapters/wof-admin-json/adapter.ts +0 -256
- package/src/adapters/wof-json-rows.ts +0 -79
- package/src/adapters/wof-postalcode-json/adapter.ts +0 -183
- package/src/build.ts +0 -386
- package/src/index.ts +0 -14
- package/src/name-prone-us-suffixes.ts +0 -12
- package/src/parquet-wrapper/index.ts +0 -9
- package/src/parquet-wrapper/reader.ts +0 -97
- package/src/parquet-wrapper/schema.ts +0 -88
- package/src/parquet-wrapper/writer.ts +0 -110
- package/src/runner.ts +0 -317
- package/src/shard-recipes/anchor-absorption.ts +0 -103
- package/src/shard-recipes/bare-country.ts +0 -95
- package/src/shard-recipes/boundary-stress.ts +0 -101
- package/src/shard-recipes/country-balanced.ts +0 -524
- package/src/shard-recipes/cz-pcfirst-preposition.ts +0 -111
- package/src/shard-recipes/fr-admin-split.ts +0 -239
- package/src/shard-recipes/fr-bare-street.ts +0 -170
- package/src/shard-recipes/fr-fragment.ts +0 -332
- package/src/shard-recipes/fr-lieudit.ts +0 -302
- package/src/shard-recipes/fr-order.ts +0 -258
- package/src/shard-recipes/german.ts +0 -170
- package/src/shard-recipes/house-venue.ts +0 -88
- package/src/shard-recipes/index.ts +0 -95
- package/src/shard-recipes/intersection.ts +0 -630
- package/src/shard-recipes/locale.ts +0 -599
- package/src/shard-recipes/nl-postcode.ts +0 -115
- package/src/shard-recipes/no-fragment.ts +0 -219
- package/src/shard-recipes/no-street-led.ts +0 -143
- package/src/shard-recipes/no-street.ts +0 -86
- package/src/shard-recipes/po-box-cedex.ts +0 -920
- package/src/shard-recipes/po-box.ts +0 -119
- package/src/shard-recipes/reviewed-postcode-tail.ts +0 -189
- package/src/shard-recipes/scaffold.ts +0 -360
- package/src/shard-recipes/si-bare-village.ts +0 -97
- package/src/shard-recipes/street-affix.ts +0 -826
- package/src/shard-recipes/street-bare.ts +0 -101
- package/src/shard-recipes/street.ts +0 -82
- package/src/shard-recipes/sub-venue-sources.ts +0 -885
- package/src/shard-recipes/sub-venue.ts +0 -984
- package/src/shard-recipes/trailing-region.ts +0 -183
- package/src/shard-recipes/unit.ts +0 -321
- package/src/synthesizers/anchor-absorption.ts +0 -290
- package/src/synthesizers/boundary-stress.ts +0 -531
- package/src/synthesizers/german.ts +0 -251
- package/src/synthesizers/house-venue.ts +0 -330
- package/src/synthesizers/intersection.ts +0 -232
- package/src/synthesizers/no-street.ts +0 -349
- package/src/synthesizers/po-box.ts +0 -339
- package/src/synthesizers/street.ts +0 -274
- package/src/synthesizers/utils.ts +0 -903
- package/src/tools/align-shard.ts +0 -70
- package/src/tools/audit.ts +0 -399
- package/src/tools/corpus-stats.ts +0 -184
- package/src/tools/fetch/ban.ts +0 -290
- package/src/tools/fetch/download.ts +0 -176
- package/src/tools/fetch/geonames-dump.ts +0 -267
- package/src/tools/fetch/geonames-postal.ts +0 -180
- package/src/tools/fetch/hrsa.ts +0 -68
- package/src/tools/fetch/imls-pls.ts +0 -158
- package/src/tools/fetch/index.ts +0 -147
- package/src/tools/fetch/nad.ts +0 -342
- package/src/tools/fetch/nppes.ts +0 -174
- package/src/tools/fetch/openaddresses.ts +0 -404
- package/src/tools/fetch/ourairports.ts +0 -171
- package/src/tools/fetch/ppd.ts +0 -137
- package/src/tools/fetch/state-hi-schools.ts +0 -208
- package/src/tools/fetch/state-sources.ts +0 -155
- package/src/tools/fetch/tiger-full.ts +0 -354
- package/src/tools/fetch/wikidata-subvenue.ts +0 -386
- package/src/tools/golden-expand.ts +0 -584
- package/src/tools/golden-promote.ts +0 -353
- package/src/tools/golden-relabel-street.ts +0 -685
- package/src/tools/index.ts +0 -28
- package/src/tools/ingest-csv.ts +0 -422
- package/src/tools/jsonl-to-parquet.ts +0 -221
- package/src/tools/lint-shard-vocab.ts +0 -409
- package/src/tools/lint-shard.ts +0 -543
- package/src/tools/overlay-manifest.ts +0 -157
- package/src/tools/overture-subvenue.ts +0 -215
- package/src/tools/postcode-triples.ts +0 -375
- package/src/tools/shard-kryptonite.ts +0 -139
- package/src/tools/shard-translit.ts +0 -245
- package/src/tools/sub-venue/harvest.ts +0 -235
- package/src/tools/sub-venue/head-nouns.ts +0 -242
- package/src/tools/sub-venue/surfaces.ts +0 -95
- package/src/tools/sub-venue/table.ts +0 -281
- package/src/tools/sub-venue/wikidata.ts +0 -85
- package/src/tools/sub-venue-lexicon.ts +0 -431
- package/src/tools/sub-venue-promotions.ts +0 -330
- package/src/types.ts +0 -247
- package/src/utils/align.ts +0 -331
- package/src/utils/golden.ts +0 -176
- package/src/utils/index.ts +0 -14
- package/src/utils/parquet.ts +0 -391
- package/src/utils/split.ts +0 -279
- package/src/utils/tokenize.ts +0 -78
- package/src/utils/wof-json.ts +0 -244
- /package/{src → lib}/adapters/state-ia-contractors/adapter.ts +0 -0
- /package/{src → lib}/adapters/state-ny-notaries/adapter.ts +0 -0
- /package/{src → lib}/adapters/state-tx-notaries/adapter.ts +0 -0
- /package/{src → lib}/codex/us-fips-state.ts +0 -0
- /package/{src → lib}/tools/gb-title-case.ts +0 -0
- /package/{src → lib}/utils/license.ts +0 -0
- /package/out/{src/adapters → adapters}/ban/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/ban/street-decompose.d.ts +0 -0
- /package/out/{src/adapters → adapters}/fcc-bdc/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/geonames/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/openaddresses/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/state-ia-contractors/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/state-ia-contractors/adapter.js +0 -0
- /package/out/{src/adapters → adapters}/state-ny-notaries/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/state-ny-notaries/adapter.js +0 -0
- /package/out/{src/adapters → adapters}/state-tx-notaries/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/state-tx-notaries/adapter.js +0 -0
- /package/out/{src/adapters → adapters}/synth-po-box/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/tiger/street-decompose.d.ts +0 -0
- /package/out/{src/adapters → adapters}/usgov-nppes/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/usgov-samhsa-treatment-locator/adapter.d.ts +0 -0
- /package/out/{src/adapters → adapters}/wof-admin-jp/adapter.d.ts +0 -0
- /package/out/{src/codex → codex}/us-fips-state.d.ts +0 -0
- /package/out/{src/codex → codex}/us-fips-state.js +0 -0
- /package/out/{src/tools → tools}/fetch/ppd.d.ts +0 -0
- /package/out/{src/tools → tools}/gb-title-case.d.ts +0 -0
- /package/out/{src/tools → tools}/gb-title-case.js +0 -0
- /package/out/{src/tools → tools}/golden-promote.d.ts +0 -0
- /package/out/{src/tools → tools}/ingest-csv.d.ts +0 -0
- /package/out/{src/types.js → types.js} +0 -0
- /package/out/{src/utils → utils}/license.d.ts +0 -0
- /package/out/{src/utils → utils}/license.js +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Build a parquet slice from the DeepSeek-generated kryptonite JSONL and emit the corpus-v0.4.0
|
|
7
|
+
* MANIFEST. corpus-v0.4.0 is a pure adapter-addition revision: it points at every slice from
|
|
8
|
+
* v0.3.0 plus the new kryptonite slice(s). No v0.3.0 bytes are touched or re-shuffled.
|
|
9
|
+
*
|
|
10
|
+
* See docs/engineering/reference/CORPUS_V0_4_0_GENERATION.md for the why; that doc also pins the
|
|
11
|
+
* DeepSeek model version + prompt versions used to produce the JSONL.
|
|
12
|
+
*
|
|
13
|
+
* Invoke via `mailwoman corpus slice kryptonite \
|
|
14
|
+
* --jsonl /data/corpus/versioned/v0.4.0/kryptonite/canonical-kryptonite.jsonl \
|
|
15
|
+
* --base-manifest /data/corpus/versioned/v0.3.0/corpus-v0.3.0/MANIFEST.json \
|
|
16
|
+
* --out-dir /data/corpus/versioned/v0.4.0`
|
|
17
|
+
*/
|
|
18
|
+
export interface SliceKryptoniteOptions {
|
|
19
|
+
jsonl: string;
|
|
20
|
+
baseManifest: string;
|
|
21
|
+
outDir: string;
|
|
22
|
+
/**
|
|
23
|
+
* Default `"0.4.0"`.
|
|
24
|
+
*/
|
|
25
|
+
corpusVersion?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Default `"deepseek-kryptonite"`.
|
|
28
|
+
*/
|
|
29
|
+
source?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function buildKryptoniteSlice(options: SliceKryptoniteOptions, report?: (line: string) => void): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=slice-kryptonite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slice-kryptonite.d.ts","sourceRoot":"","sources":["../../lib/tools/slice-kryptonite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAWH,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAiCD,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,sBAAsB,EAC/B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CA6Df"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Build a parquet slice from the DeepSeek-generated kryptonite JSONL and emit the corpus-v0.4.0
|
|
7
|
+
* MANIFEST. corpus-v0.4.0 is a pure adapter-addition revision: it points at every slice from
|
|
8
|
+
* v0.3.0 plus the new kryptonite slice(s). No v0.3.0 bytes are touched or re-shuffled.
|
|
9
|
+
*
|
|
10
|
+
* See docs/engineering/reference/CORPUS_V0_4_0_GENERATION.md for the why; that doc also pins the
|
|
11
|
+
* DeepSeek model version + prompt versions used to produce the JSONL.
|
|
12
|
+
*
|
|
13
|
+
* Invoke via `mailwoman corpus slice kryptonite \
|
|
14
|
+
* --jsonl /data/corpus/versioned/v0.4.0/kryptonite/canonical-kryptonite.jsonl \
|
|
15
|
+
* --base-manifest /data/corpus/versioned/v0.3.0/corpus-v0.3.0/MANIFEST.json \
|
|
16
|
+
* --out-dir /data/corpus/versioned/v0.4.0`
|
|
17
|
+
*/
|
|
18
|
+
import { pathExists, readLocalJSONFile } from "@mailwoman/core/fs/readers";
|
|
19
|
+
import { writeLocalJSONFile, writeLocalTextFile, makeDirectories } from "@mailwoman/core/fs/writers";
|
|
20
|
+
import { join } from "path-ts";
|
|
21
|
+
import { JSONSpliterator } from "spliterator";
|
|
22
|
+
import { alignRow, PARQUET_COLUMNS, ROW_GROUP_SIZE, SLICE_COMPRESSION, writeSlices } from "#utils";
|
|
23
|
+
async function* canonicalRows(jsonl, corpusVersion) {
|
|
24
|
+
for await (const raw of JSONSpliterator.fromAsync(jsonl)) {
|
|
25
|
+
// Strip sidecar underscore-prefixed fields the generator left behind for debugging.
|
|
26
|
+
const components = raw["components"];
|
|
27
|
+
yield {
|
|
28
|
+
raw: raw["raw"],
|
|
29
|
+
components,
|
|
30
|
+
country: raw["country"] ?? "US",
|
|
31
|
+
locale: raw["locale"] ?? undefined,
|
|
32
|
+
source: raw["source"] ?? "deepseek-kryptonite",
|
|
33
|
+
source_id: raw["source_id"],
|
|
34
|
+
corpus_version: corpusVersion,
|
|
35
|
+
license: raw["license"] ?? "Synthetic (DeepSeek-v4-flash, AGPL-compatible)",
|
|
36
|
+
synth: raw["synth"],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function* labeledRows(jsonl, corpusVersion, quarantineLog) {
|
|
41
|
+
for await (const row of canonicalRows(jsonl, corpusVersion)) {
|
|
42
|
+
const result = alignRow(row);
|
|
43
|
+
if (result.kind === "labeled") {
|
|
44
|
+
yield result.row;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
quarantineLog.push(`${row.source_id}\t${result.row.reason}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export async function buildKryptoniteSlice(options, report) {
|
|
52
|
+
const corpusVersion = options.corpusVersion ?? "0.4.0";
|
|
53
|
+
const source = options.source ?? "deepseek-kryptonite";
|
|
54
|
+
if (!(await pathExists(options.jsonl)))
|
|
55
|
+
throw new Error(`jsonl not found: ${options.jsonl}`);
|
|
56
|
+
if (!(await pathExists(options.baseManifest)))
|
|
57
|
+
throw new Error(`base-manifest not found: ${options.baseManifest}`);
|
|
58
|
+
await makeDirectories(options.outDir);
|
|
59
|
+
const quarantine = [];
|
|
60
|
+
const newManifest = await writeSlices({ train: labeledRows(options.jsonl, corpusVersion, quarantine) }, { outputDir: options.outDir, corpusVersion });
|
|
61
|
+
report?.(`wrote ${newManifest.total_rows} rows into ${newManifest.slices.length} slice(s); ` +
|
|
62
|
+
`quarantined ${quarantine.length}`);
|
|
63
|
+
if (quarantine.length) {
|
|
64
|
+
const qPath = join(options.outDir, `corpus-v${corpusVersion}`, "quarantine-kryptonite.tsv");
|
|
65
|
+
await writeLocalTextFile(quarantine.join("\n") + "\n", qPath);
|
|
66
|
+
report?.(`quarantine log → ${qPath}`);
|
|
67
|
+
}
|
|
68
|
+
// Stamp the new slice's source field for audit.ts (which prefers slice.source over
|
|
69
|
+
// first_source_id-prefix inference). Without this, deepseek-kryptonite IDs would have
|
|
70
|
+
// to match a prefix in KNOWN_SOURCE_PREFIXES — we add it there too as a belt-and-braces.
|
|
71
|
+
for (const sh of newManifest.slices) {
|
|
72
|
+
sh.source = source;
|
|
73
|
+
}
|
|
74
|
+
// Compose the final corpus-v0.4.0 manifest: every slice from base + the new slice(s).
|
|
75
|
+
const base = await readLocalJSONFile(options.baseManifest);
|
|
76
|
+
const combined = {
|
|
77
|
+
corpus_version: corpusVersion,
|
|
78
|
+
schema: PARQUET_COLUMNS,
|
|
79
|
+
rows_per_slice: base.rows_per_slice,
|
|
80
|
+
row_group_size: base.row_group_size ?? ROW_GROUP_SIZE,
|
|
81
|
+
slices: [...base.slices, ...newManifest.slices],
|
|
82
|
+
counts: {
|
|
83
|
+
train: base.counts.train + (newManifest.counts.train ?? 0),
|
|
84
|
+
val: base.counts.val,
|
|
85
|
+
test: base.counts.test,
|
|
86
|
+
},
|
|
87
|
+
total_rows: base.total_rows + newManifest.total_rows,
|
|
88
|
+
};
|
|
89
|
+
// Stamp source on the legacy v0.3.0 slices too, so audit's slice.source path is the
|
|
90
|
+
// authoritative one. v0.3.0 slices mix sources; we use the first_source_id-prefix
|
|
91
|
+
// inference for them (audit.ts will re-derive on its own when slice.source is absent).
|
|
92
|
+
const combinedPath = join(options.outDir, `corpus-v${corpusVersion}`, "MANIFEST.json");
|
|
93
|
+
await writeLocalJSONFile(combined, combinedPath);
|
|
94
|
+
report?.(`wrote combined manifest → ${combinedPath}`);
|
|
95
|
+
report?.(` total_rows=${combined.total_rows} (base=${base.total_rows}, added=${newManifest.total_rows})`);
|
|
96
|
+
report?.(` slices=${combined.slices.length} (base=${base.slices.length}, added=${newManifest.slices.length})`);
|
|
97
|
+
report?.(` compression=${SLICE_COMPRESSION}`);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=slice-kryptonite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slice-kryptonite.js","sourceRoot":"","sources":["../../lib/tools/slice-kryptonite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Build per-script parquet slices from the DeepSeek-generated transliteration JSONL and emit the
|
|
7
|
+
* corpus-v0.4.0 MANIFEST that combines them with the existing kryptonite + v0.3.0 slices.
|
|
8
|
+
*
|
|
9
|
+
* Sibling to `slice-kryptonite.ts`. The two modules share the same composition pattern: take a
|
|
10
|
+
* base MANIFEST, append new slices, write a combined MANIFEST. Differences specific to
|
|
11
|
+
* transliteration:
|
|
12
|
+
*
|
|
13
|
+
* - One JSONL contains rows from N target scripts (source = `deepseek-translit-<slug>`). We bucket by
|
|
14
|
+
* `source` and write one slice per script so `audit.ts` can attribute each slice to its
|
|
15
|
+
* synthetic source without relying on filename-prefix inference.
|
|
16
|
+
* - Each slice is written to `train/part-translit-<slug>.parquet` (distinct from kryptonite's
|
|
17
|
+
* `part-0000.parquet`, which v0.4.0's first builder already produced).
|
|
18
|
+
* - Inherits the path-canonicalization fix flagged in Thread B's postmortem: v0.3.0 slice paths are
|
|
19
|
+
* rewritten from `$MAILWOMAN_DATA_ROOT/...` to `/data/...` in the combined MANIFEST so
|
|
20
|
+
* all paths share one container-friendly form.
|
|
21
|
+
*
|
|
22
|
+
* See docs/engineering/reference/CORPUS_V0_4_0_GENERATION.md for prompts, model, and the
|
|
23
|
+
* reproducibility contract.
|
|
24
|
+
*
|
|
25
|
+
* Invoke via `mailwoman corpus slice translit \
|
|
26
|
+
* --jsonl /data/corpus/versioned/v0.4.0/transliteration/canonical-transliteration.jsonl \
|
|
27
|
+
* --base-manifest /data/corpus/versioned/v0.4.0/corpus-v0.4.0/MANIFEST.json \
|
|
28
|
+
* --out-dir /data/corpus/versioned/v0.4.0`
|
|
29
|
+
*/
|
|
30
|
+
export interface SliceTranslitOptions {
|
|
31
|
+
jsonl: string;
|
|
32
|
+
baseManifest: string;
|
|
33
|
+
outDir: string;
|
|
34
|
+
/**
|
|
35
|
+
* Default `"0.4.0"`.
|
|
36
|
+
*/
|
|
37
|
+
corpusVersion?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Default `"/data/"`.
|
|
40
|
+
*/
|
|
41
|
+
canonicalPathPrefix?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Prefix the base manifest's slice paths currently carry, to be rewritten to
|
|
44
|
+
* {@link SliceTranslitOptions.canonicalPathPrefix}. Defaults to `mailwomanDataRoot()` with a trailing slash — the
|
|
45
|
+
* root that WROTE those paths. Pass it explicitly when translating a manifest generated under a different
|
|
46
|
+
* `$MAILWOMAN_DATA_ROOT` than the one you are running with.
|
|
47
|
+
*/
|
|
48
|
+
legacyPathPrefix?: string;
|
|
49
|
+
}
|
|
50
|
+
export declare function buildTranslitSlice(options: SliceTranslitOptions, report?: (line: string) => void): Promise<void>;
|
|
51
|
+
//# sourceMappingURL=slice-translit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slice-translit.d.ts","sourceRoot":"","sources":["../../lib/tools/slice-translit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAaH,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACzB;AA0DD,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAgGf"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* Build per-script parquet slices from the DeepSeek-generated transliteration JSONL and emit the
|
|
7
|
+
* corpus-v0.4.0 MANIFEST that combines them with the existing kryptonite + v0.3.0 slices.
|
|
8
|
+
*
|
|
9
|
+
* Sibling to `slice-kryptonite.ts`. The two modules share the same composition pattern: take a
|
|
10
|
+
* base MANIFEST, append new slices, write a combined MANIFEST. Differences specific to
|
|
11
|
+
* transliteration:
|
|
12
|
+
*
|
|
13
|
+
* - One JSONL contains rows from N target scripts (source = `deepseek-translit-<slug>`). We bucket by
|
|
14
|
+
* `source` and write one slice per script so `audit.ts` can attribute each slice to its
|
|
15
|
+
* synthetic source without relying on filename-prefix inference.
|
|
16
|
+
* - Each slice is written to `train/part-translit-<slug>.parquet` (distinct from kryptonite's
|
|
17
|
+
* `part-0000.parquet`, which v0.4.0's first builder already produced).
|
|
18
|
+
* - Inherits the path-canonicalization fix flagged in Thread B's postmortem: v0.3.0 slice paths are
|
|
19
|
+
* rewritten from `$MAILWOMAN_DATA_ROOT/...` to `/data/...` in the combined MANIFEST so
|
|
20
|
+
* all paths share one container-friendly form.
|
|
21
|
+
*
|
|
22
|
+
* See docs/engineering/reference/CORPUS_V0_4_0_GENERATION.md for prompts, model, and the
|
|
23
|
+
* reproducibility contract.
|
|
24
|
+
*
|
|
25
|
+
* Invoke via `mailwoman corpus slice translit \
|
|
26
|
+
* --jsonl /data/corpus/versioned/v0.4.0/transliteration/canonical-transliteration.jsonl \
|
|
27
|
+
* --base-manifest /data/corpus/versioned/v0.4.0/corpus-v0.4.0/MANIFEST.json \
|
|
28
|
+
* --out-dir /data/corpus/versioned/v0.4.0`
|
|
29
|
+
*/
|
|
30
|
+
import { mailwomanDataRoot } from "@mailwoman/core/data-root";
|
|
31
|
+
import { pathExists, readLocalJSONFile, tryStat } from "@mailwoman/core/fs/readers";
|
|
32
|
+
import { writeLocalJSONFile, writeLocalTextFile, makeDirectories } from "@mailwoman/core/fs/writers";
|
|
33
|
+
import { sha256File } from "@mailwoman/core/hash";
|
|
34
|
+
import { join } from "path-ts";
|
|
35
|
+
import { JSONSpliterator } from "spliterator";
|
|
36
|
+
import { alignRow, PARQUET_COLUMNS, ROW_GROUP_SIZE, rowToParquet, SLICE_COMPRESSION, writeParquetRows } from "#utils";
|
|
37
|
+
function toCanonicalRow(raw, corpusVersion) {
|
|
38
|
+
return {
|
|
39
|
+
raw: raw["raw"],
|
|
40
|
+
components: raw["components"],
|
|
41
|
+
country: raw["country"] ?? "US",
|
|
42
|
+
locale: raw["locale"] ?? undefined,
|
|
43
|
+
source: raw["source"],
|
|
44
|
+
source_id: raw["source_id"],
|
|
45
|
+
corpus_version: corpusVersion,
|
|
46
|
+
license: raw["license"] ?? "Synthetic (DeepSeek-v4-flash, AGPL-compatible)",
|
|
47
|
+
synth: raw["synth"],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Write one slice for a single source slug. Returns the populated SliceDescriptor + a list of quarantine reasons for
|
|
52
|
+
* rows that failed alignment.
|
|
53
|
+
*/
|
|
54
|
+
async function writeOneSlice(rows, outPath, source) {
|
|
55
|
+
let firstSourceID = "";
|
|
56
|
+
let lastSourceID = "";
|
|
57
|
+
for (const row of rows) {
|
|
58
|
+
if (firstSourceID === "") {
|
|
59
|
+
firstSourceID = row.source_id;
|
|
60
|
+
}
|
|
61
|
+
lastSourceID = row.source_id;
|
|
62
|
+
}
|
|
63
|
+
await writeParquetRows(rows.map(rowToParquet), outPath);
|
|
64
|
+
const fileStat = await tryStat(outPath);
|
|
65
|
+
const sha256 = await sha256File(outPath);
|
|
66
|
+
return {
|
|
67
|
+
split: "train",
|
|
68
|
+
path: outPath,
|
|
69
|
+
format: "parquet",
|
|
70
|
+
compression: SLICE_COMPRESSION,
|
|
71
|
+
rows: rows.length,
|
|
72
|
+
bytes: fileStat?.size ?? 0,
|
|
73
|
+
sha256,
|
|
74
|
+
first_source_id: firstSourceID,
|
|
75
|
+
last_source_id: lastSourceID,
|
|
76
|
+
// Stamp source so audit.ts attributes the slice without falling back to filename-prefix inference.
|
|
77
|
+
source,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function canonicalizeSlicePath(path, legacyPrefix, canonicalPrefix) {
|
|
81
|
+
if (path.startsWith(legacyPrefix))
|
|
82
|
+
return canonicalPrefix + path.slice(legacyPrefix.length);
|
|
83
|
+
return path;
|
|
84
|
+
}
|
|
85
|
+
export async function buildTranslitSlice(options, report) {
|
|
86
|
+
const corpusVersion = options.corpusVersion ?? "0.4.0";
|
|
87
|
+
// This is a portable manifest namespace, not a host filesystem default.
|
|
88
|
+
const canonicalPathPrefix = options.canonicalPathPrefix ?? "/data/";
|
|
89
|
+
const legacyPathPrefix = options.legacyPathPrefix ?? `${mailwomanDataRoot()}/`;
|
|
90
|
+
if (!(await pathExists(options.jsonl)))
|
|
91
|
+
throw new Error(`jsonl not found: ${options.jsonl}`);
|
|
92
|
+
if (!(await pathExists(options.baseManifest)))
|
|
93
|
+
throw new Error(`base-manifest not found: ${options.baseManifest}`);
|
|
94
|
+
const corpusDir = join(options.outDir, `corpus-v${corpusVersion}`);
|
|
95
|
+
const trainDir = join(corpusDir, "train");
|
|
96
|
+
await makeDirectories(trainDir);
|
|
97
|
+
// Bucket canonical rows by source. Quarantined rows are logged.
|
|
98
|
+
const buckets = new Map();
|
|
99
|
+
const quarantine = [];
|
|
100
|
+
let totalIn = 0;
|
|
101
|
+
for await (const raw of JSONSpliterator.fromAsync(options.jsonl)) {
|
|
102
|
+
totalIn++;
|
|
103
|
+
const canon = toCanonicalRow(raw, corpusVersion);
|
|
104
|
+
const result = alignRow(canon);
|
|
105
|
+
if (result.kind !== "labeled") {
|
|
106
|
+
quarantine.push(`${canon.source_id}\t${result.row.reason}`);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const bucket = buckets.get(canon.source);
|
|
110
|
+
if (bucket) {
|
|
111
|
+
bucket.push(result.row);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
buckets.set(canon.source, [result.row]);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
report?.(`read ${totalIn} rows; ${quarantine.length} quarantined; ${buckets.size} script buckets`);
|
|
118
|
+
const newSlices = [];
|
|
119
|
+
const sortedKeys = [...buckets.keys()].toSorted();
|
|
120
|
+
for (const source of sortedKeys) {
|
|
121
|
+
const rows = buckets.get(source);
|
|
122
|
+
const slug = source.startsWith("deepseek-translit-") ? source.slice("deepseek-translit-".length) : source;
|
|
123
|
+
const outPath = join(trainDir, `part-translit-${slug}.parquet`);
|
|
124
|
+
const descriptor = await writeOneSlice(rows, outPath, source);
|
|
125
|
+
newSlices.push(descriptor);
|
|
126
|
+
report?.(` ${source}: ${descriptor.rows} rows → ${outPath} (${descriptor.bytes} bytes)`);
|
|
127
|
+
}
|
|
128
|
+
if (quarantine.length) {
|
|
129
|
+
const qPath = join(corpusDir, "quarantine-transliteration.tsv");
|
|
130
|
+
await writeLocalTextFile(quarantine.join("\n") + "\n", qPath);
|
|
131
|
+
report?.(`quarantine log → ${qPath} (${quarantine.length} rows)`);
|
|
132
|
+
}
|
|
133
|
+
// Compose final MANIFEST: rewrite base.slices paths from /mnt/playpen/... → /data/... and append
|
|
134
|
+
// the new translit slices. Kryptonite slice already lives in the base manifest (it was written
|
|
135
|
+
// there by Thread B).
|
|
136
|
+
const base = await readLocalJSONFile(options.baseManifest);
|
|
137
|
+
const rewrittenBase = base.slices.map((sh) => ({
|
|
138
|
+
...sh,
|
|
139
|
+
path: canonicalizeSlicePath(sh.path, legacyPathPrefix, canonicalPathPrefix),
|
|
140
|
+
}));
|
|
141
|
+
const newTrainRows = newSlices.reduce((sum, sh) => sum + sh.rows, 0);
|
|
142
|
+
const combined = {
|
|
143
|
+
corpus_version: corpusVersion,
|
|
144
|
+
schema: PARQUET_COLUMNS,
|
|
145
|
+
rows_per_slice: base.rows_per_slice,
|
|
146
|
+
row_group_size: base.row_group_size ?? ROW_GROUP_SIZE,
|
|
147
|
+
slices: [...rewrittenBase, ...newSlices],
|
|
148
|
+
counts: {
|
|
149
|
+
train: base.counts.train + newTrainRows,
|
|
150
|
+
val: base.counts.val,
|
|
151
|
+
test: base.counts.test,
|
|
152
|
+
},
|
|
153
|
+
total_rows: base.total_rows + newTrainRows,
|
|
154
|
+
};
|
|
155
|
+
const combinedPath = join(corpusDir, "MANIFEST.json");
|
|
156
|
+
await writeLocalJSONFile(combined, combinedPath);
|
|
157
|
+
report?.(`wrote combined manifest → ${combinedPath}`);
|
|
158
|
+
report?.(` total_rows=${combined.total_rows} (base=${base.total_rows}, added=${newTrainRows})`);
|
|
159
|
+
report?.(` slices=${combined.slices.length} (base=${base.slices.length}, added=${newSlices.length})`);
|
|
160
|
+
report?.(` compression=${SLICE_COMPRESSION}`);
|
|
161
|
+
const pathFix = rewrittenBase.filter((s, i) => s.path !== base.slices[i].path).length;
|
|
162
|
+
if (pathFix > 0) {
|
|
163
|
+
report?.(` path-canonicalized base slices: ${pathFix} (legacy '${legacyPathPrefix}' → '${canonicalPathPrefix}')`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=slice-translit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slice-translit.js","sourceRoot":"","sources":["../../lib/tools/slice-translit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* @file The harvest side of the sub-venue lexicon: what one row of a harvestable source looks like,
|
|
7
|
+
* how a file of them is read back, and what a pass over them extracts — attested surfaces plus the
|
|
8
|
+
* measured shape of each designator's identifier half.
|
|
9
|
+
*
|
|
10
|
+
* {@link SubVenueHarvestRow} is SOURCE-NEUTRAL, and verified so: an Overture Places row from the
|
|
11
|
+
* `airport_terminal` category is `{ designatorID, name }` and fits unchanged. It is declared here
|
|
12
|
+
* rather than imported so the builder does not take a dependency on `@mailwoman/osm` (which
|
|
13
|
+
* `@mailwoman/corpus` does not depend on) just to name a shape it reads from a file.
|
|
14
|
+
*
|
|
15
|
+
* Two measurements shape {@link extractAttestedPhrases}, and both are the reason it is safe to run
|
|
16
|
+
* over raw OSM at all:
|
|
17
|
+
*
|
|
18
|
+
* **A feature's `name` is usually the VENUE's name, not a sub-venue phrase.** On the Berlin extract
|
|
19
|
+
* (2,060 matched features) a `railway=platform` is named `Stendaler Straße` and an `amenity=university`
|
|
20
|
+
* is named `Hertie School`; across 250,116 named Great Britain features only 6,003 (2.40%) contain a
|
|
21
|
+
* designator token at all. So names are not harvested wholesale — a name contributes only when it
|
|
22
|
+
* CONTAINS a phrase already in the surface index, which is what makes `Terminal E (Untere Ebene)`
|
|
23
|
+
* evidence and `Otto Lilienthal Flughafen Berlin Tegel` not.
|
|
24
|
+
*
|
|
25
|
+
* **A matched phrase belongs to the record the PHRASE names, not the record the ROW carries.**
|
|
26
|
+
* Attributing every hit to `row.designatorID` — the rule that matched the FEATURE — produced `west →
|
|
27
|
+
* platform`, `hall → platform` and `biggin → platform` on the GB extract, because a bus stop tagged
|
|
28
|
+
* `public_transport=platform` is named "Village Hall" or "West Kensington"; 108 of 133 OSM-derived
|
|
29
|
+
* surfaces named a different record than the one they pointed at. Attribution therefore runs through
|
|
30
|
+
* the index, and the row's own designator is kept as `context` — exactly the axis a confound board
|
|
31
|
+
* needs, since a `hall` seen on a platform is a confound and a `hall` seen on a terminal is evidence.
|
|
32
|
+
*/
|
|
33
|
+
import { type SurfaceIndex } from "#tools/sub-venue/surfaces";
|
|
34
|
+
import type { IdentifierShape, SubVenueSurface } from "#tools/sub-venue/table";
|
|
35
|
+
/**
|
|
36
|
+
* One row of a harvestable source, as read back off JSONL or out of a layer database.
|
|
37
|
+
*
|
|
38
|
+
* SOURCE-NEUTRAL by design, and verified so in wave 2: an Overture Places row from the `airport_terminal` category is
|
|
39
|
+
* `{ designatorID, name }` and fits unchanged. What did NOT fit was the harvest function's hardcoded `osm:name` source
|
|
40
|
+
* stamp — see `overture-subvenue.ts`'s docstring. Declared locally so the builder does not import `@mailwoman/osm`
|
|
41
|
+
* (which `@mailwoman/corpus` does not depend on) just to name a shape it reads from a file.
|
|
42
|
+
*/
|
|
43
|
+
export interface SubVenueHarvestRow {
|
|
44
|
+
/**
|
|
45
|
+
* The designator the SOURCE's rule assigned to the FEATURE. Not necessarily the record a matched phrase names — see
|
|
46
|
+
* this file's header on phrase attribution. Carried into {@link SubVenueSurface.context}.
|
|
47
|
+
*/
|
|
48
|
+
designatorID: string;
|
|
49
|
+
/**
|
|
50
|
+
* `venue` (station, airport, campus) or `sub_venue`, when the source's rule assigns one. The harvest itself does not
|
|
51
|
+
* read it; the sub-venue slice recipe fills its venue slot from it.
|
|
52
|
+
*/
|
|
53
|
+
tier?: string;
|
|
54
|
+
name?: string | null;
|
|
55
|
+
ref?: string | null;
|
|
56
|
+
localizedNames?: Record<string, string>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Classify an OSM `ref` into an {@link IdentifierShape} class.
|
|
60
|
+
*
|
|
61
|
+
* The classes are the ones Berlin's gates actually produced, plus the two aviation forms the corpus task names
|
|
62
|
+
* (`Terminal 2F` is digit-letter, `Concourse B` is letter). `range` covers both separators OSM uses for a gate serving
|
|
63
|
+
* more than one stand: `16-18` and `0/1`.
|
|
64
|
+
*/
|
|
65
|
+
export declare function classifyIdentifier(ref: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Options for one harvest pass — which source stamp its surfaces carry and which region they were attested in.
|
|
68
|
+
*
|
|
69
|
+
* Both default to the OSM/unknown-region values wave 1 hardcoded, so an existing caller is unchanged.
|
|
70
|
+
*/
|
|
71
|
+
export interface HarvestOptions {
|
|
72
|
+
/**
|
|
73
|
+
* Source family: `osm` yields `osm:name` / `osm:name:<lang>`, `overture` yields `overture:name`.
|
|
74
|
+
*/
|
|
75
|
+
source?: string;
|
|
76
|
+
/**
|
|
77
|
+
* ISO 3166-1 alpha-2 of the extract or partition. `""` when unknown.
|
|
78
|
+
*/
|
|
79
|
+
region?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Harvest attested phrases and identifier shapes out of a source's rows.
|
|
83
|
+
*
|
|
84
|
+
* `index` gates the name harvest — a name contributes only when it CONTAINS a phrase already in the table. That filter
|
|
85
|
+
* is the whole reason this function is safe to run over raw OSM: see this file's header for the Berlin measurement that
|
|
86
|
+
* motivated it. The index also decides ATTRIBUTION: a hit is a surface of the record the PHRASE names, and the row's
|
|
87
|
+
* own designator is recorded as `context`.
|
|
88
|
+
*
|
|
89
|
+
* Returns surfaces with real `observations` counts, so the lexicon can rank `terminal` above a phrase attested once.
|
|
90
|
+
*/
|
|
91
|
+
export declare function extractAttestedPhrases(rows: Iterable<SubVenueHarvestRow>, index: SurfaceIndex, options?: HarvestOptions): {
|
|
92
|
+
surfaces: SubVenueSurface[];
|
|
93
|
+
identifierShapes: IdentifierShape[];
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Read a JSONL file of {@link SubVenueHarvestRow}s. Blank lines and unparseable rows are skipped rather than fatal — an
|
|
97
|
+
* extract is a build output, and one malformed line should not cost the whole lexicon.
|
|
98
|
+
*/
|
|
99
|
+
export declare function readSubVenueJSONL(path: string): Promise<SubVenueHarvestRow[]>;
|
|
100
|
+
//# sourceMappingURL=harvest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harvest.d.ts","sourceRoot":"","sources":["../../../lib/tools/sub-venue/harvest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAMH,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE9E;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACvC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CActD;AAYD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAClC,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,cAAmB,GAC1B;IAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAAC,gBAAgB,EAAE,eAAe,EAAE,CAAA;CAAE,CAiFtE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAmBnF"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* @file The harvest side of the sub-venue lexicon: what one row of a harvestable source looks like,
|
|
7
|
+
* how a file of them is read back, and what a pass over them extracts — attested surfaces plus the
|
|
8
|
+
* measured shape of each designator's identifier half.
|
|
9
|
+
*
|
|
10
|
+
* {@link SubVenueHarvestRow} is SOURCE-NEUTRAL, and verified so: an Overture Places row from the
|
|
11
|
+
* `airport_terminal` category is `{ designatorID, name }` and fits unchanged. It is declared here
|
|
12
|
+
* rather than imported so the builder does not take a dependency on `@mailwoman/osm` (which
|
|
13
|
+
* `@mailwoman/corpus` does not depend on) just to name a shape it reads from a file.
|
|
14
|
+
*
|
|
15
|
+
* Two measurements shape {@link extractAttestedPhrases}, and both are the reason it is safe to run
|
|
16
|
+
* over raw OSM at all:
|
|
17
|
+
*
|
|
18
|
+
* **A feature's `name` is usually the VENUE's name, not a sub-venue phrase.** On the Berlin extract
|
|
19
|
+
* (2,060 matched features) a `railway=platform` is named `Stendaler Straße` and an `amenity=university`
|
|
20
|
+
* is named `Hertie School`; across 250,116 named Great Britain features only 6,003 (2.40%) contain a
|
|
21
|
+
* designator token at all. So names are not harvested wholesale — a name contributes only when it
|
|
22
|
+
* CONTAINS a phrase already in the surface index, which is what makes `Terminal E (Untere Ebene)`
|
|
23
|
+
* evidence and `Otto Lilienthal Flughafen Berlin Tegel` not.
|
|
24
|
+
*
|
|
25
|
+
* **A matched phrase belongs to the record the PHRASE names, not the record the ROW carries.**
|
|
26
|
+
* Attributing every hit to `row.designatorID` — the rule that matched the FEATURE — produced `west →
|
|
27
|
+
* platform`, `hall → platform` and `biggin → platform` on the GB extract, because a bus stop tagged
|
|
28
|
+
* `public_transport=platform` is named "Village Hall" or "West Kensington"; 108 of 133 OSM-derived
|
|
29
|
+
* surfaces named a different record than the one they pointed at. Attribution therefore runs through
|
|
30
|
+
* the index, and the row's own designator is kept as `context` — exactly the axis a confound board
|
|
31
|
+
* needs, since a `hall` seen on a platform is a confound and a `hall` seen on a terminal is evidence.
|
|
32
|
+
*/
|
|
33
|
+
import { readLocalTextFile } from "@mailwoman/core/fs/readers";
|
|
34
|
+
import { parseJSONStrict } from "@mailwoman/core/json";
|
|
35
|
+
import { TextSpliterator } from "spliterator";
|
|
36
|
+
import { nameContainsSurfaces } from "#tools/sub-venue/surfaces";
|
|
37
|
+
/**
|
|
38
|
+
* Classify an OSM `ref` into an {@link IdentifierShape} class.
|
|
39
|
+
*
|
|
40
|
+
* The classes are the ones Berlin's gates actually produced, plus the two aviation forms the corpus task names
|
|
41
|
+
* (`Terminal 2F` is digit-letter, `Concourse B` is letter). `range` covers both separators OSM uses for a gate serving
|
|
42
|
+
* more than one stand: `16-18` and `0/1`.
|
|
43
|
+
*/
|
|
44
|
+
export function classifyIdentifier(ref) {
|
|
45
|
+
const value = ref.trim();
|
|
46
|
+
if (/^[0-9]+$/.test(value))
|
|
47
|
+
return "digit";
|
|
48
|
+
if (/^[A-Za-z]$/.test(value))
|
|
49
|
+
return "letter";
|
|
50
|
+
if (/^[A-Za-z]+[0-9]+$/.test(value))
|
|
51
|
+
return "letter-digit";
|
|
52
|
+
if (/^[0-9]+[A-Za-z]+$/.test(value))
|
|
53
|
+
return "digit-letter";
|
|
54
|
+
if (/^[0-9A-Za-z]+\s*[-/]\s*[0-9A-Za-z]+$/.test(value))
|
|
55
|
+
return "range";
|
|
56
|
+
return "other";
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* How many real `ref` values each {@link IdentifierShape} keeps.
|
|
60
|
+
*
|
|
61
|
+
* Eight, not "all" and not one. The field exists so a slice author can see what a class actually CONTAINS — GB's
|
|
62
|
+
* `other` class turned out to be semicolon multi-values (`1;2;3`, `13;14`), which one example would have hidden and
|
|
63
|
+
* which the class name does not say. Eight fits a terminal line and covers the variety inside every class the GB
|
|
64
|
+
* extract produced. The COUNT lives in `observations`; this is a sample, not a census.
|
|
65
|
+
*/
|
|
66
|
+
const IDENTIFIER_EXAMPLES_PER_SHAPE = 8;
|
|
67
|
+
/**
|
|
68
|
+
* Harvest attested phrases and identifier shapes out of a source's rows.
|
|
69
|
+
*
|
|
70
|
+
* `index` gates the name harvest — a name contributes only when it CONTAINS a phrase already in the table. That filter
|
|
71
|
+
* is the whole reason this function is safe to run over raw OSM: see this file's header for the Berlin measurement that
|
|
72
|
+
* motivated it. The index also decides ATTRIBUTION: a hit is a surface of the record the PHRASE names, and the row's
|
|
73
|
+
* own designator is recorded as `context`.
|
|
74
|
+
*
|
|
75
|
+
* Returns surfaces with real `observations` counts, so the lexicon can rank `terminal` above a phrase attested once.
|
|
76
|
+
*/
|
|
77
|
+
export function extractAttestedPhrases(rows, index, options = {}) {
|
|
78
|
+
const source = options.source ?? "osm";
|
|
79
|
+
const region = options.region ?? "";
|
|
80
|
+
/**
|
|
81
|
+
* `phrase\0lang\0source` → { count, context }.
|
|
82
|
+
*/
|
|
83
|
+
const surfaceCounts = new Map();
|
|
84
|
+
/**
|
|
85
|
+
* `designatorID\0shape` → { count, examples }.
|
|
86
|
+
*/
|
|
87
|
+
const shapes = new Map();
|
|
88
|
+
const note = (phrase, lang, sourceTag, context) => {
|
|
89
|
+
const key = `${phrase}\0${lang}\0${sourceTag}`;
|
|
90
|
+
const entry = surfaceCounts.get(key) ?? { count: 0, context: new Map() };
|
|
91
|
+
entry.count++;
|
|
92
|
+
entry.context.set(context, (entry.context.get(context) ?? 0) + 1);
|
|
93
|
+
surfaceCounts.set(key, entry);
|
|
94
|
+
};
|
|
95
|
+
for (const row of rows) {
|
|
96
|
+
if (row.name) {
|
|
97
|
+
for (const hit of nameContainsSurfaces(row.name, index)) {
|
|
98
|
+
// `und` — the default `name` tag carries no language. Overture's `name` is the same: a
|
|
99
|
+
// primary name in whatever language the place uses, untagged.
|
|
100
|
+
note(hit, "und", `${source}:name`, row.designatorID);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
for (const [lang, localized] of Object.entries(row.localizedNames ?? {})) {
|
|
104
|
+
for (const hit of nameContainsSurfaces(localized, index)) {
|
|
105
|
+
note(hit, lang, `${source}:name:${lang}`, row.designatorID);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (row.ref) {
|
|
109
|
+
const shape = classifyIdentifier(row.ref);
|
|
110
|
+
const key = `${row.designatorID}\0${shape}`;
|
|
111
|
+
const entry = shapes.get(key) ?? { count: 0, examples: new Set() };
|
|
112
|
+
entry.count++;
|
|
113
|
+
if (entry.examples.size < IDENTIFIER_EXAMPLES_PER_SHAPE) {
|
|
114
|
+
entry.examples.add(row.ref.trim());
|
|
115
|
+
}
|
|
116
|
+
shapes.set(key, entry);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const surfaces = [...surfaceCounts].map(([key, entry]) => {
|
|
120
|
+
const [phrase, lang, sourceTag] = key.split("\0");
|
|
121
|
+
const record = index.get(phrase);
|
|
122
|
+
return {
|
|
123
|
+
phrase,
|
|
124
|
+
recordID: record.recordID,
|
|
125
|
+
recordKind: record.recordKind,
|
|
126
|
+
lang,
|
|
127
|
+
region,
|
|
128
|
+
source: sourceTag,
|
|
129
|
+
curated: false,
|
|
130
|
+
observations: entry.count,
|
|
131
|
+
context: Object.fromEntries([...entry.context].toSorted((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))),
|
|
132
|
+
};
|
|
133
|
+
});
|
|
134
|
+
const identifierShapes = [...shapes].map(([key, entry]) => {
|
|
135
|
+
const [designatorID, shape] = key.split("\0");
|
|
136
|
+
return {
|
|
137
|
+
designatorID,
|
|
138
|
+
region,
|
|
139
|
+
shape,
|
|
140
|
+
observations: entry.count,
|
|
141
|
+
examples: [...entry.examples].toSorted((a, b) => a.localeCompare(b)),
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
return { surfaces, identifierShapes };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Read a JSONL file of {@link SubVenueHarvestRow}s. Blank lines and unparseable rows are skipped rather than fatal — an
|
|
148
|
+
* extract is a build output, and one malformed line should not cost the whole lexicon.
|
|
149
|
+
*/
|
|
150
|
+
export async function readSubVenueJSONL(path) {
|
|
151
|
+
const out = [];
|
|
152
|
+
// `TextSpliterator` rather than `split("\n")` — a whole-country extract runs to 250,000 lines
|
|
153
|
+
// (52 MB for Great Britain), and materializing every segment before reading the first is exactly
|
|
154
|
+
// what the repo lint rule exists to prevent.
|
|
155
|
+
for (const line of TextSpliterator.from(await readLocalTextFile(path))) {
|
|
156
|
+
const trimmed = line.trim();
|
|
157
|
+
if (!trimmed)
|
|
158
|
+
continue;
|
|
159
|
+
try {
|
|
160
|
+
out.push(parseJSONStrict(trimmed));
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return out;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=harvest.js.map
|