Fixed a problem with parsing "day of month" that contains "dia" in it (#487)

Summary:
Current:

"el dia nueve" -> "9pm" of current day

Expected:
"el dia nueve" -> 9th of current or next month

Fix:

added new ES rule to handle the pattern like "el dia  <day of month>"
Pull Request resolved: https://github.com/facebook/duckling/pull/487

Reviewed By: girifb

Differential Revision: D21850807

Pulled By: chinmay87

fbshipit-source-id: d8edd81273c7e5f700b440ccc8c7e7bded679051
This commit is contained in:
byuan 2020-06-09 14:19:49 -07:00 committed by Facebook GitHub Bot
parent 4cfe88ead1
commit 596bf62888
10 changed files with 115 additions and 32 deletions

View File

@ -195,6 +195,13 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -2.5649493574615367,
likelihoods = HashMap.fromList [], n = 0}}),
("el dia <day-of-month> (non ordinal)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.0986122886681098,
likelihoods = HashMap.fromList [("number (0..15)", 0.0)], n = 1},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("semana (grain)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.833213344056216,
@ -640,11 +647,12 @@ classifiers
likelihoods = HashMap.fromList [], n = 0}}),
("number (0..15)",
Classifier{okData =
ClassData{prior = -3.922071315328127e-2,
unseen = -3.951243718581427,
likelihoods = HashMap.fromList [("", 0.0)], n = 50},
ClassData{prior = -3.846628082779605e-2,
unseen = -3.970291913552122,
likelihoods = HashMap.fromList [("", 0.0)], n = 51},
koData =
ClassData{prior = -3.258096538021482, unseen = -1.3862943611198906,
ClassData{prior = -3.2771447329921766,
unseen = -1.3862943611198906,
likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
("D\237a Internacional de las Cooperativas",
Classifier{okData =

View File

@ -195,6 +195,13 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -2.5649493574615367,
likelihoods = HashMap.fromList [], n = 0}}),
("el dia <day-of-month> (non ordinal)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.0986122886681098,
likelihoods = HashMap.fromList [("number (0..15)", 0.0)], n = 1},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("semana (grain)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.833213344056216,
@ -640,11 +647,12 @@ classifiers
likelihoods = HashMap.fromList [], n = 0}}),
("number (0..15)",
Classifier{okData =
ClassData{prior = -3.922071315328127e-2,
unseen = -3.951243718581427,
likelihoods = HashMap.fromList [("", 0.0)], n = 50},
ClassData{prior = -3.846628082779605e-2,
unseen = -3.970291913552122,
likelihoods = HashMap.fromList [("", 0.0)], n = 51},
koData =
ClassData{prior = -3.258096538021482, unseen = -1.3862943611198906,
ClassData{prior = -3.2771447329921766,
unseen = -1.3862943611198906,
likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
("D\237a Internacional de las Cooperativas",
Classifier{okData =

View File

@ -195,6 +195,13 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -2.5649493574615367,
likelihoods = HashMap.fromList [], n = 0}}),
("el dia <day-of-month> (non ordinal)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.0986122886681098,
likelihoods = HashMap.fromList [("number (0..15)", 0.0)], n = 1},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("semana (grain)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.833213344056216,
@ -640,11 +647,12 @@ classifiers
likelihoods = HashMap.fromList [], n = 0}}),
("number (0..15)",
Classifier{okData =
ClassData{prior = -3.922071315328127e-2,
unseen = -3.951243718581427,
likelihoods = HashMap.fromList [("", 0.0)], n = 50},
ClassData{prior = -3.846628082779605e-2,
unseen = -3.970291913552122,
likelihoods = HashMap.fromList [("", 0.0)], n = 51},
koData =
ClassData{prior = -3.258096538021482, unseen = -1.3862943611198906,
ClassData{prior = -3.2771447329921766,
unseen = -1.3862943611198906,
likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
("D\237a Internacional de las Cooperativas",
Classifier{okData =

View File

@ -195,6 +195,13 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -2.5649493574615367,
likelihoods = HashMap.fromList [], n = 0}}),
("el dia <day-of-month> (non ordinal)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.0986122886681098,
likelihoods = HashMap.fromList [("number (0..15)", 0.0)], n = 1},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("semana (grain)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.833213344056216,
@ -640,11 +647,12 @@ classifiers
likelihoods = HashMap.fromList [], n = 0}}),
("number (0..15)",
Classifier{okData =
ClassData{prior = -3.922071315328127e-2,
unseen = -3.951243718581427,
likelihoods = HashMap.fromList [("", 0.0)], n = 50},
ClassData{prior = -3.846628082779605e-2,
unseen = -3.970291913552122,
likelihoods = HashMap.fromList [("", 0.0)], n = 51},
koData =
ClassData{prior = -3.258096538021482, unseen = -1.3862943611198906,
ClassData{prior = -3.2771447329921766,
unseen = -1.3862943611198906,
likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
("D\237a Internacional de las Cooperativas",
Classifier{okData =

View File

@ -195,6 +195,13 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -2.5649493574615367,
likelihoods = HashMap.fromList [], n = 0}}),
("el dia <day-of-month> (non ordinal)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.0986122886681098,
likelihoods = HashMap.fromList [("number (0..15)", 0.0)], n = 1},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("semana (grain)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.833213344056216,
@ -640,11 +647,12 @@ classifiers
likelihoods = HashMap.fromList [], n = 0}}),
("number (0..15)",
Classifier{okData =
ClassData{prior = -3.922071315328127e-2,
unseen = -3.951243718581427,
likelihoods = HashMap.fromList [("", 0.0)], n = 50},
ClassData{prior = -3.846628082779605e-2,
unseen = -3.970291913552122,
likelihoods = HashMap.fromList [("", 0.0)], n = 51},
koData =
ClassData{prior = -3.258096538021482, unseen = -1.3862943611198906,
ClassData{prior = -3.2771447329921766,
unseen = -1.3862943611198906,
likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
("D\237a Internacional de las Cooperativas",
Classifier{okData =

View File

@ -195,6 +195,13 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -2.5649493574615367,
likelihoods = HashMap.fromList [], n = 0}}),
("el dia <day-of-month> (non ordinal)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.0986122886681098,
likelihoods = HashMap.fromList [("number (0..15)", 0.0)], n = 1},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("semana (grain)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.833213344056216,
@ -640,11 +647,12 @@ classifiers
likelihoods = HashMap.fromList [], n = 0}}),
("number (0..15)",
Classifier{okData =
ClassData{prior = -3.922071315328127e-2,
unseen = -3.951243718581427,
likelihoods = HashMap.fromList [("", 0.0)], n = 50},
ClassData{prior = -3.846628082779605e-2,
unseen = -3.970291913552122,
likelihoods = HashMap.fromList [("", 0.0)], n = 51},
koData =
ClassData{prior = -3.258096538021482, unseen = -1.3862943611198906,
ClassData{prior = -3.2771447329921766,
unseen = -1.3862943611198906,
likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
("D\237a Internacional de las Cooperativas",
Classifier{okData =

View File

@ -195,6 +195,13 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -2.5649493574615367,
likelihoods = HashMap.fromList [], n = 0}}),
("el dia <day-of-month> (non ordinal)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.0986122886681098,
likelihoods = HashMap.fromList [("number (0..15)", 0.0)], n = 1},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("semana (grain)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.833213344056216,
@ -640,11 +647,12 @@ classifiers
likelihoods = HashMap.fromList [], n = 0}}),
("number (0..15)",
Classifier{okData =
ClassData{prior = -3.922071315328127e-2,
unseen = -3.951243718581427,
likelihoods = HashMap.fromList [("", 0.0)], n = 50},
ClassData{prior = -3.846628082779605e-2,
unseen = -3.970291913552122,
likelihoods = HashMap.fromList [("", 0.0)], n = 51},
koData =
ClassData{prior = -3.258096538021482, unseen = -1.3862943611198906,
ClassData{prior = -3.2771447329921766,
unseen = -1.3862943611198906,
likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
("D\237a Internacional de las Cooperativas",
Classifier{okData =

View File

@ -195,6 +195,13 @@ classifiers
koData =
ClassData{prior = -infinity, unseen = -2.5649493574615367,
likelihoods = HashMap.fromList [], n = 0}}),
("el dia <day-of-month> (non ordinal)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -1.0986122886681098,
likelihoods = HashMap.fromList [("number (0..15)", 0.0)], n = 1},
koData =
ClassData{prior = -infinity, unseen = -0.6931471805599453,
likelihoods = HashMap.fromList [], n = 0}}),
("semana (grain)",
Classifier{okData =
ClassData{prior = 0.0, unseen = -2.833213344056216,
@ -640,11 +647,12 @@ classifiers
likelihoods = HashMap.fromList [], n = 0}}),
("number (0..15)",
Classifier{okData =
ClassData{prior = -3.922071315328127e-2,
unseen = -3.951243718581427,
likelihoods = HashMap.fromList [("", 0.0)], n = 50},
ClassData{prior = -3.846628082779605e-2,
unseen = -3.970291913552122,
likelihoods = HashMap.fromList [("", 0.0)], n = 51},
koData =
ClassData{prior = -3.258096538021482, unseen = -1.3862943611198906,
ClassData{prior = -3.2771447329921766,
unseen = -1.3862943611198906,
likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
("D\237a Internacional de las Cooperativas",
Classifier{okData =

View File

@ -452,4 +452,7 @@ allExamples = concat
, "día de las bromas de abril"
, "día de las bromas"
]
, examples (datetime (2013, 3, 9, 0, 0, 0) Day)
[ "el día nueve"
]
]

View File

@ -1469,6 +1469,21 @@ rulePeriodicHolidays = mkRuleHolidays
, predNthClosest 0 weekday (monthDay 10 16) )
]
ruleElDayofmonthNonOrdinalWithDia :: Rule
ruleElDayofmonthNonOrdinalWithDia = Rule
{ name = "el dia <day-of-month> (non ordinal)"
, pattern =
[ regex "el"
, regex "día"
, Predicate $ isIntegerBetween 1 31
]
, prod = \tokens -> case tokens of
(_:_:token:_) -> do
v <- getIntValue token
tt $ dayOfMonth v
_ -> Nothing
}
rules :: [Rule]
rules =
[ ruleALasHourmintimeofday
@ -1560,6 +1575,7 @@ rules =
, ruleHourofdayMinusQuarter
, ruleHourofdayMinusIntegerAsRelativeMinutes2
, ruleTimezone
, ruleElDayofmonthNonOrdinalWithDia
]
++ ruleDaysOfWeek
++ ruleMonths