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.
Files changed (266) hide show
  1. itn/README.md +60 -0
  2. itn/__main__.py +1 -1
  3. itn/chinese/data/number/repeat_digit.tsv +322 -0
  4. itn/chinese/data/time/minute.tsv +0 -9
  5. itn/chinese/data/time/minute_zero.tsv +9 -0
  6. itn/chinese/data/train_number/prefix.tsv +7 -0
  7. itn/chinese/inverse_normalizer.py +51 -45
  8. itn/chinese/rules/cardinal.py +91 -78
  9. itn/chinese/rules/char.py +3 -3
  10. itn/chinese/rules/date.py +16 -22
  11. itn/chinese/rules/fraction.py +19 -12
  12. itn/chinese/rules/license_plate.py +9 -13
  13. itn/chinese/rules/math.py +9 -9
  14. itn/chinese/rules/measure.py +64 -51
  15. itn/chinese/rules/money.py +22 -18
  16. itn/chinese/rules/postprocessor.py +5 -6
  17. itn/chinese/rules/time.py +27 -16
  18. itn/chinese/rules/train_number.py +36 -0
  19. itn/chinese/rules/whitelist.py +5 -6
  20. itn/chinese/test/data/cardinal.txt +29 -0
  21. itn/chinese/test/data/char.txt +2 -0
  22. itn/chinese/test/data/date.txt +10 -0
  23. itn/chinese/test/data/fraction.txt +3 -0
  24. itn/chinese/test/data/license_plate.txt +3 -0
  25. itn/chinese/test/data/math.txt +6 -0
  26. itn/chinese/test/data/measure.txt +44 -0
  27. itn/chinese/test/data/money.txt +11 -0
  28. itn/chinese/test/data/normalizer.txt +33 -0
  29. itn/chinese/test/data/normalizer_disable_standalone_number_disable_0_to_9.txt +42 -0
  30. itn/chinese/test/data/normalizer_disable_standalone_number_enable_0_to_9.txt +11 -0
  31. itn/chinese/test/data/normalizer_enable_standalone_number_disable_0_to_9.txt +42 -0
  32. itn/chinese/test/data/number.txt +35 -0
  33. itn/chinese/test/data/time.txt +12 -0
  34. itn/chinese/test/data/train_number.txt +7 -0
  35. itn/chinese/test/data/whitelist.txt +2 -0
  36. itn/chinese/test/normalizer_test.py +61 -53
  37. itn/chinese/test/utils.py +3 -3
  38. itn/japanese/__init__.py +0 -0
  39. itn/japanese/data/char/common_chinese_char.tsv +2502 -0
  40. itn/japanese/data/char/fullwidth_to_halfwidth.tsv +95 -0
  41. itn/japanese/data/char/hiragana_and_katakana.tsv +160 -0
  42. itn/japanese/data/char/oov_tags.tsv +1 -0
  43. itn/japanese/data/char/punctuations_ja.tsv +72 -0
  44. itn/japanese/data/date/day.tsv +31 -0
  45. itn/japanese/data/date/month.tsv +12 -0
  46. itn/japanese/data/date/week.tsv +14 -0
  47. itn/japanese/data/default/blacklist.tsv +0 -0
  48. itn/japanese/data/default/whitelist.tsv +23 -0
  49. itn/japanese/data/math/operator.tsv +8 -0
  50. itn/japanese/data/measure/unit_en.tsv +123 -0
  51. itn/japanese/data/measure/unit_ja.tsv +48 -0
  52. itn/japanese/data/money/symbol.tsv +9 -0
  53. itn/japanese/data/number/digit.tsv +9 -0
  54. itn/japanese/data/number/dot.tsv +1 -0
  55. itn/japanese/data/number/hundred.tsv +1 -0
  56. itn/japanese/data/number/hundred_digit.tsv +9 -0
  57. itn/japanese/data/number/sign.tsv +4 -0
  58. itn/japanese/data/number/teen.tsv +10 -0
  59. itn/japanese/data/number/thousands.tsv +9 -0
  60. itn/japanese/data/number/ties.tsv +8 -0
  61. itn/japanese/data/number/zero.tsv +4 -0
  62. itn/japanese/data/time/hour.tsv +34 -0
  63. itn/japanese/data/time/minute.tsv +60 -0
  64. itn/japanese/data/time/second.tsv +60 -0
  65. itn/japanese/inverse_normalizer.py +96 -0
  66. itn/japanese/rules/__init__.py +0 -0
  67. itn/japanese/rules/cardinal.py +158 -0
  68. itn/japanese/rules/char.py +29 -0
  69. itn/japanese/rules/date.py +71 -0
  70. itn/japanese/rules/fraction.py +64 -0
  71. itn/japanese/rules/math.py +39 -0
  72. itn/japanese/rules/measure.py +48 -0
  73. itn/japanese/rules/money.py +45 -0
  74. itn/japanese/rules/ordinal.py +34 -0
  75. itn/japanese/rules/postprocessor.py +46 -0
  76. itn/japanese/rules/preprocessor.py +31 -0
  77. itn/japanese/rules/time.py +53 -0
  78. itn/japanese/rules/whitelist.py +33 -0
  79. itn/japanese/test/__init__.py +0 -0
  80. itn/japanese/test/data/cardinal.txt +57 -0
  81. itn/japanese/test/data/char.txt +2 -0
  82. itn/japanese/test/data/date.txt +13 -0
  83. itn/japanese/test/data/fraction.txt +8 -0
  84. itn/japanese/test/data/math.txt +6 -0
  85. itn/japanese/test/data/measure.txt +6 -0
  86. itn/japanese/test/data/money.txt +1 -0
  87. itn/japanese/test/data/normalizer_disable_standalone_number_disable_0_to_9.txt +72 -0
  88. itn/japanese/test/data/normalizer_disable_standalone_number_enable_0_to_9.txt +72 -0
  89. itn/japanese/test/data/normalizer_enable_standalone_number_disable_0_to_9.txt +70 -0
  90. itn/japanese/test/data/number.txt +11 -0
  91. itn/japanese/test/data/time.txt +9 -0
  92. itn/japanese/test/data/whitelist.txt +2 -0
  93. itn/japanese/test/normalizer_test.py +113 -0
  94. itn/japanese/test/utils.py +32 -0
  95. itn/main.py +29 -31
  96. itn/zh_itn_tagger.fst +0 -0
  97. itn/zh_itn_verbalizer.fst +0 -0
  98. tn/README.md +69 -0
  99. tn/__main__.py +1 -1
  100. tn/_version.py +34 -0
  101. tn/chinese/data/measure/units_en.tsv +1 -0
  102. tn/chinese/data/measure/units_zh.tsv +1 -0
  103. tn/chinese/normalizer.py +58 -50
  104. tn/chinese/rules/cardinal.py +46 -40
  105. tn/chinese/rules/char.py +3 -3
  106. tn/chinese/rules/date.py +21 -19
  107. tn/chinese/rules/fraction.py +19 -11
  108. tn/chinese/rules/math.py +8 -13
  109. tn/chinese/rules/measure.py +23 -26
  110. tn/chinese/rules/money.py +19 -11
  111. tn/chinese/rules/postprocessor.py +14 -25
  112. tn/chinese/rules/preprocessor.py +5 -6
  113. tn/chinese/rules/sport.py +14 -14
  114. tn/chinese/rules/time.py +23 -16
  115. tn/chinese/rules/whitelist.py +9 -10
  116. tn/chinese/test/cardinal_test.py +2 -2
  117. tn/chinese/test/char_test.py +1 -1
  118. tn/chinese/test/data/cardinal.txt +7 -0
  119. tn/chinese/test/data/char.txt +2 -0
  120. tn/chinese/test/data/date.txt +14 -0
  121. tn/chinese/test/data/fraction.txt +3 -0
  122. tn/chinese/test/data/math.txt +8 -0
  123. tn/chinese/test/data/measure.txt +10 -0
  124. tn/chinese/test/data/money.txt +3 -0
  125. tn/chinese/test/data/normalizer.txt +48 -0
  126. tn/chinese/test/data/number.txt +27 -0
  127. tn/chinese/test/data/postprocessor.txt +5 -0
  128. tn/chinese/test/data/preprocessor.txt +1 -0
  129. tn/chinese/test/data/sport.txt +3 -0
  130. tn/chinese/test/data/time.txt +6 -0
  131. tn/chinese/test/data/whitelist.txt +4 -0
  132. tn/chinese/test/date_test.py +1 -1
  133. tn/chinese/test/fraction_test.py +1 -1
  134. tn/chinese/test/math_test.py +1 -1
  135. tn/chinese/test/measure_test.py +1 -1
  136. tn/chinese/test/money_test.py +1 -1
  137. tn/chinese/test/normalizer_test.py +13 -11
  138. tn/chinese/test/postprocessor_test.py +1 -1
  139. tn/chinese/test/preprocessor_test.py +1 -1
  140. tn/chinese/test/sport_test.py +1 -1
  141. tn/chinese/test/time_test.py +1 -1
  142. tn/chinese/test/token_parser_test.py +22 -22
  143. tn/chinese/test/utils.py +3 -3
  144. tn/chinese/test/whitelist_test.py +1 -1
  145. tn/en_tn_tagger.fst +0 -0
  146. tn/en_tn_verbalizer.fst +0 -0
  147. tn/english/data/roman/README.md +20 -0
  148. tn/english/data/whitelist/tts.tsv +0 -19
  149. tn/english/normalizer.py +63 -81
  150. tn/english/rules/cardinal.py +77 -90
  151. tn/english/rules/date.py +177 -144
  152. tn/english/rules/decimal.py +79 -81
  153. tn/english/rules/electronic.py +91 -105
  154. tn/english/rules/fraction.py +41 -58
  155. tn/english/rules/measure.py +206 -179
  156. tn/english/rules/money.py +34 -44
  157. tn/english/rules/ordinal.py +36 -41
  158. tn/english/rules/punctuation.py +25 -32
  159. tn/english/rules/range.py +51 -58
  160. tn/english/rules/roman.py +52 -42
  161. tn/english/rules/telephone.py +78 -93
  162. tn/english/rules/time.py +97 -76
  163. tn/english/rules/whitelist.py +30 -43
  164. tn/english/rules/word.py +8 -15
  165. tn/english/test/cardinal_test.py +1 -1
  166. tn/english/test/data/cardinal.txt +27 -0
  167. tn/english/test/data/date.txt +14 -0
  168. tn/english/test/data/decimal.txt +3 -0
  169. tn/english/test/data/electronic.txt +1 -0
  170. tn/english/test/data/fraction.txt +7 -0
  171. tn/english/test/data/measure.txt +7 -0
  172. tn/english/test/data/money.txt +8 -0
  173. tn/english/test/data/normalizer.txt +8 -0
  174. tn/english/test/data/ordinal.txt +11 -0
  175. tn/english/test/data/range.txt +1 -0
  176. tn/english/test/data/roman.txt +1 -0
  177. tn/english/test/data/telephone.txt +2 -0
  178. tn/english/test/data/time.txt +9 -0
  179. tn/english/test/data/whitelist.txt +6 -0
  180. tn/english/test/data/word.txt +6 -0
  181. tn/english/test/date_test.py +1 -1
  182. tn/english/test/decimal_test.py +1 -1
  183. tn/english/test/electronic_test.py +1 -1
  184. tn/english/test/fraction_test.py +1 -1
  185. tn/english/test/measure_test.py +1 -1
  186. tn/english/test/money_test.py +1 -1
  187. tn/english/test/normalizer_test.py +1 -1
  188. tn/english/test/ordinal_test.py +1 -1
  189. tn/english/test/range_test.py +1 -1
  190. tn/english/test/roman_test.py +1 -1
  191. tn/english/test/telephone_test.py +1 -1
  192. tn/english/test/time_test.py +1 -1
  193. tn/english/test/utils.py +3 -3
  194. tn/english/test/whitelist_test.py +1 -1
  195. tn/english/test/word_test.py +1 -1
  196. tn/japanese/__init__.py +0 -0
  197. tn/japanese/data/char/common_chinese_char.tsv +2502 -0
  198. tn/japanese/data/char/fullwidth_to_halfwidth.tsv +95 -0
  199. tn/japanese/data/char/hiragana_and_katakana.tsv +160 -0
  200. tn/japanese/data/char/oov_tags.tsv +1 -0
  201. tn/japanese/data/char/punctuations_ja.tsv +72 -0
  202. tn/japanese/data/date/d.tsv +31 -0
  203. tn/japanese/data/date/date.tsv +7 -0
  204. tn/japanese/data/date/dd.tsv +9 -0
  205. tn/japanese/data/date/m.tsv +12 -0
  206. tn/japanese/data/date/mm.tsv +9 -0
  207. tn/japanese/data/default/blacklist.tsv +0 -0
  208. tn/japanese/data/default/whitelist.tsv +14 -0
  209. tn/japanese/data/math/operator.tsv +12 -0
  210. tn/japanese/data/measure/units_en.tsv +101 -0
  211. tn/japanese/data/measure/units_ja.tsv +45 -0
  212. tn/japanese/data/money/code.tsv +24 -0
  213. tn/japanese/data/money/symbol.tsv +11 -0
  214. tn/japanese/data/number/digit.tsv +18 -0
  215. tn/japanese/data/number/dot.tsv +1 -0
  216. tn/japanese/data/number/en_digit.tsv +18 -0
  217. tn/japanese/data/number/sign.tsv +3 -0
  218. tn/japanese/data/number/teen.tsv +18 -0
  219. tn/japanese/data/number/zero.tsv +2 -0
  220. tn/japanese/data/pyopenjtalk/transliteration.tsv +6791 -0
  221. tn/japanese/data/sport/club.tsv +31 -0
  222. tn/japanese/data/sport/country.tsv +185 -0
  223. tn/japanese/data/time/hour.tsv +35 -0
  224. tn/japanese/data/time/minute.tsv +60 -0
  225. tn/japanese/data/time/noon.tsv +10 -0
  226. tn/japanese/data/time/second.tsv +60 -0
  227. tn/japanese/normalizer.py +106 -0
  228. tn/japanese/rules/cardinal.py +132 -0
  229. tn/japanese/rules/char.py +29 -0
  230. tn/japanese/rules/date.py +67 -0
  231. tn/japanese/rules/fraction.py +49 -0
  232. tn/japanese/rules/math.py +37 -0
  233. tn/japanese/rules/measure.py +48 -0
  234. tn/japanese/rules/money.py +51 -0
  235. tn/japanese/rules/postprocessor.py +46 -0
  236. tn/japanese/rules/preprocessor.py +31 -0
  237. tn/japanese/rules/sport.py +50 -0
  238. tn/japanese/rules/time.py +54 -0
  239. tn/japanese/rules/transliteration.py +33 -0
  240. tn/japanese/rules/whitelist.py +36 -0
  241. tn/japanese/test/__init__.py +0 -0
  242. tn/japanese/test/data/cardinal.txt +41 -0
  243. tn/japanese/test/data/char.txt +2 -0
  244. tn/japanese/test/data/date.txt +28 -0
  245. tn/japanese/test/data/fraction.txt +3 -0
  246. tn/japanese/test/data/math.txt +26 -0
  247. tn/japanese/test/data/measure.txt +11 -0
  248. tn/japanese/test/data/money.txt +7 -0
  249. tn/japanese/test/data/sport.txt +9 -0
  250. tn/japanese/test/data/time.txt +10 -0
  251. tn/japanese/test/data/whitelist.txt +4 -0
  252. tn/japanese/test/normalizer_test.py +42 -0
  253. tn/japanese/test/utils.py +32 -0
  254. tn/main.py +26 -43
  255. tn/processor.py +31 -34
  256. tn/token_parser.py +26 -27
  257. tn/utils.py +6 -14
  258. tn/zh_tn_tagger.fst +0 -0
  259. tn/zh_tn_verbalizer.fst +0 -0
  260. {WeTextProcessing-1.0.4.1.dist-info → wetextprocessing-1.0.6.dev19.dist-info}/METADATA +15 -11
  261. wetextprocessing-1.0.6.dev19.dist-info/RECORD +381 -0
  262. {WeTextProcessing-1.0.4.1.dist-info → wetextprocessing-1.0.6.dev19.dist-info}/WHEEL +1 -1
  263. {WeTextProcessing-1.0.4.1.dist-info → wetextprocessing-1.0.6.dev19.dist-info}/entry_points.txt +0 -1
  264. WeTextProcessing-1.0.4.1.dist-info/RECORD +0 -213
  265. {WeTextProcessing-1.0.4.1.dist-info → wetextprocessing-1.0.6.dev19.dist-info/licenses}/LICENSE +0 -0
  266. {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
@@ -1,4 +1,4 @@
1
1
  from itn.main import main
2
2
 
3
- if __name__ == '__main__':
3
+ if __name__ == "__main__":
4
4
  main()
@@ -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
@@ -1,13 +1,4 @@
1
1
  半 30
2
- 零一 01
3
- 零二 02
4
- 零三 03
5
- 零四 04
6
- 零五 05
7
- 零六 06
8
- 零七 07
9
- 零八 08
10
- 零九 09
11
2
  十 10
12
3
  十一 11
13
4
  十二 12
@@ -0,0 +1,9 @@
1
+ 零一 01
2
+ 零二 02
3
+ 零三 03
4
+ 零四 04
5
+ 零五 05
6
+ 零六 06
7
+ 零七 07
8
+ 零八 08
9
+ 零九 09
@@ -0,0 +1,7 @@
1
+ 高 G
2
+ 动 D
3
+ 特 T
4
+ 快 K
5
+ 直 Z
6
+ 慢 L
7
+ 临 L
@@ -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 tn.processor import Processor
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.license_plate import LicensePlate
27
-
28
- from pynini.lib.pynutil import add_weight, delete
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__(self,
35
- cache_dir=None,
36
- overwrite_cache=False,
37
- enable_standalone_number=True,
38
- enable_0_to_9=False,
39
- enable_million=False):
40
- super().__init__(name='zh_inverse_normalizer', ordertype='itn')
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('zh_itn', cache_dir, overwrite_cache)
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
- def build_tagger(self):
49
- tagger = (add_weight(Date().tagger, 1.02)
50
- | add_weight(Whitelist().tagger, 1.01)
51
- | add_weight(Fraction().tagger, 1.05)
52
- | add_weight(
53
- Measure(enable_0_to_9=self.enable_0_to_9).tagger, 1.05)
54
- | add_weight(
55
- Money(enable_0_to_9=self.enable_0_to_9).tagger, 1.04)
56
- | add_weight(Time().tagger, 1.05)
57
- | add_weight(
58
- Cardinal(self.convert_number, self.enable_0_to_9,
59
- self.enable_million).tagger, 1.06)
60
- | add_weight(Math().tagger, 1.10)
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
- # remove the last space
66
- self.tagger = tagger @ self.build_rule(delete(' '), '', '[EOS]')
71
+ self.tagger = tagger @ self.build_rule(delete(" "), "", "[EOS]")
67
72
 
68
- def build_verbalizer(self):
69
- verbalizer = (Cardinal(self.convert_number, self.enable_0_to_9,
70
- self.enable_million).verbalizer
71
- | Char().verbalizer
72
- | Date().verbalizer
73
- | Fraction().verbalizer
74
- | Math().verbalizer
75
- | Measure(enable_0_to_9=self.enable_0_to_9).verbalizer
76
- | Money(enable_0_to_9=self.enable_0_to_9).verbalizer
77
- | Time().verbalizer
78
- | LicensePlate().verbalizer
79
- | Whitelist().verbalizer).optimize()
80
- postprocessor = PostProcessor(remove_interjections=True).processor
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