Skip to content

Normalizer API

Overview

Unicode normalization, ZWNJ/ZWJ stripping, and script detection for Nepali text.

Functions

normalize(text, form="NFC")

Normalize text with all options enabled.

from nepalikit.normalizer import normalize

normalize("म  नाम   राम हो")  # "म नाम राम हो"
normalize("म\u200Cनाम")       # "मनाम"

detect_script(text)

Detect the script of the text.

from nepalikit.normalizer import detect_script

detect_script("मेरो नाम राम हो")  # "devanagari"
detect_script("mero naam ram ho")  # "latin"
detect_script("मेरो name ram")     # "mixed"
detect_script("12345")              # "other"

is_devanagari(text)

Check if text is purely Devanagari (ignoring whitespace/punctuation).

from nepalikit.normalizer import is_devanagari

is_devanagari("नेपाल")      # True
is_devanagari("नेपाल a")    # False

contains_devanagari(text)

Check if text contains at least one Devanagari character.

from nepalikit.normalizer import contains_devanagari

contains_devanagari("Hello नमस्ते")  # True
contains_devanagari("Hello")          # False

contains_latin(text)

Check if text contains at least one Latin character.

from nepalikit.normalizer import contains_latin

contains_latin("Hello नमस्ते")  # True
contains_latin("नेपाल")          # False

mixed_script_ratio(text)

Compute Devanagari fraction over Devanagari + Latin characters.

from nepalikit.normalizer import mixed_script_ratio

mixed_script_ratio("नेपाल Hello")  # 0.5
mixed_script_ratio("नेपाल")          # 1.0
mixed_script_ratio("Hello")          # 0.0

Classes

NepaliNormalizer

Advanced normalizer with configurable options.

from nepalikit.normalizer import NepaliNormalizer

normalizer = NepaliNormalizer()
normalized = normalizer.normalize("म  नाम")
print(normalized)  # "म नाम"

script = normalizer.detect_script("मेरो नाम")
print(script)  # "devanagari"

# Check if text is purely Devanagari
normalizer.is_devanagari("नेपाल")  # True

# Get Devanagari fraction
normalizer.mixed_script_ratio("नेपाल Hello")  # 0.5

Methods

NepaliNormalizer.normalize(text, form="NFC")

Apply full normalization pipeline.

Parameters: - text (str): Input text - form (str): Unicode normalization form ('NFC' or 'NFKC')

Returns: Normalized text

NepaliNormalizer.detect_script(text)

Detect the script of text.

Parameters: - text (str): Input text

Returns: 'devanagari', 'latin', 'mixed', or 'other'

NepaliNormalizer.is_devanagari(text)

Check if every non-whitespace, non-punctuation character is Devanagari.

Parameters: - text (str): Input text

Returns: bool

NepaliNormalizer.contains_devanagari(text)

Check if text contains at least one Devanagari character.

Parameters: - text (str): Input text

Returns: bool

NepaliNormalizer.contains_latin(text)

Check if text contains at least one Latin character.

Parameters: - text (str): Input text

Returns: bool

NepaliNormalizer.mixed_script_ratio(text)

Compute Devanagari fraction over Devanagari + Latin characters.

Parameters: - text (str): Input text

Returns: float (0.0 to 1.0)

NepaliNormalizer.strip_zwnj(text)

Remove zero-width joiners and non-joiners.

Parameters: - text (str): Input text

Returns: Text without ZWNJ/ZWJ

NepaliNormalizer.strip_control_chars(text)

Remove Unicode control characters.

Parameters: - text (str): Input text

Returns: Cleaned text

NepaliNormalizer.normalize_unicode(text, form="NFC")

Apply Unicode normalization only (without ZWNJ stripping or control char cleanup).

Parameters: - text (str): Input text - form (str): Normalization form ('NFC' or 'NFKC')

Returns: Unicode-normalized text