Skip to content

Commit

Permalink
fix(x到y): 二十一到二十五摄氏度 => 21~25°C (#115)
Browse files Browse the repository at this point in the history
* fix(x到y): 二十一到二十五摄氏度 => 21~25°C

* fix(x到y): 二十一到二十五摄氏度 => 21~25°C
  • Loading branch information
xingchensong authored Sep 26, 2023
1 parent f970474 commit 75ac443
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 5 deletions.
15 changes: 10 additions & 5 deletions itn/chinese/rules/measure.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,29 @@ def build_tagger(self):
units_en = string_file('itn/chinese/data/measure/units_en.tsv')
units_zh = string_file('itn/chinese/data/measure/units_zh.tsv')
sign = string_file('itn/chinese/data/number/sign.tsv') # + -
to = cross('到', '~') | cross('到百分之', '~')

units = add_weight(units_en, -1.0) | \
((accep('亿') | accep('兆') | accep('万')).ques + units_zh)

number = Cardinal().number if self.enable_0_to_9 else \
Cardinal().number_exclude_0_to_9
# 百分之三十, 百分三十, 百分之百
# 百分之三十, 百分三十, 百分之百,百分之三十到四十, 百分之三十到百分之五十五
percent = ((sign + delete('的').ques).ques + delete('百分') +
delete('之').ques + (Cardinal().number | cross('百', '100'))
delete('之').ques +
((Cardinal().number + (to + Cardinal().number).ques) |
((Cardinal().number + to).ques + cross('百', '100')))
+ insert('%'))

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

# 每小时十千米 => 10km/h
# 每小时十千米 => 10km/h, 每小时三十到三百一十一千米 => 30~311km/h
tagger |= (
insert('denominator: "') + delete('每') + units +
insert('" numerator: "') + measure + insert('"'))

self.tagger = self.add_tokens(tagger)

def build_verbalizer(self):
Expand Down
1 change: 1 addition & 0 deletions itn/chinese/test/data/math.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
负一加二 => -1+2
一加二加三 => 1+2+3
二等于一加一 => 2=1+1
二十一到一千零一 => 21~1001
4 changes: 4 additions & 0 deletions itn/chinese/test/data/measure.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,7 @@
明天有百分之六十二的概率降雨所以你有百分之二点五一的可能性赢得比赛但是有负百分之十三的人认为你有负的百分之二十的胜利可能性 => 明天有62%的概率降雨所以你有2.51%的可能性赢得比赛但是有-13%的人认为你有-20%的胜利可能性
这块黄金重达三百二十四点七五克,我再随便来几个价格三十四点五二一元,二十点一万 => 这块黄金重达324.75g,我再随便来几个价格¥34.521,20.1万
一共有一人二人三人四人五人六人七人八人九人十人十一人十二人十三人十四人十五人十六人十七人十八人十九人二十人二十一人二十二人二十三人二十四人二十五人二十六人二十七人二十八人二十九人三十人三十一人三十二人三十三人三十四人三十五人三十六人三十七人三十八人三十九人四十人四十一人四十二人四十三人四十四人四十五人四十六人四十七人四十八人四十九人五十人五十一人五十二人五十三人五十四人五十五人五十六人五十七人五十八人五十九人六十人六十一人六十二人六十三人六十四人六十五人六十六人六十七人六十八人六十九人七十人七十一人七十二人七十三人七十四人七十五人七十六人七十七人七十八人七十九人八十人八十一人八十二人八十三人八十四人八十五人八十六人八十七人八十八人八十九人九十人九十一人九十二人九十三人九十四人九十五人九十六人九十七人九十八人九十九人一百人一百零一人一百一人一百一十一人一百一十二人两百二人二百二十三人三百三人三百三十四人四百四人四百四十五人一千零一人一千零五十人一千零五十一人一千三百人一千五百五人两千五百五十六人三千六百六人四千六百六十七人五千七百七人六千七百七十八人七千八百八人八千八百八十九人九千九百九人九千九百九十一人 => 一共有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人
百分之三十到四十一 => 30~41%
百分之三十一到百分之百 => 31~100%
十一到一百千米每小时 => 11~100km/h
每小时三十到三百一十一千米 => 30~311km/h

0 comments on commit 75ac443

Please sign in to comment.