WeTextProcessing 1.0.4.1__py3-none-any.whl → 1.0.6.dev19__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- itn/README.md +60 -0
- itn/__main__.py +1 -1
- itn/chinese/data/number/repeat_digit.tsv +322 -0
- itn/chinese/data/time/minute.tsv +0 -9
- itn/chinese/data/time/minute_zero.tsv +9 -0
- itn/chinese/data/train_number/prefix.tsv +7 -0
- itn/chinese/inverse_normalizer.py +51 -45
- itn/chinese/rules/cardinal.py +91 -78
- itn/chinese/rules/char.py +3 -3
- itn/chinese/rules/date.py +16 -22
- itn/chinese/rules/fraction.py +19 -12
- itn/chinese/rules/license_plate.py +9 -13
- itn/chinese/rules/math.py +9 -9
- itn/chinese/rules/measure.py +64 -51
- itn/chinese/rules/money.py +22 -18
- itn/chinese/rules/postprocessor.py +5 -6
- itn/chinese/rules/time.py +27 -16
- itn/chinese/rules/train_number.py +36 -0
- itn/chinese/rules/whitelist.py +5 -6
- itn/chinese/test/data/cardinal.txt +29 -0
- itn/chinese/test/data/char.txt +2 -0
- itn/chinese/test/data/date.txt +10 -0
- itn/chinese/test/data/fraction.txt +3 -0
- itn/chinese/test/data/license_plate.txt +3 -0
- itn/chinese/test/data/math.txt +6 -0
- itn/chinese/test/data/measure.txt +44 -0
- itn/chinese/test/data/money.txt +11 -0
- itn/chinese/test/data/normalizer.txt +33 -0
- itn/chinese/test/data/normalizer_disable_standalone_number_disable_0_to_9.txt +42 -0
- itn/chinese/test/data/normalizer_disable_standalone_number_enable_0_to_9.txt +11 -0
- itn/chinese/test/data/normalizer_enable_standalone_number_disable_0_to_9.txt +42 -0
- itn/chinese/test/data/number.txt +35 -0
- itn/chinese/test/data/time.txt +12 -0
- itn/chinese/test/data/train_number.txt +7 -0
- itn/chinese/test/data/whitelist.txt +2 -0
- itn/chinese/test/normalizer_test.py +61 -53
- itn/chinese/test/utils.py +3 -3
- itn/japanese/__init__.py +0 -0
- itn/japanese/data/char/common_chinese_char.tsv +2502 -0
- itn/japanese/data/char/fullwidth_to_halfwidth.tsv +95 -0
- itn/japanese/data/char/hiragana_and_katakana.tsv +160 -0
- itn/japanese/data/char/oov_tags.tsv +1 -0
- itn/japanese/data/char/punctuations_ja.tsv +72 -0
- itn/japanese/data/date/day.tsv +31 -0
- itn/japanese/data/date/month.tsv +12 -0
- itn/japanese/data/date/week.tsv +14 -0
- itn/japanese/data/default/blacklist.tsv +0 -0
- itn/japanese/data/default/whitelist.tsv +23 -0
- itn/japanese/data/math/operator.tsv +8 -0
- itn/japanese/data/measure/unit_en.tsv +123 -0
- itn/japanese/data/measure/unit_ja.tsv +48 -0
- itn/japanese/data/money/symbol.tsv +9 -0
- itn/japanese/data/number/digit.tsv +9 -0
- itn/japanese/data/number/dot.tsv +1 -0
- itn/japanese/data/number/hundred.tsv +1 -0
- itn/japanese/data/number/hundred_digit.tsv +9 -0
- itn/japanese/data/number/sign.tsv +4 -0
- itn/japanese/data/number/teen.tsv +10 -0
- itn/japanese/data/number/thousands.tsv +9 -0
- itn/japanese/data/number/ties.tsv +8 -0
- itn/japanese/data/number/zero.tsv +4 -0
- itn/japanese/data/time/hour.tsv +34 -0
- itn/japanese/data/time/minute.tsv +60 -0
- itn/japanese/data/time/second.tsv +60 -0
- itn/japanese/inverse_normalizer.py +96 -0
- itn/japanese/rules/__init__.py +0 -0
- itn/japanese/rules/cardinal.py +158 -0
- itn/japanese/rules/char.py +29 -0
- itn/japanese/rules/date.py +71 -0
- itn/japanese/rules/fraction.py +64 -0
- itn/japanese/rules/math.py +39 -0
- itn/japanese/rules/measure.py +48 -0
- itn/japanese/rules/money.py +45 -0
- itn/japanese/rules/ordinal.py +34 -0
- itn/japanese/rules/postprocessor.py +46 -0
- itn/japanese/rules/preprocessor.py +31 -0
- itn/japanese/rules/time.py +53 -0
- itn/japanese/rules/whitelist.py +33 -0
- itn/japanese/test/__init__.py +0 -0
- itn/japanese/test/data/cardinal.txt +57 -0
- itn/japanese/test/data/char.txt +2 -0
- itn/japanese/test/data/date.txt +13 -0
- itn/japanese/test/data/fraction.txt +8 -0
- itn/japanese/test/data/math.txt +6 -0
- itn/japanese/test/data/measure.txt +6 -0
- itn/japanese/test/data/money.txt +1 -0
- itn/japanese/test/data/normalizer_disable_standalone_number_disable_0_to_9.txt +72 -0
- itn/japanese/test/data/normalizer_disable_standalone_number_enable_0_to_9.txt +72 -0
- itn/japanese/test/data/normalizer_enable_standalone_number_disable_0_to_9.txt +70 -0
- itn/japanese/test/data/number.txt +11 -0
- itn/japanese/test/data/time.txt +9 -0
- itn/japanese/test/data/whitelist.txt +2 -0
- itn/japanese/test/normalizer_test.py +113 -0
- itn/japanese/test/utils.py +32 -0
- itn/main.py +29 -31
- itn/zh_itn_tagger.fst +0 -0
- itn/zh_itn_verbalizer.fst +0 -0
- tn/README.md +69 -0
- tn/__main__.py +1 -1
- tn/_version.py +34 -0
- tn/chinese/data/measure/units_en.tsv +1 -0
- tn/chinese/data/measure/units_zh.tsv +1 -0
- tn/chinese/normalizer.py +58 -50
- tn/chinese/rules/cardinal.py +46 -40
- tn/chinese/rules/char.py +3 -3
- tn/chinese/rules/date.py +21 -19
- tn/chinese/rules/fraction.py +19 -11
- tn/chinese/rules/math.py +8 -13
- tn/chinese/rules/measure.py +23 -26
- tn/chinese/rules/money.py +19 -11
- tn/chinese/rules/postprocessor.py +14 -25
- tn/chinese/rules/preprocessor.py +5 -6
- tn/chinese/rules/sport.py +14 -14
- tn/chinese/rules/time.py +23 -16
- tn/chinese/rules/whitelist.py +9 -10
- tn/chinese/test/cardinal_test.py +2 -2
- tn/chinese/test/char_test.py +1 -1
- tn/chinese/test/data/cardinal.txt +7 -0
- tn/chinese/test/data/char.txt +2 -0
- tn/chinese/test/data/date.txt +14 -0
- tn/chinese/test/data/fraction.txt +3 -0
- tn/chinese/test/data/math.txt +8 -0
- tn/chinese/test/data/measure.txt +10 -0
- tn/chinese/test/data/money.txt +3 -0
- tn/chinese/test/data/normalizer.txt +48 -0
- tn/chinese/test/data/number.txt +27 -0
- tn/chinese/test/data/postprocessor.txt +5 -0
- tn/chinese/test/data/preprocessor.txt +1 -0
- tn/chinese/test/data/sport.txt +3 -0
- tn/chinese/test/data/time.txt +6 -0
- tn/chinese/test/data/whitelist.txt +4 -0
- tn/chinese/test/date_test.py +1 -1
- tn/chinese/test/fraction_test.py +1 -1
- tn/chinese/test/math_test.py +1 -1
- tn/chinese/test/measure_test.py +1 -1
- tn/chinese/test/money_test.py +1 -1
- tn/chinese/test/normalizer_test.py +13 -11
- tn/chinese/test/postprocessor_test.py +1 -1
- tn/chinese/test/preprocessor_test.py +1 -1
- tn/chinese/test/sport_test.py +1 -1
- tn/chinese/test/time_test.py +1 -1
- tn/chinese/test/token_parser_test.py +22 -22
- tn/chinese/test/utils.py +3 -3
- tn/chinese/test/whitelist_test.py +1 -1
- tn/en_tn_tagger.fst +0 -0
- tn/en_tn_verbalizer.fst +0 -0
- tn/english/data/roman/README.md +20 -0
- tn/english/data/whitelist/tts.tsv +0 -19
- tn/english/normalizer.py +63 -81
- tn/english/rules/cardinal.py +77 -90
- tn/english/rules/date.py +177 -144
- tn/english/rules/decimal.py +79 -81
- tn/english/rules/electronic.py +91 -105
- tn/english/rules/fraction.py +41 -58
- tn/english/rules/measure.py +206 -179
- tn/english/rules/money.py +34 -44
- tn/english/rules/ordinal.py +36 -41
- tn/english/rules/punctuation.py +25 -32
- tn/english/rules/range.py +51 -58
- tn/english/rules/roman.py +52 -42
- tn/english/rules/telephone.py +78 -93
- tn/english/rules/time.py +97 -76
- tn/english/rules/whitelist.py +30 -43
- tn/english/rules/word.py +8 -15
- tn/english/test/cardinal_test.py +1 -1
- tn/english/test/data/cardinal.txt +27 -0
- tn/english/test/data/date.txt +14 -0
- tn/english/test/data/decimal.txt +3 -0
- tn/english/test/data/electronic.txt +1 -0
- tn/english/test/data/fraction.txt +7 -0
- tn/english/test/data/measure.txt +7 -0
- tn/english/test/data/money.txt +8 -0
- tn/english/test/data/normalizer.txt +8 -0
- tn/english/test/data/ordinal.txt +11 -0
- tn/english/test/data/range.txt +1 -0
- tn/english/test/data/roman.txt +1 -0
- tn/english/test/data/telephone.txt +2 -0
- tn/english/test/data/time.txt +9 -0
- tn/english/test/data/whitelist.txt +6 -0
- tn/english/test/data/word.txt +6 -0
- tn/english/test/date_test.py +1 -1
- tn/english/test/decimal_test.py +1 -1
- tn/english/test/electronic_test.py +1 -1
- tn/english/test/fraction_test.py +1 -1
- tn/english/test/measure_test.py +1 -1
- tn/english/test/money_test.py +1 -1
- tn/english/test/normalizer_test.py +1 -1
- tn/english/test/ordinal_test.py +1 -1
- tn/english/test/range_test.py +1 -1
- tn/english/test/roman_test.py +1 -1
- tn/english/test/telephone_test.py +1 -1
- tn/english/test/time_test.py +1 -1
- tn/english/test/utils.py +3 -3
- tn/english/test/whitelist_test.py +1 -1
- tn/english/test/word_test.py +1 -1
- tn/japanese/__init__.py +0 -0
- tn/japanese/data/char/common_chinese_char.tsv +2502 -0
- tn/japanese/data/char/fullwidth_to_halfwidth.tsv +95 -0
- tn/japanese/data/char/hiragana_and_katakana.tsv +160 -0
- tn/japanese/data/char/oov_tags.tsv +1 -0
- tn/japanese/data/char/punctuations_ja.tsv +72 -0
- tn/japanese/data/date/d.tsv +31 -0
- tn/japanese/data/date/date.tsv +7 -0
- tn/japanese/data/date/dd.tsv +9 -0
- tn/japanese/data/date/m.tsv +12 -0
- tn/japanese/data/date/mm.tsv +9 -0
- tn/japanese/data/default/blacklist.tsv +0 -0
- tn/japanese/data/default/whitelist.tsv +14 -0
- tn/japanese/data/math/operator.tsv +12 -0
- tn/japanese/data/measure/units_en.tsv +101 -0
- tn/japanese/data/measure/units_ja.tsv +45 -0
- tn/japanese/data/money/code.tsv +24 -0
- tn/japanese/data/money/symbol.tsv +11 -0
- tn/japanese/data/number/digit.tsv +18 -0
- tn/japanese/data/number/dot.tsv +1 -0
- tn/japanese/data/number/en_digit.tsv +18 -0
- tn/japanese/data/number/sign.tsv +3 -0
- tn/japanese/data/number/teen.tsv +18 -0
- tn/japanese/data/number/zero.tsv +2 -0
- tn/japanese/data/pyopenjtalk/transliteration.tsv +6791 -0
- tn/japanese/data/sport/club.tsv +31 -0
- tn/japanese/data/sport/country.tsv +185 -0
- tn/japanese/data/time/hour.tsv +35 -0
- tn/japanese/data/time/minute.tsv +60 -0
- tn/japanese/data/time/noon.tsv +10 -0
- tn/japanese/data/time/second.tsv +60 -0
- tn/japanese/normalizer.py +106 -0
- tn/japanese/rules/cardinal.py +132 -0
- tn/japanese/rules/char.py +29 -0
- tn/japanese/rules/date.py +67 -0
- tn/japanese/rules/fraction.py +49 -0
- tn/japanese/rules/math.py +37 -0
- tn/japanese/rules/measure.py +48 -0
- tn/japanese/rules/money.py +51 -0
- tn/japanese/rules/postprocessor.py +46 -0
- tn/japanese/rules/preprocessor.py +31 -0
- tn/japanese/rules/sport.py +50 -0
- tn/japanese/rules/time.py +54 -0
- tn/japanese/rules/transliteration.py +33 -0
- tn/japanese/rules/whitelist.py +36 -0
- tn/japanese/test/__init__.py +0 -0
- tn/japanese/test/data/cardinal.txt +41 -0
- tn/japanese/test/data/char.txt +2 -0
- tn/japanese/test/data/date.txt +28 -0
- tn/japanese/test/data/fraction.txt +3 -0
- tn/japanese/test/data/math.txt +26 -0
- tn/japanese/test/data/measure.txt +11 -0
- tn/japanese/test/data/money.txt +7 -0
- tn/japanese/test/data/sport.txt +9 -0
- tn/japanese/test/data/time.txt +10 -0
- tn/japanese/test/data/whitelist.txt +4 -0
- tn/japanese/test/normalizer_test.py +42 -0
- tn/japanese/test/utils.py +32 -0
- tn/main.py +26 -43
- tn/processor.py +31 -34
- tn/token_parser.py +26 -27
- tn/utils.py +6 -14
- tn/zh_tn_tagger.fst +0 -0
- tn/zh_tn_verbalizer.fst +0 -0
- {WeTextProcessing-1.0.4.1.dist-info → wetextprocessing-1.0.6.dev19.dist-info}/METADATA +15 -11
- wetextprocessing-1.0.6.dev19.dist-info/RECORD +381 -0
- {WeTextProcessing-1.0.4.1.dist-info → wetextprocessing-1.0.6.dev19.dist-info}/WHEEL +1 -1
- {WeTextProcessing-1.0.4.1.dist-info → wetextprocessing-1.0.6.dev19.dist-info}/entry_points.txt +0 -1
- WeTextProcessing-1.0.4.1.dist-info/RECORD +0 -213
- {WeTextProcessing-1.0.4.1.dist-info → wetextprocessing-1.0.6.dev19.dist-info/licenses}/LICENSE +0 -0
- {WeTextProcessing-1.0.4.1.dist-info → wetextprocessing-1.0.6.dev19.dist-info}/top_level.txt +0 -0
itn/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
## Inverse Text Normalization
|
|
2
|
+
|
|
3
|
+
### 1. How To Use
|
|
4
|
+
|
|
5
|
+
``` bash
|
|
6
|
+
$ python inverse_normalize.py --text "text to be denormalized"
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
### 2. ITN Pipeline
|
|
10
|
+
|
|
11
|
+
There are 2 components in ITN pipeline:
|
|
12
|
+
|
|
13
|
+
* pre-processing (before tagger)
|
|
14
|
+
* non-standard word denormalization
|
|
15
|
+
|
|
16
|
+
#### 2.1 Pre-Processing
|
|
17
|
+
|
|
18
|
+
| Pre-Processing | Raw | Denormalized | Note |
|
|
19
|
+
| ------------------------------------ | -------------------------- | ----------------------- | ------------------------------------------ |
|
|
20
|
+
| Blacklist (Removal) | 呃这个呃啊我不知道 | 这个我不知道 | via `data/default/blacklist.tsv` |
|
|
21
|
+
|
|
22
|
+
#### 2.2 Non-Standard-Words (NSW) Denormalization
|
|
23
|
+
|
|
24
|
+
| NSW type | Raw | Denormalized | Note |
|
|
25
|
+
| ----------------------- | ------------------- | -------------------------------- | ------------------------------ |
|
|
26
|
+
| Numbers | 共四百六十五篇约三百一十五万字 | 共465篇约315万字 | |
|
|
27
|
+
| | 共计六点四二万人 | 共计6.42万人 | |
|
|
28
|
+
| | 幸运一百 | 幸运100 | enable_standalone_number=True (default) ([ref](https://github.com/wenet-e2e/WeTextProcessing/blob/master/itn/chinese/rules/cardinal.py#L73-L75)) |
|
|
29
|
+
| | | 幸运一百 | enable_standalone_number=False |
|
|
30
|
+
| Fraction | 总量的五分之一以上 | 总量的1/5以上 | |
|
|
31
|
+
| | 相当于头发丝的十六分之一 | 相当于头发丝的1/16 | |
|
|
32
|
+
| Percentage | 同比增长百分之六点三 | 同比增长6.3% | |
|
|
33
|
+
| Date | 二零零二年一月二十八日 | 2002/01/28 | |
|
|
34
|
+
| | 二零零二年一月 | 2002/01 | |
|
|
35
|
+
| Time | 八月十六号十二点之前 | 08/16 12点之前 | |
|
|
36
|
+
| | 我是五点零二分开始的 | 我是5:02开始的 | |
|
|
37
|
+
| | 于五点三十五分三十六秒发射 | 于5:35:36发射 | |
|
|
38
|
+
| | 早上八点半准时开会 | 8:30a.m.准时开会 | |
|
|
39
|
+
| Math | 比分定格在七十八比九十六 | 比分定格在78:96 | |
|
|
40
|
+
| | 计算负二的绝对值是二 | 计算-2的绝对值是2 | enable_standalone_number=True (default) |
|
|
41
|
+
| | | 计算负二的绝对值是二 | enable_standalone_number=False |
|
|
42
|
+
| | 正负二的平方都是四 | ±2的平方都是4 | enable_standalone_number=True (default) |
|
|
43
|
+
| | | 正负二的平方都是四 | enable_standalone_number=False |
|
|
44
|
+
| Money | 价格是十三点五元 | 价格是¥13.5 | |
|
|
45
|
+
| | 价格是十三点五美元 | 价格是$13.5 | |
|
|
46
|
+
| Measure | 重达二十五千克 | 重达25kg | |
|
|
47
|
+
| | 最高气温三十八摄氏度 | 最高气温38°C | |
|
|
48
|
+
| | 速度是每小时十公里 | 速度是10km/h | |
|
|
49
|
+
| | 一年后 | 一年后 | exclue_one=True (default) ([ref](https://github.com/wenet-e2e/WeTextProcessing/blob/master/itn/chinese/rules/measure.py#L43-L44)) |
|
|
50
|
+
| | | 1年后 | exclue_one=False |
|
|
51
|
+
| Number series | 可以拨打幺二三零六来咨询 | 可以拨打12306来咨询 | |
|
|
52
|
+
| Whitelist (Replacement) | 三心二意 | 三心二意 | |
|
|
53
|
+
|
|
54
|
+
## Acknowledge
|
|
55
|
+
|
|
56
|
+
1. Thank the authors of foundational libraries like [OpenFst](https://www.openfst.org/twiki/bin/view/FST/WebHome) & [Pynini](https://www.openfst.org/twiki/bin/view/GRM/Pynini).
|
|
57
|
+
3. Thank [NeMo](https://github.com/NVIDIA/NeMo) team & NeMo open-source community.
|
|
58
|
+
2. Thank [Jiayu Du](https://github.com/dophist), and [SpeechColab](https://github.com/SpeechColab) organization.
|
|
59
|
+
3. Referred [Pynini](https://github.com/kylebgorman/pynini) for reading the FAR, and printing the shortest path of a lattice in the C++ runtime.
|
|
60
|
+
4. Referred [ITN of chinese_text_normalization](https://github.com/speechio/chinese_text_normalization/tree/master/thrax/src/cn) for the data to build the tagger graph.
|
itn/__main__.py
CHANGED
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
七个一 1111111
|
|
2
|
+
七个七 7777777
|
|
3
|
+
七个三 3333333
|
|
4
|
+
七个两 2222222
|
|
5
|
+
七个九 9999999
|
|
6
|
+
七个二 2222222
|
|
7
|
+
七个五 5555555
|
|
8
|
+
七个伍 5555555
|
|
9
|
+
七个八 8888888
|
|
10
|
+
七个六 6666666
|
|
11
|
+
七个叁 3333333
|
|
12
|
+
七个四 4444444
|
|
13
|
+
七个壹 1111111
|
|
14
|
+
七个幺 1111111
|
|
15
|
+
七个拐 7777777
|
|
16
|
+
七个捌 8888888
|
|
17
|
+
七个柒 7777777
|
|
18
|
+
七个洞 0000000
|
|
19
|
+
七个玖 9999999
|
|
20
|
+
七个肆 4444444
|
|
21
|
+
七个贰 2222222
|
|
22
|
+
七个陆 6666666
|
|
23
|
+
七个零 0000000
|
|
24
|
+
三个一 111
|
|
25
|
+
三个七 777
|
|
26
|
+
三个三 333
|
|
27
|
+
三个两 222
|
|
28
|
+
三个九 999
|
|
29
|
+
三个二 222
|
|
30
|
+
三个五 555
|
|
31
|
+
三个伍 555
|
|
32
|
+
三个八 888
|
|
33
|
+
三个六 666
|
|
34
|
+
三个叁 333
|
|
35
|
+
三个四 444
|
|
36
|
+
三个壹 111
|
|
37
|
+
三个幺 111
|
|
38
|
+
三个拐 777
|
|
39
|
+
三个捌 888
|
|
40
|
+
三个柒 777
|
|
41
|
+
三个洞 000
|
|
42
|
+
三个玖 999
|
|
43
|
+
三个肆 444
|
|
44
|
+
三个贰 222
|
|
45
|
+
三个陆 666
|
|
46
|
+
三个零 000
|
|
47
|
+
九个一 111111111
|
|
48
|
+
九个七 777777777
|
|
49
|
+
九个三 333333333
|
|
50
|
+
九个两 222222222
|
|
51
|
+
九个九 999999999
|
|
52
|
+
九个二 222222222
|
|
53
|
+
九个五 555555555
|
|
54
|
+
九个伍 555555555
|
|
55
|
+
九个八 888888888
|
|
56
|
+
九个六 666666666
|
|
57
|
+
九个叁 333333333
|
|
58
|
+
九个四 444444444
|
|
59
|
+
九个壹 111111111
|
|
60
|
+
九个幺 111111111
|
|
61
|
+
九个拐 777777777
|
|
62
|
+
九个捌 888888888
|
|
63
|
+
九个柒 777777777
|
|
64
|
+
九个洞 000000000
|
|
65
|
+
九个玖 999999999
|
|
66
|
+
九个肆 444444444
|
|
67
|
+
九个贰 222222222
|
|
68
|
+
九个陆 666666666
|
|
69
|
+
九个零 000000000
|
|
70
|
+
五个一 11111
|
|
71
|
+
五个七 77777
|
|
72
|
+
五个三 33333
|
|
73
|
+
五个两 22222
|
|
74
|
+
五个九 99999
|
|
75
|
+
五个二 22222
|
|
76
|
+
五个五 55555
|
|
77
|
+
五个伍 55555
|
|
78
|
+
五个八 88888
|
|
79
|
+
五个六 66666
|
|
80
|
+
五个叁 33333
|
|
81
|
+
五个四 44444
|
|
82
|
+
五个壹 11111
|
|
83
|
+
五个幺 11111
|
|
84
|
+
五个拐 77777
|
|
85
|
+
五个捌 88888
|
|
86
|
+
五个柒 77777
|
|
87
|
+
五个洞 00000
|
|
88
|
+
五个玖 99999
|
|
89
|
+
五个肆 44444
|
|
90
|
+
五个贰 22222
|
|
91
|
+
五个陆 66666
|
|
92
|
+
五个零 00000
|
|
93
|
+
伍个一 11111
|
|
94
|
+
伍个七 77777
|
|
95
|
+
伍个三 33333
|
|
96
|
+
伍个两 22222
|
|
97
|
+
伍个九 99999
|
|
98
|
+
伍个二 22222
|
|
99
|
+
伍个五 55555
|
|
100
|
+
伍个伍 55555
|
|
101
|
+
伍个八 88888
|
|
102
|
+
伍个六 66666
|
|
103
|
+
伍个叁 33333
|
|
104
|
+
伍个四 44444
|
|
105
|
+
伍个壹 11111
|
|
106
|
+
伍个幺 11111
|
|
107
|
+
伍个拐 77777
|
|
108
|
+
伍个捌 88888
|
|
109
|
+
伍个柒 77777
|
|
110
|
+
伍个洞 00000
|
|
111
|
+
伍个玖 99999
|
|
112
|
+
伍个肆 44444
|
|
113
|
+
伍个贰 22222
|
|
114
|
+
伍个陆 66666
|
|
115
|
+
伍个零 00000
|
|
116
|
+
八个一 11111111
|
|
117
|
+
八个七 77777777
|
|
118
|
+
八个三 33333333
|
|
119
|
+
八个两 22222222
|
|
120
|
+
八个九 99999999
|
|
121
|
+
八个二 22222222
|
|
122
|
+
八个五 55555555
|
|
123
|
+
八个伍 55555555
|
|
124
|
+
八个八 88888888
|
|
125
|
+
八个六 66666666
|
|
126
|
+
八个叁 33333333
|
|
127
|
+
八个四 44444444
|
|
128
|
+
八个壹 11111111
|
|
129
|
+
八个幺 11111111
|
|
130
|
+
八个拐 77777777
|
|
131
|
+
八个捌 88888888
|
|
132
|
+
八个柒 77777777
|
|
133
|
+
八个洞 00000000
|
|
134
|
+
八个玖 99999999
|
|
135
|
+
八个肆 44444444
|
|
136
|
+
八个贰 22222222
|
|
137
|
+
八个陆 66666666
|
|
138
|
+
八个零 00000000
|
|
139
|
+
六个一 111111
|
|
140
|
+
六个七 777777
|
|
141
|
+
六个三 333333
|
|
142
|
+
六个两 222222
|
|
143
|
+
六个九 999999
|
|
144
|
+
六个二 222222
|
|
145
|
+
六个五 555555
|
|
146
|
+
六个伍 555555
|
|
147
|
+
六个八 888888
|
|
148
|
+
六个六 666666
|
|
149
|
+
六个叁 333333
|
|
150
|
+
六个四 444444
|
|
151
|
+
六个壹 111111
|
|
152
|
+
六个幺 111111
|
|
153
|
+
六个拐 777777
|
|
154
|
+
六个捌 888888
|
|
155
|
+
六个柒 777777
|
|
156
|
+
六个洞 000000
|
|
157
|
+
六个玖 999999
|
|
158
|
+
六个肆 444444
|
|
159
|
+
六个贰 222222
|
|
160
|
+
六个陆 666666
|
|
161
|
+
六个零 000000
|
|
162
|
+
叁个一 111
|
|
163
|
+
叁个七 777
|
|
164
|
+
叁个三 333
|
|
165
|
+
叁个两 222
|
|
166
|
+
叁个九 999
|
|
167
|
+
叁个二 222
|
|
168
|
+
叁个五 555
|
|
169
|
+
叁个伍 555
|
|
170
|
+
叁个八 888
|
|
171
|
+
叁个六 666
|
|
172
|
+
叁个叁 333
|
|
173
|
+
叁个四 444
|
|
174
|
+
叁个壹 111
|
|
175
|
+
叁个幺 111
|
|
176
|
+
叁个拐 777
|
|
177
|
+
叁个捌 888
|
|
178
|
+
叁个柒 777
|
|
179
|
+
叁个洞 000
|
|
180
|
+
叁个玖 999
|
|
181
|
+
叁个肆 444
|
|
182
|
+
叁个贰 222
|
|
183
|
+
叁个陆 666
|
|
184
|
+
叁个零 000
|
|
185
|
+
四个一 1111
|
|
186
|
+
四个七 7777
|
|
187
|
+
四个三 3333
|
|
188
|
+
四个两 2222
|
|
189
|
+
四个九 9999
|
|
190
|
+
四个二 2222
|
|
191
|
+
四个五 5555
|
|
192
|
+
四个伍 5555
|
|
193
|
+
四个八 8888
|
|
194
|
+
四个六 6666
|
|
195
|
+
四个叁 3333
|
|
196
|
+
四个四 4444
|
|
197
|
+
四个壹 1111
|
|
198
|
+
四个幺 1111
|
|
199
|
+
四个拐 7777
|
|
200
|
+
四个捌 8888
|
|
201
|
+
四个柒 7777
|
|
202
|
+
四个洞 0000
|
|
203
|
+
四个玖 9999
|
|
204
|
+
四个肆 4444
|
|
205
|
+
四个贰 2222
|
|
206
|
+
四个陆 6666
|
|
207
|
+
四个零 0000
|
|
208
|
+
捌个一 11111111
|
|
209
|
+
捌个七 77777777
|
|
210
|
+
捌个三 33333333
|
|
211
|
+
捌个两 22222222
|
|
212
|
+
捌个九 99999999
|
|
213
|
+
捌个二 22222222
|
|
214
|
+
捌个五 55555555
|
|
215
|
+
捌个伍 55555555
|
|
216
|
+
捌个八 88888888
|
|
217
|
+
捌个六 66666666
|
|
218
|
+
捌个叁 33333333
|
|
219
|
+
捌个四 44444444
|
|
220
|
+
捌个壹 11111111
|
|
221
|
+
捌个幺 11111111
|
|
222
|
+
捌个拐 77777777
|
|
223
|
+
捌个捌 88888888
|
|
224
|
+
捌个柒 77777777
|
|
225
|
+
捌个洞 00000000
|
|
226
|
+
捌个玖 99999999
|
|
227
|
+
捌个肆 44444444
|
|
228
|
+
捌个贰 22222222
|
|
229
|
+
捌个陆 66666666
|
|
230
|
+
捌个零 00000000
|
|
231
|
+
柒个一 1111111
|
|
232
|
+
柒个七 7777777
|
|
233
|
+
柒个三 3333333
|
|
234
|
+
柒个两 2222222
|
|
235
|
+
柒个九 9999999
|
|
236
|
+
柒个二 2222222
|
|
237
|
+
柒个五 5555555
|
|
238
|
+
柒个伍 5555555
|
|
239
|
+
柒个八 8888888
|
|
240
|
+
柒个六 6666666
|
|
241
|
+
柒个叁 3333333
|
|
242
|
+
柒个四 4444444
|
|
243
|
+
柒个壹 1111111
|
|
244
|
+
柒个幺 1111111
|
|
245
|
+
柒个拐 7777777
|
|
246
|
+
柒个捌 8888888
|
|
247
|
+
柒个柒 7777777
|
|
248
|
+
柒个洞 0000000
|
|
249
|
+
柒个玖 9999999
|
|
250
|
+
柒个肆 4444444
|
|
251
|
+
柒个贰 2222222
|
|
252
|
+
柒个陆 6666666
|
|
253
|
+
柒个零 0000000
|
|
254
|
+
玖个一 111111111
|
|
255
|
+
玖个七 777777777
|
|
256
|
+
玖个三 333333333
|
|
257
|
+
玖个两 222222222
|
|
258
|
+
玖个九 999999999
|
|
259
|
+
玖个二 222222222
|
|
260
|
+
玖个五 555555555
|
|
261
|
+
玖个伍 555555555
|
|
262
|
+
玖个八 888888888
|
|
263
|
+
玖个六 666666666
|
|
264
|
+
玖个叁 333333333
|
|
265
|
+
玖个四 444444444
|
|
266
|
+
玖个壹 111111111
|
|
267
|
+
玖个幺 111111111
|
|
268
|
+
玖个拐 777777777
|
|
269
|
+
玖个捌 888888888
|
|
270
|
+
玖个柒 777777777
|
|
271
|
+
玖个洞 000000000
|
|
272
|
+
玖个玖 999999999
|
|
273
|
+
玖个肆 444444444
|
|
274
|
+
玖个贰 222222222
|
|
275
|
+
玖个陆 666666666
|
|
276
|
+
玖个零 000000000
|
|
277
|
+
肆个一 1111
|
|
278
|
+
肆个七 7777
|
|
279
|
+
肆个三 3333
|
|
280
|
+
肆个两 2222
|
|
281
|
+
肆个九 9999
|
|
282
|
+
肆个二 2222
|
|
283
|
+
肆个五 5555
|
|
284
|
+
肆个伍 5555
|
|
285
|
+
肆个八 8888
|
|
286
|
+
肆个六 6666
|
|
287
|
+
肆个叁 3333
|
|
288
|
+
肆个四 4444
|
|
289
|
+
肆个壹 1111
|
|
290
|
+
肆个幺 1111
|
|
291
|
+
肆个拐 7777
|
|
292
|
+
肆个捌 8888
|
|
293
|
+
肆个柒 7777
|
|
294
|
+
肆个洞 0000
|
|
295
|
+
肆个玖 9999
|
|
296
|
+
肆个肆 4444
|
|
297
|
+
肆个贰 2222
|
|
298
|
+
肆个陆 6666
|
|
299
|
+
肆个零 0000
|
|
300
|
+
陆个一 111111
|
|
301
|
+
陆个七 777777
|
|
302
|
+
陆个三 333333
|
|
303
|
+
陆个两 222222
|
|
304
|
+
陆个九 999999
|
|
305
|
+
陆个二 222222
|
|
306
|
+
陆个五 555555
|
|
307
|
+
陆个伍 555555
|
|
308
|
+
陆个八 888888
|
|
309
|
+
陆个六 666666
|
|
310
|
+
陆个叁 333333
|
|
311
|
+
陆个四 444444
|
|
312
|
+
陆个壹 111111
|
|
313
|
+
陆个幺 111111
|
|
314
|
+
陆个拐 777777
|
|
315
|
+
陆个捌 888888
|
|
316
|
+
陆个柒 777777
|
|
317
|
+
陆个洞 000000
|
|
318
|
+
陆个玖 999999
|
|
319
|
+
陆个肆 444444
|
|
320
|
+
陆个贰 222222
|
|
321
|
+
陆个陆 666666
|
|
322
|
+
陆个零 000000
|
itn/chinese/data/time/minute.tsv
CHANGED
|
@@ -12,71 +12,77 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from
|
|
15
|
+
from importlib_resources import files
|
|
16
|
+
from pynini.lib.pynutil import add_weight, delete
|
|
17
|
+
|
|
16
18
|
from itn.chinese.rules.cardinal import Cardinal
|
|
17
19
|
from itn.chinese.rules.char import Char
|
|
18
20
|
from itn.chinese.rules.date import Date
|
|
21
|
+
from itn.chinese.rules.train_number import TrainNumber
|
|
19
22
|
from itn.chinese.rules.fraction import Fraction
|
|
23
|
+
from itn.chinese.rules.license_plate import LicensePlate
|
|
20
24
|
from itn.chinese.rules.math import Math
|
|
21
25
|
from itn.chinese.rules.measure import Measure
|
|
22
26
|
from itn.chinese.rules.money import Money
|
|
23
|
-
from itn.chinese.rules.whitelist import Whitelist
|
|
24
|
-
from itn.chinese.rules.time import Time
|
|
25
27
|
from itn.chinese.rules.postprocessor import PostProcessor
|
|
26
|
-
from itn.chinese.rules.
|
|
27
|
-
|
|
28
|
-
from
|
|
29
|
-
from importlib_resources import files
|
|
28
|
+
from itn.chinese.rules.time import Time
|
|
29
|
+
from itn.chinese.rules.whitelist import Whitelist
|
|
30
|
+
from tn.processor import Processor
|
|
30
31
|
|
|
31
32
|
|
|
32
33
|
class InverseNormalizer(Processor):
|
|
33
34
|
|
|
34
|
-
def __init__(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
def __init__(
|
|
36
|
+
self,
|
|
37
|
+
cache_dir=None,
|
|
38
|
+
overwrite_cache=False,
|
|
39
|
+
remove_interjections=True,
|
|
40
|
+
enable_standalone_number=True,
|
|
41
|
+
enable_0_to_9=False,
|
|
42
|
+
enable_million=False,
|
|
43
|
+
):
|
|
44
|
+
super().__init__(name="zh_inverse_normalizer", ordertype="itn")
|
|
45
|
+
self.remove_interjections = remove_interjections
|
|
41
46
|
self.convert_number = enable_standalone_number
|
|
42
47
|
self.enable_0_to_9 = enable_0_to_9
|
|
43
48
|
self.enable_million = enable_million
|
|
44
49
|
if cache_dir is None:
|
|
45
50
|
cache_dir = files("itn")
|
|
46
|
-
self.build_fst(
|
|
51
|
+
self.build_fst("zh_itn", cache_dir, overwrite_cache)
|
|
52
|
+
|
|
53
|
+
def build_tagger_and_verbalizer(self):
|
|
54
|
+
cardinal = Cardinal(self.convert_number, self.enable_0_to_9, self.enable_million)
|
|
47
55
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
| add_weight(LicensePlate().tagger, 1.0)
|
|
62
|
-
| add_weight(Char().tagger, 100)).optimize()
|
|
56
|
+
tagger = (
|
|
57
|
+
add_weight(Date().tagger, 1.02)
|
|
58
|
+
| add_weight(Whitelist().tagger, 1.01)
|
|
59
|
+
| add_weight(Fraction(cardinal=cardinal).tagger, 1.05)
|
|
60
|
+
| add_weight(Measure(enable_0_to_9=self.enable_0_to_9, cardinal=cardinal).tagger, 1.05)
|
|
61
|
+
| add_weight(Money(enable_0_to_9=self.enable_0_to_9, cardinal=cardinal).tagger, 1.04)
|
|
62
|
+
| add_weight(Time().tagger, 1.05)
|
|
63
|
+
| add_weight(cardinal.tagger, 1.06)
|
|
64
|
+
| add_weight(Math(cardinal=cardinal).tagger, 1.10)
|
|
65
|
+
| add_weight(LicensePlate().tagger, 1.0)
|
|
66
|
+
| add_weight(TrainNumber().tagger, 1.0)
|
|
67
|
+
| add_weight(Char().tagger, 100)
|
|
68
|
+
).optimize()
|
|
63
69
|
|
|
64
70
|
tagger = tagger.star
|
|
65
|
-
|
|
66
|
-
self.tagger = tagger @ self.build_rule(delete(' '), '', '[EOS]')
|
|
71
|
+
self.tagger = tagger @ self.build_rule(delete(" "), "", "[EOS]")
|
|
67
72
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
verbalizer = (
|
|
74
|
+
cardinal.verbalizer
|
|
75
|
+
| Char().verbalizer
|
|
76
|
+
| Date().verbalizer
|
|
77
|
+
| Fraction().verbalizer
|
|
78
|
+
| TrainNumber().verbalizer
|
|
79
|
+
| Math().verbalizer
|
|
80
|
+
| Measure(enable_0_to_9=self.enable_0_to_9).verbalizer
|
|
81
|
+
| Money(enable_0_to_9=self.enable_0_to_9).verbalizer
|
|
82
|
+
| Time().verbalizer
|
|
83
|
+
| LicensePlate().verbalizer
|
|
84
|
+
| Whitelist().verbalizer
|
|
85
|
+
).optimize()
|
|
86
|
+
postprocessor = PostProcessor(remove_interjections=self.remove_interjections).processor
|
|
81
87
|
|
|
82
88
|
self.verbalizer = (verbalizer @ postprocessor).star
|