Added missing 'TR' time test cases (#661)

Summary:
Fixes https://github.com/facebook/duckling/issues/660.

Pull Request resolved: https://github.com/facebook/duckling/pull/661

Test Plan: :test Duckling.Time.TR.Tests

Reviewed By: stroxler

Differential Revision: D32145794

Pulled By: chessai

fbshipit-source-id: 4d55043f133b8238e9e8360264a3fbea6af2d022
This commit is contained in:
Lautaro Emanuel 2021-11-10 10:26:21 -08:00 committed by Facebook GitHub Bot
parent dd70d80dc1
commit e1641aeba4
6 changed files with 1272 additions and 61 deletions

File diff suppressed because it is too large Load Diff

View File

@ -294,7 +294,9 @@ allExamples = concat
]
, examples (datetime (2013, 1, 29, 4, 0, 0) Hour)
[ "14 gün önce"
, "iki hafta önce"
]
, examples (datetime (2013, 1, 29, 0, 0, 0) Day)
[ "iki hafta önce"
]
, examples (datetime (2013, 2, 5, 0, 0, 0) Day)
[ "bir hafta önce"
@ -314,7 +316,9 @@ allExamples = concat
]
, examples (datetime (2013, 2, 26, 4, 0, 0) Hour)
[ "14 gün sonra"
, "iki hafta sonra"
]
, examples (datetime (2013, 2, 26, 0, 0, 0) Day)
[ "iki hafta sonra"
]
, examples (datetime (2013, 2, 19, 0, 0, 0) Day)
[ "bir hafta sonra"
@ -437,9 +441,11 @@ allExamples = concat
[ "perşembe 9:30 - 11:00"
]
, examples (datetimeInterval ((2013, 2, 12, 15, 0, 0), (2013, 2, 12, 17, 0, 0)) Hour)
[ "saat 15-16"]
[ "saat 15-16"
]
, examples (datetimeInterval ((2013, 2, 12, 15, 30, 0), (2013, 2, 12, 18, 1, 0)) Minute)
[ "saat 15:30 - 18"]
[ "saat 15:30 - 18"
]
, examples (datetimeInterval ((2013, 2, 14, 9, 0, 0), (2013, 2, 14, 12, 0, 0)) Hour)
[ "perşembe saat 9-11"
]

View File

@ -98,19 +98,21 @@ rulePartOfDays :: Rule
rulePartOfDays = Rule
{ name = "part of days"
, pattern =
[ regex "(sabahı?|öğlen?|akşam|gece|öğle\\syemeği)"
[ regex "(sabah(ı|a|tan)?|öğlen?|akşam|gece|öğle\\syemeği)"
]
, prod = \case
(Token RegexMatch (GroupMatch (match:_)):_) -> do
let (start, end) = case Text.toLower match of
"sabah" -> (hour False 0, hour False 12 )
"sabahı" -> (hour False 0, hour False 12 )
"sabaha" -> (hour False 0, hour False 12 )
"sabahtan" -> (hour False 0, hour False 12 )
"akşam" -> (hour False 18, hour False 0 )
"gece" -> (hour False 18, hour False 0 )
"öğlen" -> (hour False 12, hour False 14)
"öğle" -> (hour False 12, hour False 14)
"öğle yemeği" -> (hour False 12, hour False 14)
_ -> (hour False 12, hour False 19)
_ -> (hour False 12, hour False 19)
td <- interval TTime.Open start end
tt $ partOfDay $ mkLatent td
_ -> Nothing
@ -233,7 +235,7 @@ ruleDurationFromNow = Rule
{ name = "<duration> from now"
, pattern =
[ regex "(bugünden\\s)?sonra(ki)?"
, dimension Duration
, dimension Duration
]
, prod = \case
(_:Token Duration dd:_) ->
@ -269,19 +271,6 @@ ruleYearLatent2 = Rule
_ -> Nothing
}
ruleTimeAfterNext :: Rule
ruleTimeAfterNext = Rule
{ name = "<time> after next"
, pattern =
[ regex "sonraki|önümüzdeki"
, dimension Time
]
, prod = \case
(_:Token Time td:_) ->
tt $ predNth 1 True td
_ -> Nothing
}
ruleNoon :: Rule
ruleNoon = Rule
{ name = "noon"
@ -456,8 +445,8 @@ ruleNthTimeAfterTime = Rule
_ -> Nothing
}
ruleMmdd :: Rule
ruleMmdd = Rule
ruleMMDD :: Rule
ruleMMDD = Rule
{ name = "mm/dd"
, pattern =
[ regex "([012]?[1-9]|10|20|30|31)\\.(10|11|12|0?[1-9])\\.?"
@ -470,6 +459,21 @@ ruleMmdd = Rule
_ -> Nothing
}
ruleMMDDYYYY :: Rule
ruleMMDDYYYY = Rule
{ name = "mm/dd/yyyy"
, pattern =
[ regex "(1[0-2]|0?[1-9])[-/\\s](3[01]|[12]\\d|0?[1-9])[-/\\s](\\d{2,4})"
]
, prod = \case
(Token RegexMatch (GroupMatch (mm:dd:yy:_)):_) -> do
y <- parseInt yy
m <- parseInt mm
d <- parseInt dd
tt $ yearMonthDay y m d
_ -> Nothing
}
ruleTimeofdayLatent :: Rule
ruleTimeofdayLatent = Rule
{ name = "time-of-day (latent)"
@ -669,8 +673,8 @@ ruleOrdinalQuarterYear = Rule
_ -> Nothing
}
ruleYyyymmdd :: Rule
ruleYyyymmdd = Rule
ruleYYYYMMDD :: Rule
ruleYYYYMMDD = Rule
{ name = "yyyy-mm-dd"
, pattern =
[ regex "(\\d{2,4})-(0?[1-9]|10|11|12)-([012]?[1-9]|10|20|30|31)"
@ -699,19 +703,6 @@ ruleNextNCycle = Rule
_ -> Nothing
}
ruleMorning :: Rule
ruleMorning = Rule
{ name = "morning"
, pattern =
[ regex "sabah(ı|a|tan)?"
]
, prod = \_ ->
let from = hour False 3
to = hour False 12
in Token Time . mkLatent . partOfDay <$>
interval TTime.Open from to
}
ruleThisPartofday :: Rule
ruleThisPartofday = Rule
{ name = "this <part-of-day>"
@ -736,6 +727,7 @@ ruleThisCycle = Rule
tt $ cycleNth grain 0
_ -> Nothing
}
ruleThisTime :: Rule
ruleThisTime = Rule
{ name = "this <time>"
@ -791,7 +783,7 @@ ruleAfterTimeofday = Rule
{ name = "after <time-of-day>"
, pattern =
[ regex "sonraki|önümüzdeki"
, dimension Time
, Predicate isATimeOfDay
]
, prod = \case
(_:Token Time td:_) -> tt $ withDirection TTime.After td
@ -1030,21 +1022,6 @@ rulePartofdayOfTime = Rule
_ -> Nothing
}
ruleMmddyyyy :: Rule
ruleMmddyyyy = Rule
{ name = "mm/dd/yyyy"
, pattern =
[ regex "([012]?[1-9]|10|20|30|31)\\.(0?[1-9]|10|11|12)\\.(\\d{2,4})"
]
, prod = \case
(Token RegexMatch (GroupMatch (m1:m2:m3:_)):_) -> do
y <- parseInt m3
m <- parseInt m2
d <- parseInt m1
tt $ yearMonthDay y m d
_ -> Nothing
}
ruleTimezone :: Rule
ruleTimezone = Rule
{ name = "<time> timezone"
@ -1061,7 +1038,7 @@ ruleTimezone = Rule
rules :: [Rule]
rules =
[ruleAbsorptionOfAfterNamedDay
[ ruleAbsorptionOfAfterNamedDay
, ruleAfterTimeofday
, ruleAfternoon
, ruleAtTimeofday
@ -1097,9 +1074,9 @@ rules =
, ruleNextTime
, ruleLunch
, ruleMidnighteodendOfDay
, ruleMmdd
, ruleMmddyyyy
, ruleMorning
, ruleMMDD
, ruleMMDDYYYY
, ruleYYYYMMDD
, ruleNamedmonthDayofmonthNonOrdinal
, ruleNextCycle
, ruleNextNCycle
@ -1118,7 +1095,6 @@ rules =
, ruleThisPartofday
, ruleThisTime
, ruleThisnextDayofweek
, ruleTimeAfterNext
, ruleTimePartofday
, ruleTimeofdayLatent
, ruleTimeofdayTimeofdayInterval
@ -1129,7 +1105,6 @@ rules =
, ruleYear
, ruleYearLatent
, ruleYearLatent2
, ruleYyyymmdd
, ruleTimezone
]
++ ruleInstants

View File

@ -1161,6 +1161,7 @@ test-suite duckling-test
, Duckling.Time.RO.Tests
, Duckling.Time.RU.Tests
, Duckling.Time.SV.Tests
, Duckling.Time.TR.Tests
, Duckling.Time.UK.Tests
, Duckling.Time.VI.Tests
, Duckling.Time.ZH.Tests

View File

@ -55,6 +55,7 @@ import qualified Duckling.Time.PT.Corpus as PTTime
import qualified Duckling.Time.RO.Corpus as ROTime
import qualified Duckling.Time.RU.Corpus as RUTime
import qualified Duckling.Time.SV.Corpus as SVTime
import qualified Duckling.Time.TR.Corpus as TRTime
import qualified Duckling.Time.UK.Corpus as UKTime
import qualified Duckling.Time.VI.Corpus as VITime
import qualified Duckling.Time.ZH.Corpus as ZHTime
@ -221,7 +222,7 @@ getCorpusForLang = \case
TA -> (testContext, testOptions, [])
TE -> (testContext, testOptions, [])
TH -> (testContext, testOptions, [])
TR -> (testContext, testOptions, [])
TR -> TRTime.corpus
UK -> UKTime.corpus
VI -> VITime.corpus
ZH -> ZHTime.corpus

View File

@ -47,6 +47,7 @@ import qualified Duckling.Time.PT.Tests as PT
import qualified Duckling.Time.RO.Tests as RO
import qualified Duckling.Time.RU.Tests as RU
import qualified Duckling.Time.SV.Tests as SV
import qualified Duckling.Time.TR.Tests as TR
import qualified Duckling.Time.UK.Tests as UK
import qualified Duckling.Time.VI.Tests as VI
import qualified Duckling.Time.ZH.Tests as ZH
@ -77,6 +78,7 @@ tests = testGroup "Time Tests"
, RO.tests
, RU.tests
, SV.tests
, TR.tests
, UK.tests
, VI.tests
, ZH.tests