แแปแฝแแบแแฑแฌแบแแญแฏแท แ แฌแแฑแธแแฒแทแกแแซแแพแฌ แกแแบแนแแแญแแบแ แฌแแญแฏแแปแญแฏแธ แ แฌแแฏแถแธแแฝแฑแแญแฏ แแผแแบแแผแฎแธแแฑแธแแฑแทแแแพแญแแฌแแผแฑแฌแแบแทแ NLP/AI แกแแฏแแบแแฝแฑแกแแฝแแบ แแผแแบแแฌแ แฌแแผแฑแฌแแบแธแแฝแฑแแญแฏ แ แฌแแฏแถแธแแผแแบแแแฒแทแกแแฏแแบแ แแแแบแแแบแแฒแแซแแแบแ แกแฒแแซแแผแฑแฌแแบแท แแปแฝแแบแแฑแฌแบแฅแฎแธแแฑแฌแแบแแฑแแฒแท Language Understanding Lab. แแพแฌ Word Segmentation แแฏแแฑแแแกแแฏแแบแแฝแฑแแญแฏ แกแแปแญแแบแแแแบแแแแญแฏ แแแบแแญแฏแแบแแฏแแบแแผแ แบแแฑแแซแแแบแ แแแปแญแฏแทแกแแฏแแบแแฝแฑแกแแฝแแบ sylbreak แแฒแท แแแนแแแผแแบแแผแฎแธ แแฏแแบแแแบแ แแแปแญแฏแทแกแแฏแแบแแฝแฑแกแแฝแแบ myWord แแฒแท แ แฌแแฏแถแธแแผแแบแแแบแ แแซแทแกแแผแแบ แแซแธแแญแแญแฏแท แแฌแแแบแแฑแธแแฌแธแแฒแท semantic chunking แแญแฏแแปแญแฏแธ แ แฌแแฏแถแธแแฝแฑแแญแฏ แแแบแแฌแแผแฑแฌแแบแธแแผแฎแธ แกแแญแแนแแซแแบแแซ แแฝแฒแแฐแแญแฏแท แแผแ แบแแญแฏแแบแแฒแท แ แฌแแฏแถแธแแผแแบแแแบแธแแฝแฑแแญแฏแแแบแธ แแฑแทแแฌแ แแบแธแแแบแแผแ แบแแฒแทแแซแแแบแ แแฎแแแบแแญแฏแแบแธแแฝแฑแกแแฝแแบแธแแพแฌ Lab แแฒแท internship แแปแฑแฌแแบแธแแฌแธแแฝแฑแแญแฏ word segmentation แแฒแทแแแบแแแบแแฌแแแบแธ แ แฌแแแบแแญแฏแทแแผแแบแแแบแธแแฒแท แแญแฏแธแกแแแบแ แ แแบแธแแฒแทแแฐแธแแฒแท DAG (directed acyclic graph) แแแบแแญแฏ แแผแแบแแพแแบแทแแผแ แบแแฒแทแแซแแแบแ แกแญแฏแแบแแฎแแฌแกแแฑแแฒแทแแแฑแฌแท ARPA n-gram language model แแแบ syllable frequency count แแฝแฑแแแบแแฒแท แแผแแบแแฌแ แฌ แ แฌแแฏแถแธแแฝแฑแแญแฏ แแผแแบแแฒแท แแแบแธแแแบแธแแซแ แแฐแ OOV แแญแฏแแแบแธ backoff แแฒแท แแพแฑแฌแแบแแญแฏแท แแแฌแแญแฏแท แแปแฝแแบแแฑแฌแบแ แ แญแแบแแแบแ แฌแธแแแบแ แแแบแแฝแฑแทแแพแฌแ แแผแแบแแฌแ แฌแกแแฝแแบ แแแแบแแฑแฌแแบแธแแฒแท language model แแฑแฌแแบแแญแฏแทแแญแฏแแฌแ แแแฝแแบแแฐแแซแแฐแธแ แกแแปแญแฏแธแแปแญแฏแธ แแผแญแฏแธแ แฌแธแแผแแบแทแแแบแธ แแแแบแ แแแบแแแฑแฌแแบ แแแบแแแฌแแซแแฐแธแ แกแฒแแซแแฒแท แแฑแฌแแบแแฏแถแธแแฑแฌแท แกแแญแแฌแแบ แแฒแท bidirectional maximum matching แแญแฏแแซ แแฝแฒแแญแฏแแบแแผแฎแธ score แแฏแแบแแฌ fallback แแฏแแบแแฌแแฝแฑแแฒแท แแฝแฒแแผแ แบแแฝแฌแธแแซแแแบแ แแแแบแ --bimm-boost แแฒแท tuning แแฏแแบแแแบแธ F1-score 90+ แแญ แแแบแกแฑแฌแแบ แแฏแแบแแญแฏแทแแแฌแแญแฏ แแพแฌแแฝแฑแแฝแฑแทแแพแญแแฒแทแแแบแ แกแฒแแซแแฒแทแแฒ แแปแฑแฌแแบแธแแฌแธแ แแปแฑแฌแแบแธแแฐแแฝแฑแแญแฏแแแบแธ Hybrid DAG + Bi-MM + LM architecture แแญแฏแกแแผแฑแแถแแฒแท word segmentation แแญแฏ แแญแแบแแแบแแฑแธแแแบแธ แแฎ oppaWord แแญแฏ แกแแปแฌแธแแฏแถแธแแญแฏแทแแแญแฏแทแกแแญ coding แแแบแแฏแแบแแผแ แบแแฒแทแแแบแ
oppaWord แแญแฏแแฒแท แแฌแแแบแแฌแธแ แกแ แ ARPA LM แแญแฏ แแฏแถแธแแฌแธแแฌแแญแฏแทแแญแฏแท arpaWord แแญแฏแแผแฎแธ แแฌแแแบแแฑแธแแญแฏแท แ แแบแธแ แฌแธแแฒแทแแฌแ แแแแบแแแบแธแ hybrid_dag_bimm_lm.py แแญแฏแแผแฎแธ แแฑแธแแแบแแฑแฌแท แแฏแถแธแแฌแธแแฒแท approach แกแฌแธแแฏแถแธแแญแฏแแญแฏแแญแฏ แแผแฏแถแแฏแถแแญแแซแแแบแ แแแบแแฌแ แกแแปแฌแธแกแแฝแแบ แแพแแบแแญแแญแฏแท แแแบแแซแแญแแบแทแแแบแ แแแบแแพแญ แแญแฏแแฎแธแแฌแธ แ แแฌแธแแฏแถแธ oppa (์ค๋น ) แแญแฏแแแบแแฑแฌแท แแผแแบแแฌแแฐแแแบแแญแฏแแบแธแแญแฏแแญแฏ แแแบแธแแพแฎแธแแผแฎแธแแฌแธ แแผแ แบแแซแแญแแบแทแแแบแ แแผแฎแธแแฑแฌแท แแแแแบแธแกแแผแฎแธแแพแฌ แแพแ แบแแฑแฌแบแแฑแฌแบแแผแฌแแผแฌ แแญแฏแแบแแฝแแบแแญแฏแกแฌแธแแ แฌแธแแญแฏ แแฏแแบแแผแ แบแแฒแทแแฒแท แแแบแแ แกแแพแแบแแแแฝแฑแแแบแ แแปแฝแแบแแฑแฌแบแแฒแท แแญแฏแแบแแฝแแบแแญแฏแแแฌแแฝแฑแกแแปแฌแธแแผแฎแธแแฒแแแ แบแฅแฎแธแแผแ แบแแฒแท แแแนแแฌแทแแปแแบแแฎแแถ แแแฌแแปแฝแแบ แแญแฏแแแบแธ แแแญแแแฌแแฒแท oppaWord แแญแฏแทแแฒ แแฌแแแบแแฑแธแแผแ แบแแฒแทแแซแแแบแ
แแแบแแพแญแกแแปแญแแบแแญ แกแแปแญแฏแธแแปแญแฏแธ experiment แแฝแฑ แแฏแแบแแผแแบแทแแฒแทแแผแฎแธ แ แฌแแผแฑแฌแแบแธแแฑ แแฑแธแแฑแฌแแบแธแแปแฑแฌแบแแญแฏ (e.g. myPOS corpus แแ แบแแฏแแฏแถแธ) แ แฌแแฏแถแธแแผแแบแแผแแบแทแแฌ แ แ แแนแแแบแทแแฑแฌแแบ แแแผแฌแแซแแฐแธแ แกแฒแแซแแผแฑแฌแแบแท แแแบแแพแญแกแแปแญแแบแแญ แแผแแบแแฌแ แฌแกแแฝแแบ แกแแผแแบแแฏแถแธ word segmenter แแซแแฒแ ์คppa๋น ord แแญแฏ แกแฌแธแแฑแธแแผแแซแฅแฎแธแแญแฏแทแ
แแฒแแปแฑแฌแบแแฐ
4 Aug 2025
Myanmar language lacks strict word boundary rules, making word segmentation essential for NLP tasks. While existing tools like sylbreak (syllable segmenter) and myWord (multi-level segmenter) exist, oppaWord fills the critical need for a fast, training-free word segmenter with domain adaptation capabilities through:
- Hybrid DAG + Bi-MM + LM architecture
- Post-editing rule support
- Visual debugging tools
- Syllable-level processing
Key Advantages:
- Faster than Neural Network based segmenters
- No training required - just provide a dictionary
- Tunable segmentation strategies via simple parameters
oppaWord combines three core techniques:
-
DAG Construction:
- Builds all possible segmentations (3-12 syllable lengths)
- Scores paths using dictionary, frequency, and language model features
-
Bidirectional Maximum Matching (Bi-MM):
- Fallback mechanism when DAG paths are uncertain
- Configurable score boosting (
--bimm-boost)
-
Multi-Feature Scoring:
Total_Score = Dict_Weight + Syllable_Freq + LM_Score + (Bi-MM_Boost)
git clone https://github.com/ye-kyaw-thu/oppaWord.git
cd oppaWord
7z x data/5gramLM.7z.001 # Extract language model
python oppa_word.py \
--input input.txt \
--dict data/myg2p_mypos.dict \
--output segmented.txt
oppaWord achieves remarkable processing speeds even on large corpora. Here's a benchmark from segmenting the entire myPOS corpus (43,196 sentences) without using a language model:
ye@lst-hpc3090:~/exp/myTokenizer/oppaWord$ time python oppa_word.py \
--input ../../corpus_info/tool/dagWord/data/mypos-ver.3.0.shuf.notag.nopunc.txt.seg_normalized2 \
--dict data/myg2p_mypos.dict \
--space-remove-mode my_not_num \
--use-bimm-fallback \
--bimm-boost 150 \
--output ./mypos-ver.3.0.noLM.norules.token.txt
real 0m2.586s # Total elapsed time (including space removal preprocessing)
user 0m2.555s
sys 0m0.024sFor best accuracy with current 5-gram LM:
python oppa_word.py \
--input text.txt \
--dict data/myg2p_mypos.dict \
--arpa data/myMono_clean_syl.trie.bin \
--use-bimm-fallback \
--bimm-boost 150 \
--space-remove-mode "my_not_num"
$ python ./oppa_word.py --help
usage: oppa_word.py [-h] --input INPUT [--output OUTPUT] --dict DICT [--sylfreq SYLFREQ] [--arpa ARPA]
[--postrule-file POSTRULE_FILE] [--max-order MAX_ORDER] [--dict-weight DICT_WEIGHT]
[--use-bimm-fallback] [--bimm-boost BIMM_BOOST] [--visualize-dag] [--dag-output-dir DAG_OUTPUT_DIR]
[--space-remove-mode {all,my,my_not_num}] [--max-word-len MAX_WORD_LEN]
oppa_word, Hybrid DAG + BiMM + LM Myanmar Word Segmenter with optional Aho-Corasick support
options:
-h, --help show this help message and exit
--input INPUT, -i INPUT
Input file with one sentence per line (UTF-8)
--output OUTPUT, -o OUTPUT
Optional output file path (default: stdout)
--dict DICT, -d DICT Word dictionary file (one word per line)
--sylfreq SYLFREQ, -s SYLFREQ
Syllable frequency file (syllable<TAB>frequency, for scoring)
--arpa ARPA, -a ARPA ARPA-format syllable-level language model (optional)
--postrule-file POSTRULE_FILE
Optional post-processing rules (e.g., merging, corrections)
--max-order MAX_ORDER
Max LM n-gram order (default: 5)
--dict-weight DICT_WEIGHT
Dictionary path weight in scoring (default: 10.0)
--use-bimm-fallback Enable Bi-directional Maximum Matching as fallback
--bimm-boost BIMM_BOOST
Boost score added to Bi-MM fallback path (default: 0.0)
--visualize-dag Generate DAG visualization (PDF per sentence)
--dag-output-dir DAG_OUTPUT_DIR
Directory to save DAG PDFs if --visualize-dag is used (default: 'dag_viz')
--space-remove-mode {all,my,my_not_num}
Preprocessing mode to remove spaces: 'all', 'my' (Myanmar only), or 'my_not_num (Myanmar but not
including Myanmar numbers'
--max-word-len MAX_WORD_LEN
Maximum word length in syllables (3-12, default:6)
Debug segmentation decisions using DAG visualizations:
python oppa_word.py \
--input ./data/10lines.ref \
--dict ./data/myg2p_mypos.dict \
--space-remove-mode "my_not_num" \
--use-bimm-fallback \
--bimm-boost 150 \
--visualize-dag \
--dag-output-dir debug_viz2
Visualization Demo:
ye@lst-hpc3090:~/exp/myTokenizer/oppaWord$ python oppa_word.py \
> --input ./data/10lines.ref \
> --dict ./data/myg2p_mypos.dict \
> --space-remove-mode "my_not_num" \
> --use-bimm-fallback \
> --bimm-boost 150 \
> --visualize-dag \
> --dag-output-dir debug_viz2
แแแแ แแฏแแพแ
แบ แแแบแทแแพแแบแธ แแแบแธแแฑแซแแบแ
แฌแแแบแธ แกแ แแฐแฆแธ แแฑ แแแ
แแแ แแฑแฌแแบ แแพแญ แแแบ
แแฐ แแญแฏแแบแธ แแฝแแบ แแแบแทแแผแแบ แแปแฑแฌแบแแแบ แ
แฝแฌ แแแบแทแแแบ แแฌแธ แแแบแท แกแแฏแแบแแฏแแบแแปแญแแบ แกแแผแแบ แแ
แฌ แแพแแบแทแแแฝ แกแแซ แแฌแ แกแฌแธแแปแฑแฌแบแ
แฝแฌ แแแบแแพแแบ แแฌแธ แแแบแท แกแแฏแแบ แกแฌแธแแแบแแแบ แแปแฌแธ แแซแแแบ แแแบแท แกแแฌแธแแฐแแฝแแบแท แแพแแบแท แกแฌแธแแแบแแฝแแบแท แแถแ
แฌแธแแญแฏแแบแแฝแแบแท แแพแญ แแแบ
แค แแแบแธ แแญแฏ แ
แ
แบแแฐ แแฑแฌ แแแบแธ แแฏ แแฑแซแบ แแแบ
แ
แฌแแผแแบแแฝแฒ แแญแฏ แแฌ แ แกแฌแแฏแถแแฑแฌแแบ แกแแฝแแบแแปแแบ แแฌแธ แแฒแท แแญแแแแบแแฏแถแธแแฏแถ แ
แฌแแฑ แแฝแฑ แแญแฏ แ
แฌแ
แ
แบ แแถแแฌแแฑแฌแบแแผแฎแธ แแฝแฑ แแฒแท แแพแฑแทแแพแฌ แกแแฝแแบ แแผแแบ แแผแฎแธ แแฝแแบแแผ แ แแฌ แแฑแซแท
แแฎ แแพแฌ แแปแฝแแบแแฑแฌแบแท แแแบแแฑแแถแแแบ แแซ
แแ แแฌแ
แฏ แแผแแบแแฌแท แแแญแฏแแบแธ แแแบแธ แแแบแธ แแพแญแฏแแบ แแแแ แแฏ แแฑ แ แแถแแฑแฌแบแแแบแแแบ แ
แฌแแฑ
แแปแฝแแบแแฑแฌแบ แแปแแบแแพแแบ แแ
แบ แแแบแแฏแแบ แแปแแบแแซแแแบ
แแปแฝแแบแแฑแฌแบ แแญแฏแท แ แแฎ แกแแพแฏ แแฒแท แแผแถแแฌแแซ แแญแฏ แแแบแธแแญ แแญแฏแท แแผแญแฏแธแ
แฌแธ แแฒแท แแแบ
แแแฑแธ แแฎแธแแฝแฌแธ แแญแฏแท แแแทแบแแพแแบแธ แแแบ แ แแแบแแฑแฌแท แแซ แแฒ
แกแแญแฏแธแแพแแบแธแแฏแถแธ แแฌแแญแฏแแญแฏแแบแแแญแแบ แแพแฌ แแแฐแธแแญแฏแทแ
แบ แแแแบแแญแฏแทแ
แบ แแแแบแแญแฏแทแ
แบ แ
แแแบแท แแญแฏแแญแฏแแแบแแแญแฏแแบ แแปแฌแธ แแผแ
แบ แแแบ
ye@lst-hpc3090:~/exp/myTokenizer/oppaWord$ ls debug_viz2/
dag_line_0000.dot dag_line_0002.dot dag_line_0004.dot dag_line_0006.dot dag_line_0008.dot
dag_line_0000.pdf dag_line_0002.pdf dag_line_0004.pdf dag_line_0006.pdf dag_line_0008.pdf
dag_line_0001.dot dag_line_0003.dot dag_line_0005.dot dag_line_0007.dot dag_line_0009.dot
dag_line_0001.pdf dag_line_0003.pdf dag_line_0005.pdf dag_line_0007.pdf dag_line_0009.pdf
ye@lst-hpc3090:~/exp/myTokenizer/oppaWord$
Example output:
oppaWord/
โโโ data/ # Resource files
โ โโโ myg2p_mypos.dict # Main dictionary
โ โโโ myg2p_mypos_name.dict # Extended dictionary with Myanmar names
โ โโโ myMono.freq # Syllable frequency counts
โ โโโ myMono_clean_syl.trie.bin # 5-gram syllable LM (optimized binary)
โ โโโ rules.txt # Post-processing correction rules
โโโ doc/ # Documentation
โโโ tools/ # Evaluation and preprocessing scripts
โโโ oppa_word.py # Main segmenter code
Note: exp_1, exp_2, and exp_20250727_1553 are output folders from some earlier experiments.
- One sentence per line
- Space removal optional (handled by
--space-remove-mode)
oppaWord supports post-segmentation corrections through a rules file. This helps fix systematic errors and improve readability.
WRONG_FORM|||CORRECT_FORM
-
Exact Word Replacements:
แแซแแแบ|||แแซ แแแบ แแแพแญ|||แ แแพแญ- Merges or splits exact word matches
- Example:
"แแซแแแบ"โ"แแซ แแแบ"
-
Regular Expressions:
(\S)([แแ])|||\1 \2- Uses regex patterns to handle:
- Punctuation attachment (
"แแซแ"โ"แแซ แ")
- Punctuation attachment (
- Regex syntax follows Python's re module
- Uses regex patterns to handle:
-
Best Practices
- Order Matters: Rules are applied top-to-bottom
- Balance Specificity:
- Prefer exact matches (
แแซแแฐแธ|||แแซ แแฐแธ) over broad regex when possible
- Prefer exact matches (
- For speed: Use
--dict-only --bimm-boost 150 - For accuracy: Add
--arpa data/myMono_clean_syl.trie.bin - Domain adaptation:
- Customize
data/rules.txtfor post-editing - Add domain terms to dictionary
- Customize
We provide eval_segmentation.py - a comprehensive evaluation tool that offers:
-
Multi-Level Metrics:
- Word-Level: Precision, Recall, F1 (exact word matches)
- Boundary-Level: Accuracy of word boundaries
- Vocabulary-Level: Type-based analysis
-
Error Analysis:
- Categorizes errors into:
- Over-Segmentation: System incorrectly splits words
- Under-Segmentation: System incorrectly merges words
- Complex Errors: Mixed boundary mistakes
- Shows top-K most frequent errors (configurable with
--top-k)
- Categorizes errors into:
-
Efficient Processing:
- Handles large files (>500k words) in seconds
- Optional
--no-errorsflag for faster metric-only evaluation
ye@lst-hpc3090:~/exp/myTokenizer/oppaWord$ python ./tools/eval_segmentation.py --help
usage: eval_segmentation.py [-h] -r REFERENCE [-H HYPOTHESIS] [--top-k TOP_K] [--no-errors]
Enhanced Word Segmentation Evaluator with Error Analysis
options:
-h, --help show this help message and exit
-r REFERENCE, --reference REFERENCE
Reference (gold standard) file (default: None)
-H HYPOTHESIS, --hypothesis HYPOTHESIS
Hypothesis (system output) file (use - for stdin) (default: -)
--top-k TOP_K Show top K most frequent errors (default: 10)
--no-errors Skip error analysis to save time (default: False)
ye@lst-hpc3090:~/exp/myTokenizer/oppaWord$
python ./tools/eval_segmentation.py \
-r reference.txt \
-H hypothesis.txt > results.txtWord segmentation evaluation on the mypos-ver.3.0 corpus (43,196 sentences) using the following parameters: --dict, --space-remove-mode, --use-bimm-fallback, --bimm-boost, and --postrule:
ye@lst-hpc3090:~/exp/myTokenizer/oppaWord$ time python oppa_word.py --input ../../corpus_info/tool/dagWord/data/mypos-ver.3.0.shuf.notag.nopunc.txt.seg_normalized2 \
--dict data/myg2p_mypos.dict --space-remove-mode my_not_num --use-bimm-fallback \
--bimm-boost 150 --postrule-file ./data/rules.txt --output ./mypos-ver.3.0.noLM.rules.token.txt
real 0m2.721s
user 0m2.688s
sys 0m0.026s
ye@lst-hpc3090:~/exp/myTokenizer/oppaWord$Running eval_segmentation.py to compare reference and hypothesis files, with output saved to result_noLM_Rule2.txt:
ye@lst-hpc3090:~/exp/myTokenizer/oppaWord$ python ./tools/eval_segmentation.py -r ../../corpus_info/tool/dagWord/data/mypos-ver.3.0.shuf.notag.nopunc.txt.seg_normalized2 \
-H ./mypos-ver.3.0.noLM.rules.token.txt > result_noLM_Rule2.txtContents of the evaluation output file (result_noLM_Rule2.txt):
Word Segmentation Evaluation Results
============================================================
Metric Score
------------------------------------------------------------
Word Precision 0.9120
Word Recall 0.8889
Word F1-score 0.9003
------------------------------------------------------------
Boundary Precision 0.6475
Boundary Recall 0.6311
Boundary F1-score 0.6392
------------------------------------------------------------
Vocab Precision 0.8754
Vocab Recall 0.9398
Vocab F1-score 0.9065
============================================================
Additional Statistics:
Reference words: 510437
Hypothesis words: 497503
Correct words: 453708
Reference vocabulary size: 24257
Hypothesis vocabulary size: 26042
Common vocabulary: 22797
Top Segmentation Errors Analysis
============================================================
Total errors: 57106
Most Frequent Over-Segmentation Errors (System split where it shouldn't):
120 ร REF: 'แแญแฏแทแแแฏแแบ' โ HYP: 'แแญแฏแทแ|แแฏแแบ'
101 ร REF: 'แแซแแพแแแฏแแบ' โ HYP: 'แแซแแพแ|แแฏแแบ'
81 ร REF: 'แแฑแซแบแแฌ' โ HYP: 'แแฑแซแบ|แแฌ'
76 ร REF: 'แแฌแแฎ' โ HYP: 'แแฌ|แแฎ'
57 ร REF: 'แแปแฝแแบแแฑแฌแบ' โ HYP: 'แแปแฝแแบ|แแฑแฌแบ'
54 ร REF: 'แกแแแบ' โ HYP: 'แก|แแแบ'
50 ร REF: 'แแญแแ
แบ' โ HYP: 'แแญ|แแ
แบ'
49 ร REF: 'แแแฑ' โ HYP: 'แ|แแฑ'
47 ร REF: 'แแแแบ' โ HYP: 'แ|แแแบ'
42 ร REF: 'แกแแพแแบ' โ HYP: 'แก|แแพแแบ'
Most Frequent Under-Segmentation Errors (System joined what should be separate):
247 ร REF: 'แ|แ' โ HYP: 'แแ'
175 ร REF: 'แแ
แบ|แแฏ|แแฏ' โ HYP: 'แแ
แบแแฏแแฏ'
137 ร REF: 'แแแบแแปแฑแธ|แแพแฏ' โ HYP: 'แแแบแแปแฑแธแแพแฏ'
137 ร REF: 'แแญแฏแแบแแถ|แแฑแธ' โ HYP: 'แแญแฏแแบแแถแแฑแธ'
124 ร REF: 'แแฌ|แแฒ' โ HYP: 'แแฌแแฒ'
111 ร REF: 'แ
|แ' โ HYP: 'แ
แ'
110 ร REF: 'แแ
แบ|แแฏแถแธ' โ HYP: 'แแ
แบแแฏแถแธ'
107 ร REF: 'แแซ|แฅแฎแธ' โ HYP: 'แแซแฅแฎแธ'
104 ร REF: 'แแ
แบ|แแแบ' โ HYP: 'แแ
แบแแแบ'
103 ร REF: 'แ|แแฝแฑแท' โ HYP: 'แแแฝแฑแท'
Most Frequent Complex Boundary Errors:
350 ร REF: 'แแฑแซแบ' โ HYP: 'แแฑแซแบแแพแฌ'
230 ร REF: 'แแผแ
แบ' โ HYP: 'แแแบ'
218 ร REF: 'แแแบ' โ HYP: 'แแแบแแพแฌ'
192 ร REF: 'แแฏแแบ' โ HYP: 'แแฏแแบแแแบ'
188 ร REF: 'แแญแฏแแบแแถ' โ HYP: 'แแญแฏแแบ'
167 ร REF: 'แ' โ HYP: 'แแถแ'
162 ร REF: 'แฆแธ' โ HYP: 'แฅแฎแธ'
150 ร REF: 'แแผแ
แบ' โ HYP: 'แแผแ
แบแ'
146 ร REF: 'แแผ' โ HYP: 'แแผแ'
120 ร REF: 'แแฑแฌแแบแธแแแบ' โ HYP: 'แแฑแฌแแบแธแแแบแแซ'
MIT License - Full terms available at:
https://github.com/ye-kyaw-thu/oppaWord/blob/main/LICENSE
The dictionary combines words from multiple sources:
- myG2P dictionary (originally from Myanmar Language Commission)
- myPOS corpus
- Personal names from myRoman corpus and LU Lab's Myanmar names collection (for R&D)
- myMono monolingual corpus (not publicly released)
Usage Restrictions:
- โ Allowed: Myanmar language NLP/AI research and development
- โ Not Allowed: Commercial use without explicit permission
For those interested in oppaWord's segmentation methodology and development process:
-
Technical Introduction
- Presentation slides:
oppaWord_Intro.pdf
oppaWord_Intro.pptx - Covers: Core algorithm, visualization examples, and performance benchmarks
- Presentation slides:
-
Experimental Notebooks
Contains Jupyter notebooks demonstrating:- Different segmentation strategies
- Error analysis workflows
- Parameter tuning examples
-
Research Publications (Coming Soon)
- Planned journal paper on the hybrid segmentation approach
If you use oppaWord in your work, please cite it as follows:
(oppaWord แแญแฏ แกแแฏแถแธแแผแฏแแซแ แกแฑแฌแแบแแซแกแแญแฏแแบแธ แแญแฏแธแแฌแธแแฑแฌแบแแผแแฑแธแแซแ)
@misc{oppaWord_2025,
author = {Ye Kyaw Thu},
title = {{oppaWord: Hybrid DAG+Bi-MM+LM Myanmar Word Segmenter}},
version = {1.0},
month = {August},
year = {2025},
publisher = {GitHub},
url = {https://github.com/ye-kyaw-thu/oppaWord},
note = {Accessed: YYYY-MM-DD},
institution = {Language Understanding Lab (LU Lab), Myanmar}
}