@mailwoman/corpus 9.0.0 → 9.2.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 +3 -3
- package/data/PROVENANCE.md +227 -0
- package/data/reviewed-ve-postcode-tuples.json +74 -0
- package/data/sub-venue-lexicon.json +18269 -0
- package/out/src/adapters/ban/adapter.d.ts +1 -1
- package/out/src/adapters/ban/adapter.d.ts.map +1 -1
- package/out/src/adapters/ban/adapter.js +5 -4
- package/out/src/adapters/ban/adapter.js.map +1 -1
- package/out/src/adapters/fcc-bdc/adapter.d.ts +1 -1
- package/out/src/adapters/fcc-bdc/adapter.d.ts.map +1 -1
- package/out/src/adapters/fcc-bdc/adapter.js +3 -3
- package/out/src/adapters/fcc-bdc/adapter.js.map +1 -1
- package/out/src/adapters/geonames/adapter.d.ts +1 -1
- package/out/src/adapters/geonames/adapter.d.ts.map +1 -1
- package/out/src/adapters/geonames/adapter.js +2 -2
- package/out/src/adapters/geonames/adapter.js.map +1 -1
- package/out/src/adapters/geonames-postal/adapter.d.ts +1 -1
- package/out/src/adapters/geonames-postal/adapter.d.ts.map +1 -1
- package/out/src/adapters/geonames-postal/adapter.js +3 -3
- package/out/src/adapters/geonames-postal/adapter.js.map +1 -1
- package/out/src/adapters/gnaf/adapter.d.ts +1 -1
- package/out/src/adapters/gnaf/adapter.d.ts.map +1 -1
- package/out/src/adapters/gnaf/adapter.js +2 -2
- package/out/src/adapters/gnaf/adapter.js.map +1 -1
- package/out/src/adapters/gnaf/assemble.js +1 -1
- package/out/src/adapters/gnaf/assemble.js.map +1 -1
- package/out/src/adapters/index.d.ts +1 -1
- package/out/src/adapters/index.d.ts.map +1 -1
- package/out/src/adapters/index.js +1 -1
- package/out/src/adapters/index.js.map +1 -1
- package/out/src/adapters/openaddresses/adapter.d.ts +1 -1
- package/out/src/adapters/openaddresses/adapter.d.ts.map +1 -1
- package/out/src/adapters/openaddresses/adapter.js +3 -3
- package/out/src/adapters/openaddresses/adapter.js.map +1 -1
- package/out/src/adapters/overture/adapter.d.ts +1 -1
- package/out/src/adapters/overture/adapter.d.ts.map +1 -1
- package/out/src/adapters/overture/adapter.js +2 -2
- package/out/src/adapters/overture/adapter.js.map +1 -1
- package/out/src/adapters/state-hi-schools/adapter.d.ts +1 -1
- package/out/src/adapters/state-hi-schools/adapter.d.ts.map +1 -1
- package/out/src/adapters/state-hi-schools/adapter.js +7 -6
- package/out/src/adapters/state-hi-schools/adapter.js.map +1 -1
- package/out/src/adapters/state-ia-contractors/adapter.d.ts +1 -1
- package/out/src/adapters/state-ia-contractors/adapter.d.ts.map +1 -1
- package/out/src/adapters/state-ia-contractors/adapter.js +12 -7
- package/out/src/adapters/state-ia-contractors/adapter.js.map +1 -1
- package/out/src/adapters/state-ny-notaries/adapter.d.ts +1 -1
- package/out/src/adapters/state-ny-notaries/adapter.d.ts.map +1 -1
- package/out/src/adapters/state-ny-notaries/adapter.js +12 -18
- package/out/src/adapters/state-ny-notaries/adapter.js.map +1 -1
- package/out/src/adapters/state-tx-notaries/adapter.d.ts +1 -1
- package/out/src/adapters/state-tx-notaries/adapter.d.ts.map +1 -1
- package/out/src/adapters/state-tx-notaries/adapter.js +12 -7
- package/out/src/adapters/state-tx-notaries/adapter.js.map +1 -1
- package/out/src/adapters/synth-po-box/adapter.d.ts +3 -3
- package/out/src/adapters/synth-po-box/adapter.d.ts.map +1 -1
- package/out/src/adapters/synth-po-box/adapter.js +3 -3
- package/out/src/adapters/synth-po-box/adapter.js.map +1 -1
- package/out/src/adapters/tiger/adapter.d.ts +1 -1
- package/out/src/adapters/tiger/adapter.d.ts.map +1 -1
- package/out/src/adapters/tiger/adapter.js +2 -2
- package/out/src/adapters/tiger/adapter.js.map +1 -1
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.d.ts +1 -1
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.d.ts.map +1 -1
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.js +7 -6
- package/out/src/adapters/usgov-hrsa-fqhc/adapter.js.map +1 -1
- package/out/src/adapters/usgov-imls-pls/adapter.d.ts +1 -1
- package/out/src/adapters/usgov-imls-pls/adapter.d.ts.map +1 -1
- package/out/src/adapters/usgov-imls-pls/adapter.js +11 -7
- package/out/src/adapters/usgov-imls-pls/adapter.js.map +1 -1
- package/out/src/adapters/usgov-irs-bmf/adapter.d.ts +1 -1
- package/out/src/adapters/usgov-irs-bmf/adapter.d.ts.map +1 -1
- package/out/src/adapters/usgov-irs-bmf/adapter.js +6 -5
- package/out/src/adapters/usgov-irs-bmf/adapter.js.map +1 -1
- package/out/src/adapters/usgov-nad/adapter.d.ts +1 -1
- package/out/src/adapters/usgov-nad/adapter.d.ts.map +1 -1
- package/out/src/adapters/usgov-nad/adapter.js +8 -8
- package/out/src/adapters/usgov-nad/adapter.js.map +1 -1
- package/out/src/adapters/usgov-nppes/adapter.d.ts +1 -1
- package/out/src/adapters/usgov-nppes/adapter.d.ts.map +1 -1
- package/out/src/adapters/usgov-nppes/adapter.js +10 -10
- package/out/src/adapters/usgov-nppes/adapter.js.map +1 -1
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.d.ts +1 -1
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.d.ts.map +1 -1
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.js +7 -6
- package/out/src/adapters/usgov-samhsa-treatment-locator/adapter.js.map +1 -1
- package/out/src/{adapter.d.ts → adapters/utils/index.d.ts} +8 -2
- package/out/src/adapters/utils/index.d.ts.map +1 -0
- package/out/src/{adapter.js → adapters/utils/index.js} +11 -3
- package/out/src/adapters/utils/index.js.map +1 -0
- package/out/src/adapters/wof-admin-jp/adapter.d.ts +1 -1
- package/out/src/adapters/wof-admin-jp/adapter.d.ts.map +1 -1
- package/out/src/adapters/wof-admin-jp/adapter.js +5 -5
- package/out/src/adapters/wof-admin-jp/adapter.js.map +1 -1
- package/out/src/adapters/wof-admin-json/adapter.d.ts +4 -15
- package/out/src/adapters/wof-admin-json/adapter.d.ts.map +1 -1
- package/out/src/adapters/wof-admin-json/adapter.js +11 -35
- package/out/src/adapters/wof-admin-json/adapter.js.map +1 -1
- package/out/src/adapters/wof-json-rows.d.ts +32 -0
- package/out/src/adapters/wof-json-rows.d.ts.map +1 -0
- package/out/src/adapters/wof-json-rows.js +45 -0
- package/out/src/adapters/wof-json-rows.js.map +1 -0
- package/out/src/adapters/wof-postalcode-json/adapter.d.ts +4 -9
- package/out/src/adapters/wof-postalcode-json/adapter.d.ts.map +1 -1
- package/out/src/adapters/wof-postalcode-json/adapter.js +12 -37
- package/out/src/adapters/wof-postalcode-json/adapter.js.map +1 -1
- package/out/src/build.d.ts +4 -4
- package/out/src/build.d.ts.map +1 -1
- package/out/src/build.js +7 -7
- package/out/src/build.js.map +1 -1
- package/out/src/index.d.ts +3 -17
- package/out/src/index.d.ts.map +1 -1
- package/out/src/index.js +3 -17
- package/out/src/index.js.map +1 -1
- package/out/src/name-prone-us-suffixes.d.ts +12 -0
- package/out/src/name-prone-us-suffixes.d.ts.map +1 -0
- package/out/src/name-prone-us-suffixes.js +12 -0
- package/out/src/name-prone-us-suffixes.js.map +1 -0
- package/out/src/parquet-wrapper/reader.d.ts.map +1 -1
- package/out/src/parquet-wrapper/reader.js +5 -0
- package/out/src/parquet-wrapper/reader.js.map +1 -1
- package/out/src/runner.d.ts +2 -2
- package/out/src/runner.d.ts.map +1 -1
- package/out/src/runner.js +1 -1
- package/out/src/runner.js.map +1 -1
- package/out/src/shard-recipes/anchor-absorption.d.ts.map +1 -1
- package/out/src/shard-recipes/anchor-absorption.js +4 -5
- package/out/src/shard-recipes/anchor-absorption.js.map +1 -1
- package/out/src/shard-recipes/bare-country.d.ts +25 -0
- package/out/src/shard-recipes/bare-country.d.ts.map +1 -0
- package/out/src/shard-recipes/bare-country.js +87 -0
- package/out/src/shard-recipes/bare-country.js.map +1 -0
- package/out/src/shard-recipes/boundary-stress.d.ts.map +1 -1
- package/out/src/shard-recipes/boundary-stress.js +2 -2
- package/out/src/shard-recipes/boundary-stress.js.map +1 -1
- package/out/src/shard-recipes/country-balanced.d.ts.map +1 -1
- package/out/src/shard-recipes/country-balanced.js +14 -21
- package/out/src/shard-recipes/country-balanced.js.map +1 -1
- package/out/src/shard-recipes/cz-pcfirst-preposition.d.ts.map +1 -1
- package/out/src/shard-recipes/cz-pcfirst-preposition.js +28 -10
- package/out/src/shard-recipes/cz-pcfirst-preposition.js.map +1 -1
- package/out/src/shard-recipes/fr-admin-split.d.ts.map +1 -1
- package/out/src/shard-recipes/fr-admin-split.js +4 -3
- package/out/src/shard-recipes/fr-admin-split.js.map +1 -1
- package/out/src/shard-recipes/fr-bare-street.d.ts.map +1 -1
- package/out/src/shard-recipes/fr-bare-street.js +72 -11
- package/out/src/shard-recipes/fr-bare-street.js.map +1 -1
- package/out/src/shard-recipes/fr-lieudit.d.ts.map +1 -1
- package/out/src/shard-recipes/fr-lieudit.js +4 -3
- package/out/src/shard-recipes/fr-lieudit.js.map +1 -1
- package/out/src/shard-recipes/fr-order.d.ts.map +1 -1
- package/out/src/shard-recipes/fr-order.js +11 -20
- package/out/src/shard-recipes/fr-order.js.map +1 -1
- package/out/src/shard-recipes/german.d.ts.map +1 -1
- package/out/src/shard-recipes/german.js +8 -14
- package/out/src/shard-recipes/german.js.map +1 -1
- package/out/src/shard-recipes/house-venue.d.ts.map +1 -1
- package/out/src/shard-recipes/house-venue.js +1 -1
- package/out/src/shard-recipes/house-venue.js.map +1 -1
- package/out/src/shard-recipes/index.d.ts.map +1 -1
- package/out/src/shard-recipes/index.js +8 -1
- package/out/src/shard-recipes/index.js.map +1 -1
- package/out/src/shard-recipes/intersection.d.ts.map +1 -1
- package/out/src/shard-recipes/intersection.js +7 -13
- package/out/src/shard-recipes/intersection.js.map +1 -1
- package/out/src/shard-recipes/locale.d.ts +5 -5
- package/out/src/shard-recipes/locale.d.ts.map +1 -1
- package/out/src/shard-recipes/locale.js +13 -20
- package/out/src/shard-recipes/locale.js.map +1 -1
- package/out/src/shard-recipes/no-street.d.ts.map +1 -1
- package/out/src/shard-recipes/no-street.js +1 -1
- package/out/src/shard-recipes/no-street.js.map +1 -1
- package/out/src/shard-recipes/po-box-cedex.d.ts.map +1 -1
- package/out/src/shard-recipes/po-box-cedex.js +60 -43
- package/out/src/shard-recipes/po-box-cedex.js.map +1 -1
- package/out/src/shard-recipes/po-box.d.ts.map +1 -1
- package/out/src/shard-recipes/po-box.js +1 -1
- package/out/src/shard-recipes/po-box.js.map +1 -1
- package/out/src/shard-recipes/reviewed-postcode-tail.d.ts +47 -0
- package/out/src/shard-recipes/reviewed-postcode-tail.d.ts.map +1 -0
- package/out/src/shard-recipes/reviewed-postcode-tail.js +125 -0
- package/out/src/shard-recipes/reviewed-postcode-tail.js.map +1 -0
- package/out/src/shard-recipes/scaffold.d.ts +51 -23
- package/out/src/shard-recipes/scaffold.d.ts.map +1 -1
- package/out/src/shard-recipes/scaffold.js +59 -23
- package/out/src/shard-recipes/scaffold.js.map +1 -1
- package/out/src/shard-recipes/street-affix.d.ts +54 -0
- package/out/src/shard-recipes/street-affix.d.ts.map +1 -1
- package/out/src/shard-recipes/street-affix.js +203 -35
- package/out/src/shard-recipes/street-affix.js.map +1 -1
- package/out/src/shard-recipes/street-bare.d.ts.map +1 -1
- package/out/src/shard-recipes/street-bare.js +3 -3
- package/out/src/shard-recipes/street-bare.js.map +1 -1
- package/out/src/shard-recipes/street.d.ts.map +1 -1
- package/out/src/shard-recipes/street.js +2 -2
- package/out/src/shard-recipes/street.js.map +1 -1
- package/out/src/shard-recipes/sub-venue-sources.d.ts +3 -6
- package/out/src/shard-recipes/sub-venue-sources.d.ts.map +1 -1
- package/out/src/shard-recipes/sub-venue-sources.js +4 -9
- package/out/src/shard-recipes/sub-venue-sources.js.map +1 -1
- package/out/src/shard-recipes/sub-venue.d.ts +2 -2
- package/out/src/shard-recipes/sub-venue.d.ts.map +1 -1
- package/out/src/shard-recipes/sub-venue.js +7 -6
- package/out/src/shard-recipes/sub-venue.js.map +1 -1
- package/out/src/shard-recipes/trailing-region.d.ts +74 -0
- package/out/src/shard-recipes/trailing-region.d.ts.map +1 -0
- package/out/src/shard-recipes/trailing-region.js +157 -0
- package/out/src/shard-recipes/trailing-region.js.map +1 -0
- package/out/src/shard-recipes/unit.d.ts.map +1 -1
- package/out/src/shard-recipes/unit.js +6 -12
- package/out/src/shard-recipes/unit.js.map +1 -1
- package/out/src/{synthesize-anchor-absorption.d.ts → synthesizers/anchor-absorption.d.ts} +1 -1
- package/out/src/synthesizers/anchor-absorption.d.ts.map +1 -0
- package/out/src/{synthesize-anchor-absorption.js → synthesizers/anchor-absorption.js} +1 -1
- package/out/src/synthesizers/anchor-absorption.js.map +1 -0
- package/out/src/{synthesize-boundary-stress.d.ts → synthesizers/boundary-stress.d.ts} +3 -3
- package/out/src/synthesizers/boundary-stress.d.ts.map +1 -0
- package/out/src/{synthesize-boundary-stress.js → synthesizers/boundary-stress.js} +2 -2
- package/out/src/synthesizers/boundary-stress.js.map +1 -0
- package/out/src/{synthesize-german.d.ts → synthesizers/german.d.ts} +2 -2
- package/out/src/synthesizers/german.d.ts.map +1 -0
- package/out/src/{synthesize-german.js → synthesizers/german.js} +2 -2
- package/out/src/synthesizers/german.js.map +1 -0
- package/out/src/{synthesize-house-venue.d.ts → synthesizers/house-venue.d.ts} +4 -4
- package/out/src/synthesizers/house-venue.d.ts.map +1 -0
- package/out/src/{synthesize-house-venue.js → synthesizers/house-venue.js} +20 -6
- package/out/src/synthesizers/house-venue.js.map +1 -0
- package/out/src/{synthesize-intersection.d.ts → synthesizers/intersection.d.ts} +2 -2
- package/out/src/synthesizers/intersection.d.ts.map +1 -0
- package/out/src/{synthesize-intersection.js → synthesizers/intersection.js} +1 -1
- package/out/src/synthesizers/intersection.js.map +1 -0
- package/out/src/{synthesize-no-street.d.ts → synthesizers/no-street.d.ts} +3 -3
- package/out/src/synthesizers/no-street.d.ts.map +1 -0
- package/out/src/{synthesize-no-street.js → synthesizers/no-street.js} +2 -2
- package/out/src/synthesizers/no-street.js.map +1 -0
- package/out/src/{synthesize-po-box.d.ts → synthesizers/po-box.d.ts} +2 -2
- package/out/src/synthesizers/po-box.d.ts.map +1 -0
- package/out/src/{synthesize-po-box.js → synthesizers/po-box.js} +1 -1
- package/out/src/synthesizers/po-box.js.map +1 -0
- package/out/src/{synthesize-street.d.ts → synthesizers/street.d.ts} +2 -2
- package/out/src/synthesizers/street.d.ts.map +1 -0
- package/out/src/{synthesize-street.js → synthesizers/street.js} +4 -3
- package/out/src/synthesizers/street.js.map +1 -0
- package/out/src/{synthesize.d.ts → synthesizers/utils.d.ts} +3 -3
- package/out/src/synthesizers/utils.d.ts.map +1 -0
- package/out/src/{synthesize.js → synthesizers/utils.js} +5 -4
- package/out/src/synthesizers/utils.js.map +1 -0
- package/out/src/tools/align-shard.d.ts.map +1 -1
- package/out/src/tools/align-shard.js +2 -2
- package/out/src/tools/align-shard.js.map +1 -1
- package/out/src/tools/fetch/ban.d.ts.map +1 -1
- package/out/src/tools/fetch/ban.js +2 -18
- package/out/src/tools/fetch/ban.js.map +1 -1
- package/out/src/tools/fetch/download.d.ts +12 -3
- package/out/src/tools/fetch/download.d.ts.map +1 -1
- package/out/src/tools/fetch/download.js +20 -4
- package/out/src/tools/fetch/download.js.map +1 -1
- package/out/src/tools/fetch/geonames-dump.d.ts +87 -0
- package/out/src/tools/fetch/geonames-dump.d.ts.map +1 -0
- package/out/src/tools/fetch/geonames-dump.js +178 -0
- package/out/src/tools/fetch/geonames-dump.js.map +1 -0
- package/out/src/tools/fetch/geonames-postal.d.ts +76 -0
- package/out/src/tools/fetch/geonames-postal.d.ts.map +1 -0
- package/out/src/tools/fetch/geonames-postal.js +125 -0
- package/out/src/tools/fetch/geonames-postal.js.map +1 -0
- package/out/src/tools/fetch/imls-pls.d.ts.map +1 -1
- package/out/src/tools/fetch/imls-pls.js +5 -17
- package/out/src/tools/fetch/imls-pls.js.map +1 -1
- package/out/src/tools/fetch/index.d.ts +11 -0
- package/out/src/tools/fetch/index.d.ts.map +1 -1
- package/out/src/tools/fetch/index.js +11 -0
- package/out/src/tools/fetch/index.js.map +1 -1
- package/out/src/tools/fetch/nad.d.ts.map +1 -1
- package/out/src/tools/fetch/nad.js +20 -11
- package/out/src/tools/fetch/nad.js.map +1 -1
- package/out/src/tools/fetch/nppes.d.ts.map +1 -1
- package/out/src/tools/fetch/nppes.js +17 -22
- package/out/src/tools/fetch/nppes.js.map +1 -1
- package/out/src/tools/fetch/openaddresses.d.ts.map +1 -1
- package/out/src/tools/fetch/openaddresses.js +18 -17
- package/out/src/tools/fetch/openaddresses.js.map +1 -1
- package/out/src/tools/fetch/ourairports.d.ts.map +1 -1
- package/out/src/tools/fetch/ourairports.js +7 -2
- package/out/src/tools/fetch/ourairports.js.map +1 -1
- package/out/src/tools/fetch/ppd.d.ts +0 -4
- package/out/src/tools/fetch/ppd.d.ts.map +1 -1
- package/out/src/tools/fetch/ppd.js +1 -1
- package/out/src/tools/fetch/ppd.js.map +1 -1
- package/out/src/tools/fetch/state-hi-schools.d.ts.map +1 -1
- package/out/src/tools/fetch/state-hi-schools.js +3 -19
- package/out/src/tools/fetch/state-hi-schools.js.map +1 -1
- package/out/src/tools/fetch/state-sources.d.ts +4 -0
- package/out/src/tools/fetch/state-sources.d.ts.map +1 -1
- package/out/src/tools/fetch/state-sources.js +1 -5
- package/out/src/tools/fetch/state-sources.js.map +1 -1
- package/out/src/tools/fetch/tiger-full.d.ts.map +1 -1
- package/out/src/tools/fetch/tiger-full.js +15 -21
- package/out/src/tools/fetch/tiger-full.js.map +1 -1
- package/out/src/tools/golden-expand.d.ts.map +1 -1
- package/out/src/tools/golden-expand.js +34 -25
- package/out/src/tools/golden-expand.js.map +1 -1
- package/out/src/tools/golden-relabel-street.d.ts.map +1 -1
- package/out/src/tools/golden-relabel-street.js +4 -77
- package/out/src/tools/golden-relabel-street.js.map +1 -1
- package/out/src/tools/index.d.ts +2 -2
- package/out/src/tools/index.d.ts.map +1 -1
- package/out/src/tools/index.js +2 -2
- package/out/src/tools/index.js.map +1 -1
- package/out/src/tools/ingest-csv.d.ts.map +1 -1
- package/out/src/tools/ingest-csv.js +0 -11
- package/out/src/tools/ingest-csv.js.map +1 -1
- package/out/src/tools/overlay-manifest.d.ts +4 -0
- package/out/src/tools/overlay-manifest.d.ts.map +1 -1
- package/out/src/tools/overlay-manifest.js +16 -6
- package/out/src/tools/overlay-manifest.js.map +1 -1
- package/out/src/tools/postcode-triples.d.ts +175 -0
- package/out/src/tools/postcode-triples.d.ts.map +1 -0
- package/out/src/tools/postcode-triples.js +304 -0
- package/out/src/tools/postcode-triples.js.map +1 -0
- package/out/src/tools/shard-kryptonite.d.ts.map +1 -1
- package/out/src/tools/shard-kryptonite.js +1 -3
- package/out/src/tools/shard-kryptonite.js.map +1 -1
- package/out/src/tools/shard-translit.d.ts.map +1 -1
- package/out/src/tools/shard-translit.js +4 -27
- package/out/src/tools/shard-translit.js.map +1 -1
- package/out/src/tools/sub-venue/harvest.d.ts +100 -0
- package/out/src/tools/sub-venue/harvest.d.ts.map +1 -0
- package/out/src/tools/sub-venue/harvest.js +168 -0
- package/out/src/tools/sub-venue/harvest.js.map +1 -0
- package/out/src/tools/sub-venue/head-nouns.d.ts +50 -0
- package/out/src/tools/sub-venue/head-nouns.d.ts.map +1 -0
- package/out/src/tools/sub-venue/head-nouns.js +210 -0
- package/out/src/tools/sub-venue/head-nouns.js.map +1 -0
- package/out/src/tools/sub-venue/surfaces.d.ts +45 -0
- package/out/src/tools/sub-venue/surfaces.d.ts.map +1 -0
- package/out/src/tools/sub-venue/surfaces.js +77 -0
- package/out/src/tools/sub-venue/surfaces.js.map +1 -0
- package/out/src/tools/sub-venue/table.d.ts +229 -0
- package/out/src/tools/sub-venue/table.d.ts.map +1 -0
- package/out/src/tools/sub-venue/table.js +108 -0
- package/out/src/tools/sub-venue/table.js.map +1 -0
- package/out/src/tools/sub-venue/wikidata.d.ts +26 -0
- package/out/src/tools/sub-venue/wikidata.d.ts.map +1 -0
- package/out/src/tools/sub-venue/wikidata.js +62 -0
- package/out/src/tools/sub-venue/wikidata.js.map +1 -0
- package/out/src/tools/sub-venue-lexicon.d.ts +27 -378
- package/out/src/tools/sub-venue-lexicon.d.ts.map +1 -1
- package/out/src/tools/sub-venue-lexicon.js +30 -565
- package/out/src/tools/sub-venue-lexicon.js.map +1 -1
- package/out/src/{align.d.ts → utils/align.d.ts} +1 -1
- package/out/src/utils/align.d.ts.map +1 -0
- package/out/src/utils/align.js.map +1 -0
- package/out/src/utils/golden.d.ts.map +1 -0
- package/out/src/{golden.js → utils/golden.js} +2 -2
- package/out/src/utils/golden.js.map +1 -0
- package/out/src/utils/index.d.ts +14 -0
- package/out/src/utils/index.d.ts.map +1 -0
- package/out/src/utils/index.js +14 -0
- package/out/src/utils/index.js.map +1 -0
- package/out/src/utils/license.d.ts.map +1 -0
- package/out/src/{license.js → utils/license.js} +1 -1
- package/out/src/utils/license.js.map +1 -0
- package/out/src/{parquet.d.ts → utils/parquet.d.ts} +24 -5
- package/out/src/utils/parquet.d.ts.map +1 -0
- package/out/src/{parquet.js → utils/parquet.js} +6 -3
- package/out/src/utils/parquet.js.map +1 -0
- package/out/src/{split.d.ts → utils/split.d.ts} +1 -1
- package/out/src/utils/split.d.ts.map +1 -0
- package/out/src/{split.js → utils/split.js} +2 -2
- package/out/src/utils/split.js.map +1 -0
- package/out/src/utils/tokenize.d.ts.map +1 -0
- package/out/src/utils/tokenize.js.map +1 -0
- package/out/src/utils/wof-json.d.ts.map +1 -0
- package/out/src/utils/wof-json.js.map +1 -0
- package/package.json +287 -21
- package/src/adapters/ban/adapter.ts +7 -5
- package/src/adapters/fcc-bdc/adapter.ts +5 -4
- package/src/adapters/geonames/adapter.ts +3 -3
- package/src/adapters/geonames-postal/adapter.ts +4 -4
- package/src/adapters/gnaf/adapter.ts +3 -3
- package/src/adapters/gnaf/assemble.ts +1 -1
- package/src/adapters/index.ts +3 -2
- package/src/adapters/openaddresses/adapter.ts +4 -4
- package/src/adapters/overture/adapter.ts +3 -3
- package/src/adapters/state-hi-schools/adapter.ts +8 -7
- package/src/adapters/state-ia-contractors/adapter.ts +13 -8
- package/src/adapters/state-ny-notaries/adapter.ts +13 -32
- package/src/adapters/state-tx-notaries/adapter.ts +13 -8
- package/src/adapters/synth-po-box/adapter.ts +4 -4
- package/src/adapters/tiger/adapter.ts +5 -3
- package/src/adapters/usgov-hrsa-fqhc/adapter.ts +8 -7
- package/src/adapters/usgov-imls-pls/adapter.ts +12 -8
- package/src/adapters/usgov-irs-bmf/adapter.ts +7 -6
- package/src/adapters/usgov-nad/adapter.ts +9 -9
- package/src/adapters/usgov-nppes/adapter.ts +13 -12
- package/src/adapters/usgov-samhsa-treatment-locator/adapter.ts +8 -7
- package/src/{adapter.ts → adapters/utils/index.ts} +15 -3
- package/src/adapters/wof-admin-jp/adapter.ts +9 -12
- package/src/adapters/wof-admin-json/adapter.ts +15 -54
- package/src/adapters/wof-json-rows.ts +79 -0
- package/src/adapters/wof-postalcode-json/adapter.ts +16 -50
- package/src/build.ts +8 -8
- package/src/index.ts +3 -17
- package/src/name-prone-us-suffixes.ts +12 -0
- package/src/parquet-wrapper/reader.ts +9 -0
- package/src/runner.ts +2 -2
- package/src/shard-recipes/anchor-absorption.ts +5 -5
- package/src/shard-recipes/bare-country.ts +95 -0
- package/src/shard-recipes/boundary-stress.ts +3 -2
- package/src/shard-recipes/country-balanced.ts +16 -27
- package/src/shard-recipes/cz-pcfirst-preposition.ts +29 -10
- package/src/shard-recipes/fr-admin-split.ts +6 -4
- package/src/shard-recipes/fr-bare-street.ts +85 -10
- package/src/shard-recipes/fr-lieudit.ts +6 -4
- package/src/shard-recipes/fr-order.ts +13 -26
- package/src/shard-recipes/german.ts +9 -18
- package/src/shard-recipes/house-venue.ts +2 -1
- package/src/shard-recipes/index.ts +8 -1
- package/src/shard-recipes/intersection.ts +9 -17
- package/src/shard-recipes/locale.ts +16 -24
- package/src/shard-recipes/no-street.ts +2 -1
- package/src/shard-recipes/po-box-cedex.ts +76 -58
- package/src/shard-recipes/po-box.ts +2 -1
- package/src/shard-recipes/reviewed-postcode-tail.ts +189 -0
- package/src/shard-recipes/scaffold.ts +99 -24
- package/src/shard-recipes/street-affix.ts +284 -45
- package/src/shard-recipes/street-bare.ts +4 -3
- package/src/shard-recipes/street.ts +3 -2
- package/src/shard-recipes/sub-venue-sources.ts +13 -23
- package/src/shard-recipes/sub-venue.ts +11 -9
- package/src/shard-recipes/trailing-region.ts +183 -0
- package/src/shard-recipes/unit.ts +8 -17
- package/src/{synthesize-boundary-stress.ts → synthesizers/boundary-stress.ts} +2 -2
- package/src/{synthesize-german.ts → synthesizers/german.ts} +3 -2
- package/src/{synthesize-house-venue.ts → synthesizers/house-venue.ts} +20 -6
- package/src/{synthesize-intersection.ts → synthesizers/intersection.ts} +1 -1
- package/src/{synthesize-no-street.ts → synthesizers/no-street.ts} +2 -2
- package/src/{synthesize-po-box.ts → synthesizers/po-box.ts} +1 -1
- package/src/{synthesize-street.ts → synthesizers/street.ts} +5 -3
- package/src/{synthesize.ts → synthesizers/utils.ts} +6 -4
- package/src/tools/align-shard.ts +3 -2
- package/src/tools/fetch/ban.ts +2 -22
- package/src/tools/fetch/download.ts +22 -4
- package/src/tools/fetch/geonames-dump.ts +267 -0
- package/src/tools/fetch/geonames-postal.ts +180 -0
- package/src/tools/fetch/imls-pls.ts +6 -20
- package/src/tools/fetch/index.ts +11 -0
- package/src/tools/fetch/nad.ts +21 -10
- package/src/tools/fetch/nppes.ts +17 -23
- package/src/tools/fetch/openaddresses.ts +18 -22
- package/src/tools/fetch/ourairports.ts +7 -2
- package/src/tools/fetch/ppd.ts +1 -1
- package/src/tools/fetch/state-hi-schools.ts +3 -23
- package/src/tools/fetch/state-sources.ts +1 -1
- package/src/tools/fetch/tiger-full.ts +17 -24
- package/src/tools/golden-expand.ts +44 -33
- package/src/tools/golden-relabel-street.ts +5 -68
- package/src/tools/index.ts +2 -2
- package/src/tools/ingest-csv.ts +0 -13
- package/src/tools/overlay-manifest.ts +20 -8
- package/src/tools/postcode-triples.ts +375 -0
- package/src/tools/shard-kryptonite.ts +4 -5
- package/src/tools/shard-translit.ts +16 -35
- package/src/tools/sub-venue/harvest.ts +235 -0
- package/src/tools/sub-venue/head-nouns.ts +242 -0
- package/src/tools/sub-venue/surfaces.ts +95 -0
- package/src/tools/sub-venue/table.ts +281 -0
- package/src/tools/sub-venue/wikidata.ts +85 -0
- package/src/tools/sub-venue-lexicon.ts +67 -886
- package/src/{align.ts → utils/align.ts} +2 -1
- package/src/{golden.ts → utils/golden.ts} +2 -3
- package/src/utils/index.ts +14 -0
- package/src/{license.ts → utils/license.ts} +1 -1
- package/src/{parquet.ts → utils/parquet.ts} +22 -9
- package/src/{split.ts → utils/split.ts} +3 -3
- package/out/src/adapter.d.ts.map +0 -1
- package/out/src/adapter.js.map +0 -1
- package/out/src/align.d.ts.map +0 -1
- package/out/src/align.js.map +0 -1
- package/out/src/format.d.ts +0 -14
- package/out/src/format.d.ts.map +0 -1
- package/out/src/format.js +0 -14
- package/out/src/format.js.map +0 -1
- package/out/src/golden.d.ts.map +0 -1
- package/out/src/golden.js.map +0 -1
- package/out/src/license.d.ts.map +0 -1
- package/out/src/license.js.map +0 -1
- package/out/src/parquet.d.ts.map +0 -1
- package/out/src/parquet.js.map +0 -1
- package/out/src/split.d.ts.map +0 -1
- package/out/src/split.js.map +0 -1
- package/out/src/synthesize-anchor-absorption.d.ts.map +0 -1
- package/out/src/synthesize-anchor-absorption.js.map +0 -1
- package/out/src/synthesize-boundary-stress.d.ts.map +0 -1
- package/out/src/synthesize-boundary-stress.js.map +0 -1
- package/out/src/synthesize-german.d.ts.map +0 -1
- package/out/src/synthesize-german.js.map +0 -1
- package/out/src/synthesize-house-venue.d.ts.map +0 -1
- package/out/src/synthesize-house-venue.js.map +0 -1
- package/out/src/synthesize-intersection.d.ts.map +0 -1
- package/out/src/synthesize-intersection.js.map +0 -1
- package/out/src/synthesize-no-street.d.ts.map +0 -1
- package/out/src/synthesize-no-street.js.map +0 -1
- package/out/src/synthesize-po-box.d.ts.map +0 -1
- package/out/src/synthesize-po-box.js.map +0 -1
- package/out/src/synthesize-street.d.ts.map +0 -1
- package/out/src/synthesize-street.js.map +0 -1
- package/out/src/synthesize.d.ts.map +0 -1
- package/out/src/synthesize.js.map +0 -1
- package/out/src/tokenize.d.ts.map +0 -1
- package/out/src/tokenize.js.map +0 -1
- package/out/src/wof-json.d.ts.map +0 -1
- package/out/src/wof-json.js.map +0 -1
- package/src/format.ts +0 -14
- /package/out/src/{align.js → utils/align.js} +0 -0
- /package/out/src/{golden.d.ts → utils/golden.d.ts} +0 -0
- /package/out/src/{license.d.ts → utils/license.d.ts} +0 -0
- /package/out/src/{tokenize.d.ts → utils/tokenize.d.ts} +0 -0
- /package/out/src/{tokenize.js → utils/tokenize.js} +0 -0
- /package/out/src/{wof-json.d.ts → utils/wof-json.d.ts} +0 -0
- /package/out/src/{wof-json.js → utils/wof-json.js} +0 -0
- /package/src/{synthesize-anchor-absorption.ts → synthesizers/anchor-absorption.ts} +0 -0
- /package/src/{tokenize.ts → utils/tokenize.ts} +0 -0
- /package/src/{wof-json.ts → utils/wof-json.ts} +0 -0
package/README.md
CHANGED
|
@@ -38,7 +38,7 @@ training pipeline (`corpus-python/`).
|
|
|
38
38
|
| **`expand-golden.ts`** | Expand reference addresses into training rows with alignment |
|
|
39
39
|
| **`align.ts`** | Tokenize raw address → BIO label sequence |
|
|
40
40
|
| **`validate.ts`** | Validate corpus integrity, label coverage, shard balance |
|
|
41
|
-
| **`
|
|
41
|
+
| **`synthesizers/*.ts`** | Synthetic shard generators (boundary stress, order variants, etc.) |
|
|
42
42
|
| **`ingest/`** | Overture Maps + NAD ingestion |
|
|
43
43
|
| **`shard-registry.ts`** | Shard metadata and composition |
|
|
44
44
|
| **`stats.ts`** | Per-shard and per-tag statistics |
|
|
@@ -70,8 +70,8 @@ node scripts/corpus-stats.mjs
|
|
|
70
70
|
|
|
71
71
|
- [`@mailwoman/neural`](../neural) — the runtime that loads and runs the trained model
|
|
72
72
|
- [`@mailwoman/neural-weights-en-us`](../neural-weights-en-us) — the trained model itself
|
|
73
|
-
- [Corpus Construction concepts](https://mailwoman.
|
|
74
|
-
- [Training Pipeline concepts](https://mailwoman.
|
|
73
|
+
- [Corpus Construction concepts](https://mailwoman.ai/articles/concepts/corpus-construction/)
|
|
74
|
+
- [Training Pipeline concepts](https://mailwoman.ai/articles/concepts/training-pipeline/)
|
|
75
75
|
- [CONTRIBUTING_MODEL_WORK](https://github.com/sister-software/mailwoman/blob/main/docs/engineering/CONTRIBUTING_MODEL_WORK.mdx)
|
|
76
76
|
|
|
77
77
|
## License
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# `corpus/data/` provenance
|
|
2
|
+
|
|
3
|
+
## `reviewed-ve-postcode-tuples.json` — reviewed Venezuelan postcode placement (#1821)
|
|
4
|
+
|
|
5
|
+
Four geographic facts support the Venezuelan `locality postcode, region` convention. The Barcelona
|
|
6
|
+
tuple comes from the Anzoátegui state government's contact address. The Caracas, Sanare, and Santa
|
|
7
|
+
Elena de Guairén tuples come from the Universal Postal Union's Venezuela addressing guide. The file
|
|
8
|
+
records the publisher, full source address, retrieval date, review status, and source-license note for
|
|
9
|
+
each tuple.
|
|
10
|
+
|
|
11
|
+
Only factual fields are stored. No source prose is copied, and the corpus rows do not claim that either
|
|
12
|
+
source published the facts under CC0 or another open-data license. The recipe creates bounded synthetic
|
|
13
|
+
case, punctuation, accent, country-tail, and left-context forms while keeping each reviewed
|
|
14
|
+
postcode-to-place join unchanged.
|
|
15
|
+
|
|
16
|
+
## `sub-venue-lexicon.json` — the sub-venue designator lexicon (#35, waves 1–2)
|
|
17
|
+
|
|
18
|
+
The vocabulary a corpus shard (and eventually the span proposer) reads to recognize `Terminal 5`,
|
|
19
|
+
`North Terminal`, `Concourse B`, `第1ターミナル` as venue-interior structure. Generated, **not
|
|
20
|
+
hand-edited**. See `docs/engineering/sub-venue-corpus-task.mdx` for why this exists — the short
|
|
21
|
+
version is that the `unit` tag was never taught the modifier+designator shape, so closing the class by
|
|
22
|
+
decode weight would take a bias scale near 11 nats where the stronger designator+identifier evidence
|
|
23
|
+
needed 6.
|
|
24
|
+
|
|
25
|
+
The one hand-authored input is `corpus/src/tools/sub-venue-promotions.ts`, the curation ledger. The
|
|
26
|
+
builder cannot decide that Spanish `terminal` is safe and British `hall` is not, because that is a
|
|
27
|
+
judgement about a language's confounds; what it does is APPLY those decisions.
|
|
28
|
+
|
|
29
|
+
### Regenerate
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
mailwoman corpus fetch wikidata-subvenue --out-root $MAILWOMAN_DATA_ROOT/sub-venue/sources
|
|
33
|
+
|
|
34
|
+
# One extraction per region. ogr2ogr dominates: 44 s for a 340 MB extract, 371 s for Japan's 2.5 GB.
|
|
35
|
+
mailwoman corpus sub-venue-extract \
|
|
36
|
+
--pbf $MAILWOMAN_DATA_ROOT/sub-venue/pbf/japan.osm.pbf \
|
|
37
|
+
--out $MAILWOMAN_DATA_ROOT/sub-venue/extracts/japan.jsonl --country JP
|
|
38
|
+
|
|
39
|
+
mailwoman corpus sub-venue-lexicon \
|
|
40
|
+
--wikidata-dir $MAILWOMAN_DATA_ROOT/sub-venue/sources/wikidata-subvenue \
|
|
41
|
+
--extracts "GB=$E/great-britain.jsonl,DE=$E/germany.jsonl,FR=$E/france.jsonl,ES=$E/spain.jsonl,JP=$E/japan.jsonl" \
|
|
42
|
+
--overture-db $MAILWOMAN_DATA_ROOT/poi/poi.db \
|
|
43
|
+
--out corpus/data/sub-venue-lexicon.json
|
|
44
|
+
npx oxfmt corpus/data/sub-venue-lexicon.json
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`$E` is `$MAILWOMAN_DATA_ROOT/sub-venue/extracts`. `--extracts` takes `REGION=path` pairs because the
|
|
48
|
+
region is the axis every curation decision is taken on, and no extract filename carries it reliably —
|
|
49
|
+
`ile-de-france` is FR, `great-britain` is GB. A bare path lands region `""`, whose surfaces can never
|
|
50
|
+
be promoted.
|
|
51
|
+
|
|
52
|
+
The oxfmt pass is required — committed JSON is oxfmt-clean, which raw `JSON.stringify` cannot
|
|
53
|
+
reproduce. The generator is byte-deterministic and oxfmt is too, so the artifact is reproducible from
|
|
54
|
+
the same fetch outputs. `sub-venue-lexicon.test.ts` pins determinism directly.
|
|
55
|
+
|
|
56
|
+
The extract JSONLs and the `.osm.pbf` files are build inputs under
|
|
57
|
+
`$MAILWOMAN_DATA_ROOT/sub-venue/`, not committed.
|
|
58
|
+
|
|
59
|
+
### Sources, as of the committed build (2026-08-05)
|
|
60
|
+
|
|
61
|
+
| source | origin | license | rows |
|
|
62
|
+
| --------------- | -------------------------------------------------- | ------------------- | ------- |
|
|
63
|
+
| Wikidata (WDQS) | `https://query.wikidata.org/sparql`, 8 concept ids | CC0 | 877 |
|
|
64
|
+
| OpenStreetMap | Geofabrik `great-britain-latest.osm.pbf` | ODbL | 254,356 |
|
|
65
|
+
| OpenStreetMap | Geofabrik `germany-latest.osm.pbf` | ODbL | 403,863 |
|
|
66
|
+
| OpenStreetMap | Geofabrik `france-latest.osm.pbf` | ODbL | 251,260 |
|
|
67
|
+
| OpenStreetMap | Geofabrik `spain-latest.osm.pbf` | ODbL | 78,918 |
|
|
68
|
+
| OpenStreetMap | Geofabrik `japan-latest.osm.pbf` | ODbL | 183,999 |
|
|
69
|
+
| Overture Places | `poi.db` spatial layer, vintage `2026-05-20.0` | CDLA-Permissive-2.0 | 9,219 |
|
|
70
|
+
|
|
71
|
+
**The ODbL question, unchanged from wave 1 and still open for the shard.** The committed artifact
|
|
72
|
+
contains no OSM geometry and no OSM row. What survives the OSM leg is surface COUNTS — that the token
|
|
73
|
+
`ターミナル` appears in 1,215 Japanese feature names — plus the `identifierShapes` distribution, whose
|
|
74
|
+
`examples` are gate reference strings (`B32`, `1A`, `16-18`). Facts and short factual strings are not
|
|
75
|
+
a substantial extraction from a database, so this table is not treated as a Derived Database. That
|
|
76
|
+
reading matches `osm/README.md`'s posture that the ODbL obligation rides on the built shard rather
|
|
77
|
+
than on code. **A corpus shard built from OSM rows IS a derived work, and that question is still not
|
|
78
|
+
settled** — it gates step 4, not this table.
|
|
79
|
+
|
|
80
|
+
### What the sources are FOR, and what each cannot do
|
|
81
|
+
|
|
82
|
+
Overture and OSM fail differently, which is why both are read.
|
|
83
|
+
|
|
84
|
+
- **Overture (`poi.db`)** is curated venue-interior naming. `concourse` appears 35 times in its
|
|
85
|
+
`airport_terminal` slice against 4 in the whole Great Britain OSM extract, and 3 of those 4 are a
|
|
86
|
+
street called CONCOURSE WAY. **But poi.db is four countries** — US 11,521,612 / CA 794,418 /
|
|
87
|
+
FR 721,352 / MX 644,316, and nothing else (measured 2026-08-05). It can attest en-US, en-CA, fr-FR
|
|
88
|
+
and es-MX and nothing else, so a zero count in it is evidence of absence in four countries, not in
|
|
89
|
+
the world.
|
|
90
|
+
- **OSM** reaches any region with a Geofabrik extract, and carries the `name:<lang>` family, which is
|
|
91
|
+
where every non-Latin surface in this table comes from. What it does not carry is a curated notion
|
|
92
|
+
of "interior": 3,204 of Great Britain's 3,273 `hall` hits sit on a `public_transport=platform`,
|
|
93
|
+
because a British bus stop is named after the village hall it stands outside.
|
|
94
|
+
|
|
95
|
+
The Overture category set is measured, not guessed. A full scan of all 13,681,698 rows counted, per
|
|
96
|
+
category, how many named rows carry a designator token; the ranking is not what a category name
|
|
97
|
+
predicts. `gas_station` leads the entire table with 12,996 hits, every one of them `station` inside
|
|
98
|
+
"Holiday Station" or "Chevron Station Seward", and `shoe_store` contributes 708 hits of `wing` because
|
|
99
|
+
Red Wing sells boots. Four categories survived reading the distribution — `airport_terminal`,
|
|
100
|
+
`campus_building`, `pier`, `airport_lounge` — and `overture-subvenue.ts` lists the rejects with the
|
|
101
|
+
number that rejected them.
|
|
102
|
+
|
|
103
|
+
### The wave-1 defect this build fixes
|
|
104
|
+
|
|
105
|
+
Wave 1 attributed every harvested phrase to `row.designatorID`, the rule that matched the FEATURE.
|
|
106
|
+
Because a bus stop tagged `public_transport=platform` is named "Village Hall" or "West Kensington",
|
|
107
|
+
**108 of its 133 OSM-derived surfaces named a different record than the one they pointed at**: the
|
|
108
|
+
shipped artifact claimed `west → platform`, `hall → platform`, `biggin → platform`, `salon →
|
|
109
|
+
platform`. Attribution now runs through a phrase → record index, and the row's own designator is kept
|
|
110
|
+
as `context` — which is the axis a confound board needs, since a `hall` on a platform is a bus stop
|
|
111
|
+
and a `hall` on a terminal is a hall.
|
|
112
|
+
|
|
113
|
+
### Head nouns: what the curation pass needed before it could start
|
|
114
|
+
|
|
115
|
+
Wikidata gives the ENCYCLOPAEDIC name of a concept, not the designator as addressed. Q849706's
|
|
116
|
+
Spanish label is `terminal aeroportuaria`; the form on an envelope is `Terminal`. That is why wave 1
|
|
117
|
+
shipped 1,014 uncurated surfaces and could promote none of them — there was nothing promotable in the
|
|
118
|
+
table. Two derivations run before the harvest:
|
|
119
|
+
|
|
120
|
+
- **Latin script — the cognate test.** A token whose ASCII fold shares five leading characters with
|
|
121
|
+
the designator's own id. `terminal aeroportuaria` → `terminal`, `letištní terminál` → `terminál`,
|
|
122
|
+
`havalimanı terminali` → `terminali`. An earlier rule matched against any single-token surface of
|
|
123
|
+
the record and, because Dutch `universiteit` is one, derived `universitario`, `universitaire` and
|
|
124
|
+
twenty more as head nouns of `campus`. Those are the modifier half, and they would have taught the
|
|
125
|
+
harvest to read "Ciudad Universitaria" as sub-venue structure.
|
|
126
|
+
- **Han / Kana / Hangul — the shared-substring test.** Every substring of length ≥ 2 carried by two or
|
|
127
|
+
more surfaces of the same record and language, maximal-only, capped at six. `ターミナル` is in none
|
|
128
|
+
of the five Japanese labels on its own — every one is a compound — and it is the form Japanese
|
|
129
|
+
addresses carry. Nothing else in the pipeline can produce it, and the Japan harvest is what confirms
|
|
130
|
+
it: 1,215 attestations.
|
|
131
|
+
|
|
132
|
+
Run over every non-Latin phrase instead, the second derivation produced 90 fragments of Cyrillic,
|
|
133
|
+
Greek, Arabic, Thai, Burmese and Tamil words — `сгра`, `κτίρ`, `ิ่งก่อสร้า` — because those languages
|
|
134
|
+
have one surface per concept and the only shared substrings are pieces of one word. None could ever
|
|
135
|
+
be counted: nothing in reach attests a Thai or Burmese surface. The derivation is scoped to the four
|
|
136
|
+
scripts where it works.
|
|
137
|
+
|
|
138
|
+
The harvest also gained a script-aware match. `第1ターミナル` has no word boundaries, so the
|
|
139
|
+
token-boundary rule that protects Latin script from `Briggate` finds nothing at all in Japanese; for
|
|
140
|
+
Han and Kana the match is a substring test, and the Germanic-compound objection does not transfer.
|
|
141
|
+
|
|
142
|
+
### The curation ledger
|
|
143
|
+
|
|
144
|
+
`curated: false` is still the default and nothing auto-promotes. A surface becomes curated only by
|
|
145
|
+
matching a decision in `sub-venue-promotions.ts`, which names a designator, a phrase AND a locale.
|
|
146
|
+
Per-locale because the same token is a designator in one language and a disaster in another.
|
|
147
|
+
|
|
148
|
+
Every decision below is backed by a census in that locale's own data. `real` counts occurrences in
|
|
149
|
+
genuine venue-interior naming; `confound` counts the rest, and the note says what the rest IS — a bare
|
|
150
|
+
number is not a board, and "3,273 hits" told nobody that 3,204 of them were bus stops.
|
|
151
|
+
|
|
152
|
+
| designator | phrase | locale | real | confound | what the confound is |
|
|
153
|
+
| ---------- | ------------ | ------ | ----: | -------: | ---------------------------------------------------------- |
|
|
154
|
+
| gate | `flugsteig` | de-DE | 19 | 0 | nothing — pure aviation term, no collision in German |
|
|
155
|
+
| gate | `porte` | fr-FR | 19 | 927 | Paris city gates and their Métro stations |
|
|
156
|
+
| hall | `hall` | en-GB | 0 | 3,273 | 3,204 bus stops named after a village hall; Hall Lane/Road |
|
|
157
|
+
| hall | `hall` | en-US | 2,095 | 27,081 | City Hall, Kingdom Hall, event halls, dormitory halls |
|
|
158
|
+
| hall | `hall` | fr-FR | 35 | 5 | three English `Town Hall` strings on `name:en` tags |
|
|
159
|
+
| hall | `halle` | de-DE | 32 | 168 | the CITY Halle (Saale) / Halle (Westf), plus village halls |
|
|
160
|
+
| pier | `pier` | en-GB | 120 | 44 | Pier Road / Street / Avenue / Terrace — street names |
|
|
161
|
+
| pier | `pier` | en-US | 278 | 2,330 | Pier 1 Imports and franchises, seafood restaurants |
|
|
162
|
+
| terminal | `terminal` | ca-ES | 15 | 0 | nothing |
|
|
163
|
+
| terminal | `terminal` | es-ES | 190 | 0 | nothing |
|
|
164
|
+
| terminal | `terminal` | fr-FR | 169 | 0 | nothing |
|
|
165
|
+
| terminal | `ターミナル` | ja-JP | 1,213 | 2 | two `ターミナル前` bus stops, arguably real |
|
|
166
|
+
| wing | `wing` | en-GB | 23 | 6 | the Buckinghamshire village of Wing — Wing Close/Road |
|
|
167
|
+
| wing | `wing` | en-US | 4 | 3,354 | Red Wing boots (676), chicken-wing restaurants (759) |
|
|
168
|
+
| wing | `wing` | fr-FR | 0 | 26 | Wing Chun and Wing Tsun martial-arts clubs |
|
|
169
|
+
|
|
170
|
+
Nine promotions, six rejections. Three pairs carry the whole point of doing this per-locale: `hall` is
|
|
171
|
+
0-of-3,273 in Great Britain and 35-of-40 in France; `wing` is 23-of-29 in Great Britain and
|
|
172
|
+
4-of-3,358 in the United States; `pier` is promotable in Great Britain and not in the United States.
|
|
173
|
+
|
|
174
|
+
**The test that separates a promote from a reject is whether SHAPE can isolate the confound**, and it
|
|
175
|
+
is checked by enumeration rather than asserted. `halle` keeps a 168-hit confound and is promoted
|
|
176
|
+
because dumping all 32 `<halle> <identifier>` hits returns numbered factory, trade-fair and airport
|
|
177
|
+
halls — VW Halle 42, Audi GVZ Halle G, Messe West Halle 8 — and not one instance of the city of
|
|
178
|
+
240,000 people with the same name. `porte` has a smaller confound ratio in that bucket and is
|
|
179
|
+
rejected, because 17 of its 36 shape hits are Porte Saint-Martin, Porte Saint-Denis and Porte
|
|
180
|
+
Notre-Dame. Same test killed `pier` for en-US: Pier 1 Imports IS the designator+identifier shape.
|
|
181
|
+
|
|
182
|
+
**A caveat on `wing`, the designator the corpus task's board rests on.** 24 of its 29 Great Britain
|
|
183
|
+
hits sit on a `public_transport=platform`, because British bus stops are named after the hospital wing
|
|
184
|
+
they serve. The extractor maps no building wings at all: `aile` in France is **0 hits**, `ala` in
|
|
185
|
+
Spain **0**, `flügel` in Germany **0**. The en-GB evidence is a property of British stop naming rather
|
|
186
|
+
than of a source that has wings in it, and the localized wing surfaces the corpus task asked for are
|
|
187
|
+
out of reach until the extractor gains an `indoor=*` rule or the lexicon gains a hand-seeded surface
|
|
188
|
+
list.
|
|
189
|
+
|
|
190
|
+
**A rejection of a SHIPPED designator is advisory.** `neural/venue-structure.ts` carries a flat
|
|
191
|
+
English vocabulary with no locale gate, and `wing`, `terminal` and `concourse` are in it. This table
|
|
192
|
+
cannot un-ship them: the `wing` / en-US rejection tells a shard author which locale to leave out of a
|
|
193
|
+
generated line, and it does nothing to stop the span proposer firing on "Red Wing". Giving the shipped
|
|
194
|
+
vocabulary a per-locale gate is step 4's problem, and it is the single largest thing the shard will
|
|
195
|
+
want that does not exist yet.
|
|
196
|
+
|
|
197
|
+
The mechanism does hold for anything the lexicon adds. `pier` is promoted for en-GB and rejected for
|
|
198
|
+
en-US, and because it is not in the shipped list, the rejection has teeth: the region-free English
|
|
199
|
+
`pier` surface stays `curated: false` and only the 164 Great Britain attestations are marked usable.
|
|
200
|
+
|
|
201
|
+
### Identifier shapes are per-region now
|
|
202
|
+
|
|
203
|
+
`Gate A12` is a rendering, not a string anyone wrote down: all 658 Great Britain `aeroway=gate`
|
|
204
|
+
features but 13 are unnamed and carry only a `ref`. The table therefore carries a distribution rather
|
|
205
|
+
than a phrase list — and the distribution turns out to differ by country far more than the shared
|
|
206
|
+
vocabulary suggests, so a shard generating `Gate <ref>` for a French address has to sample France's:
|
|
207
|
+
|
|
208
|
+
| region | gate refs | most common shape | second | third |
|
|
209
|
+
| ------ | --------: | ---------------------- | ---------------: | --------------- |
|
|
210
|
+
| GB | 655 | digit 463 (71%) | letter-digit 19% | digit-letter 8% |
|
|
211
|
+
| JP | 450 | digit 402 (89%) | digit-letter 5% | other 3% |
|
|
212
|
+
| FR | 628 | letter-digit 385 (61%) | digit 29% | letter 5% |
|
|
213
|
+
| DE | 642 | letter-digit 387 (60%) | digit 18% | range 11% |
|
|
214
|
+
| ES | 493 | letter-digit 189 (38%) | range 35% | digit 15% |
|
|
215
|
+
|
|
216
|
+
Britain and Japan number their gates; France and Germany letter-then-number them (`A37`, `B05`); Spain
|
|
217
|
+
is the outlier that gives a third of its gates a RANGE (`B18-B20`, `D42-D43`), which no other country
|
|
218
|
+
does at that rate. A generator that samples Great Britain's 71%-bare-digit shape into a Spanish line
|
|
219
|
+
produces a plausible string that is wrong about Spain.
|
|
220
|
+
|
|
221
|
+
### The seed duplicates `neural/venue-structure.ts`
|
|
222
|
+
|
|
223
|
+
`@mailwoman/corpus` does not depend on `@mailwoman/neural`, so the shipped designator and modifier
|
|
224
|
+
lists are re-declared in `sub-venue-lexicon.ts`. That is a drift surface, and
|
|
225
|
+
`sub-venue-lexicon.test.ts` pins both lists literally so a change in either place fails a test rather
|
|
226
|
+
than passing silently. The right move is still the reverse direction: have `neural/venue-structure.ts`
|
|
227
|
+
read a committed lexicon slice and delete both copies.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"reviewedAt": "2026-08-24",
|
|
4
|
+
"tuples": [
|
|
5
|
+
{
|
|
6
|
+
"id": "ve-barcelona-6001-anzoategui",
|
|
7
|
+
"locality": "Barcelona",
|
|
8
|
+
"postcode": "6001",
|
|
9
|
+
"region": "Anzoátegui",
|
|
10
|
+
"country": "Venezuela",
|
|
11
|
+
"cc": "VE",
|
|
12
|
+
"locale": "es-VE",
|
|
13
|
+
"postcodePlacement": "after_locality",
|
|
14
|
+
"provenance": {
|
|
15
|
+
"publisher": "Gobierno del Estado Anzoátegui",
|
|
16
|
+
"url": "https://anzoategui.gob.ve/contacto/",
|
|
17
|
+
"retrievedAt": "2026-08-24",
|
|
18
|
+
"reviewStatus": "reviewed",
|
|
19
|
+
"sourceLicenseNote": "Factual address fields only; the source page does not state a reusable data license."
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "ve-caracas-1010-distrito-capital",
|
|
24
|
+
"locality": "Caracas",
|
|
25
|
+
"postcode": "1010",
|
|
26
|
+
"region": "Distrito Capital",
|
|
27
|
+
"country": "Venezuela",
|
|
28
|
+
"cc": "VE",
|
|
29
|
+
"locale": "es-VE",
|
|
30
|
+
"postcodePlacement": "after_locality",
|
|
31
|
+
"provenance": {
|
|
32
|
+
"publisher": "Universal Postal Union",
|
|
33
|
+
"url": "https://www.upu.int/UPU/media/upu/PostalEntitiesFiles/addressingUnit/venEn.pdf",
|
|
34
|
+
"retrievedAt": "2026-08-24",
|
|
35
|
+
"reviewStatus": "reviewed",
|
|
36
|
+
"sourceLicenseNote": "Factual postal fields only; no source prose is reproduced."
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "ve-sanare-3028-lara",
|
|
41
|
+
"locality": "Sanare",
|
|
42
|
+
"postcode": "3028",
|
|
43
|
+
"region": "Lara",
|
|
44
|
+
"country": "Venezuela",
|
|
45
|
+
"cc": "VE",
|
|
46
|
+
"locale": "es-VE",
|
|
47
|
+
"postcodePlacement": "after_locality",
|
|
48
|
+
"provenance": {
|
|
49
|
+
"publisher": "Universal Postal Union",
|
|
50
|
+
"url": "https://www.upu.int/UPU/media/upu/PostalEntitiesFiles/addressingUnit/venEn.pdf",
|
|
51
|
+
"retrievedAt": "2026-08-24",
|
|
52
|
+
"reviewStatus": "reviewed",
|
|
53
|
+
"sourceLicenseNote": "Factual postal fields only; no source prose is reproduced."
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "ve-santa-elena-8011-bolivar",
|
|
58
|
+
"locality": "Santa Elena de Guairén",
|
|
59
|
+
"postcode": "8011",
|
|
60
|
+
"region": "Bolívar",
|
|
61
|
+
"country": "Venezuela",
|
|
62
|
+
"cc": "VE",
|
|
63
|
+
"locale": "es-VE",
|
|
64
|
+
"postcodePlacement": "after_locality",
|
|
65
|
+
"provenance": {
|
|
66
|
+
"publisher": "Universal Postal Union",
|
|
67
|
+
"url": "https://www.upu.int/UPU/media/upu/PostalEntitiesFiles/addressingUnit/venEn.pdf",
|
|
68
|
+
"retrievedAt": "2026-08-24",
|
|
69
|
+
"reviewStatus": "reviewed",
|
|
70
|
+
"sourceLicenseNote": "Factual postal fields only; no source prose is reproduced."
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|