mirror of
https://github.com/facebook/duckling.git
synced 2024-09-11 21:27:13 +03:00
Be more permissive with numerals [20, 90]
Summary: There are a handful of more spelling for russian numbers [20, 30 .. 90] that we aren't handling. Additionally, we optimise for recall over precision by allowing some invalid spellings that could be understandable typos. Reviewed By: patapizza Differential Revision: D26285711 Pulled By: chessai fbshipit-source-id: fd8a8f373d228a526e79b22326eff48bb966310d
This commit is contained in:
parent
3f2f307735
commit
ff4a1a5bae
@ -55,6 +55,7 @@ allExamples = concat
|
||||
, examples (NumeralValue 33)
|
||||
[ "33"
|
||||
, "тридцать три"
|
||||
, "тридцати три"
|
||||
, "0033"
|
||||
]
|
||||
, examples (NumeralValue 11)
|
||||
@ -83,12 +84,34 @@ allExamples = concat
|
||||
]
|
||||
, examples (NumeralValue 444)
|
||||
[ "четыреста сорок четыре"
|
||||
, "четыреста сорока четыре"
|
||||
, "444"
|
||||
]
|
||||
, examples (NumeralValue 525)
|
||||
[ "пятьсот двадцать пять"
|
||||
, "пятьсот двадцати пять"
|
||||
, "525"
|
||||
]
|
||||
, examples (NumeralValue 555)
|
||||
[ "пятьсот пятьдесят пять"
|
||||
, "пятьсот пятидесяти пять"
|
||||
]
|
||||
, examples (NumeralValue 565)
|
||||
[ "пятьсот шестьдесят пять"
|
||||
, "пятьсот шестидесяти пять"
|
||||
]
|
||||
, examples (NumeralValue 575)
|
||||
[ "пятьсот семьдесят пять"
|
||||
, "пятьсот семидесяти пять"
|
||||
]
|
||||
, examples (NumeralValue 585)
|
||||
[ "пятьсот восемьдесят пять"
|
||||
, "пятьсот восьмидесяти пять"
|
||||
]
|
||||
, examples (NumeralValue 595)
|
||||
[ "пятьсот девяносто пять"
|
||||
, "пятьсот девяноста пять"
|
||||
]
|
||||
, examples (NumeralValue 1.5)
|
||||
[ "1.5"
|
||||
, "полторы"
|
||||
|
@ -30,20 +30,32 @@ import qualified Duckling.Numeral.Types as TNumeral
|
||||
tensMap :: HashMap Text Integer
|
||||
tensMap = HashMap.fromList
|
||||
[ ( "двадцать", 20)
|
||||
, ( "двадцати", 20)
|
||||
, ( "тридцать", 30)
|
||||
, ( "тридцати", 30)
|
||||
, ( "сорок", 40)
|
||||
, ( "сорока", 40)
|
||||
, ( "пятьдесят", 50)
|
||||
, ( "пятидесяти", 50)
|
||||
, ( "шестьдесят", 60)
|
||||
, ( "шестидесяти", 60)
|
||||
, ( "шестидесят", 60)
|
||||
, ( "семьдесят", 70)
|
||||
, ( "семидесяти", 70)
|
||||
, ( "семидесят", 70)
|
||||
, ( "восемьдесят", 80)
|
||||
, ( "восьмидесяти", 80)
|
||||
, ( "восьмидесят", 80)
|
||||
, ( "восемьдесяти", 80)
|
||||
, ( "девяносто", 90)
|
||||
, ( "девяноста", 90)
|
||||
]
|
||||
|
||||
ruleInteger5 :: Rule
|
||||
ruleInteger5 = Rule
|
||||
{ name = "integer (20..90)"
|
||||
, pattern =
|
||||
[ regex "(двадцать|тридцать|сорок|пятьдесят|шестьдесят|семьдесят|восемьдесят|девяносто)"
|
||||
[ regex "(двадцат(ь|и)|тридцат(ь|и)|сорока?|пят(ь|и)десяти?|шест(ь|и)десяти?|сем(ь|и)десяти?|вос(е|ь)м(ь|и)десяти?|девяност(о|а))"
|
||||
]
|
||||
, prod = \tokens -> case tokens of
|
||||
(Token RegexMatch (GroupMatch (match:_)):_) ->
|
||||
@ -78,7 +90,7 @@ ruleInteger3 :: Rule
|
||||
ruleInteger3 = Rule
|
||||
{ name = "integer 2"
|
||||
, pattern =
|
||||
[ regex "(два|две|двое|пара|пару|парочку|парочка)"
|
||||
[ regex "(дв(а|е|ух|ое)|пар(а|у|очк(у|а)))"
|
||||
]
|
||||
, prod = \_ -> integer 2
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user