Skip to content

Word→Symbol Mapping Coverage Report (PHON-162)

Phase 1 (Mulberry only) is kept below as history; phase 2a (OpenMoji as provider #2) follows it.

Phase 1 — Mulberry v3.5.2

Date: 2026-07-12. Draft, name-based mapping only — no manual review pass yet. Build: uv run python packages/data/scripts/build_image_mapping.py Output: data/mappings/word_to_image.tsv (1,700 rows, 1,406 distinct words). Lexicon: local data/runtime/words.parquet (125,756 rows; ~47K canonical).

Method

Symbol names from symbol-info.csv are normalized for Mulberry's conventions (_,_to verb suffix, _-_qualifier display qualifier, trailing _2/_1a alternate drawings) and matched case-insensitively against lexicon words:

match_type Rule Count
exact single normalized token equals a word 1,569
joined multi-token name equals a word concatenated (bubble_gum → bubblegum) 66
head trailing tokens are depiction qualifiers (lady/man/boy/…), leading token is a word (afraid_lady → afraid) 65

One preferred symbol per word (unnumbered drawing, exact > joined > head, lowest variant). 1,736 of 3,436 symbols remain unmatched — mostly multiword concepts (apple_juice, algebra_class) that name things the lexicon stores as single words or doesn't picture-card at all. They are the manual-review pool.

Coverage

Population Words With symbol Coverage
Canonical lexicon (content POS) 47,370 1,232 2.6%
Early-acquired (AoA ≤ 4, canonical) 5,575 836 15.0%
Early + imageable (AoA ≤ 4, concreteness ≥ 4) 3,197 687 21.5%
Top-500 early by corpus frequency 500 130 26.0%

Overall canonical coverage is expectedly tiny (3.4K symbols vs 47K words); the numbers that matter for Therapy Packs are the early-acquired rows.

Key findings

  1. Mulberry alone won't cover early pack vocabulary. It skews toward specific and adult-AAC concepts (book_shelf, hand_mixer, childrens_tv) and genuinely lacks plain symbols for basic early nouns — verified absent: book, child, hand, home, people, person, body. A second provider (OpenMoji, CC BY-SA 4.0 — see image-sources.md) is the natural gap-filler; the mapping schema is already source-agnostic.
  2. head matches need the manual pass. Most are good (afraid_lady → afraid), but there are false positives (air_person_1a is an air steward, not "air"). All 65 are labeled match_type=head for review.
  3. High-frequency ≠ picturable. Of the top-60 early words by frequency without a symbol, most are non-imageable (other, also, so, time, very). The concreteness ≥ 4 row is the honest denominator for picture-card coverage.
  4. Unexploited signal: symbol-info.csv has a tags column (e.g. grooming, cooking) that could support tag-based candidate generation for the manual pass.

Manual-review priority (top imageable early words without a symbol, by frequency)

people, see, year, children, human, women, body, area, child, place, blood, city, home, book, country, land, men, person, site, days, line, words, page, building, word, sea, hand, size, animals, oil, gas, image, web, parts, call, note, matter, contact, office

Next (v6.2 integration thread — not this branch)

  • Manual review pass over head matches + the priority list above.
  • OpenMoji mapping as provider #2 for basic-noun gaps. (→ done, phase 2a below)
  • has_image property + provider table emit to D1; asset serving per the image-sources.md recommendation (R2).

Phase 2a — + OpenMoji 17.0.0 (provider #2)

Date: 2026-07-12. Build: uv run python packages/data/scripts/build_image_mapping.py (one script, both providers). Outputs: data/mappings/word_to_image.tsv (3,649 rows, 2,035 distinct words) + data/mappings/image_review_queue.tsv (443 rows). Lexicon and populations unchanged from phase 1. Provider pinning/license: docs/commercial/image-sources.md.

Method

OpenMoji 17.0.0 ships 4,495 entries; a pool filter keeps 1,343 concrete depictables (skin-tone variants dropped, groups restricted to people-body / animals-nature / food-drink / objects / activities / travel-places + concrete extras- subgroups; flags, symbols/dingbats, smileys, brands, UI elements excluded). Matching is annotation-based — no Mulberry-style positional head-matching*, emoji qualifiers are meaning-bearing too often for that:

match_type Rule Count
exact single-token annotation equals a word (child, dog) 484
joined multi-token annotation equals a word concatenated (teddy bear → teddybear) 17
token_tag word is the first or last annotation token AND appears in the emoji's tags — the tag confirms the token is the depicted concept (waving hand → hand, open book → book) 1,448

Tag-only matches (word in tags but not in the annotation) were rejected outright: tags carry loose associations (tag body sits on skull/ear/nose, country on house) and would inflate coverage with wrong cards. 1,949 mapping rows total; 629 words are covered by OpenMoji alone. Mulberry stays preferred whenever both providers cover a word (AAC-purpose-built drawings); within OpenMoji, exact > joined > token_tag, then fewest annotation tokens, then Unicode order.

Coverage — Mulberry-only vs Mulberry+OpenMoji

Population Words Mulberry only + OpenMoji
Canonical lexicon (content POS) 47,370 1,232 (2.6%) 1,810 (3.8%)
Early-acquired (AoA ≤ 4, canonical) 5,575 836 (15.0%) 1,132 (20.3%)
Early + imageable (AoA ≤ 4, concreteness ≥ 4) 3,197 687 (21.5%) 946 (29.6%)
Top-500 early by corpus frequency 500 130 (26.0%) 168 (33.6%)

Gap check — phase-1 verified-missing basics

Word Covered? Preferred image
book openmoji 1F4D5 (closed book, token_tag)
child openmoji 1F9D2 (child, exact)
hand openmoji 1F44B (waving hand, token_tag)
home — (🏠 is annotated house; home only appears as a tag → rejected tier)
people openmoji 1F93C (people wrestling, token_tag — flagged for review; people hugging 1FAC2 is the better card and is in the TSV as an alternate)
person openmoji 1F9D1 (person, exact)
body — (no emoji is annotated body; only body parts)

Gap check — phase-1 manual-review priority list (39 words)

Word Status Word Status
people ✅ people wrestling (review) sea
see hand ✅ waving hand
year size
children animals
human oil ✅ oil drum (review)
women ✅ women wrestling (review) gas
body image
area web ✅ spider web (review)
child ✅ child (exact) parts
place call ✅ call me hand (review)
blood ✅ drop of blood note ✅ musical note (review)
city matter
home contact
book ✅ closed book office ✅ office worker (review)
country word / words
land page ✅ page with curl
men ✅ men wrestling (review) building ✅ classical building
person ✅ person (exact) site / days / line

15 of the 39 priority words gained a candidate; the token_tag ones route through the review queue.

Review queue (data/mappings/image_review_queue.tsv, 443 rows)

Input for the later human review pass in the UI. Contents: all 65 Mulberry head matches + the 378 OpenMoji token_tag matches that are currently a word's preferred image (alternates stay reviewable in word_to_image.tsv). Heuristic verdicts:

Provider keep drop unsure
mulberry (65) 41 22 2
openmoji (378) 29 0 349

Mulberry heuristic: Feelings/Descriptive/Body-part/Verb categories = the person is depicting the head concept (afraid_lady → afraid) → keep; People Profession compounds are meaning-changing (air_person = air steward, milk_person = milkman, dinner_lady, newspaper_person, post_person, delivery_person) → drop — this generalizes the one confirmed phase-1 false positive (air_person_1a, forced drop). OpenMoji heuristic: keep when all non-matching annotation tokens are depiction qualifiers (colors, open/closed, waving/raised, directions, person/man/woman); otherwise unsure (people wrestling, office worker).

Still missing — top-30 early+imageable words by frequency

see, year, children, human, body, area, place, city, home, country, land, site, days, line, words, word, sea, size, animals, list, gas, image, parts, matter, contact, weight, animal, soil, subject, author

Source #3 recommendation (not pulled yet)

Coverage of early+imageable is 29.6% — well under the ~50% bar. But the still-missing list shows the residue is mostly category/abstract-leaning nouns (year, area, place, size, matter, subject) and collectives/plurals (people, children, animals, words, parts) that neither an AAC set nor an emoji set names directly — a third lookalike set would mostly re-cover ground. Two commercially-usable moves, in order of expected yield: (1) Tawasol Symbols (CC BY-SA 4.0, AAC-purpose-built, already vetted in image-sources.md) — worth a coverage probe against the top-100 missing list before committing; (2) a small in-house commission (~50–100 drawings released CC BY-SA under the nonprofit) targeted exactly at the missing head nouns (home, body, family scenes, place/city/country) — the only route that closes the abstract-noun gap, since plural/inflected forms (children, animals, words) can instead be closed for free in the pipeline by mapping inflections onto the root's image. Recommendation: do the inflection→root mapping first (pipeline change, zero licensing), then probe Tawasol; commission only what remains.