halo-halo

Limitations

BATCH-2-STANDARDS.md's honesty-architecture MUST: what this tool cannot know, where every number comes from, and what was NOT measured — stated here plainly, not buried in a footnote.

This is a single-annotator v0, machine-drafted, not gold

“v0, single bilingual annotator (James, native), self-test-retest reliability only — seeking co-annotators.” Every number on /eval and in eval/results/v0-eval-report.json is labeled “draft-automated.” It measures whether the CURRENT rule engine reproduces its own reviewed eval/v0-set/ labels (a regression/ consistency check) — not accuracy against independently-verified gold, and not inter-annotator agreement. No kappa is published anywhere on this site: kappa requires two independent annotation passes over blind-shuffled items, which is exactly what the workbench exists to produce, and no human pass has run yet.

Rule-based recall gaps on out-of-vocabulary roots

The segmenter is a transparent rule/lexicon system — a closed, curated Tagalog wordlist and a curated English wordlist, both deliberately small and NOT exhaustive. Any root outside either list defaults to AMBIGUOUS at LOW confidence rather than guessing a language — a disclosed design choice (docs/batch2-linguistic-spec.md §6), not a silent gap. Try the “Out-of-vocabulary root” sample on the demo (“nag-vlog” — “vlog” is absent from the wordlist on purpose) to see this live. A pretrained multilingual classifier would likely have higher raw accuracy on easy majority-class cases from broader vocabulary coverage alone — that tradeoff (legibility over raw coverage) is deliberate, reasoned about in docs/batch2-linguistic-spec.md §6.

Two disclosed morphological simplifications

  • Epenthesis (a linking consonant Tagalog inserts before some vowel-initial suffixes, e.g. buti + -an → butihan) is modeled only as an alternate listed root form for the specific words this project's own texts use — not a general phonological rule.
  • CV-reduplication (the contemplated/future-aspect marker on verbs, e.g. laro → naglalaro) is an explicit non-goal for v1 (docs/batch2-linguistic-spec.md §1), independently corroborated by PACUTE (Montalan et al., submitted EMNLP 2026) naming reduplication as a genuinely hard, actively benchmarked problem even for monolingual Filipino. Most reduplicated forms simply are not decomposed — they fall through to the whole-word lookup or the disclosed AMBIGUOUS fallback, never a fabricated split.

Register bias of the composed samples

Every example on this site — the demo's sample texts and the 16-text, 438-token eval/v0-set/ — is an ORIGINAL composition by one urban, educated-register bilingual (James), not scraped content and not a sample of any population. Bautista (2004) frames Taglish itself as an educated, urban, Manila-centric register — a Cebuano-Bisaya- English trilingual speaker, a different generation, or a different class register could rule several AMBIGUOUS-adjacent cases differently. This repo does not claim “Taglish” is one monolithic thing this annotator fully represents.

Coverage the demo does not claim

  • Cebuano/Bisaya and other Philippine languages, and Tagalog-Bisaya-English trilingual switching — not tested; a token from another Philippine language is forced into AMBIGUOUS or misread as ENG/OTHER.
  • Chavacano (Spanish-lexified Philippine creole) — sometimes conflated with Taglish by non-specialists; out of scope entirely.
  • Hashtag-internal segmentation (turning “#kainanatin” into kain + na + tatin) — explicitly out of scope; a hashtag is one unsegmented Tier-0 span. Re-segmenting concatenated, delimiter-free text is a materially harder problem (the same class as Thai/Chinese segmentation).
  • General Tagalog infixation beyond the curated MIXED-intraword list (“dinownload,” “pinost”) — non-concatenative morphology is out of Tier 2's edge-matching scope by construction.
  • URL recognition — a known-hard, open-ended problem; the Tier-0 pattern covers the shapes this project's own fixtures and samples use, not every URL shape in the wild.

What the demo may NOT be used to claim

Restated verbatim from the Linguistic Spec's claims ceiling (docs/batch2-linguistic-spec.md §4.2, §3):

  • No population-level claim (“how Filipinos code-switch,” “X% of Taglish tokens are…”) — one author's fixtures are not a sample of a population.
  • No SOTA or “beats TweetTaglish/Batayan/LinCE” comparison — none of them attempt this exact token-and-intra-word task, so there is no shared benchmark, and n=1 with no cross-annotator agreement cannot support a comparative accuracy claim regardless.
  • No claim that this label set or its rulings are correct in a normative sense — a label encodes a labeling regime, not the truth.
  • No implied claim that a switch point marks a grammatical, cognitive, or sociolinguistic-function event — the demo shows WHERE labels differ, not WHY a speaker switched.
  • No single derived “Taglish-ness” or “code-switching intensity” score presented as a fluency or quality judgment.

Prior art still open, not this build's to close

The closest adjacent mechanism found (docs/PRIOR-ART.md, the D2 gate run-down) is a ResearchGate listing (“Code-Switching Detection and Processing in Filipino-English Text Using CalamanCy”) whose venue, peer-review status, and author byline remain UNVERIFIED after four search passes and a blocked direct fetch. No shipped interactive demo was found for it, so this build proceeded per the Linguistic Spec's own D2 branch — but full resolution of that item's authorship and venue, before any public positioning claim ships more widely, is James's call, not this build's to close unilaterally.

Reproduce these numbers yourself

pnpm test runs all unit and fixture suites. pnpm gen:eval regenerates eval/results/v0-eval-report.json from the live segmenter (deterministic — verified byte-identical across repeated runs). pnpm e2e:smoke runs the Playwright suite against the real static export.