Skip to content

Commit 25d5938

Browse files
authored
[fix] fix itn 三四十万 一万六七 (#234)
* [fix] fix itn 三四十万 一万六七 * [fix] fix itn 三四十万 一万六七
1 parent d96d2b2 commit 25d5938

4 files changed

Lines changed: 15 additions & 24 deletions

File tree

itn/chinese/data/number/special_dash.tsv

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
一二 1-2
22
二三 2-3
33
三四 3-4
4+
三五 3-5
45
四五 4-5
56
五六 5-6
67
六七 6-7
@@ -37,14 +38,3 @@
3738
六七千 6000-7000
3839
七八千 7000-8000
3940
八九千 8000-9000
40-
一二万 1-2万
41-
一两万 1-2万
42-
二三万 2-3万
43-
两三万 2-3万
44-
三四万 3-4万
45-
三五万 3-5万
46-
四五万 4-5万
47-
五六万 5-6万
48-
六七万 6-7万
49-
七八万 7-8万
50-
八九万 8-9万

itn/chinese/data/number/special_tilde.tsv

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
一二 1~2
22
二三 2~3
33
三四 3~4
4+
三五 3~5
45
四五 4~5
56
五六 5~6
67
六七 6~7
@@ -37,14 +38,3 @@
3738
六七千 6000~7000
3839
七八千 7000~8000
3940
八九千 8000~9000
40-
一二万 1~2万
41-
一两万 1~2万
42-
二三万 2~3万
43-
两三万 2~3万
44-
三四万 3~4万
45-
三五万 3~5万
46-
四五万 4~5万
47-
五六万 5~6万
48-
六七万 6~7万
49-
七八万 7~8万
50-
八九万 8~9万

itn/chinese/rules/cardinal.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,13 @@ def build_tagger(self):
4242
special_tilde = string_file(
4343
get_abs_path(
4444
'../itn/chinese/data/number/special_tilde.tsv')) # 七八十->70~80
45+
special_tilde = special_tilde + add_weight(
46+
(accep("万") | accep("亿")), -0.1).ques
4547
special_dash = string_file(
4648
get_abs_path(
4749
'../itn/chinese/data/number/special_dash.tsv')) # 七八十->70-80
50+
special_dash = special_dash + add_weight(
51+
(accep("万") | accep("亿")), -0.1).ques
4852
sign = string_file(
4953
get_abs_path('../itn/chinese/data/number/sign.tsv')) # + -
5054
dot = string_file(
@@ -101,12 +105,14 @@ def build_tagger(self):
101105
(number + accep('亿') + delete('零').ques).ques + number)
102106
# 负的xxx 1.11, 1.01
103107
number = sign.ques + number + (dot + digits.plus).ques
104-
# 五六万 => 5~6万,三五千 => 3000~5000,六七百 => 600~700,三四十 => 30~40
108+
# 五六万 => 5~6万,三五千 => 3000~5000,六七百 => 600~700,三四十 => 30~40, 三四十亿 => 30~40亿
105109
number |= special_tilde
106-
# 十七八 => 17-8, 四十五六 => 45-6, 三百七八十 => 370-80
110+
# 十七八 => 17-8, 四十五六 => 45-6, 三百七八十 => 370-80, 四十五六万 => 45-6万, 一万六七 => 16000-7000
107111
_special_dash = cross('十', '1') + special_dash
108112
_special_dash |= digit + delete('十') + special_dash
109113
_special_dash |= digit + delete('百') + special_dash
114+
_special_dash |= digit + delete('万') + digit + insert(
115+
'000-') + digit + insert('000')
110116
number |= _special_dash
111117

112118
self.number = number.optimize()

itn/chinese/test/data/cardinal.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,16 @@
66
三五万 => 3~5万
77
三四万 => 3~4万
88
五六十 => 50~60
9+
三四十万 => 30~40万
10+
三四十亿 => 30~40亿
911
十五六 => 15-6
1012
四十五六 => 45-6
13+
四十五六万 => 45-6万
1114
七百三四十 => 730-40
1215
十七八万 => 17-8万
1316
六十三四万 => 63-4万
17+
一万六七 => 16000-7000
18+
三万四五 => 34000-5000
1419
我的身份证号是三四零二零三一九三七零幺零幺零五幺七 => 我的身份证号是340203193701010517
1520
我的身份证号是三四零二零三一九三七零幺零幺零五幺X => 我的身份证号是34020319370101051X
1621
给一三三四五三一二二二一打电话 => 给13345312221打电话

0 commit comments

Comments
 (0)