diff --git a/Duckling/Numeral/DE/Corpus.hs b/Duckling/Numeral/DE/Corpus.hs index b051b935..4149ccd5 100644 --- a/Duckling/Numeral/DE/Corpus.hs +++ b/Duckling/Numeral/DE/Corpus.hs @@ -143,4 +143,7 @@ allExamples = concat [ "1.000.000,00", "eine million" ] + , examples (NumeralValue 2771090092000000.0) + [ "zwei billiarden sieben hundert ein und siebzig billionen neunzig milliarden zwei und neunzig millionen" + ] ] diff --git a/Duckling/Numeral/DE/Rules.hs b/Duckling/Numeral/DE/Rules.hs index 1a2ce59c..93581e76 100644 --- a/Duckling/Numeral/DE/Rules.hs +++ b/Duckling/Numeral/DE/Rules.hs @@ -201,17 +201,23 @@ rulePowersOfTen :: Rule rulePowersOfTen = Rule { name = "powers of tens" , pattern = - [ regex "(hunderte?|tausende?|million(en)?)" + [ regex "(hunderte?|tausende?|million(en)?|milliarde(n)?|billion(en)?|billiarde(n)?)" ] , prod = \tokens -> case tokens of (Token RegexMatch (GroupMatch (match:_)):_) -> case Text.toLower match of - "hundert" -> double 1e2 >>= withGrain 2 >>= withMultipliable - "hunderte" -> double 1e2 >>= withGrain 2 >>= withMultipliable - "tausend" -> double 1e3 >>= withGrain 3 >>= withMultipliable - "tausende" -> double 1e3 >>= withGrain 3 >>= withMultipliable - "million" -> double 1e6 >>= withGrain 6 >>= withMultipliable - "millionen" -> double 1e6 >>= withGrain 6 >>= withMultipliable - _ -> Nothing + "hundert" -> double 1e2 >>= withGrain 2 >>= withMultipliable + "hunderte" -> double 1e2 >>= withGrain 2 >>= withMultipliable + "tausend" -> double 1e3 >>= withGrain 3 >>= withMultipliable + "tausende" -> double 1e3 >>= withGrain 3 >>= withMultipliable + "million" -> double 1e6 >>= withGrain 6 >>= withMultipliable + "millionen" -> double 1e6 >>= withGrain 6 >>= withMultipliable + "milliarde" -> double 1e9 >>= withGrain 9 >>= withMultipliable + "milliarden" -> double 1e9 >>= withGrain 9 >>= withMultipliable + "billion" -> double 1e12 >>= withGrain 12 >>= withMultipliable + "billionen" -> double 1e12 >>= withGrain 12 >>= withMultipliable + "billiarde" -> double 1e15 >>= withGrain 15 >>= withMultipliable + "billiarden" -> double 1e15 >>= withGrain 15 >>= withMultipliable + _ -> Nothing _ -> Nothing }