README.md

September 8, 2022 · View on GitHub

Chinese Text Normalization

1. How To Use

$ python normalize.py --text "text to be normalized"

2. TN Pipeline

There are 3 components in TN pipeline:

  • pre-processing (before tagger)
  • non-standard word normalization
  • post-processing (after verbalizer)

2.1 Pre-Processing

Pre-ProcessingRawNormalizedNote
Char Width Conversion (全角 => 半角)苹果宣布发布新IPHONE苹果宣布发布新IPHONE
Mapping symbols他说:“我们已经吃过了!”。他说:"我们已经吃过了!".via data/char/fullwidth_to_halfwidth.tsv
Blacklist (Removal)呃这个呃啊我不知道这个我不知道via data/default/blacklist.tsv

2.2 Non-Standard-Words (NSW) Normalization

NSW typeRawNormalizedNote
Numbers共465篇,约315万字共四百六十五篇,约三百一十五万字
共计6.42万人共计六点四二万人
Fraction总量的1/5以上总量的五分之一以上
相当于头发丝的1/16相当于头发丝的十六分之一
Percentage同比增长6.3%同比增长百分之六点三
Date2002/01/28二零零二年一月二十八日
2002-01-28二零零二年一月二十八日
2002.01.28二零零二年一月二十八日
2002/01二零零二年一月
Time8月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)CEOC E O
O2OO to O

2.3 Post-Processing

Post-ProcessingRawNormalizedNote
Punctuation Removal你好!你好
Out-Of-Vocabulary (OOV) Tagger我们안녕我们<oov>안</oov><oov>녕</oov>default charset (national standard) 通用规范汉字表
雪の花雪<oov>の</oov>花extend charset data/char/charset_extension.tsv

Acknowledge

  1. Thank the authors of foundational libraries like OpenFst & Pynini.
  2. Thank NeMo team & NeMo open-source community.
  3. Thank Zhenxiang Ma, Jiayu Du, and SpeechColab organization.
  4. Referred Pynini for reading the FAR, and printing the shortest path of a lattice in the C++ runtime.
  5. Referred TN of NeMo for the data to build the tagger graph.