diff --git a/itn/chinese/rules/cardinal.py b/itn/chinese/rules/cardinal.py index 04d6512..987dd5d 100644 --- a/itn/chinese/rules/cardinal.py +++ b/itn/chinese/rules/cardinal.py @@ -69,7 +69,7 @@ def build_tagger(self): | add_weight(addzero**2, 1.0))) # 一千一百一十一 => 1111, 一千零一十一 => 1011, 一千零一 => 1001 # 一千一 => 1100, 一千 => 1000 - thousand = ((hundred | teen | tens | digits) + delete('千') + + thousand = (digit + delete('千') + (hundred | add_weight(zero + (tens | teen), 0.1) | add_weight(addzero + zero + digit, 0.5) @@ -78,7 +78,7 @@ def build_tagger(self): # 10001111, 1001111, 101111, 11111, 10111, 10011, 10001, 10000 if self.enable_million: ten_thousand = ( - (thousand | hundred | teen | tens | digits) + delete('万') + + (thousand | hundred | teen | tens | digit) + delete('万') + (thousand | add_weight(zero + hundred, 0.1) | add_weight(addzero + zero + (tens | teen), 0.5) @@ -87,7 +87,7 @@ def build_tagger(self): | add_weight(addzero**4, 1.0))) else: ten_thousand = ( - (teen | tens | digits) + delete('万') + + (teen | tens | digit) + delete('万') + (thousand | add_weight(zero + hundred, 0.1) | add_weight(addzero + zero + (tens | teen), 0.5) diff --git a/itn/chinese/test/data/normalizer_disable_standalone_number_disable_0_to_9.txt b/itn/chinese/test/data/normalizer_disable_standalone_number_disable_0_to_9.txt index 0dff61a..e35fecd 100644 --- a/itn/chinese/test/data/normalizer_disable_standalone_number_disable_0_to_9.txt +++ b/itn/chinese/test/data/normalizer_disable_standalone_number_disable_0_to_9.txt @@ -31,3 +31,9 @@ 这块黄金重达三百二十四点七五克,我再随便来几个价格三十四点五二一元,二十点一万 => 这块黄金重达324.75g,我再随便来几个价格¥34.521,20.1万 一共有一人二人三人四人五人六人七人八人九人十人十一人十二人十三人十四人十五人十六人十七人十八人十九人二十人二十一人二十二人二十三人二十四人二十五人二十六人二十七人二十八人二十九人三十人三十一人三十二人三十三人三十四人三十五人三十六人三十七人三十八人三十九人四十人四十一人四十二人四十三人四十四人四十五人四十六人四十七人四十八人四十九人五十人五十一人五十二人五十三人五十四人五十五人五十六人五十七人五十八人五十九人六十人六十一人六十二人六十三人六十四人六十五人六十六人六十七人六十八人六十九人七十人七十一人七十二人七十三人七十四人七十五人七十六人七十七人七十八人七十九人八十人八十一人八十二人八十三人八十四人八十五人八十六人八十七人八十八人八十九人九十人九十一人九十二人九十三人九十四人九十五人九十六人九十七人九十八人九十九人一百人一百零一人一百一人一百一十一人一百一十二人两百二人二百二十三人三百三人三百三十四人四百四人四百四十五人一千零一人一千零五十人一千零五十一人一千三百人一千五百五人两千五百五十六人三千六百六人四千六百六十七人五千七百七人六千七百七十八人七千八百八人八千八百八十九人九千九百九人九千九百九十一人 => 一共有一人二人三人四人五人六人七人八人九人10人11人12人13人14人15人16人17人18人19人20人21人22人23人24人25人26人27人28人29人30人31人32人33人34人35人36人37人38人39人40人41人42人43人44人45人46人47人48人49人50人51人52人53人54人55人56人57人58人59人60人61人62人63人64人65人66人67人68人69人70人71人72人73人74人75人76人77人78人79人80人81人82人83人84人85人86人87人88人89人90人91人92人93人94人95人96人97人98人99人100人101人110人111人112人220人223人330人334人440人445人1001人1050人1051人1300人1550人2556人3660人4667人5770人6778人7880人8889人9990人9991人 三百九十九三盒 => 三百九十九三盒 +这是八百一千 => 这是八百一千 +这是二十九千 => 这是二十九千 +这是九十九九千 => 这是九十九九千 +这是十二一千 => 这是十二一千 +这是零百 => 这是零百 +这是零千 => 这是零千 \ No newline at end of file diff --git a/itn/chinese/test/data/normalizer_disable_standalone_number_enable_0_to_9.txt b/itn/chinese/test/data/normalizer_disable_standalone_number_enable_0_to_9.txt index 8a0ad0a..1263cff 100644 --- a/itn/chinese/test/data/normalizer_disable_standalone_number_enable_0_to_9.txt +++ b/itn/chinese/test/data/normalizer_disable_standalone_number_enable_0_to_9.txt @@ -1,2 +1,8 @@ 二点五平方电线,五,五十五,疑是银河落九天,十二块五 => 2.5平方电线,五,五十五,疑是银河落9天,12块五 三百九十九三盒 => 三百九十九3盒 +这是八百一千 => 这是八百一千 +这是二十九千 => 这是二十九千 +这是九十九九千 => 这是九十九九千 +这是十二一千 => 这是十二一千 +这是零百 => 这是零百 +这是零千 => 这是零千 \ No newline at end of file diff --git a/itn/chinese/test/data/normalizer_enable_standalone_number_disable_0_to_9.txt b/itn/chinese/test/data/normalizer_enable_standalone_number_disable_0_to_9.txt index 4eb5ed9..8a3af23 100644 --- a/itn/chinese/test/data/normalizer_enable_standalone_number_disable_0_to_9.txt +++ b/itn/chinese/test/data/normalizer_enable_standalone_number_disable_0_to_9.txt @@ -31,3 +31,9 @@ 这块黄金重达三百二十四点七五克,我再随便来几个价格三十四点五二一元,二十点一万 => 这块黄金重达324.75g,我再随便来几个价格¥34.521,20.1万 一共有一人二人三人四人五人六人七人八人九人十人十一人十二人十三人十四人十五人十六人十七人十八人十九人二十人二十一人二十二人二十三人二十四人二十五人二十六人二十七人二十八人二十九人三十人三十一人三十二人三十三人三十四人三十五人三十六人三十七人三十八人三十九人四十人四十一人四十二人四十三人四十四人四十五人四十六人四十七人四十八人四十九人五十人五十一人五十二人五十三人五十四人五十五人五十六人五十七人五十八人五十九人六十人六十一人六十二人六十三人六十四人六十五人六十六人六十七人六十八人六十九人七十人七十一人七十二人七十三人七十四人七十五人七十六人七十七人七十八人七十九人八十人八十一人八十二人八十三人八十四人八十五人八十六人八十七人八十八人八十九人九十人九十一人九十二人九十三人九十四人九十五人九十六人九十七人九十八人九十九人一百人一百零一人一百一人一百一十一人一百一十二人两百二人二百二十三人三百三人三百三十四人四百四人四百四十五人一千零一人一千零五十人一千零五十一人一千三百人一千五百五人两千五百五十六人三千六百六人四千六百六十七人五千七百七人六千七百七十八人七千八百八人八千八百八十九人九千九百九人九千九百九十一人 => 一共有一人二人三人四人五人六人七人八人九人10人11人12人13人14人15人16人17人18人19人20人21人22人23人24人25人26人27人28人29人30人31人32人33人34人35人36人37人38人39人40人41人42人43人44人45人46人47人48人49人50人51人52人53人54人55人56人57人58人59人60人61人62人63人64人65人66人67人68人69人70人71人72人73人74人75人76人77人78人79人80人81人82人83人84人85人86人87人88人89人90人91人92人93人94人95人96人97人98人99人100人101人110人111人112人220人223人330人334人440人445人1001人1050人1051人1300人1550人2556人3660人4667人5770人6778人7880人8889人9990人9991人 三百九十九三盒 => 399三盒 +这是八百一千 => 这是800 1000 +这是二十九千 => 这是20 9000 +这是九十九九千 => 这是99 9000 +这是十二一千 => 这是12 1000 +这是零百 => 这是零百 +这是零千 => 这是零千 \ No newline at end of file