Few improvements for Numeral/RU

Summary:
- fix typos in 11, 300 and 400 forms
- add more 0 rules
- introduce 1.5 rules
Closes https://github.com/facebookincubator/duckling/pull/96

Differential Revision: D6136073

Pulled By: patapizza

fbshipit-source-id: b1252f2
This commit is contained in:
Aleksey Suslov 2017-10-24 10:27:59 -07:00 committed by Facebook Github Bot
parent 980c0f279e
commit df6484945a
2 changed files with 33 additions and 6 deletions

View File

@ -27,6 +27,7 @@ allExamples = concat
[ examples (NumeralValue 0)
[ "0"
, "ноль"
, "нисколько"
]
, examples (NumeralValue 1)
[ "1"
@ -57,6 +58,10 @@ allExamples = concat
, "тридцать три"
, "0033"
]
, examples (NumeralValue 11)
[ "11"
, "одиннадцать"
]
, examples (NumeralValue 14)
[ "14"
, "четырнадцать"
@ -73,10 +78,22 @@ allExamples = concat
[ "18"
, "восемнадцать"
]
, examples (NumeralValue 312)
[ "триста двенадцать"
, "312"
]
, examples (NumeralValue 444)
[ "четыреста сорок четыре"
, "444"
]
, examples (NumeralValue 525)
[ "пятьсот двадцать пять"
, "525"
]
, examples (NumeralValue 1.5)
[ "1.5"
, "полторы"
]
, examples (NumeralValue 1.1)
[ "1.1"
, "1.10"

View File

@ -97,12 +97,21 @@ ruleInteger3 = Rule
, prod = \_ -> integer 2
}
ruleDecimalOneAndAHalf :: Rule
ruleDecimalOneAndAHalf = Rule
{ name = "decimal one and a half"
, pattern =
[ regex "(полтора|полторы|полутора)"
]
, prod = \_ -> double 1.5
}
hundredsMap :: HashMap Text Integer
hundredsMap = HashMap.fromList
[ ( "сто", 100)
, ( "двести", 200)
, ( "тристо", 300)
, ( "четыресто", 400)
, ( "триста", 300)
, ( "четыреста", 400)
, ( "пятьсот", 500)
, ( "шестьсот", 600)
, ( "семьсот", 700)
@ -114,7 +123,7 @@ ruleInteger6 :: Rule
ruleInteger6 = Rule
{ name = "integer (100..900)"
, pattern =
[ regex "(сто|двести|тристо|четыресто|пятьсот|шестьсот|семьсот|восемьсот|девятьсот)"
[ regex "(сто|двести|триста|четыреста|пятьсот|шестьсот|семьсот|восемьсот|девятьсот)"
]
, prod = \tokens -> case tokens of
(Token RegexMatch (GroupMatch (match:_)):_) ->
@ -187,7 +196,7 @@ ruleInteger :: Rule
ruleInteger = Rule
{ name = "integer 0"
, pattern =
[ regex "(ноль)"
[ regex "(ноль|нуля|нисколько)"
]
, prod = \_ -> integer 0
}
@ -202,7 +211,7 @@ threeToNineteenMap = HashMap.fromList
, ( "восемь", 8)
, ( "девять", 9)
, ( "десять", 10)
, ( "одинадцать", 11)
, ( "одиннадцать", 11)
, ( "двенадцать", 12)
, ( "тринадцать", 13)
, ( "четырнадцать", 14)
@ -217,7 +226,7 @@ ruleInteger4 :: Rule
ruleInteger4 = Rule
{ name = "integer (3..19)"
, pattern =
[ regex "(три|четырнадцать|четыре|пятнадцать|пять|шестнадцать|шесть|семнадцать|семь|восемнадцать|восемь|девятнадцать|девять|десять|одинадцать|двенадцать|тринадцать)"
[ regex "(три|четырнадцать|четыре|пятнадцать|пять|шестнадцать|шесть|семнадцать|семь|восемнадцать|восемь|девятнадцать|девять|десять|одиннадцать|двенадцать|тринадцать)"
]
, prod = \tokens -> case tokens of
(Token RegexMatch (GroupMatch (match:_)):_) ->
@ -272,6 +281,7 @@ rules =
, ruleInteger6
, ruleInteger7
, ruleInteger8
, ruleDecimalOneAndAHalf
, ruleIntegerNumeric
, ruleIntegerWithThousandsSeparator
, ruleNumeralDotNumeral