Skip to content

Commit 06575fa

Browse files
committed
fix: enumerate known short phone numbers instead of matching all 3/5 digit numbers (#283)
Replace phone_digits**3 | phone_digits**5 with an explicit phone.tsv list of known short numbers (110, 119, 120, 12306, 10086, etc.). This fixes 3-digit numbers like 500 being read as 五零零 instead of 五百. 11-digit mobile numbers (phone_digits**11) are unchanged.
1 parent 55207ec commit 06575fa

2 files changed

Lines changed: 32 additions & 2 deletions

File tree

tn/chinese/data/cardinal/phone.tsv

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
110 幺幺零
2+
111 幺幺幺
3+
112 幺幺二
4+
114 幺幺四
5+
119 幺幺九
6+
120 幺二零
7+
122 幺二二
8+
10086 幺零零八六
9+
10010 幺零零幺零
10+
10000 幺零零零零
11+
12306 幺二三零六
12+
12315 幺二三幺五
13+
12345 幺二三四五
14+
12110 幺二幺幺零
15+
12320 幺二三二零
16+
12366 幺二三六六
17+
12333 幺二三三三
18+
12328 幺二三二八
19+
95110 九五幺幺零
20+
95120 九五幺二零
21+
95188 九五幺八八
22+
95500 九五五零零
23+
95511 九五五幺幺
24+
95533 九五五三三
25+
95555 九五五五五
26+
95566 九五五六六
27+
95588 九五五八八
28+
95598 九五五九八
29+
95599 九五五九九

tn/chinese/rules/cardinal.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,10 @@ def build_tagger(self):
9191
cardinal |= digits.plus + (delete("-") + digits.plus) ** 2
9292
# xxx-xxxxxxxx
9393
cardinal |= digits**3 + delete("-") + digits**8
94-
# three or five or eleven phone numbers
94+
# well-known short phone numbers (110, 12306, etc.) and 11-digit mobile
9595
phone_digits = digits @ self.build_rule(cross("一", "幺"))
96-
phone = phone_digits**3 | phone_digits**5 | phone_digits**11
96+
phone = string_file(get_abs_path("chinese/data/cardinal/phone.tsv"))
97+
phone |= phone_digits**11
9798
phone |= accep("尾号") + (accep("是") | accep("为")).ques + phone_digits**4
9899
cardinal |= add_weight(phone, -1.0)
99100

0 commit comments

Comments
 (0)