$ python normalize.py --text "text to be normalized"
There are 3 components in TN pipeline:
- pre-processing (before tagger)
- non-standard word normalization
- post-processing (after verbalizer)
| Pre-Processing | Raw | Normalized | Note |
|---|
| Char Width Conversion (全角 => 半角) | 苹果宣布发布新IPHONE | 苹果宣布发布新IPHONE | |
| Mapping symbols | 他说:“我们已经吃过了!”。 | 他说:"我们已经吃过了!". | via data/char/fullwidth_to_halfwidth.tsv |
| Blacklist (Removal) | 呃这个呃啊我不知道 | 这个我不知道 | via data/default/blacklist.tsv |
| NSW type | Raw | Normalized | Note |
|---|
| Numbers | 共465篇,约315万字 | 共四百六十五篇,约三百一十五万字 | |
| 共计6.42万人 | 共计六点四二万人 | |
| Fraction | 总量的1/5以上 | 总量的五分之一以上 | |
| 相当于头发丝的1/16 | 相当于头发丝的十六分之一 | |
| Percentage | 同比增长6.3% | 同比增长百分之六点三 | |
| Date | 2002/01/28 | 二零零二年一月二十八日 | |
| 2002-01-28 | 二零零二年一月二十八日 | |
| 2002.01.28 | 二零零二年一月二十八日 | |
| 2002/01 | 二零零二年一月 | |
| Time | 8月16号12:00之前 | 八月十六号十二点之前 | |
| 我是5:02开始的 | 我是五点零二分开始的 | |
| 于5:35:36发射 | 于五点三十五分三十六秒发射 | |
| 8:00 a.m.准时开会 | 早上八点准时开会 | |
| Math | 比分定格在78:96 | 比分定格在七十八比九十六 | |
| 计算-2的绝对值是2 | 计算负二的绝对值是二 | |
| ±2的平方都是4 | 正负二的平方都是四 | |
| Money | 价格是¥13.5 | 价格是十三点五元 | |
| 价格是$13.5 | 价格是十三点五美元 | |
| Measure | 重达25kg | 重达二十五千克 | |
| 最高气温38°C | 最高气温三十八摄氏度 | |
| 速度是10km/h | 速度是每小时十公里 | |
| Number series | 可以拨打12306来咨询 | 可以拨打幺二三零六来咨询 | |
| Erhua (儿化音) Removal | 我儿子喜欢这地儿 | 我儿子喜欢这地 | via data/erhua/whitelist.tsv |
| Whitelist (Replacement) | CEO | C E O | |
| O2O | O to O | |
| Post-Processing | Raw | Normalized | Note |
|---|
| Punctuation Removal | 你好! | 你好 | |
| Out-Of-Vocabulary (OOV) Tagger | 我们안녕 | 我们<oov>안</oov><oov>녕</oov> | default charset (national standard) 通用规范汉字表 |
| 雪の花 | 雪<oov>の</oov>花 | extend charset data/char/charset_extension.tsv |
- Thank the authors of foundational libraries like OpenFst & Pynini.
- Thank NeMo team & NeMo open-source community.
- Thank Zhenxiang Ma, Jiayu Du, and SpeechColab organization.
- Referred Pynini for reading the FAR, and printing the shortest path of a lattice in the C++ runtime.
- Referred TN of NeMo for the data to build the tagger graph.