@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,725 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* `sub-venue` slice recipe (#35 step 4) — teach the `unit` tag the venue-INTERIOR shapes it was
|
|
7
|
+
* never taught, so the modifier+designator class wins at the shipped `venueStructureBiasScale` of
|
|
8
|
+
* 6.0 instead of needing ~11 nats. `docs/engineering/sub-venue-corpus-task.mdx` is the spec; the
|
|
9
|
+
* vocabulary is `corpus/data/sub-venue-lexicon.json` (v0.2.0) and the curation ledger is
|
|
10
|
+
* `corpus/src/tools/sub-venue-promotions.ts`. The READ half — promotions, identifier
|
|
11
|
+
* distributions, name pools — is `sub-venue-sources.ts`; this file renders lines and emits rows.
|
|
12
|
+
*
|
|
13
|
+
* ── WHY THIS SYNTHESIZES RATHER THAN HARVESTS ────────────────────────────────────────────────────
|
|
14
|
+
* Wave 1's lesson, and the reason the spec's "get real data first" instruction is honoured in a
|
|
15
|
+
* shape it did not anticipate: the attested SURFACE STRINGS are thin. 87 GB features attest
|
|
16
|
+
* `terminal`, 29 attest `wing`, 4 attest `concourse` (3 of which are a street called CONCOURSE WAY).
|
|
17
|
+
* You cannot train a tag on 29 strings. What the five extracts DO carry at volume is the three
|
|
18
|
+
* things a generator needs — 45,000+ real venue names across four countries, a per-region
|
|
19
|
+
* identifier DISTRIBUTION measured over 2,868 gate/terminal/campus refs, and the confound
|
|
20
|
+
* population that becomes the negatives. So the bulk is `designator × per-region-identifier ×
|
|
21
|
+
* modifier` sampled per locale, and the attested strings ride along as seasoning
|
|
22
|
+
* ({@link ATTESTED_FRACTION}) rather than as the corpus.
|
|
23
|
+
*
|
|
24
|
+
* ── THE PER-REGION IDENTIFIER RULE, AND WHY IT IS NOT COSMETIC ───────────────────────────────────
|
|
25
|
+
* `Gate A12` is a rendering, not a string anyone wrote down: all but 13 of Great Britain's 658
|
|
26
|
+
* `aeroway=gate` features are unnamed and carry only a `ref`. The lexicon therefore ships a
|
|
27
|
+
* distribution, and it differs by country far more than the shared English vocabulary suggests —
|
|
28
|
+
* GB gates are 71% bare digits and JP 89%, FR and DE are ~60% letter-digit (`A37`, `B05`), and ES
|
|
29
|
+
* gives a THIRD of its gates a range (`B18-B20`), which no other country does at that rate. A
|
|
30
|
+
* generator that samples Great Britain's shape into a Spanish line produces a plausible string that
|
|
31
|
+
* is wrong about Spain, so every leg samples its own region.
|
|
32
|
+
*
|
|
33
|
+
* ── ONLY PROMOTED (designator, locale) PAIRS PRODUCE POSITIVES ───────────────────────────────────
|
|
34
|
+
* A promotion names a designator, a phrase AND a locale, because the same token is a designator in
|
|
35
|
+
* one language and a disaster in another: `hall` is 0-of-3,273 in Great Britain and 35-of-40 in
|
|
36
|
+
* France; `wing` is 23-of-29 in Great Britain and 4-of-3,358 in the United States. A REJECTED pair
|
|
37
|
+
* generates NEGATIVES in that locale instead — en-US `wing` rows are Red Wing, not units.
|
|
38
|
+
*
|
|
39
|
+
* `shape: "identifier-required"` is honoured as the ledger's docstring demands: de-DE `halle` is
|
|
40
|
+
* emitted only as `Halle <identifier>`, never bare and never after a modifier, because its 168-hit
|
|
41
|
+
* confound includes the CITY Halle (Saale) and only the identifier-bearing shape separates them.
|
|
42
|
+
* {@link buildSubVenueForm} enforces it and `sub-venue.test.ts` pins it.
|
|
43
|
+
*
|
|
44
|
+
* ── LABELS ───────────────────────────────────────────────────────────────────────────────────────
|
|
45
|
+
* Sub-venue is `unit`; the container is `venue`. That is the spec's wording and it invents nothing:
|
|
46
|
+
* `block` / `sub_block` exist in the `ComponentTag` union but are JP-char-model-only and outside
|
|
47
|
+
* `ACTIVE_TAGS` (STAGE3), so they are not reachable from a Latin slice.
|
|
48
|
+
*
|
|
49
|
+
* ── WHAT IS DELIBERATELY NOT HERE ────────────────────────────────────────────────────────────────
|
|
50
|
+
* 1. **A modifier+designator form outside English.** `VENUE_STRUCTURE_MODIFIERS` is an English
|
|
51
|
+
* list, and the extracts say the localized modifier surfaces do not exist to copy: `aile` in
|
|
52
|
+
* France is 0 hits, `ala` in Spain 0, `flügel` in Germany 0. Generating `Terminal Sud` would
|
|
53
|
+
* be inventing a vocabulary with no confound board behind it, which is the exact failure the
|
|
54
|
+
* promotion ledger exists to prevent. Non-English legs get designator+identifier only.
|
|
55
|
+
* 2. **A ja-JP leg.** `ターミナル` is promoted (1,213 real of 1,215). The one non-Latin
|
|
56
|
+
* surface the task named, but Japanese addresses train through `build_jp_slice.py` against the
|
|
57
|
+
* `stage3-jp` 47-label head, where the interior tags are `block`/`sub_block`/`building_number`
|
|
58
|
+
* — a different model, a different label set, and a different builder. A katakana `unit` row
|
|
59
|
+
* in this (Latin) feed would in any case be dropped by `country_weights`, which carries no
|
|
60
|
+
* `JP` key. The JP extract is harvested and ready; the leg belongs to the JP slice.
|
|
61
|
+
*/
|
|
62
|
+
import { dataRootPath } from "@mailwoman/core/data-root";
|
|
63
|
+
import { isPresent } from "@mailwoman/core/objects";
|
|
64
|
+
import { makeMulberry32, sliceSourceID } from "#recipes/scaffold";
|
|
65
|
+
import { buildIdentifierModel, buildStreetNegatives, defaultLexiconPath, EMPTY_NAME_POOLS, loadContextTuples, mergeNamePools, promotedSurfacesFor, readExtractPools, readPOIPools, readSubVenueLexicon, rejectedPhrasesFor, sampleIdentifier, titleCase, } from "#recipes/sub-venue-sources";
|
|
66
|
+
import { pick } from "#synthesizers/utils";
|
|
67
|
+
import { alignRow } from "#utils";
|
|
68
|
+
export * from "#recipes/sub-venue-sources";
|
|
69
|
+
/**
|
|
70
|
+
* The legs, and the numbers behind the shares.
|
|
71
|
+
*
|
|
72
|
+
* En-GB and en-US carry the most because they are where the eval board lives (28 of the 30 confound rows are GB or US
|
|
73
|
+
* addresses) and because the English shipped vocabulary is the only one with a modifier grammar — the target class.
|
|
74
|
+
* fr-FR, de-DE and es-ES exist because the ledger promoted surfaces there (169, 19+32 and 190 real hits respectively)
|
|
75
|
+
* and a slice that skipped them would leave every non-English promotion untrained. ca-ES is small on purpose: its
|
|
76
|
+
* promotion is 15 hits and its line differs from es-ES only in the Catalan street vocabulary the postal-prefix filter
|
|
77
|
+
* selects for.
|
|
78
|
+
*
|
|
79
|
+
* The negative shares invert that ordering where the confound mass does. en-US carries the largest negative share
|
|
80
|
+
* because its confound population is the largest measured anywhere in the ledger — 3,354 `wing` (Red Wing boots 676,
|
|
81
|
+
* chicken wings 759), 2,330 `pier` (Pier 1 Imports, which IS the designator+identifier shape), 27,081 `hall`.
|
|
82
|
+
*/
|
|
83
|
+
export const SUBVENUE_LEGS = [
|
|
84
|
+
{
|
|
85
|
+
locale: "en-GB",
|
|
86
|
+
country: "GB",
|
|
87
|
+
region: "GB",
|
|
88
|
+
extract: "great-britain.jsonl",
|
|
89
|
+
english: true,
|
|
90
|
+
positiveShare: 0.25,
|
|
91
|
+
negativeShare: 0.3,
|
|
92
|
+
},
|
|
93
|
+
{ locale: "en-US", country: "US", region: "GB", english: true, positiveShare: 0.25, negativeShare: 0.35 },
|
|
94
|
+
{
|
|
95
|
+
locale: "fr-FR",
|
|
96
|
+
country: "FR",
|
|
97
|
+
region: "FR",
|
|
98
|
+
extract: "france.jsonl",
|
|
99
|
+
english: false,
|
|
100
|
+
positiveShare: 0.16,
|
|
101
|
+
negativeShare: 0.2,
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
locale: "de-DE",
|
|
105
|
+
country: "DE",
|
|
106
|
+
region: "DE",
|
|
107
|
+
extract: "germany.jsonl",
|
|
108
|
+
english: false,
|
|
109
|
+
positiveShare: 0.14,
|
|
110
|
+
negativeShare: 0.1,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
locale: "es-ES",
|
|
114
|
+
country: "ES",
|
|
115
|
+
region: "ES",
|
|
116
|
+
extract: "spain.jsonl",
|
|
117
|
+
english: false,
|
|
118
|
+
positiveShare: 0.15,
|
|
119
|
+
negativeShare: 0.05,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
locale: "ca-ES",
|
|
123
|
+
country: "ES",
|
|
124
|
+
region: "ES",
|
|
125
|
+
extract: "spain.jsonl",
|
|
126
|
+
english: false,
|
|
127
|
+
positiveShare: 0.05,
|
|
128
|
+
negativeShare: 0,
|
|
129
|
+
postcodePrefixes: ["07", "08", "17", "25", "43"],
|
|
130
|
+
},
|
|
131
|
+
];
|
|
132
|
+
/**
|
|
133
|
+
* En-US has no OSM extract, so its identifier distribution has to be borrowed. GB is the borrow, and the leg's `region`
|
|
134
|
+
* says so literally rather than in a comment: the two English-speaking aviation systems number their gates the same way
|
|
135
|
+
* (GB 71% bare digit) and poi.db — the only US source in reach — carries names, not refs, so it cannot supply a
|
|
136
|
+
* distribution of its own. Recorded here because it is the one place a leg's `region` is not its own country.
|
|
137
|
+
*/
|
|
138
|
+
export const US_IDENTIFIER_REGION_BORROWED_FROM = "GB";
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region Tunables
|
|
141
|
+
/**
|
|
142
|
+
* The row count this slice is built at, and the arithmetic behind it. `--count` overrides; this is the number to use
|
|
143
|
+
* absent a reason.
|
|
144
|
+
*
|
|
145
|
+
* The training sampler (`corpus-python/src/mailwoman_train/data_loader.py`, `_raw_row_stream`) draws SOURCES from a
|
|
146
|
+
* multinomial over `source_weights` and yields the next row from that source's iterator. Two consequences set the
|
|
147
|
+
* size:
|
|
148
|
+
*
|
|
149
|
+
* 1. A source's share of an epoch is `weight / Σweights`, independent of how many rows it has.
|
|
150
|
+
* 2. **A source that exhausts is DELETED from the multinomial** — there is no cycling. Under-size the slice and its
|
|
151
|
+
* nominal dose is fiction for the rest of the epoch.
|
|
152
|
+
*
|
|
153
|
+
* Measured against the shipped `v4.1.0-gb-venue-l1e4-2k` weight table: 33 sources summing to 144.5. At the dose the B11
|
|
154
|
+
* GB-venue exercise settled on for a hard rare class — 12.0, the value `synth-fr-bare-street`, `synth-si-bare-village`,
|
|
155
|
+
* `synth-cz-pcfirst-preposition`, `synth-fr-fragment` and `synth-no-fragment` all carry — the share is `12 / 156.5 =
|
|
156
|
+
* 7.67%`, and `train_rows_per_epoch` is 1,000,000. So the epoch draws **76,677 rows** from this slice, and anything
|
|
157
|
+
* smaller runs dry mid-epoch. 120,000 clears that with room for a config that drops a source or raises the dose. (For
|
|
158
|
+
* contrast: `synth-fr-bare-street` is 10,803 rows at dose 12.0, so it exhausts 14% into its own nominal share every
|
|
159
|
+
* epoch — a precedent for the dose, not for the size.)
|
|
160
|
+
*/
|
|
161
|
+
export const RECOMMENDED_ROW_COUNT = 120_000;
|
|
162
|
+
/**
|
|
163
|
+
* Share of emitted rows that are NEGATIVES (the confound classes, carrying no `unit`).
|
|
164
|
+
*
|
|
165
|
+
* The spec's instruction is structural: "include the confound shapes as NEGATIVES in the same slice, or the model
|
|
166
|
+
* learns the surface rather than the structure". 0.3 is the dose the `no-fragment` recipe settled on for its own
|
|
167
|
+
* counter-distribution and there is no measurement here that beats it; `--negative-fraction` moves it.
|
|
168
|
+
*/
|
|
169
|
+
const DEFAULT_NEGATIVE_FRACTION = 0.3;
|
|
170
|
+
/**
|
|
171
|
+
* Share of POSITIVES whose sub-venue string is a REAL name lifted verbatim out of an extract rather than synthesized —
|
|
172
|
+
* `Terminal 2 D`, `Pier 1`, `Terminal 1 Flugsteig B`. The seasoning, per the module docstring. Kept small because the
|
|
173
|
+
* attested pool is small: after promotion + shape filtering it is 13–47 strings per leg, and a larger share would just
|
|
174
|
+
* repeat them.
|
|
175
|
+
*/
|
|
176
|
+
const ATTESTED_FRACTION = 0.1;
|
|
177
|
+
/**
|
|
178
|
+
* Within the SYNTHESIZED positives of an English leg: the split between the two proposal shapes.
|
|
179
|
+
*
|
|
180
|
+
* Modifier-heavy on purpose. Designator+identifier proposes at 0.85 confidence and already wins the decode at the
|
|
181
|
+
* shipped 6.0; modifier+designator proposes at 0.6 and needs 5.87–10.65. The failing class is the one to teach, and the
|
|
182
|
+
* passing one is here to not regress (`Concourse B` / `Terminal 5` / `Gate 12` / `Wing B` must stay correct).
|
|
183
|
+
*/
|
|
184
|
+
const ENGLISH_MODIFIER_FORM_FRACTION = 0.6;
|
|
185
|
+
//#endregion
|
|
186
|
+
//#region Board reservation
|
|
187
|
+
/**
|
|
188
|
+
* Surfaces reserved by `mailwoman/eval-harness/fixtures/venue-structure-confounds.jsonl` — the 30-row board this slice
|
|
189
|
+
* has to hold. A row containing any of these is DROPPED and counted in `contaminated`.
|
|
190
|
+
*
|
|
191
|
+
* The `--exclude-surfaces` precedent from `fr-fragment` / `no-fragment`, applied by hand rather than by file because
|
|
192
|
+
* the board lives in `mailwoman/` and `@mailwoman/corpus` cannot reach across that workspace boundary at run time. Keep
|
|
193
|
+
* it in sync when the board grows; a slice that trains on its own eval set measures memorization.
|
|
194
|
+
*
|
|
195
|
+
* Note what this costs and why it is still right: reserving `east gate` / `west gate` removes the two GB surfaces the
|
|
196
|
+
* board uses for its `modifier-designator-street` class, so the slice teaches that class from the OTHER real ones its
|
|
197
|
+
* sources carry (`North Gate`, `South Gate`, `East Hall`, `West Hall`, `Lower Hall`, `East Campus`, …). The class is
|
|
198
|
+
* taught; the board's own strings are not.
|
|
199
|
+
*/
|
|
200
|
+
export const BOARD_RESERVED_SURFACES = [
|
|
201
|
+
// gb-street-gate
|
|
202
|
+
"briggate",
|
|
203
|
+
"kirkgate",
|
|
204
|
+
"castlegate",
|
|
205
|
+
"micklegate",
|
|
206
|
+
"fishergate",
|
|
207
|
+
"gallowgate",
|
|
208
|
+
"cowgate",
|
|
209
|
+
"canongate",
|
|
210
|
+
"westgate",
|
|
211
|
+
"northgate",
|
|
212
|
+
// gate-house-venue
|
|
213
|
+
"gate house",
|
|
214
|
+
"gatehouse",
|
|
215
|
+
// terminal-estate
|
|
216
|
+
"terminal industrial estate",
|
|
217
|
+
"terminal house",
|
|
218
|
+
"ocean terminal",
|
|
219
|
+
"terminal warehouse",
|
|
220
|
+
// wing-name
|
|
221
|
+
"wing yip",
|
|
222
|
+
"wing lee",
|
|
223
|
+
"bletchley park",
|
|
224
|
+
// designator-as-street
|
|
225
|
+
"campus drive",
|
|
226
|
+
"arcade avenue",
|
|
227
|
+
"concourse village",
|
|
228
|
+
"building society place",
|
|
229
|
+
"enclosure road",
|
|
230
|
+
// modifier-designator-street
|
|
231
|
+
"east gate",
|
|
232
|
+
"west gate",
|
|
233
|
+
"west wickham",
|
|
234
|
+
];
|
|
235
|
+
/**
|
|
236
|
+
* Does this row's text collide with a board-reserved surface?
|
|
237
|
+
*/
|
|
238
|
+
export function isBoardReserved(raw) {
|
|
239
|
+
const low = raw.toLowerCase();
|
|
240
|
+
return BOARD_RESERVED_SURFACES.some((surface) => low.includes(surface));
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Surface register. Every eval in this repo gets a lowercase leg because lowercase is the register users type — Google
|
|
244
|
+
* Maps taught them — so every slice has to carry one.
|
|
245
|
+
*/
|
|
246
|
+
const Register = {
|
|
247
|
+
Canonical: "canonical",
|
|
248
|
+
CommaFree: "comma-free",
|
|
249
|
+
Lower: "lower",
|
|
250
|
+
Upper: "upper",
|
|
251
|
+
};
|
|
252
|
+
// Registers: 45% canonical, 20% comma-free, 25% lower, 10% upper.
|
|
253
|
+
const CANONICAL_REGISTER_CUTOFF = 0.45;
|
|
254
|
+
const COMMA_FREE_REGISTER_CUTOFF = 0.65;
|
|
255
|
+
const LOWER_REGISTER_CUTOFF = 0.9;
|
|
256
|
+
function sampleRegister(random) {
|
|
257
|
+
const r = random();
|
|
258
|
+
if (r < CANONICAL_REGISTER_CUTOFF)
|
|
259
|
+
return Register.Canonical;
|
|
260
|
+
if (r < COMMA_FREE_REGISTER_CUTOFF)
|
|
261
|
+
return Register.CommaFree;
|
|
262
|
+
if (r < LOWER_REGISTER_CUTOFF)
|
|
263
|
+
return Register.Lower;
|
|
264
|
+
return Register.Upper;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Join groups into `raw` + `components`, applying the register to BOTH so alignment still finds every value.
|
|
268
|
+
*/
|
|
269
|
+
export function renderGroups(groups, register) {
|
|
270
|
+
const fold = (text) => {
|
|
271
|
+
if (register === Register.Lower)
|
|
272
|
+
return text.toLowerCase();
|
|
273
|
+
if (register === Register.Upper)
|
|
274
|
+
return text.toUpperCase();
|
|
275
|
+
return text;
|
|
276
|
+
};
|
|
277
|
+
const separator = register === Register.CommaFree ? " " : ", ";
|
|
278
|
+
const raw = groups
|
|
279
|
+
.map((group) => group.map((piece) => fold(piece.text)).join(" "))
|
|
280
|
+
.filter(isPresent)
|
|
281
|
+
.join(separator);
|
|
282
|
+
const components = {};
|
|
283
|
+
for (const group of groups) {
|
|
284
|
+
for (const piece of group) {
|
|
285
|
+
if (piece.tag && !components[piece.tag]) {
|
|
286
|
+
components[piece.tag] = fold(piece.text);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return { raw, components };
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* The street + tail groups for a country, in that country's own order.
|
|
294
|
+
*
|
|
295
|
+
* DE/ES/FR put the postcode before the locality and DE/ES put the house number after the street; GB and US keep the
|
|
296
|
+
* anglophone order and US carries a region. These are the same orders `synthesizers/german.ts` renders, restated here
|
|
297
|
+
* because this recipe assembles its groups piece-by-piece (it has to, to place a sub-venue group in front of them).
|
|
298
|
+
*/
|
|
299
|
+
export function addressGroups(country, tuple, withStreet) {
|
|
300
|
+
const groups = [];
|
|
301
|
+
const houseNumber = tuple.house_number?.trim();
|
|
302
|
+
const street = tuple.street.trim();
|
|
303
|
+
if (withStreet && street) {
|
|
304
|
+
const streetPiece = { text: street, tag: "street" };
|
|
305
|
+
const numberPiece = houseNumber ? { text: houseNumber, tag: "house_number" } : null;
|
|
306
|
+
if (!numberPiece) {
|
|
307
|
+
groups.push([streetPiece]);
|
|
308
|
+
}
|
|
309
|
+
else if (country === "DE" || country === "ES") {
|
|
310
|
+
groups.push([streetPiece, numberPiece]);
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
groups.push([numberPiece, streetPiece]);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
const locality = { text: tuple.locality.trim(), tag: "locality" };
|
|
317
|
+
const postcode = tuple.postcode?.trim();
|
|
318
|
+
const region = tuple.region?.trim();
|
|
319
|
+
if (country === "US") {
|
|
320
|
+
groups.push([locality]);
|
|
321
|
+
const tail = [];
|
|
322
|
+
if (region) {
|
|
323
|
+
tail.push({ text: region, tag: "region" });
|
|
324
|
+
}
|
|
325
|
+
if (postcode) {
|
|
326
|
+
tail.push({ text: postcode, tag: "postcode" });
|
|
327
|
+
}
|
|
328
|
+
if (tail.length) {
|
|
329
|
+
groups.push(tail);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
else if (country === "GB") {
|
|
333
|
+
groups.push([locality]);
|
|
334
|
+
if (postcode) {
|
|
335
|
+
groups.push([{ text: postcode, tag: "postcode" }]);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
// FR / DE / ES — postcode then locality, one group.
|
|
340
|
+
const tail = [];
|
|
341
|
+
if (postcode) {
|
|
342
|
+
tail.push({ text: postcode, tag: "postcode" });
|
|
343
|
+
}
|
|
344
|
+
tail.push(locality);
|
|
345
|
+
groups.push(tail);
|
|
346
|
+
}
|
|
347
|
+
return groups;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Build one sub-venue string for a leg.
|
|
351
|
+
*
|
|
352
|
+
* The `identifier-required` guard is here and not at the call site on purpose: it is the one rule in this file that a
|
|
353
|
+
* refactor must not be able to route around. A promotion carrying `shape: "identifier-required"` can only ever leave
|
|
354
|
+
* this function as `<Phrase> <identifier>`, and returns `null` rather than a bare or modified form.
|
|
355
|
+
*/
|
|
356
|
+
export function buildSubVenueForm(leg, promoted, model, modifiers, attested, random) {
|
|
357
|
+
if (!promoted.length)
|
|
358
|
+
return null;
|
|
359
|
+
if (attested.length && random() < ATTESTED_FRACTION) {
|
|
360
|
+
const text = pick(attested, random);
|
|
361
|
+
return { text, form: "attested", designatorID: "attested" };
|
|
362
|
+
}
|
|
363
|
+
const modifierCandidates = leg.english ? promoted.filter((p) => p.modifierEligible && !p.identifierRequired) : [];
|
|
364
|
+
const useModifier = modifierCandidates.length > 0 && random() < ENGLISH_MODIFIER_FORM_FRACTION;
|
|
365
|
+
if (useModifier) {
|
|
366
|
+
const promotedSurface = pick(modifierCandidates, random);
|
|
367
|
+
const modifier = pick(modifiers, random);
|
|
368
|
+
return {
|
|
369
|
+
text: `${titleCase(modifier)} ${promotedSurface.surface}`,
|
|
370
|
+
form: "modifier-designator",
|
|
371
|
+
designatorID: promotedSurface.designatorID,
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
const promotedSurface = pick(promoted, random);
|
|
375
|
+
const identifier = sampleIdentifier(model, promotedSurface.designatorID, random);
|
|
376
|
+
if (!identifier)
|
|
377
|
+
return null;
|
|
378
|
+
return {
|
|
379
|
+
text: `${promotedSurface.surface} ${identifier}`,
|
|
380
|
+
form: "designator-identifier",
|
|
381
|
+
designatorID: promotedSurface.designatorID,
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Alias kept for readers of the arc's earlier drafts.
|
|
386
|
+
*
|
|
387
|
+
* @deprecated Use {@link buildSubVenueForm}.
|
|
388
|
+
*/
|
|
389
|
+
export const buildPositiveForms = buildSubVenueForm;
|
|
390
|
+
//#endregion
|
|
391
|
+
//#region Negatives
|
|
392
|
+
/**
|
|
393
|
+
* Negative classes, named so the composition report can count them and a failure can be attributed.
|
|
394
|
+
*/
|
|
395
|
+
export const NegativeClass = {
|
|
396
|
+
/**
|
|
397
|
+
* A locale-REJECTED surface in the venue slot: Red Wing Shoes, Village Hall, Porte de Champerret.
|
|
398
|
+
*/
|
|
399
|
+
RejectedVenue: "rejected-venue",
|
|
400
|
+
/**
|
|
401
|
+
* The designator inside a longer proper name, whole string tagged `venue`: Lochaline Ferry Terminal.
|
|
402
|
+
*/
|
|
403
|
+
LongerName: "longer-name",
|
|
404
|
+
/**
|
|
405
|
+
* A real street whose name carries a designator token: Pier Road, Egg Hall, Orchard Gate.
|
|
406
|
+
*/
|
|
407
|
+
DesignatorStreet: "designator-street",
|
|
408
|
+
/**
|
|
409
|
+
* A real street of the `<modifier> <designator>` shape — the class that would otherwise be read as a sub-venue.
|
|
410
|
+
*/
|
|
411
|
+
ModifierDesignatorStreet: "modifier-designator-street",
|
|
412
|
+
/**
|
|
413
|
+
* A GB single-token `-gate` street: Eastgate, Southgate, Moorgate, Stonegate.
|
|
414
|
+
*/
|
|
415
|
+
GateSuffixStreet: "gate-suffix-street",
|
|
416
|
+
/**
|
|
417
|
+
* A PROMOTED phrase outside the shape its promotion covers — `Halle Rosengarten`, `PHOENIX Halle`. The other half of
|
|
418
|
+
* an `identifier-required` ruling; see `LegPools.unpromotedShapes`.
|
|
419
|
+
*/
|
|
420
|
+
UnpromotedShape: "unpromoted-shape",
|
|
421
|
+
};
|
|
422
|
+
/**
|
|
423
|
+
* Which negative classes this leg's pools can actually produce. A class with no source is ABSENT rather than
|
|
424
|
+
* substituted — the report then says so, and a reader can tell a missing class from an unsampled one.
|
|
425
|
+
*/
|
|
426
|
+
function availableNegativeClasses(pools, streets) {
|
|
427
|
+
const available = [];
|
|
428
|
+
const sourced = [
|
|
429
|
+
[NegativeClass.RejectedVenue, pools.rejectedVenues.length],
|
|
430
|
+
[NegativeClass.LongerName, pools.longerNames.length],
|
|
431
|
+
[NegativeClass.UnpromotedShape, pools.unpromotedShapes.length],
|
|
432
|
+
[NegativeClass.DesignatorStreet, streets.designator.length],
|
|
433
|
+
[NegativeClass.ModifierDesignatorStreet, streets.modifierDesignator.length],
|
|
434
|
+
[NegativeClass.GateSuffixStreet, streets.gateSuffix.length],
|
|
435
|
+
];
|
|
436
|
+
for (const [negativeClass, size] of sourced) {
|
|
437
|
+
if (size > 0) {
|
|
438
|
+
available.push(negativeClass);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
return available;
|
|
442
|
+
}
|
|
443
|
+
const LICENSE = "Synthetic — OpenStreetMap venue + sub-venue names (ODbL, © OpenStreetMap contributors) and Overture Places names " +
|
|
444
|
+
"(CDLA-Permissive-2.0) over OpenAddresses / HM Land Registry Price Paid Data address skeletons";
|
|
445
|
+
const CORPUS_VERSION = "0.16.0";
|
|
446
|
+
const bump = (record, key) => {
|
|
447
|
+
record[key] = (record[key] ?? 0) + 1;
|
|
448
|
+
};
|
|
449
|
+
/**
|
|
450
|
+
* Render one row, drop it if it collides with the eval board, align it, write it.
|
|
451
|
+
*
|
|
452
|
+
* A free function rather than a closure over the leg loop: a closure there is both a lint error (`no-loop-func`) and a
|
|
453
|
+
* real hazard, since it would capture the loop's mutable counters.
|
|
454
|
+
*/
|
|
455
|
+
function emitRow(context, leg, stats, groups, register, synthMethod, disambiguator) {
|
|
456
|
+
const { raw, components } = renderGroups(groups, register);
|
|
457
|
+
if (isBoardReserved(raw)) {
|
|
458
|
+
context.counters.contaminated++;
|
|
459
|
+
return false;
|
|
460
|
+
}
|
|
461
|
+
const aligned = alignRow({
|
|
462
|
+
raw,
|
|
463
|
+
components,
|
|
464
|
+
country: leg.country,
|
|
465
|
+
locale: leg.locale,
|
|
466
|
+
source: context.source,
|
|
467
|
+
source_id: sliceSourceID(context.source, { ...components, ...disambiguator }),
|
|
468
|
+
corpus_version: CORPUS_VERSION,
|
|
469
|
+
license: LICENSE,
|
|
470
|
+
});
|
|
471
|
+
if (aligned.kind !== "labeled" || !aligned.row) {
|
|
472
|
+
context.counters.skipped++;
|
|
473
|
+
return false;
|
|
474
|
+
}
|
|
475
|
+
context.write(JSON.stringify({ ...aligned.row, synth_method: synthMethod, synth_base_id: null }) + "\n");
|
|
476
|
+
context.counters.emitted++;
|
|
477
|
+
bump(stats.byRegister, register);
|
|
478
|
+
return true;
|
|
479
|
+
}
|
|
480
|
+
// One draw per row: 25% carry no street; 55% put the sub-venue before the venue, the rest the venue first.
|
|
481
|
+
const NO_STREET_SHARE = 0.25;
|
|
482
|
+
const SUBVENUE_FIRST_CUTOFF = 0.55;
|
|
483
|
+
/**
|
|
484
|
+
* Emit one leg's POSITIVE rows: `<sub-venue> unit`, a real `venue`, and the leg's own address skeleton.
|
|
485
|
+
*/
|
|
486
|
+
function emitPositives(context, leg, pools, promoted, model, stats, target) {
|
|
487
|
+
const { random } = context;
|
|
488
|
+
let produced = 0;
|
|
489
|
+
let guard = 0;
|
|
490
|
+
while (produced < target && guard++ < target * 8) {
|
|
491
|
+
if (!pools.context.length || !pools.venues.length)
|
|
492
|
+
break;
|
|
493
|
+
const form = buildSubVenueForm(leg, promoted, model, context.modifiers, pools.attested, random);
|
|
494
|
+
if (!form) {
|
|
495
|
+
context.counters.skipped++;
|
|
496
|
+
continue;
|
|
497
|
+
}
|
|
498
|
+
const tuple = pick(pools.context, random);
|
|
499
|
+
const venue = pick(pools.venues, random);
|
|
500
|
+
// A venue name that CONTAINS the sub-venue string (or vice versa) makes the two spans
|
|
501
|
+
// unresolvable — alignment claims the longer one and quarantines the other — and the row would
|
|
502
|
+
// teach an overlap that never occurs on a real envelope. Redraw instead.
|
|
503
|
+
const lowVenue = venue.toLowerCase();
|
|
504
|
+
const lowForm = form.text.toLowerCase();
|
|
505
|
+
if (lowVenue.includes(lowForm) || lowForm.includes(lowVenue))
|
|
506
|
+
continue;
|
|
507
|
+
const register = sampleRegister(random);
|
|
508
|
+
const subGroup = [{ text: form.text, tag: "unit" }];
|
|
509
|
+
const venueGroup = [{ text: venue, tag: "venue" }];
|
|
510
|
+
const r = random();
|
|
511
|
+
// A quarter of rows carry no street: an airport terminal's address usually does not have one.
|
|
512
|
+
const body = addressGroups(leg.country, tuple, r >= NO_STREET_SHARE);
|
|
513
|
+
// Both orders occur on real signage and mail — "Terminal 5, Heathrow" and "Heathrow, Terminal 5".
|
|
514
|
+
const groups = r < SUBVENUE_FIRST_CUTOFF ? [subGroup, venueGroup, ...body] : [venueGroup, subGroup, ...body];
|
|
515
|
+
const ok = emitRow(context, leg, stats, groups, register, `sub-venue:${form.form}`, {
|
|
516
|
+
leg: leg.locale,
|
|
517
|
+
form: form.form,
|
|
518
|
+
v: String(produced),
|
|
519
|
+
});
|
|
520
|
+
if (!ok)
|
|
521
|
+
continue;
|
|
522
|
+
produced++;
|
|
523
|
+
stats.positives++;
|
|
524
|
+
bump(stats.byForm, form.form);
|
|
525
|
+
bump(stats.byDesignator, form.designatorID);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
// Name-pool negatives: 75% carry a street line.
|
|
529
|
+
const NEGATIVE_WITH_STREET_SHARE = 0.75;
|
|
530
|
+
/**
|
|
531
|
+
* Emit one leg's NEGATIVE rows — the confound classes, none of which carries a `unit`.
|
|
532
|
+
*/
|
|
533
|
+
function emitNegatives(context, leg, pools, stats, target) {
|
|
534
|
+
const { random } = context;
|
|
535
|
+
const streets = buildStreetNegatives(pools.context, context.designatorPhrases, context.modifiers, leg.country);
|
|
536
|
+
const available = availableNegativeClasses(pools, streets);
|
|
537
|
+
let produced = 0;
|
|
538
|
+
let guard = 0;
|
|
539
|
+
while (produced < target && guard++ < target * 8) {
|
|
540
|
+
if (!available.length || !pools.context.length)
|
|
541
|
+
break;
|
|
542
|
+
const negativeClass = pick(available, random);
|
|
543
|
+
const register = sampleRegister(random);
|
|
544
|
+
let groups;
|
|
545
|
+
if (negativeClass === NegativeClass.DesignatorStreet) {
|
|
546
|
+
groups = addressGroups(leg.country, pickTuple(streets.designator, random), true);
|
|
547
|
+
}
|
|
548
|
+
else if (negativeClass === NegativeClass.ModifierDesignatorStreet) {
|
|
549
|
+
groups = addressGroups(leg.country, pickTuple(streets.modifierDesignator, random), true);
|
|
550
|
+
}
|
|
551
|
+
else if (negativeClass === NegativeClass.GateSuffixStreet) {
|
|
552
|
+
groups = addressGroups(leg.country, pickTuple(streets.gateSuffix, random), true);
|
|
553
|
+
}
|
|
554
|
+
else {
|
|
555
|
+
const pool = negativeClass === NegativeClass.RejectedVenue
|
|
556
|
+
? pools.rejectedVenues
|
|
557
|
+
: negativeClass === NegativeClass.LongerName
|
|
558
|
+
? pools.longerNames
|
|
559
|
+
: pools.unpromotedShapes;
|
|
560
|
+
const name = pick(pool, random);
|
|
561
|
+
const tuple = pick(pools.context, random);
|
|
562
|
+
groups = [
|
|
563
|
+
[{ text: name, tag: "venue" }],
|
|
564
|
+
...addressGroups(leg.country, tuple, random() < NEGATIVE_WITH_STREET_SHARE),
|
|
565
|
+
];
|
|
566
|
+
}
|
|
567
|
+
const ok = emitRow(context, leg, stats, groups, register, `sub-venue-negative:${negativeClass}`, {
|
|
568
|
+
leg: leg.locale,
|
|
569
|
+
negative: negativeClass,
|
|
570
|
+
v: String(produced),
|
|
571
|
+
});
|
|
572
|
+
if (!ok)
|
|
573
|
+
continue;
|
|
574
|
+
produced++;
|
|
575
|
+
stats.negatives++;
|
|
576
|
+
bump(stats.byNegativeClass, negativeClass);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
function pickTuple(pool, random) {
|
|
580
|
+
return pick(pool, random);
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Split `total` across `shares` (which need not sum to 1), largest-remainder so the parts sum exactly.
|
|
584
|
+
*/
|
|
585
|
+
export function allocate(total, shares) {
|
|
586
|
+
const sum = shares.reduce((a, b) => a + b, 0);
|
|
587
|
+
if (sum <= 0)
|
|
588
|
+
return shares.map(() => 0);
|
|
589
|
+
const exact = shares.map((s) => (total * s) / sum);
|
|
590
|
+
const floored = exact.map((v) => Math.floor(v));
|
|
591
|
+
let remainder = total - floored.reduce((a, b) => a + b, 0);
|
|
592
|
+
const order = exact.map((v, i) => ({ i, frac: v - Math.floor(v) })).toSorted((a, b) => b.frac - a.frac);
|
|
593
|
+
for (const entry of order) {
|
|
594
|
+
if (remainder <= 0)
|
|
595
|
+
break;
|
|
596
|
+
floored[entry.i] += 1;
|
|
597
|
+
remainder--;
|
|
598
|
+
}
|
|
599
|
+
return floored;
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* Build one leg's pools: the name pools from its extract and/or poi.db, plus its address context.
|
|
603
|
+
*/
|
|
604
|
+
async function buildLegPools(leg, query, contextByCountry, paths) {
|
|
605
|
+
const extractPools = leg.extract
|
|
606
|
+
? await readExtractPools(`${paths.extractsDir}/${leg.extract}`, query)
|
|
607
|
+
: EMPTY_NAME_POOLS;
|
|
608
|
+
// poi.db holds four countries; only these two legs are inside it.
|
|
609
|
+
const poiPools = leg.country === "US" || leg.country === "FR" ? readPOIPools(paths.poiDB, leg.country, query) : EMPTY_NAME_POOLS;
|
|
610
|
+
const names = mergeNamePools(extractPools, poiPools);
|
|
611
|
+
let context = contextByCountry.get(leg.country) ?? [];
|
|
612
|
+
if (leg.postcodePrefixes) {
|
|
613
|
+
const prefixes = leg.postcodePrefixes;
|
|
614
|
+
const filtered = context.filter((t) => prefixes.some((p) => (t.postcode ?? "").startsWith(p)));
|
|
615
|
+
// A leg that filters itself empty is a build-time fact worth failing on, not a silent fallback
|
|
616
|
+
// to the parent locale's rows under a different `locale` stamp.
|
|
617
|
+
if (!filtered.length) {
|
|
618
|
+
throw new Error(`${leg.locale}: no context tuples matched postcode prefixes ${prefixes.join(",")} among ${context.length} ${leg.country} rows`);
|
|
619
|
+
}
|
|
620
|
+
context = filtered;
|
|
621
|
+
}
|
|
622
|
+
return { context, ...names };
|
|
623
|
+
}
|
|
624
|
+
function emptyStats(leg, pools, promotedCount) {
|
|
625
|
+
return {
|
|
626
|
+
locale: leg.locale,
|
|
627
|
+
positives: 0,
|
|
628
|
+
negatives: 0,
|
|
629
|
+
byForm: {},
|
|
630
|
+
byDesignator: {},
|
|
631
|
+
byNegativeClass: {},
|
|
632
|
+
byRegister: {},
|
|
633
|
+
poolSizes: {
|
|
634
|
+
promoted: promotedCount,
|
|
635
|
+
context: pools.context.length,
|
|
636
|
+
venues: pools.venues.length,
|
|
637
|
+
attested: pools.attested.length,
|
|
638
|
+
rejectedVenues: pools.rejectedVenues.length,
|
|
639
|
+
longerNames: pools.longerNames.length,
|
|
640
|
+
unpromotedShapes: pools.unpromotedShapes.length,
|
|
641
|
+
},
|
|
642
|
+
};
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Slice recipe registered with the corpus builder — see the file header for the parse behaviour it exists to exercise,
|
|
646
|
+
* and `description` below for the surface form it generates.
|
|
647
|
+
*/
|
|
648
|
+
export const subVenueRecipe = {
|
|
649
|
+
name: "sub-venue",
|
|
650
|
+
description: "Venue-interior structure (#35): <sub-venue> unit + <venue> lines per promoted (designator, locale) pair, with the rejection ledger's confounds as negatives",
|
|
651
|
+
mode: "generate",
|
|
652
|
+
options: [
|
|
653
|
+
{ flag: "--lexicon <path>", description: "sub-venue lexicon JSON (default: the committed corpus/data one)" },
|
|
654
|
+
{
|
|
655
|
+
flag: "--extracts-dir <dir>",
|
|
656
|
+
description: "OSM sub-venue extract JSONLs (default: $MAILWOMAN_DATA_ROOT/sub-venue/extracts)",
|
|
657
|
+
},
|
|
658
|
+
{
|
|
659
|
+
flag: "--poi-db <path>",
|
|
660
|
+
description: "poi.db for the en-US / fr-FR pools (default: $MAILWOMAN_DATA_ROOT/poi/poi.db)",
|
|
661
|
+
},
|
|
662
|
+
{ flag: "--sub-venue-tuples <path>", description: "GB/US/FR address-context tuples JSONL" },
|
|
663
|
+
{
|
|
664
|
+
flag: "--negative-fraction <n>",
|
|
665
|
+
description: `share of rows that are confound negatives (default ${DEFAULT_NEGATIVE_FRACTION})`,
|
|
666
|
+
},
|
|
667
|
+
],
|
|
668
|
+
async run(opts, write) {
|
|
669
|
+
if (opts.count == null)
|
|
670
|
+
throw new Error("sub-venue recipe requires --count <N>");
|
|
671
|
+
const count = opts.count;
|
|
672
|
+
const negativeFraction = opts.negativeFraction ?? DEFAULT_NEGATIVE_FRACTION;
|
|
673
|
+
const extractsDir = opts.extractsDir ?? dataRootPath("sub-venue", "extracts");
|
|
674
|
+
const poiDB = opts.poiDB ?? dataRootPath("poi", "poi.db");
|
|
675
|
+
const tuplesPath = opts.subVenueTuples ?? dataRootPath("corpus", "intermediate", "house-venue-tuples-v3.jsonl");
|
|
676
|
+
const lexicon = await readSubVenueLexicon(opts.lexicon ?? defaultLexiconPath());
|
|
677
|
+
const context = {
|
|
678
|
+
write,
|
|
679
|
+
source: opts.sourceName ?? "synth-sub-venue",
|
|
680
|
+
random: makeMulberry32(opts.seed),
|
|
681
|
+
modifiers: lexicon.modifiers.filter((m) => m.shipped).map((m) => m.id),
|
|
682
|
+
designatorPhrases: lexicon.designators.filter((d) => d.tier === "subvenue").map((d) => d.id),
|
|
683
|
+
counters: { emitted: 0, skipped: 0, contaminated: 0 },
|
|
684
|
+
};
|
|
685
|
+
console.error(` reading context tuples: ${tuplesPath}`);
|
|
686
|
+
const contextByCountry = await loadContextTuples(tuplesPath, opts.seed);
|
|
687
|
+
const legPools = new Map();
|
|
688
|
+
const legStats = new Map();
|
|
689
|
+
const legPromoted = new Map();
|
|
690
|
+
for (const leg of SUBVENUE_LEGS) {
|
|
691
|
+
const promoted = promotedSurfacesFor(leg.locale, lexicon);
|
|
692
|
+
const query = {
|
|
693
|
+
promoted,
|
|
694
|
+
rejectedPhrases: rejectedPhrasesFor(leg.locale),
|
|
695
|
+
designatorPhrases: context.designatorPhrases,
|
|
696
|
+
modifiers: context.modifiers,
|
|
697
|
+
english: leg.english,
|
|
698
|
+
};
|
|
699
|
+
const pools = await buildLegPools(leg, query, contextByCountry, { extractsDir, poiDB });
|
|
700
|
+
legPromoted.set(leg.locale, promoted);
|
|
701
|
+
legPools.set(leg.locale, pools);
|
|
702
|
+
legStats.set(leg.locale, emptyStats(leg, pools, promoted.length));
|
|
703
|
+
}
|
|
704
|
+
const positiveTotal = Math.round(count * (1 - negativeFraction));
|
|
705
|
+
const positiveQuota = allocate(positiveTotal, SUBVENUE_LEGS.map((l) => l.positiveShare));
|
|
706
|
+
const negativeQuota = allocate(count - positiveTotal, SUBVENUE_LEGS.map((l) => l.negativeShare));
|
|
707
|
+
for (const [index, leg] of SUBVENUE_LEGS.entries()) {
|
|
708
|
+
const pools = legPools.get(leg.locale);
|
|
709
|
+
const stats = legStats.get(leg.locale);
|
|
710
|
+
const promoted = legPromoted.get(leg.locale);
|
|
711
|
+
const model = buildIdentifierModel(lexicon, leg.region);
|
|
712
|
+
emitPositives(context, leg, pools, promoted, model, stats, positiveQuota[index]);
|
|
713
|
+
emitNegatives(context, leg, pools, stats, negativeQuota[index]);
|
|
714
|
+
}
|
|
715
|
+
for (const stats of legStats.values()) {
|
|
716
|
+
console.error(` ${stats.locale}: +${stats.positives} positives / -${stats.negatives} negatives ` +
|
|
717
|
+
`forms=${JSON.stringify(stats.byForm)} designators=${JSON.stringify(stats.byDesignator)} ` +
|
|
718
|
+
`negclasses=${JSON.stringify(stats.byNegativeClass)} registers=${JSON.stringify(stats.byRegister)} ` +
|
|
719
|
+
`pools=${JSON.stringify(stats.poolSizes)}`);
|
|
720
|
+
}
|
|
721
|
+
return { read: count, ...context.counters };
|
|
722
|
+
},
|
|
723
|
+
};
|
|
724
|
+
//#endregion
|
|
725
|
+
//# sourceMappingURL=sub-venue.js.map
|