diff --git a/Duckling/Numeral/AR/Rules.hs b/Duckling/Numeral/AR/Rules.hs index f7e47e10..37e638db 100644 --- a/Duckling/Numeral/AR/Rules.hs +++ b/Duckling/Numeral/AR/Rules.hs @@ -110,6 +110,69 @@ ruleInteger21 = Rule _ -> Nothing } +ruleInteger300 :: Rule +ruleInteger300 = Rule + { name = "integer 300" + , pattern = + [ regex "(ثلاث)ما?[ئي][ةه]" + ] + , prod = \_ -> integer 300 + } + +ruleInteger400 :: Rule +ruleInteger400 = Rule + { name = "integer 400" + , pattern = + [ regex "([أا]ربع)ما?[ئي][ةه]" + ] + , prod = \_ -> integer 400 + } + +ruleInteger500 :: Rule +ruleInteger500 = Rule + { name = "integer 500" + , pattern = + [ regex "(خمس)ما?[ئي][ةه]" + ] + , prod = \_ -> integer 500 + } + +ruleInteger600 :: Rule +ruleInteger600 = Rule + { name = "integer 600" + , pattern = + [ regex "(ست)ما?[ئي][ةه]" + ] + , prod = \_ -> integer 600 + } + +ruleInteger700 :: Rule +ruleInteger700 = Rule + { name = "integer 700" + , pattern = + [ regex "(سبع)ما?[ئي][ةه]" + ] + , prod = \_ -> integer 700 + } + +ruleInteger800 :: Rule +ruleInteger800 = Rule + { name = "integer 800" + , pattern = + [ regex "(ثمان[ي]?)ما?[ئي][ةه]" + ] + , prod = \_ -> integer 800 + } + +ruleInteger900 :: Rule +ruleInteger900 = Rule + { name = "integer 900" + , pattern = + [ regex "(تسع)ما?[ئي][ةه]" + ] + , prod = \_ -> integer 900 + } + ruleDecimalWithThousandsSeparator :: Rule ruleDecimalWithThousandsSeparator = Rule { name = "decimal with thousands separator" @@ -402,6 +465,13 @@ rules = , ruleInteger5 , ruleInteger7 , ruleInteger9 + , ruleInteger300 + , ruleInteger400 + , ruleInteger500 + , ruleInteger600 + , ruleInteger700 + , ruleInteger800 + , ruleInteger900 , ruleIntegerWithThousandsSeparator , ruleMultiply , ruleNumeralDotNumeral diff --git a/Duckling/Quantity/AR/Corpus.hs b/Duckling/Quantity/AR/Corpus.hs index c31c99bc..3a09efbc 100644 --- a/Duckling/Quantity/AR/Corpus.hs +++ b/Duckling/Quantity/AR/Corpus.hs @@ -9,6 +9,7 @@ module Duckling.Quantity.AR.Corpus ( corpus + , negativeCorpus ) where import Data.String @@ -19,6 +20,15 @@ import Duckling.Quantity.Types import Duckling.Resolve import Duckling.Testing.Types +negativeCorpus :: NegativeCorpus +negativeCorpus = (testContext, testOptions, examples) + where + examples = + [ "جمبري" + , "جمهور" + , "غمامة" + ] + corpus :: Corpus corpus = (testContext {locale = makeLocale AR Nothing}, testOptions, allExamples) diff --git a/Duckling/Ranking/Classifiers/AR_EG.hs b/Duckling/Ranking/Classifiers/AR_EG.hs index dae16d40..e2a49042 100644 --- a/Duckling/Ranking/Classifiers/AR_EG.hs +++ b/Duckling/Ranking/Classifiers/AR_EG.hs @@ -65,13 +65,6 @@ classifiers koData = ClassData{prior = -infinity, unseen = -1.3862943611198906, likelihoods = HashMap.fromList [], n = 0}}), - ("noon|midnight|EOD|end of day", - Classifier{okData = - ClassData{prior = -infinity, unseen = -0.6931471805599453, - likelihoods = HashMap.fromList [], n = 0}, - koData = - ClassData{prior = 0.0, unseen = -1.3862943611198906, - likelihoods = HashMap.fromList [("", 0.0)], n = 2}}), (" third", Classifier{okData = ClassData{prior = 0.0, unseen = -2.0794415416798357, @@ -119,7 +112,7 @@ classifiers likelihoods = HashMap.fromList [], n = 0}}), (" (ordinal or number) ", Classifier{okData = - ClassData{prior = -0.3101549283038396, + ClassData{prior = -0.2411620568168881, unseen = -3.4339872044851463, likelihoods = HashMap.fromList @@ -133,14 +126,13 @@ classifiers ("integer (numeric)March", -2.70805020110221)], n = 11}, koData = - ClassData{prior = -1.3217558399823195, unseen = -2.833213344056216, + ClassData{prior = -1.540445040947149, unseen = -2.70805020110221, likelihoods = HashMap.fromList - [("integer (numeric)in ", -2.0794415416798357), - ("integer (numeric)August", -2.0794415416798357), - ("month", -1.1631508098056809), - ("integer (numeric)July", -1.6739764335716716)], - n = 4}}), + [("integer (numeric)in ", -1.9459101490553135), + ("month", -1.252762968495368), + ("integer (numeric)July", -1.540445040947149)], + n = 3}}), ("