Skip to content

Commit 75ac443

Browse files
authored
fix(x到y): 二十一到二十五摄氏度 => 21~25°C (#115)
* fix(x到y): 二十一到二十五摄氏度 => 21~25°C * fix(x到y): 二十一到二十五摄氏度 => 21~25°C
1 parent f970474 commit 75ac443

3 files changed

Lines changed: 15 additions & 5 deletions

File tree

itn/chinese/rules/measure.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,29 @@ def build_tagger(self):
3232
units_en = string_file('itn/chinese/data/measure/units_en.tsv')
3333
units_zh = string_file('itn/chinese/data/measure/units_zh.tsv')
3434
sign = string_file('itn/chinese/data/number/sign.tsv') # + -
35+
to = cross('到', '~') | cross('到百分之', '~')
36+
3537
units = add_weight(units_en, -1.0) | \
3638
((accep('亿') | accep('兆') | accep('万')).ques + units_zh)
3739

3840
number = Cardinal().number if self.enable_0_to_9 else \
3941
Cardinal().number_exclude_0_to_9
40-
# 百分之三十, 百分三十, 百分之百
42+
# 百分之三十, 百分三十, 百分之百,百分之三十到四十, 百分之三十到百分之五十五
4143
percent = ((sign + delete('的').ques).ques + delete('百分') +
42-
delete('之').ques + (Cardinal().number | cross('百', '100'))
44+
delete('之').ques +
45+
((Cardinal().number + (to + Cardinal().number).ques) |
46+
((Cardinal().number + to).ques + cross('百', '100')))
4347
+ insert('%'))
4448

45-
# 十千米每小时 => 10km/h
46-
measure = number + units
49+
# 十千米每小时 => 10km/h, 十一到一百千米每小时 => 11~100km/h
50+
measure = number + (to + number).ques + units
4751
tagger = insert('value: "') + (measure | percent) + insert('"')
4852

49-
# 每小时十千米 => 10km/h
53+
# 每小时十千米 => 10km/h, 每小时三十到三百一十一千米 => 30~311km/h
5054
tagger |= (
5155
insert('denominator: "') + delete('每') + units +
5256
insert('" numerator: "') + measure + insert('"'))
57+
5358
self.tagger = self.add_tokens(tagger)
5459

5560
def build_verbalizer(self):

itn/chinese/test/data/math.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
负一加二 => -1+2
33
一加二加三 => 1+2+3
44
二等于一加一 => 2=1+1
5+
二十一到一千零一 => 21~1001

itn/chinese/test/data/measure.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,7 @@
2828
明天有百分之六十二的概率降雨所以你有百分之二点五一的可能性赢得比赛但是有负百分之十三的人认为你有负的百分之二十的胜利可能性 => 明天有62%的概率降雨所以你有2.51%的可能性赢得比赛但是有-13%的人认为你有-20%的胜利可能性
2929
这块黄金重达三百二十四点七五克,我再随便来几个价格三十四点五二一元,二十点一万 => 这块黄金重达324.75g,我再随便来几个价格¥34.521,20.1万
3030
一共有一人二人三人四人五人六人七人八人九人十人十一人十二人十三人十四人十五人十六人十七人十八人十九人二十人二十一人二十二人二十三人二十四人二十五人二十六人二十七人二十八人二十九人三十人三十一人三十二人三十三人三十四人三十五人三十六人三十七人三十八人三十九人四十人四十一人四十二人四十三人四十四人四十五人四十六人四十七人四十八人四十九人五十人五十一人五十二人五十三人五十四人五十五人五十六人五十七人五十八人五十九人六十人六十一人六十二人六十三人六十四人六十五人六十六人六十七人六十八人六十九人七十人七十一人七十二人七十三人七十四人七十五人七十六人七十七人七十八人七十九人八十人八十一人八十二人八十三人八十四人八十五人八十六人八十七人八十八人八十九人九十人九十一人九十二人九十三人九十四人九十五人九十六人九十七人九十八人九十九人一百人一百零一人一百一人一百一十一人一百一十二人两百二人二百二十三人三百三人三百三十四人四百四人四百四十五人一千零一人一千零五十人一千零五十一人一千三百人一千五百五人两千五百五十六人三千六百六人四千六百六十七人五千七百七人六千七百七十八人七千八百八人八千八百八十九人九千九百九人九千九百九十一人 => 一共有1人2人3人4人5人6人7人8人9人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人
31+
百分之三十到四十一 => 30~41%
32+
百分之三十一到百分之百 => 31~100%
33+
十一到一百千米每小时 => 11~100km/h
34+
每小时三十到三百一十一千米 => 30~311km/h

0 commit comments

Comments
 (0)