Skip to main content
Before any validation runs, input text must be normalized: Zawgyi converted, zero-width characters stripped, and character variants unified. The NormalizationService exposes purpose-specific methods so each component gets exactly the normalization it needs.

Overview

Text normalization ensures consistent text representation across all components. The NormalizationService provides purpose-specific methods for different use cases:

NormalizationService

Basic Usage

Spell Checking Normalization

Fast normalization for the validation pipeline (no Zawgyi conversion):
Pipeline:
  1. Strip whitespace
  2. Unicode NFC normalization
  3. Remove zero-width characters
  4. Myanmar diacritic reordering

Dictionary Lookup Normalization

Complete normalization for database queries:
Pipeline:
  1. Strip whitespace
  2. Zawgyi to Unicode conversion (if detected)
  3. Unicode NFC normalization
  4. Remove zero-width characters
  5. Myanmar diacritic reordering

Comparison Normalization

Aggressive normalization for text comparison:

Display Normalization

Minimal normalization preserving user formatting:
Pipeline:
  1. Unicode NFC normalization
  2. Myanmar diacritic reordering
  3. Preserves whitespace and zero-width characters

Corpus Ingestion

Full normalization for building dictionaries:

NormalizationOptions

Customize normalization with options:

Presets

Pre-defined presets for common use cases:

Preset Configuration

Myanmar Text Detection

Check if text is primarily Myanmar script:

Zawgyi Handling

The service automatically detects and converts Zawgyi encoding:

Convenience Functions

Module-level functions for quick access:

Cython Optimization

Core normalization functions are Cython-optimized:

Thread Safety

The NormalizationService is thread-safe:

Integration

The normalization service is used throughout mySpellChecker:

In SpellChecker

In Data Pipeline

In Providers

Normalization Steps

1. Unicode Normalization

Converts text to consistent Unicode form (NFC by default):

2. Zero-Width Character Removal

Removes invisible characters that can cause matching issues:
  • Zero-width space (U+200B)
  • Zero-width non-joiner (U+200C)
  • Zero-width joiner (U+200D)

3. Myanmar Diacritic Reordering

Ensures consistent ordering of Myanmar diacritics:

4. Zawgyi Detection and Conversion

Detects legacy Zawgyi encoding and converts to Unicode:

Best Practices

  1. Use purpose-specific methods: Choose the right method for your use case
  2. Normalize at boundaries: Normalize input at system entry points
  3. Be consistent: Use the same normalization for related operations
  4. Handle Zawgyi: Enable Zawgyi conversion for user-facing input
  5. Cache results: The service uses singleton pattern for efficiency

See Also