@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,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* `street-affix` slice recipe — the US street-affix coverage slice (the v0-parity `street_prefix` /
|
|
7
|
+
* `street_suffix` gap — both ~0% F1 in the #15 assessment, collapsed into `street`). Raises
|
|
8
|
+
* PREVALENCE of affix-split streets with format diversity so the model learns to split "N Main
|
|
9
|
+
* St" → street_prefix="N" + street="Main" + street_suffix="St", and (negative space) sharpens
|
|
10
|
+
* `street` itself. Ported from scripts/build-street-affix-slice.mjs.
|
|
11
|
+
*
|
|
12
|
+
* Reads REAL US OpenAddresses tuples and SPLITS the OA `street` field via the codex:
|
|
13
|
+
* `matchLeadingDirectional` (USPS Pub-28 C1) for the prefix, `matchTrailingSuffix` (Pub-28 C2
|
|
14
|
+
* street suffixes) for the suffix. OA streets nearly all carry a suffix; only ~10-20% carry a
|
|
15
|
+
* directional, so we INJECT a directional prefix onto a fraction of prefix-less streets to give
|
|
16
|
+
* `street_prefix` real signal. Each row varies surface form per affix — abbreviated ("N", "St")
|
|
17
|
+
* vs expanded ("North", "Street") — and varies the layout (full address / bare / street-only /
|
|
18
|
+
* venue-prefixed).
|
|
19
|
+
*
|
|
20
|
+
* LEAKAGE-SAFE EVAL (`--golden`): held-out eval uses the VERMONT source only (the corpus
|
|
21
|
+
* defaultHoldout), a different seed, and emits {raw, components} for per-locale-f1. Train uses
|
|
22
|
+
* every NON-Vermont US source.
|
|
23
|
+
*
|
|
24
|
+
* Multi-locale BALANCE (`--multilocale-count`, opts.multilocaleCount > 0): appends NO-affix
|
|
25
|
+
* native-order rows (FR/DE/IT/NL) AFTER the US affix rows, riding the same source weight, purely
|
|
26
|
+
* to keep the postcode-ORDER distribution multi-locale so a US-heavy affix slice doesn't dilute
|
|
27
|
+
* FR/DE postcode (the v0.9.8 blemish).
|
|
28
|
+
*/
|
|
29
|
+
import type { ComponentTag } from "@mailwoman/core/types";
|
|
30
|
+
import { type CorpusRecipe } from "#recipes/scaffold";
|
|
31
|
+
/**
|
|
32
|
+
* A real US skeleton tuple read from a cached OA zip.
|
|
33
|
+
*/
|
|
34
|
+
interface USTuple {
|
|
35
|
+
house_number: string;
|
|
36
|
+
street: string;
|
|
37
|
+
locality: string;
|
|
38
|
+
region: string;
|
|
39
|
+
postcode: string;
|
|
40
|
+
base_source_id: string;
|
|
41
|
+
}
|
|
42
|
+
export type SuffixBoundaryClass = "terminal-only" | "terminal-contrast";
|
|
43
|
+
/**
|
|
44
|
+
* Classify a real street surface for #1569. `terminal-only` has an ambiguous suffix-eligible name word immediately
|
|
45
|
+
* before a different terminal type (`Blue Hill Rd`); `terminal-contrast` ends at the ambiguous word itself (`Sutton
|
|
46
|
+
* Hollow`). The contrast check intentionally wins when both final words are name-prone: only the LAST token is the
|
|
47
|
+
* suffix under the canonical rule.
|
|
48
|
+
*/
|
|
49
|
+
export declare function classifySuffixBoundaryStreet(street: string): SuffixBoundaryClass | null;
|
|
50
|
+
/**
|
|
51
|
+
* Layout-shell options for {@link renderRow}. `cutoffs` are the cumulative random() boundaries for [full, bare,
|
|
52
|
+
* street-only] — the remainder is the venue shell. Defaults reproduce the original street-affix distribution
|
|
53
|
+
* (40/25/20/15) with the six template venues.
|
|
54
|
+
*/
|
|
55
|
+
interface RenderRowOpts {
|
|
56
|
+
venues?: readonly string[];
|
|
57
|
+
cutoffs?: readonly [number, number, number];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Embed the rendered street in a RANDOM layout so the model recognizes affixes wherever the street sits: full address,
|
|
61
|
+
* bare house+street, street-only (pure affix parse), or venue-prefixed.
|
|
62
|
+
*/
|
|
63
|
+
export declare function renderRow(random: () => number, base: USTuple, street: string, streetComponents: Partial<Record<ComponentTag, string>>, opts?: RenderRowOpts): {
|
|
64
|
+
fmt: string;
|
|
65
|
+
raw: string;
|
|
66
|
+
components: Partial<Record<ComponentTag, string>>;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Slice recipe registered with the corpus builder — see the file header for the parse behaviour it exists to exercise,
|
|
70
|
+
* and `description` below for the surface form it generates.
|
|
71
|
+
*/
|
|
72
|
+
export declare const streetAffixRecipe: CorpusRecipe;
|
|
73
|
+
/**
|
|
74
|
+
* #1569 root-fix slice. Both classes come from real non-Vermont OA streets and use the affix recipe's existing layout
|
|
75
|
+
* diversity. v4.3.1 makes terminal-only 80% of the mix: the first 40/60 run moved a 100-row TRAIN sample only 4→11
|
|
76
|
+
* while contrast was already 95/100 before training (93/100 after). Post-run audit found that the global affix relabel
|
|
77
|
+
* pass corrupts many already-decomposed target rows into double suffixes; do not retrain this recipe until relabel is
|
|
78
|
+
* idempotent over a decomposed street family. The 20% contrast leg remains explicit, additive to the already-strong
|
|
79
|
+
* base distribution, and B2 still checks it unchanged.
|
|
80
|
+
*
|
|
81
|
+
* V2 (corpus 0.19.0, 2026-08-10 recipe review): the v4.3.3 board split (rich venue-led rows 5/43 vs bare 53/65) showed
|
|
82
|
+
* the model separating template rows from real ones, and the venue shell was the giveaway — six fixed venue strings. v2
|
|
83
|
+
* draws the venue shell from thousands of REAL HRSA facility names and raises its share (venue 30%, full 35%, bare 20%,
|
|
84
|
+
* street-only 15%). Dose policy moved to the recipe's config side: weight ≤4 effective passes per run (Muennighoff
|
|
85
|
+
* 2023's repetition knee) and the source is excluded from the augmentation pool — see the v4.4.0 config.
|
|
86
|
+
*/
|
|
87
|
+
export declare const suffixBoundaryRecipe: CorpusRecipe;
|
|
88
|
+
export {};
|
|
89
|
+
//# sourceMappingURL=street-affix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"street-affix.d.ts","sourceRoot":"","sources":["../../lib/recipes/street-affix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAYH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAKzD,OAAO,EAA+D,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAqFlH;;GAEG;AACH,UAAU,OAAO;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;CACtB;AAiFD,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,mBAAmB,CAAA;AAKvE;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAevF;AAiGD;;;;GAIG;AACH,UAAU,aAAa;IACtB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAC3C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACxB,MAAM,EAAE,MAAM,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,EACvD,IAAI,GAAE,aAAkB,GACtB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,CA8BjF;AAsCD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAiM/B,CAAA;AAOD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,EAAE,YA0JlC,CAAA"}
|
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* `street-affix` slice recipe — the US street-affix coverage slice (the v0-parity `street_prefix` /
|
|
7
|
+
* `street_suffix` gap — both ~0% F1 in the #15 assessment, collapsed into `street`). Raises
|
|
8
|
+
* PREVALENCE of affix-split streets with format diversity so the model learns to split "N Main
|
|
9
|
+
* St" → street_prefix="N" + street="Main" + street_suffix="St", and (negative space) sharpens
|
|
10
|
+
* `street` itself. Ported from scripts/build-street-affix-slice.mjs.
|
|
11
|
+
*
|
|
12
|
+
* Reads REAL US OpenAddresses tuples and SPLITS the OA `street` field via the codex:
|
|
13
|
+
* `matchLeadingDirectional` (USPS Pub-28 C1) for the prefix, `matchTrailingSuffix` (Pub-28 C2
|
|
14
|
+
* street suffixes) for the suffix. OA streets nearly all carry a suffix; only ~10-20% carry a
|
|
15
|
+
* directional, so we INJECT a directional prefix onto a fraction of prefix-less streets to give
|
|
16
|
+
* `street_prefix` real signal. Each row varies surface form per affix — abbreviated ("N", "St")
|
|
17
|
+
* vs expanded ("North", "Street") — and varies the layout (full address / bare / street-only /
|
|
18
|
+
* venue-prefixed).
|
|
19
|
+
*
|
|
20
|
+
* LEAKAGE-SAFE EVAL (`--golden`): held-out eval uses the VERMONT source only (the corpus
|
|
21
|
+
* defaultHoldout), a different seed, and emits {raw, components} for per-locale-f1. Train uses
|
|
22
|
+
* every NON-Vermont US source.
|
|
23
|
+
*
|
|
24
|
+
* Multi-locale BALANCE (`--multilocale-count`, opts.multilocaleCount > 0): appends NO-affix
|
|
25
|
+
* native-order rows (FR/DE/IT/NL) AFTER the US affix rows, riding the same source weight, purely
|
|
26
|
+
* to keep the postcode-ORDER distribution multi-locale so a US-heavy affix slice doesn't dilute
|
|
27
|
+
* FR/DE postcode (the v0.9.8 blemish).
|
|
28
|
+
*/
|
|
29
|
+
import { DirectionalAbbreviation, lookupDirectional, matchCase, matchLeadingDirectional, matchTrailingSuffix, renderDirectional, US_STREET_SUFFIX_PREFERRED_ABBR, } from "@mailwoman/codex/us";
|
|
30
|
+
import { dataRootPath } from "@mailwoman/core/data-root";
|
|
31
|
+
import { stableSourceID } from "#adapters/utils";
|
|
32
|
+
import { NAME_PRONE_US_SUFFIXES } from "#name-prone-us-suffixes";
|
|
33
|
+
import { makeMulberry32, readCSVRecords, readOATuples, sliceSourceID } from "#recipes/scaffold";
|
|
34
|
+
import { pick } from "#synthesizers/utils";
|
|
35
|
+
import { alignRow } from "#utils";
|
|
36
|
+
const TRAIN_SOURCES = [
|
|
37
|
+
{ zip: dataRootPath("oa-cache", "us__ca__berkeley.zip"), csv: "us/ca/berkeley.csv", region: "CA" },
|
|
38
|
+
{ zip: dataRootPath("oa-cache", "us__ca__marin.zip"), csv: "us/ca/marin.csv", region: "CA" },
|
|
39
|
+
{ zip: dataRootPath("oa-cache", "us__dc__statewide.zip"), csv: "us/dc/statewide.csv", region: "DC" },
|
|
40
|
+
{ zip: dataRootPath("oa-cache", "us__ia__statewide.zip"), csv: "us/ia/statewide.csv", region: "IA" },
|
|
41
|
+
{ zip: dataRootPath("oa-cache", "us__il__cook.zip"), csv: "us/il/cook.csv", region: "IL" },
|
|
42
|
+
{ zip: dataRootPath("oa-cache", "us__mt__statewide.zip"), csv: "us/mt/statewide.csv", region: "MT" },
|
|
43
|
+
{ zip: dataRootPath("oa-cache", "us__sd__statewide.zip"), csv: "us/sd/statewide.csv", region: "SD" },
|
|
44
|
+
];
|
|
45
|
+
const EVAL_SOURCE = {
|
|
46
|
+
zip: dataRootPath("oa-cache", "us__vt__statewide.zip"),
|
|
47
|
+
csv: "us/vt/statewide.csv",
|
|
48
|
+
region: "VT",
|
|
49
|
+
};
|
|
50
|
+
const MULTILOCALE_SOURCES = [
|
|
51
|
+
{
|
|
52
|
+
zip: dataRootPath("oa-cache", "de__sn__statewide.zip"),
|
|
53
|
+
csv: "de/sn/statewide.csv",
|
|
54
|
+
iso2: "DE",
|
|
55
|
+
region: "",
|
|
56
|
+
order: "eu",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
zip: dataRootPath("oa-cache", "fr__countrywide.zip"),
|
|
60
|
+
csv: "fr/countrywide.csv",
|
|
61
|
+
iso2: "FR",
|
|
62
|
+
region: "",
|
|
63
|
+
order: "fr",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
zip: dataRootPath("oa-cache", "it__countrywide.zip"),
|
|
67
|
+
csv: "it/countrywide.csv",
|
|
68
|
+
iso2: "IT",
|
|
69
|
+
region: "",
|
|
70
|
+
order: "eu",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
zip: dataRootPath("oa-cache", "nl__countrywide.zip"),
|
|
74
|
+
csv: "nl/countrywide.csv",
|
|
75
|
+
iso2: "NL",
|
|
76
|
+
region: "",
|
|
77
|
+
order: "eu",
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
const MULTILOCALE_EVAL_SOURCES = [
|
|
81
|
+
{ zip: dataRootPath("oa-cache", "de__berlin.zip"), csv: "de/berlin.csv", iso2: "DE", region: "", order: "eu" },
|
|
82
|
+
];
|
|
83
|
+
/**
|
|
84
|
+
* ["N","E","S","W","NE","NW","SE","SW"].
|
|
85
|
+
*/
|
|
86
|
+
const DIRECTIONAL_ABBRS = Object.values(DirectionalAbbreviation);
|
|
87
|
+
/**
|
|
88
|
+
* Fraction of prefix-less streets that get a synthetic directional.
|
|
89
|
+
*/
|
|
90
|
+
const INJECT_PREFIX_PROB = 0.3;
|
|
91
|
+
/**
|
|
92
|
+
* Stream real US tuples (number/street/city/postcode) out of a cached OA zip.
|
|
93
|
+
*/
|
|
94
|
+
async function readTuples(source) {
|
|
95
|
+
return readOATuples(source, {
|
|
96
|
+
extra: (fields, _row, key) => ({
|
|
97
|
+
...fields,
|
|
98
|
+
region: source.region,
|
|
99
|
+
base_source_id: `openaddresses:${source.csv}:${key}`,
|
|
100
|
+
}),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
const title = (s) => s
|
|
104
|
+
.toLowerCase()
|
|
105
|
+
.split(/\s+/)
|
|
106
|
+
.map((w) => (w ? w.charAt(0).toUpperCase() + w.slice(1) : w))
|
|
107
|
+
.join(" ");
|
|
108
|
+
const isSuffixOrDirectional = (word) => matchTrailingSuffix(word) !== null || matchLeadingDirectional(word) !== null;
|
|
109
|
+
/**
|
|
110
|
+
* Split an OA street into { prefix?, name, suffix } using the codex. Requires a trailing suffix and a non-empty name
|
|
111
|
+
* that isn't itself an affix token. Returns null when the street has no usable suffix.
|
|
112
|
+
*/
|
|
113
|
+
function parseStreet(street, opts = {}) {
|
|
114
|
+
let words = street.trim().split(/\s+/);
|
|
115
|
+
if (words.length < 2)
|
|
116
|
+
return null;
|
|
117
|
+
let prefix = null;
|
|
118
|
+
// Leading directional — only if it leaves ≥2 words behind (room for a name + suffix).
|
|
119
|
+
const lead = matchLeadingDirectional(street);
|
|
120
|
+
if (lead && words.length > 2) {
|
|
121
|
+
prefix = { canonical: lead.canonical, abbreviation: lead.abbreviation };
|
|
122
|
+
words = words.slice(1);
|
|
123
|
+
}
|
|
124
|
+
// Trailing USPS suffix — only if it leaves ≥1 word for the name.
|
|
125
|
+
const trail = matchTrailingSuffix(words.join(" "));
|
|
126
|
+
if (!trail || words.length < 2)
|
|
127
|
+
return null;
|
|
128
|
+
const suffix = trail.canonical;
|
|
129
|
+
const name = words.slice(0, -1).join(" ");
|
|
130
|
+
if (!name)
|
|
131
|
+
return null;
|
|
132
|
+
if (isSuffixOrDirectional(name)) {
|
|
133
|
+
const nameTail = matchTrailingSuffix(name);
|
|
134
|
+
if (!opts.allowNameProneTail || !nameTail || !NAME_PRONE_US_SUFFIXES.has(nameTail.canonical))
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
return { prefix, name, suffix };
|
|
138
|
+
}
|
|
139
|
+
// A terminal-only surface needs a name word before the penultimate suffix (`Blue Hill Rd`): three words at least.
|
|
140
|
+
const TERMINAL_ONLY_MIN_WORDS = 3;
|
|
141
|
+
/**
|
|
142
|
+
* Classify a real street surface for #1569. `terminal-only` has an ambiguous suffix-eligible name word immediately
|
|
143
|
+
* before a different terminal type (`Blue Hill Rd`); `terminal-contrast` ends at the ambiguous word itself (`Sutton
|
|
144
|
+
* Hollow`). The contrast check intentionally wins when both final words are name-prone: only the LAST token is the
|
|
145
|
+
* suffix under the canonical rule.
|
|
146
|
+
*/
|
|
147
|
+
export function classifySuffixBoundaryStreet(street) {
|
|
148
|
+
const words = street.trim().split(/\s+/);
|
|
149
|
+
if (words.length < 2)
|
|
150
|
+
return null;
|
|
151
|
+
const terminal = matchTrailingSuffix(words.at(-1));
|
|
152
|
+
if (!terminal)
|
|
153
|
+
return null;
|
|
154
|
+
if (NAME_PRONE_US_SUFFIXES.has(terminal.canonical))
|
|
155
|
+
return "terminal-contrast";
|
|
156
|
+
if (words.length < TERMINAL_ONLY_MIN_WORDS)
|
|
157
|
+
return null;
|
|
158
|
+
const penultimate = matchTrailingSuffix(words.at(-2));
|
|
159
|
+
return penultimate && NAME_PRONE_US_SUFFIXES.has(penultimate.canonical) ? "terminal-only" : null;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Render the affix-split street in random surface forms (abbrev vs expanded per affix), Title-cased.
|
|
163
|
+
*/
|
|
164
|
+
function renderStreet(random, parsed) {
|
|
165
|
+
const name = title(parsed.name);
|
|
166
|
+
const parts = [];
|
|
167
|
+
const components = { street: name };
|
|
168
|
+
// Prefix: natural (from parse) or injected onto a prefix-less street to boost street_prefix signal.
|
|
169
|
+
let prefix = parsed.prefix;
|
|
170
|
+
if (!prefix && random() < INJECT_PREFIX_PROB) {
|
|
171
|
+
const m = lookupDirectional(pick(DIRECTIONAL_ABBRS, random));
|
|
172
|
+
prefix = { canonical: m.directional, abbreviation: m.abbreviation };
|
|
173
|
+
}
|
|
174
|
+
if (prefix) {
|
|
175
|
+
const rendered = renderDirectional(prefix, random() < 0.5 ? "abbr" : "full", "Aa"); // "Aa" → Title-case
|
|
176
|
+
components.street_prefix = rendered;
|
|
177
|
+
parts.push(rendered);
|
|
178
|
+
}
|
|
179
|
+
parts.push(name);
|
|
180
|
+
// Suffix: abbreviated ("St") vs expanded ("Street"), Title-cased to match the name.
|
|
181
|
+
const full = title(parsed.suffix);
|
|
182
|
+
// canonical is uppercase word → "Street"
|
|
183
|
+
const abbr = matchCase(US_STREET_SUFFIX_PREFERRED_ABBR[parsed.suffix], "Aa");
|
|
184
|
+
// "AVE" → "Ave"
|
|
185
|
+
const renderedSuffix = random() < 0.5 ? abbr : full;
|
|
186
|
+
components.street_suffix = renderedSuffix;
|
|
187
|
+
parts.push(renderedSuffix);
|
|
188
|
+
return { street: parts.join(" "), components };
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Synthetic recipient/venue prefixes — the arena's "JOHN DOE, ACME INC, …" pattern.
|
|
192
|
+
*/
|
|
193
|
+
const VENUES = ["John Doe", "Jane Smith", "Acme Inc", "Wayne Enterprises", "Maria Garcia", "Riverside Clinic"];
|
|
194
|
+
/**
|
|
195
|
+
* Real-venue pool for the suffix-boundary v2 venue shell (corpus 0.19.0). The 2026-08-10 recipe review found the
|
|
196
|
+
* v0.18.x slice's venue-led rows detectable as templates (six fixed venue strings), and the frozen B1 board's failures
|
|
197
|
+
* concentrate in exactly that shell (rich rows 5/43 vs bare 53/65 at v4.3.3 step-40k). HRSA's health-center site file
|
|
198
|
+
* supplies thousands of REAL US facility names ('Alburg Health Center'-register), US-government public domain, already
|
|
199
|
+
* a corpus source (`usgov-hrsa-fqhc`). Kept verbatim (including the ~11% all-caps names — real register diversity);
|
|
200
|
+
* comma-carrying names are dropped because the venue layout uses commas as its field delimiter.
|
|
201
|
+
*/
|
|
202
|
+
const VENUE_POOL_CSV = dataRootPath("corpus", "sources", "usgov-hrsa-fqhc", "Health_Center_Service_Delivery_and_LookAlike_Sites.csv");
|
|
203
|
+
// Facility-name length window: shorter reads as an initialism, longer as a sentence.
|
|
204
|
+
const VENUE_NAME_MIN_LENGTH = 3;
|
|
205
|
+
const VENUE_NAME_MAX_LENGTH = 60;
|
|
206
|
+
async function readVenuePool(csvPath) {
|
|
207
|
+
const seen = new Set();
|
|
208
|
+
const pool = [];
|
|
209
|
+
for await (const record of readCSVRecords(csvPath)) {
|
|
210
|
+
const name = (record["site name"] ?? record["Site Name"] ?? "").trim().replaceAll(/\s+/gu, " ");
|
|
211
|
+
if (name.length < VENUE_NAME_MIN_LENGTH ||
|
|
212
|
+
name.length > VENUE_NAME_MAX_LENGTH ||
|
|
213
|
+
name.includes(",") ||
|
|
214
|
+
!/\p{L}/u.test(name))
|
|
215
|
+
continue;
|
|
216
|
+
const key = name.toLowerCase();
|
|
217
|
+
if (seen.has(key))
|
|
218
|
+
continue;
|
|
219
|
+
seen.add(key);
|
|
220
|
+
pool.push(name);
|
|
221
|
+
}
|
|
222
|
+
return pool;
|
|
223
|
+
}
|
|
224
|
+
const tail = (loc, reg, pc) => (pc ? `${loc}, ${reg} ${pc}` : `${loc}, ${reg}`);
|
|
225
|
+
/**
|
|
226
|
+
* Embed the rendered street in a RANDOM layout so the model recognizes affixes wherever the street sits: full address,
|
|
227
|
+
* bare house+street, street-only (pure affix parse), or venue-prefixed.
|
|
228
|
+
*/
|
|
229
|
+
export function renderRow(random, base, street, streetComponents, opts = {}) {
|
|
230
|
+
const venues = opts.venues ?? VENUES;
|
|
231
|
+
const [fullCutoff, bareCutoff, streetOnlyCutoff] = opts.cutoffs ?? [0.4, 0.65, 0.85];
|
|
232
|
+
const hn = base.house_number, loc = base.locality, reg = base.region, pc = base.postcode;
|
|
233
|
+
const road = `${hn} ${street}`;
|
|
234
|
+
const withRoad = { house_number: hn, ...streetComponents };
|
|
235
|
+
const r = random();
|
|
236
|
+
if (r < fullCutoff)
|
|
237
|
+
return {
|
|
238
|
+
fmt: "full",
|
|
239
|
+
raw: `${road}, ${tail(loc, reg, pc)}`,
|
|
240
|
+
components: { ...withRoad, locality: loc, region: reg, ...(pc ? { postcode: pc } : {}) },
|
|
241
|
+
};
|
|
242
|
+
if (r < bareCutoff)
|
|
243
|
+
return { fmt: "bare", raw: road, components: withRoad };
|
|
244
|
+
if (r < streetOnlyCutoff)
|
|
245
|
+
return { fmt: "street-only", raw: street, components: { ...streetComponents } };
|
|
246
|
+
const v = pick(venues, random);
|
|
247
|
+
return {
|
|
248
|
+
fmt: "venue",
|
|
249
|
+
raw: `${v}, ${road}, ${tail(loc, reg, pc)}`,
|
|
250
|
+
components: { venue: v, ...withRoad, locality: loc, region: reg, ...(pc ? { postcode: pc } : {}) },
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Capped reader for the multi-locale BALANCE sources. The FR/IT/NL countrywide extracts are GB-scale, so this reads
|
|
255
|
+
* only as far as `limit` distinct tuples — the `break` closes the reader and releases the archive. Only keeps tuples
|
|
256
|
+
* that carry a POSTCODE.
|
|
257
|
+
*/
|
|
258
|
+
async function readBalanceTuples(source, limit) {
|
|
259
|
+
return readOATuples(source, {
|
|
260
|
+
limit,
|
|
261
|
+
requirePostcode: true,
|
|
262
|
+
extra: (fields, row) => ({
|
|
263
|
+
...fields,
|
|
264
|
+
region: row.region || source.region,
|
|
265
|
+
iso2: source.iso2,
|
|
266
|
+
order: source.order,
|
|
267
|
+
}),
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Render a non-US BALANCE row in native order — NO affix split, NO country token. `street` is the OA value verbatim.
|
|
272
|
+
* The sole job is to put a postcode in its native position so the slice doesn't pull the model US-ward.
|
|
273
|
+
*/
|
|
274
|
+
function renderBalanceRow(t) {
|
|
275
|
+
const { house_number: hn, street, locality: loc, postcode: pc, order } = t;
|
|
276
|
+
// region is intentionally omitted — it isn't rendered in `raw`, so labeling it would fail alignment.
|
|
277
|
+
const components = { house_number: hn, street, locality: loc, postcode: pc };
|
|
278
|
+
const raw = order === "fr"
|
|
279
|
+
? `${hn} ${street}, ${pc} ${loc}` // French: number-street, postcode-city
|
|
280
|
+
: `${street} ${hn}, ${pc} ${loc}`;
|
|
281
|
+
// DE/IT/NL: street-number, postcode-city
|
|
282
|
+
return { raw, components };
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Slice recipe registered with the corpus builder — see the file header for the parse behaviour it exists to exercise,
|
|
286
|
+
* and `description` below for the surface form it generates.
|
|
287
|
+
*/
|
|
288
|
+
export const streetAffixRecipe = {
|
|
289
|
+
name: "street-affix",
|
|
290
|
+
description: "US street-affix rows: OA streets split into street_prefix/street/street_suffix (+ multilocale balance)",
|
|
291
|
+
mode: "generate",
|
|
292
|
+
options: [
|
|
293
|
+
{
|
|
294
|
+
flag: "--multilocale-count <N>",
|
|
295
|
+
description: "Append N no-affix native-order balance rows (FR/DE/IT/NL). Default 0",
|
|
296
|
+
},
|
|
297
|
+
],
|
|
298
|
+
async run(opts, write) {
|
|
299
|
+
// Legacy build-street-affix-slice.mjs seeded `mulberry32(opts.seed)`.
|
|
300
|
+
const random = makeMulberry32(opts.seed);
|
|
301
|
+
const count = opts.count ?? 50_000;
|
|
302
|
+
const source = opts.sourceName ?? "synth-affix";
|
|
303
|
+
const multilocaleCount = opts.multilocaleCount ?? 0;
|
|
304
|
+
const sources = opts.golden ? [EVAL_SOURCE] : TRAIN_SOURCES;
|
|
305
|
+
const pool = [];
|
|
306
|
+
for (const s of sources) {
|
|
307
|
+
const t = await readTuples(s);
|
|
308
|
+
console.error(` ${s.csv}: ${t.length} unique tuples`);
|
|
309
|
+
for (const x of t) {
|
|
310
|
+
pool.push(x);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (!pool.length) {
|
|
314
|
+
throw new Error(`No US tuples found — are the cached OA zips present in ${dataRootPath("oa-cache")}?`);
|
|
315
|
+
}
|
|
316
|
+
let emitted = 0;
|
|
317
|
+
let skipped = 0;
|
|
318
|
+
let noAffix = 0;
|
|
319
|
+
let guard = 0;
|
|
320
|
+
const formatCounts = {};
|
|
321
|
+
const affixCounts = { prefix: 0, suffix: 0, both: 0 };
|
|
322
|
+
const N = pool.length;
|
|
323
|
+
while (emitted < count && guard++ < count * 10) {
|
|
324
|
+
const base = pool[Math.floor(random() * N)];
|
|
325
|
+
const parsed = parseStreet(base.street);
|
|
326
|
+
if (!parsed) {
|
|
327
|
+
noAffix++;
|
|
328
|
+
continue;
|
|
329
|
+
}
|
|
330
|
+
const { street, components: streetComponents } = renderStreet(random, parsed);
|
|
331
|
+
const { fmt, raw, components } = renderRow(random, base, street, streetComponents);
|
|
332
|
+
// Every affix surface form must survive verbatim in raw, else alignment can't label it.
|
|
333
|
+
const surfaces = [streetComponents.street_prefix, streetComponents.street, streetComponents.street_suffix].filter((s) => Boolean(s));
|
|
334
|
+
if (!surfaces.every((s) => raw.includes(s))) {
|
|
335
|
+
skipped++;
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
formatCounts[fmt] = (formatCounts[fmt] ?? 0) + 1;
|
|
339
|
+
const hasP = !!streetComponents.street_prefix;
|
|
340
|
+
if (hasP && streetComponents.street_suffix) {
|
|
341
|
+
affixCounts.both++;
|
|
342
|
+
}
|
|
343
|
+
else if (hasP) {
|
|
344
|
+
affixCounts.prefix++;
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
affixCounts.suffix++;
|
|
348
|
+
}
|
|
349
|
+
if (opts.golden) {
|
|
350
|
+
write(JSON.stringify({ raw, components, country: "US" }) + "\n");
|
|
351
|
+
emitted++;
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
354
|
+
const canonical = {
|
|
355
|
+
raw,
|
|
356
|
+
components,
|
|
357
|
+
country: "US",
|
|
358
|
+
locale: "en-US",
|
|
359
|
+
source,
|
|
360
|
+
source_id: stableSourceID(source, components),
|
|
361
|
+
corpus_version: "0.4.0",
|
|
362
|
+
license: "OpenAddresses US (non-VT) skeletons, street split via USPS Pub-28 C1/C2 (codex)",
|
|
363
|
+
};
|
|
364
|
+
const aligned = alignRow(canonical);
|
|
365
|
+
if (aligned.kind !== "labeled" || !aligned.row) {
|
|
366
|
+
skipped++;
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
write(JSON.stringify({ ...aligned.row, synth_method: "affix", synth_base_id: null }) + "\n");
|
|
370
|
+
emitted++;
|
|
371
|
+
}
|
|
372
|
+
// ── Multi-locale balance rows (--multilocale-count) ─────────────────────────────────────────────
|
|
373
|
+
// Appended AFTER the US affix rows so the US affix signal is unchanged (same `--count`), and the
|
|
374
|
+
// non-US rows ride the SAME source weight. Native-order postcodes, no affix labels.
|
|
375
|
+
let balanceEmitted = 0;
|
|
376
|
+
let balanceSkipped = 0;
|
|
377
|
+
const balanceISO = {};
|
|
378
|
+
if (multilocaleCount > 0) {
|
|
379
|
+
const mlSources = opts.golden ? MULTILOCALE_EVAL_SOURCES : MULTILOCALE_SOURCES;
|
|
380
|
+
const perSource = Math.ceil((multilocaleCount * 3) / mlSources.length); // over-read; balance locales
|
|
381
|
+
const mlPool = [];
|
|
382
|
+
for (const s of mlSources) {
|
|
383
|
+
const t = await readBalanceTuples(s, perSource);
|
|
384
|
+
console.error(` balance ${s.csv} (${s.iso2}): ${t.length} tuples`);
|
|
385
|
+
for (const x of t) {
|
|
386
|
+
mlPool.push(x);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
const M = mlPool.length;
|
|
390
|
+
let mlGuard = 0;
|
|
391
|
+
// oxlint-disable-next-line eslint/no-unmodified-loop-condition -- `M > 0` is an invariant guard against an empty pool, not a progress condition
|
|
392
|
+
while (M > 0 && balanceEmitted < multilocaleCount && mlGuard++ < multilocaleCount * 10) {
|
|
393
|
+
const t = mlPool[Math.floor(random() * M)];
|
|
394
|
+
const { raw, components } = renderBalanceRow(t);
|
|
395
|
+
// Every component surface must survive in raw, else alignment can't label it.
|
|
396
|
+
if (![components.street, components.locality, components.postcode].every((s) => !!s && raw.includes(s))) {
|
|
397
|
+
balanceSkipped++;
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
balanceISO[t.iso2] = (balanceISO[t.iso2] ?? 0) + 1;
|
|
401
|
+
const locale = `${t.iso2.toLowerCase()}-${t.iso2}`;
|
|
402
|
+
if (opts.golden) {
|
|
403
|
+
write(JSON.stringify({ raw, components, country: t.iso2 }) + "\n");
|
|
404
|
+
balanceEmitted++;
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
407
|
+
const canonical = {
|
|
408
|
+
raw,
|
|
409
|
+
components,
|
|
410
|
+
country: t.iso2,
|
|
411
|
+
locale,
|
|
412
|
+
source,
|
|
413
|
+
source_id: stableSourceID(source, components),
|
|
414
|
+
corpus_version: "0.4.0",
|
|
415
|
+
license: "OpenAddresses non-US skeletons (native-order postcode balance for the affix slice)",
|
|
416
|
+
};
|
|
417
|
+
const aligned = alignRow(canonical);
|
|
418
|
+
if (aligned.kind !== "labeled" || !aligned.row) {
|
|
419
|
+
balanceSkipped++;
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
write(JSON.stringify({ ...aligned.row, synth_method: "affix-balance", synth_base_id: null }) + "\n");
|
|
423
|
+
balanceEmitted++;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
console.error(`Done: emitted ${emitted} affix rows, skipped ${skipped}, no-affix ${noAffix} (pool ${pool.length}).\n` +
|
|
427
|
+
` formats: ${JSON.stringify(formatCounts)}\n` +
|
|
428
|
+
` affix mix: ${JSON.stringify(affixCounts)}` +
|
|
429
|
+
(multilocaleCount > 0
|
|
430
|
+
? `\n balance: emitted ${balanceEmitted}, skipped ${balanceSkipped}, iso ${JSON.stringify(balanceISO)}`
|
|
431
|
+
: ""));
|
|
432
|
+
return { emitted: emitted + balanceEmitted, skipped: skipped + balanceSkipped };
|
|
433
|
+
},
|
|
434
|
+
};
|
|
435
|
+
// The venue shell needs a real register: fewer names than this and the rows read as templates again.
|
|
436
|
+
const VENUE_POOL_MIN_SIZE = 500;
|
|
437
|
+
// While both classes are open: 80% terminal-only, 20% terminal-contrast.
|
|
438
|
+
const TERMINAL_ONLY_SHARE = 0.8;
|
|
439
|
+
/**
|
|
440
|
+
* #1569 root-fix slice. Both classes come from real non-Vermont OA streets and use the affix recipe's existing layout
|
|
441
|
+
* diversity. v4.3.1 makes terminal-only 80% of the mix: the first 40/60 run moved a 100-row TRAIN sample only 4→11
|
|
442
|
+
* while contrast was already 95/100 before training (93/100 after). Post-run audit found that the global affix relabel
|
|
443
|
+
* pass corrupts many already-decomposed target rows into double suffixes; do not retrain this recipe until relabel is
|
|
444
|
+
* idempotent over a decomposed street family. The 20% contrast leg remains explicit, additive to the already-strong
|
|
445
|
+
* base distribution, and B2 still checks it unchanged.
|
|
446
|
+
*
|
|
447
|
+
* V2 (corpus 0.19.0, 2026-08-10 recipe review): the v4.3.3 board split (rich venue-led rows 5/43 vs bare 53/65) showed
|
|
448
|
+
* the model separating template rows from real ones, and the venue shell was the giveaway — six fixed venue strings. v2
|
|
449
|
+
* draws the venue shell from thousands of REAL HRSA facility names and raises its share (venue 30%, full 35%, bare 20%,
|
|
450
|
+
* street-only 15%). Dose policy moved to the recipe's config side: weight ≤4 effective passes per run (Muennighoff
|
|
451
|
+
* 2023's repetition knee) and the source is excluded from the augmentation pool — see the v4.4.0 config.
|
|
452
|
+
*/
|
|
453
|
+
export const suffixBoundaryRecipe = {
|
|
454
|
+
name: "suffix-boundary",
|
|
455
|
+
description: "US #1569 suffix boundary: OA terminal-only positives + over-sampled terminal contrasts",
|
|
456
|
+
mode: "generate",
|
|
457
|
+
async run(opts, write) {
|
|
458
|
+
const random = makeMulberry32(opts.seed);
|
|
459
|
+
const count = opts.count ?? 30_000;
|
|
460
|
+
const source = opts.sourceName ?? "synth-suffix-boundary";
|
|
461
|
+
const sources = opts.golden ? [EVAL_SOURCE] : TRAIN_SOURCES;
|
|
462
|
+
// v2 venue shell: real facility names, loud when the source file is missing or thin.
|
|
463
|
+
const venuePool = await readVenuePool(VENUE_POOL_CSV);
|
|
464
|
+
if (venuePool.length < VENUE_POOL_MIN_SIZE) {
|
|
465
|
+
throw new Error(`suffix-boundary v2 venue pool too thin: ${venuePool.length} names from ${VENUE_POOL_CSV} — ` +
|
|
466
|
+
"is the usgov-hrsa-fqhc source present?");
|
|
467
|
+
}
|
|
468
|
+
const shell = { venues: venuePool, cutoffs: [0.35, 0.55, 0.7] };
|
|
469
|
+
const pool = {
|
|
470
|
+
"terminal-only": [],
|
|
471
|
+
"terminal-contrast": [],
|
|
472
|
+
};
|
|
473
|
+
for (const s of sources) {
|
|
474
|
+
for (const tuple of await readTuples(s)) {
|
|
475
|
+
const rowClass = classifySuffixBoundaryStreet(tuple.street);
|
|
476
|
+
if (rowClass) {
|
|
477
|
+
pool[rowClass].push(tuple);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
if (!pool["terminal-only"].length || !pool["terminal-contrast"].length) {
|
|
482
|
+
throw new Error(`Suffix-boundary source class missing: terminal-only=${pool["terminal-only"].length}, ` +
|
|
483
|
+
`terminal-contrast=${pool["terminal-contrast"].length}`);
|
|
484
|
+
}
|
|
485
|
+
let emitted = 0;
|
|
486
|
+
let skipped = 0;
|
|
487
|
+
const classCounts = { "terminal-only": 0, "terminal-contrast": 0 };
|
|
488
|
+
const terminalOnlyTarget = Math.round(count * 0.8);
|
|
489
|
+
const classTargets = {
|
|
490
|
+
"terminal-only": terminalOnlyTarget,
|
|
491
|
+
"terminal-contrast": count - terminalOnlyTarget,
|
|
492
|
+
};
|
|
493
|
+
const formatCounts = {};
|
|
494
|
+
let stemPairs = 0;
|
|
495
|
+
const emitOne = (rowClass, base, parsed, method) => {
|
|
496
|
+
const { street, components: streetComponents } = renderStreet(random, parsed);
|
|
497
|
+
const { fmt, raw, components } = renderRow(random, base, street, streetComponents, shell);
|
|
498
|
+
const canonical = {
|
|
499
|
+
raw,
|
|
500
|
+
components,
|
|
501
|
+
country: "US",
|
|
502
|
+
locale: "en-US",
|
|
503
|
+
source,
|
|
504
|
+
source_id: sliceSourceID(source, { ...components, class: rowClass, n: String(emitted) }),
|
|
505
|
+
corpus_version: "0.19.0",
|
|
506
|
+
license: "OpenAddresses US (non-VT) skeletons; terminal suffix labels via USPS Pub-28 codex; venue shell from HRSA site names (US public domain)",
|
|
507
|
+
};
|
|
508
|
+
const aligned = alignRow(canonical);
|
|
509
|
+
if (aligned.kind !== "labeled" || !aligned.row) {
|
|
510
|
+
skipped++;
|
|
511
|
+
return false;
|
|
512
|
+
}
|
|
513
|
+
write(JSON.stringify({ ...aligned.row, synth_method: method, synth_base_id: base.base_source_id }) + "\n");
|
|
514
|
+
classCounts[rowClass]++;
|
|
515
|
+
formatCounts[fmt] = (formatCounts[fmt] ?? 0) + 1;
|
|
516
|
+
emitted++;
|
|
517
|
+
return true;
|
|
518
|
+
};
|
|
519
|
+
// oxlint-disable-next-line eslint/no-unmodified-loop-condition -- emitted/skipped advance inside emitOne (a closure); the rule cannot see through the call
|
|
520
|
+
while (emitted < count && emitted + skipped < count * 10) {
|
|
521
|
+
const terminalOnlyOpen = classCounts["terminal-only"] < classTargets["terminal-only"];
|
|
522
|
+
const terminalContrastOpen = classCounts["terminal-contrast"] < classTargets["terminal-contrast"];
|
|
523
|
+
const rowClass = terminalOnlyOpen && terminalContrastOpen
|
|
524
|
+
? random() < TERMINAL_ONLY_SHARE
|
|
525
|
+
? "terminal-only"
|
|
526
|
+
: "terminal-contrast"
|
|
527
|
+
: terminalContrastOpen
|
|
528
|
+
? "terminal-contrast"
|
|
529
|
+
: "terminal-only";
|
|
530
|
+
const classPool = pool[rowClass];
|
|
531
|
+
const base = pick(classPool, random);
|
|
532
|
+
const parsed = parseStreet(base.street, { allowNameProneTail: rowClass === "terminal-only" });
|
|
533
|
+
if (!parsed) {
|
|
534
|
+
skipped++;
|
|
535
|
+
continue;
|
|
536
|
+
}
|
|
537
|
+
if (!emitOne(rowClass, base, parsed, `suffix-boundary:${rowClass}`))
|
|
538
|
+
continue;
|
|
539
|
+
// Stem-pair hard negative (v2, 2026-08-10 recipe review): after a terminal-only row
|
|
540
|
+
// ('Menlo Park' + 'Road'), also emit the SAME stem without its true suffix as a
|
|
541
|
+
// contrast row ('Menlo' + 'Park' under the canonical last-token rule). Sharing the stem
|
|
542
|
+
// forces the model to key on the licensing evidence — the trailing true suffix — rather
|
|
543
|
+
// than on name identity. Dose-neutral: these fill the existing 20% contrast target.
|
|
544
|
+
if (rowClass === "terminal-only" &&
|
|
545
|
+
classCounts["terminal-contrast"] < classTargets["terminal-contrast"] &&
|
|
546
|
+
emitted < count &&
|
|
547
|
+
random() < 0.5) {
|
|
548
|
+
const stemParsed = parseStreet(parsed.name);
|
|
549
|
+
if (stemParsed &&
|
|
550
|
+
emitOne("terminal-contrast", base, stemParsed, "suffix-boundary:terminal-contrast:stem-pair")) {
|
|
551
|
+
stemPairs++;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
console.error(`Done: emitted ${emitted}, skipped ${skipped}; source pools ${JSON.stringify({
|
|
556
|
+
terminalOnly: pool["terminal-only"].length,
|
|
557
|
+
terminalContrast: pool["terminal-contrast"].length,
|
|
558
|
+
})}; classes ${JSON.stringify(classCounts)}; stem pairs ${stemPairs}; ` +
|
|
559
|
+
`venue pool ${venuePool.length}; formats ${JSON.stringify(formatCounts)}`);
|
|
560
|
+
return { emitted, skipped };
|
|
561
|
+
},
|
|
562
|
+
};
|
|
563
|
+
//# sourceMappingURL=street-affix.js.map
|