Support Dutch dates and times

Summary: [Duckling][Time][NL] Support Dutch dates and times

Reviewed By: patapizza

Differential Revision: D6090294

fbshipit-source-id: 54b8729
This commit is contained in:
Matthijs Mullender 2017-10-19 13:37:43 -07:00 committed by Facebook Github Bot
parent 3fa0988fcd
commit 1ade1935b2
12 changed files with 4160 additions and 12 deletions

View File

@ -18,5 +18,6 @@ allDimensions =
, This Duration
, This Numeral
, This Ordinal
, This Time
, This Volume
]

View File

@ -55,9 +55,21 @@ allExamples = concat
, "2 m"
, "2'"
]
, examples (DurationData 45 Minute)
[ "3 kwartier"
]
, examples (DurationData 1 Hour)
[ "een uur"
, "één uur"
, "1 u"
, "1 h"
]
, examples (DurationData 30 Day)
[ "30 dagen"
]
, examples (DurationData 7 Day)
[ "7 dagen"
]
, examples (DurationData 7 Week)
[ "zeven weken"
, "7 w"
@ -68,7 +80,7 @@ allExamples = concat
, "één maand"
]
, examples (DurationData 3 Quarter)
[ "drie kwartier"
[ "drie kwartalen"
]
, examples (DurationData 2 Year)
[ "2 jaar"
@ -76,8 +88,8 @@ allExamples = concat
, "twee jaren"
, "2 j"
]
, examples (DurationData 150 Minute)
[ "twee en een half uur"
, "2,5 uur"
]
, examples (DurationData 150 Minute)
[ "twee en een half uur"
, "2,5 uur"
]
]

View File

@ -29,10 +29,23 @@ import qualified Duckling.TimeGrain.Types as TG
ruleDurationQuarterOfAnHour :: Rule
ruleDurationQuarterOfAnHour = Rule
{ name = "quarter of an hour"
, pattern = [ regex "1/4\\s?uur"]
, pattern = [ regex "1/4\\s?(h|u(ur)?)|kwartier"]
, prod = \_ -> Just . Token Duration $ duration TG.Minute 15
}
ruleDurationKwartier :: Rule
ruleDurationKwartier = Rule
{ name = "<integer> kwartier"
, pattern =
[ Predicate isNatural
, regex "kwartier"
]
, prod = \tokens -> case tokens of
(Token Numeral (NumeralData {TNumeral.value = v}):_) ->
Just . Token Duration . duration TG.Minute $ 15 * floor v
_ -> Nothing
}
ruleDurationHalfAnHour :: Rule
ruleDurationHalfAnHour = Rule
{ name = "half an hour"
@ -105,6 +118,7 @@ ruleDurationPrecision = Rule
rules :: [Rule]
rules =
[ ruleDurationQuarterOfAnHour
, ruleDurationKwartier
, ruleDurationHalfAnHour
, ruleDurationThreeQuartersOfAnHour
, ruleDurationDotNumeralHours

File diff suppressed because it is too large Load Diff

View File

@ -22,6 +22,7 @@ import qualified Duckling.Distance.NL.Rules as Distance
import qualified Duckling.Duration.NL.Rules as Duration
import qualified Duckling.Numeral.NL.Rules as Numeral
import qualified Duckling.Ordinal.NL.Rules as Ordinal
import qualified Duckling.Time.NL.Rules as Time
import qualified Duckling.TimeGrain.NL.Rules as TimeGrain
import qualified Duckling.Volume.NL.Rules as Volume
@ -42,7 +43,7 @@ langRules (This PhoneNumber) = []
langRules (This Quantity) = []
langRules (This RegexMatch) = []
langRules (This Temperature) = []
langRules (This Time) = []
langRules (This Time) = Time.rules
langRules (This TimeGrain) = TimeGrain.rules
langRules (This Url) = []
langRules (This Volume) = Volume.rules

632
Duckling/Time/NL/Corpus.hs Normal file
View File

@ -0,0 +1,632 @@
-- Copyright (c) 2016-present, Facebook, Inc.
-- All rights reserved.
--
-- This source code is licensed under the BSD-style license found in the
-- LICENSE file in the root directory of this source tree. An additional grant
-- of patent rights can be found in the PATENTS file in the same directory.
{-# LANGUAGE OverloadedStrings #-}
module Duckling.Time.NL.Corpus
( corpus
, negativeCorpus
) where
import Data.String
import Prelude
import Duckling.Locale
import Duckling.Resolve
import Duckling.Testing.Types hiding (examples)
import Duckling.Time.Corpus
import Duckling.Time.Types hiding (Month)
import Duckling.TimeGrain.Types hiding (add)
corpus :: Corpus
corpus = (testContext {locale = makeLocale NL Nothing}, allExamples)
negativeCorpus :: NegativeCorpus
negativeCorpus = (testContext {locale = makeLocale NL Nothing}, examples)
where
examples =
[ "een hotel"
, "twee aanbiedingen"
, "komende 5 agendapunten"
]
allExamples :: [Example]
allExamples = concat
[ examples (datetime (2013, 2, 12, 4, 30, 0) Second)
[ "nu"
, "direct"
, "zojuist"
]
, examples (datetime (2013, 2, 12, 0, 0, 0) Day)
[ "vandaag"
, "op deze dag"
]
, examples (datetime (2013, 2, 11, 0, 0, 0) Day)
[ "gisteren"
]
, examples (datetime (2013, 2, 13, 0, 0, 0) Day)
[ "morgen"
]
, examples (datetime (2013, 2, 18, 0, 0, 0) Day)
[ "maandag"
, "ma."
, "volgende week maandag"
, "komende maandag"
, "aanstaande maandag"
]
, examples (datetime (2013, 2, 18, 0, 0, 0) Day)
[ "Maandag, 18 Feb"
, "maandag, 18 februari"
]
, examples (datetime (2013, 2, 19, 0, 0, 0) Day)
[ "dinsdag"
]
, examples (datetime (2013, 2, 14, 0, 0, 0) Day)
[ "donderdag"
, "do"
, "do."
]
, examples (datetime (2013, 2, 15, 0, 0, 0) Day)
[ "vrijdag"
, "vr."
]
, examples (datetime (2013, 2, 16, 0, 0, 0) Day)
[ "zaterdag"
, "za."
]
, examples (datetime (2013, 2, 17, 0, 0, 0) Day)
[ "zondag"
, "zo."
]
, examples (datetime (2013, 3, 1, 0, 0, 0) Day)
[ "1 maart"
, "op de eerste"
]
, examples (datetime (2013, 3, 3, 0, 0, 0) Day)
[ "3 maart"
]
, examples (datetime (2015, 3, 3, 0, 0, 0) Day)
[ "3 maart 2015"
]
, examples (datetime (2013, 2, 15, 0, 0, 0) Day)
[ "op de 15de"
]
, examples (datetime (2013, 2, 15, 0, 0, 0) Day)
[ "15 februari"
, "februari 15"
, "op de 15de februari"
, "15-2"
, "op 15-2"
]
, examples (datetime (2013, 8, 8, 0, 0, 0) Day)
[ "Aug 8"
, "8 augustus"
]
, examples (datetime (2014, 10, 0, 0, 0, 0) Month)
[ "Oktober 2014"
]
, examples (datetime (1974, 10, 31, 0, 0, 0) Day)
[ "31.10.1974"
, "31.10.74"
, "31-10-1974"
, "31-10-74"
]
, examples (datetime (2015, 4, 14, 0, 0, 0) Day)
[ "14 april 2015"
, "April 14, 2015"
]
, examples (datetime (2013, 2, 19, 0, 0, 0) Day)
[ "volgende week dinsdag"
]
, examples (datetime (2013, 2, 22, 0, 0, 0) Day)
[ "volgende week vrijdag"
]
, examples (datetime (2013, 3, 0, 0, 0, 0) Month)
[ "maart"
]
, examples (datetime (2014, 3, 0, 0, 0, 0) Month)
[ "volgend jaar maart"
]
, examples (datetime (2013, 2, 10, 0, 0, 0) Day)
[ "zondag, feb 10"
]
, examples (datetime (2013, 2, 13, 0, 0, 0) Day)
[ "woensdag, 13 februari"
]
, examples (datetime (2013, 2, 18, 0, 0, 0) Day)
[ "Maandag feb 18"
, "Maandag 18 februari"
]
, examples (datetime (2013, 2, 11, 0, 0, 0) Week)
[ "Deze week"
]
, examples (datetime (2013, 2, 4, 0, 0, 0) Week)
[ "vorige week"
]
, examples (datetime (2013, 2, 18, 0, 0, 0) Week)
[ "volgende week"
]
, examples (datetime (2013, 1, 0, 0, 0, 0) Month)
[ "vorige maand"
]
, examples (datetime (2013, 3, 0, 0, 0, 0) Month)
[ "volgende maand"
]
, examples (datetime (2013, 1, 1, 0, 0, 0) Quarter)
[ "dit kwartaal"
]
, examples (datetime (2013, 4, 1, 0, 0, 0) Quarter)
[ "volgende kwartaal"
]
, examples (datetime (2013, 7, 1, 0, 0, 0) Quarter)
[ "derde kwartaal"
]
, examples (datetime (2018, 10, 1, 0, 0, 0) Quarter)
[ "4de kwartaal 2018"
]
, examples (datetime (2012, 0, 0, 0, 0, 0) Year)
[ "vorig jaar"
]
, examples (datetime (2013, 0, 0, 0, 0, 0) Year)
[ "dit jaar"
]
, examples (datetime (2014, 0, 0, 0, 0, 0) Year)
[ "volgend jaar"
]
, examples (datetime (2013, 2, 10, 0, 0, 0) Day)
[ "afgelopen zondag"
, "vorige week zondag"
]
, examples (datetime (2013, 2, 5, 0, 0, 0) Day)
[ "vorige dinsdag"
, "afgelopen dinsdag"
]
, examples (datetime (2013, 2, 19, 0, 0, 0) Day)
[ "dinsdag over een week"
]
, examples (datetime (2013, 2, 13, 0, 0, 0) Day)
[ "komende woensdag"
, "woensdag"
]
, examples (datetime (2013, 2, 20, 0, 0, 0) Day)
[ "volgende week woensdag"
]
, examples (datetime (2013, 2, 11, 0, 0, 0) Day)
[ "deze week maandag"
]
, examples (datetime (2013, 2, 12, 0, 0, 0) Day)
[ "dinsdag deze week"
]
, examples (datetime (2013, 2, 13, 0, 0, 0) Day)
[ "deze week woensdag"
]
, examples (datetime (2013, 2, 14, 0, 0, 0) Day)
[ "overmorgen"
]
, examples (datetime (2013, 2, 10, 0, 0, 0) Day)
[ "eergisteren"
]
, examples (datetime (2013, 3, 25, 0, 0, 0) Day)
[ "laatste maandag in maart"
]
, examples (datetime (2014, 3, 30, 0, 0, 0) Day)
[ "laatste zondag van maart 2014"
]
, examples (datetime (2013, 10, 3, 0, 0, 0) Day)
[ "derde dag in oktober"
]
, examples (datetime (2014, 10, 6, 0, 0, 0) Week)
[ "eerste week in oktober 2014"
]
, examples (datetime (2015, 10, 31, 0, 0, 0) Day)
[ "laatste dag van oktober 2015"
]
, examples (datetime (2014, 9, 22, 0, 0, 0) Week)
[ "laatste week van september 2014"
]
, examples (datetime (2013, 10, 1, 0, 0, 0) Day)
[ "eerste dinsdag in oktober"
]
, examples (datetime (2014, 9, 16, 0, 0, 0) Day)
[ "derde dinsdag in september 2014"
]
, examples (datetime (2014, 10, 1, 0, 0, 0) Day)
[ "eerste woensdag in oktober 2014"
]
, examples (datetime (2014, 10, 8, 0, 0, 0) Day)
[ "tweede woensdag in oktober 2014"
]
, examples (datetime (2015, 1, 13, 0, 0, 0) Day)
[ "derde dinsdag na kerst 2014"
]
, examples (datetime (2013, 2, 12, 4, 0, 0) Hour)
[ "4 uur in de morgen"
, "4 uur in de nacht"
, "4 uur in de ochtend"
, "4 uur 's ochtends"
]
, examples (datetime (2013, 2, 12, 15, 0, 0) Hour)
[ "3 uur"
, "om drie uur"
]
, examples (datetime (2013, 2, 12, 3, 18, 0) Minute)
[ "3:18 in de ochtend"
, "3:18 's morgens"
]
, examples (datetime (2013, 2, 13, 3, 18, 0) Minute)
[ "3:18"
]
, examples (datetime (2013, 2, 12, 15, 0, 0) Hour)
[ "drie uur 's middags"
, "15 uur"
, "om drie uur"
, "rond drie uur"
, "rond 3 uur 's middags"
, "om ongeveer drie uur"
, "ca. 15h"
, "om circa 15u"
]
, examples (datetime (2013, 4, 1, 18, 0, 0) Hour)
[ "op 01-04 tegen 18 uur"
, "op 1 april tegen zes uur 's avonds"
]
, examples (datetime (2013, 2, 13, 17, 0, 0) Hour)
[ "stipt om 17 uur morgen"
]
, examples (datetime (2013, 2, 12, 14, 15, 0) Minute)
[ "rond kwart over 2"
, "kwart over twee uur"
, "14 uur 15"
, "15 over 14"
, "2 uur 15 's middags"
, "14:15"
]
, examples (datetime (2013, 2, 12, 15, 20, 0) Minute)
[ "15:20"
, "10 voor half 4"
, "10 minuten voor half 4"
, "3 uur 20 's middags"
, "twintig over 3"
]
, examples (datetime (2013, 2, 12, 15, 30, 0) Minute)
[ "om half vier"
, "15:30"
, "half vier 's middags"
, "half 4"
]
, examples (datetime (2013, 2, 13, 3, 30, 0) Minute)
[ "3:30"
]
, examples (datetime (2013, 2, 12, 11, 45, 0) Minute)
[ "kwart voor 12"
, "11:45"
, "15 minuten voor 12"
]
, examples (datetime (2013, 2, 12, 20, 0, 0) Hour)
[ "8 uur 's avonds"
, "vanavond om 8 uur"
]
, examples (datetime (2013, 2, 12, 20, 0, 0) Minute)
[ "vandaag om 20:00"
]
, examples (datetime (2013, 9, 20, 19, 30, 0) Minute)
[ "om 19:30 op vr. 20 sept."
]
, examples (datetime (2013, 2, 16, 9, 0, 0) Hour)
[ "op zaterdag om 9 uur 's morgens"
]
, examples (datetime (2014, 7, 18, 19, 0, 0) Hour)
[ "Vrij. 18 juli 2014 7 uur 's avonds"
]
, examples (datetime (2014, 7, 18, 0, 0, 0) Day)
[ "Vr, 18 Juli 2014"
, "Vrijdag, 18-07-14"
, "Vrijdag, 18/07/2014"
, "18de juli 2014"
]
, examples (datetime (2013, 2, 12, 4, 30, 1) Second)
[ "over een seconde"
]
, examples (datetime (2013, 2, 12, 4, 31, 0) Second)
[ "in een minuut"
, "over een minuut"
]
, examples (datetime (2013, 2, 12, 4, 32, 0) Second)
[ "in 2 minuten"
]
, examples (datetime (2013, 2, 12, 5, 30, 0) Second)
[ "in 60 minuten"
]
, examples (datetime (2013, 2, 12, 5, 0, 0) Second)
[ "in 30 minuten"
]
, examples (datetime (2013, 2, 12, 7, 0, 0) Second)
[ "in 2,5 uur"
, "in twee en een half uur"
]
, examples (datetime (2013, 2, 12, 5, 30, 0) Minute)
[ "over een uur"
, "in een uur"
]
, examples (datetime (2013, 2, 12, 6, 30, 0) Minute)
[ "over twee uur"
, "in een paar uur"
]
, examples (datetime (2013, 2, 13, 4, 30, 0) Minute)
[ "over 24 uur"
]
, examples (datetime (2013, 2, 13, 0, 0, 0) Day)
[ "morgen"
]
, examples (datetime (2016, 2, 0, 0, 0, 0) Month)
[ "in 3 jaar"
]
, examples (datetime (2013, 2, 19, 4, 0, 0) Hour)
[ "in 7 dagen"
]
, examples (datetime (2013, 2, 19, 0, 0, 0) Day)
[ "in 1 week"
, "over een week"
]
, examples (datetime (2013, 2, 5, 4, 0, 0) Hour)
[ "7 dagen geleden"
]
, examples (datetime (2013, 1, 29, 4, 0, 0) Hour)
[ "14 dagen geleden"
]
, examples (datetime (2013, 1, 29, 0, 0, 0) Day)
[ "twee weken geleden"
]
, examples (datetime (2013, 2, 5, 0, 0, 0) Day)
[ "een week geleden"
]
, examples (datetime (2013, 1, 22, 0, 0, 0) Day)
[ "drie weken geleden"
]
, examples (datetime (2012, 11, 12, 0, 0, 0) Day)
[ "drie maanden geleden"
]
, examples (datetime (2011, 2, 0, 0, 0, 0) Month)
[ "twee jaar geleden"
]
, examples (datetime (2013, 2, 19, 4, 0, 0) Hour)
[ "over 7 dagen"
]
, examples (datetime (2013, 12, 25, 0, 0, 0) Day)
[ "een jaar na kerst"
]
, examples (datetimeInterval ((2013, 6, 21, 0, 0, 0), (2013, 9, 24, 0, 0, 0)) Day)
[ "deze zomer"
]
, examples (datetimeInterval ((2012, 12, 21, 0, 0, 0), (2013, 3, 21, 0, 0, 0)) Day)
[ "deze winter"
]
, examples (datetime (2013, 12, 25, 0, 0, 0) Day)
[ "kerst"
, "kerstmis"
]
, examples (datetime (2013, 12, 31, 0, 0, 0) Day)
[ "oudjaar"
, "oudejaarsavond"
]
, examples (datetime (2014, 1, 1, 0, 0, 0) Day)
[ "nieuwjaarsdag"
, "nieuwjaar"
]
, examples (datetime (2013, 2, 14, 0, 0, 0) Day)
[ "Valentijnsdag"
]
, examples (datetime (2013, 5, 12, 0, 0, 0) Day)
[ "moederdag"
, "tweede zondag in mei"
]
, examples (datetime (2013, 6, 16, 0, 0, 0) Day)
[ "vaderdag"
, "derde zondag in juni"
]
, examples (datetime (2017, 04, 27, 0, 0, 0) Day)
[ "Koningsdag 2017"
]
, examples (datetime (2013, 10, 31, 0, 0, 0) Day)
[ "Halloween"
]
, examples (datetime (2013, 11, 1, 0, 0, 0) Day)
[ "Allerheiligen"
]
, examples (datetime (2013, 12, 5, 0, 0, 0) Day)
[ "Sinterklaas"
, "Pakjesavond"
, "Sinterklaasavond"
]
, examples (datetimeInterval ((2013, 2, 12, 18, 0, 0), (2013, 2, 13, 0, 0, 0)) Hour)
[ "vanavond"
]
, examples (datetimeInterval ((2013, 2, 13, 18, 0, 0), (2013, 2, 14, 0, 0, 0)) Hour)
[ "morgenavond"
]
, examples (datetimeInterval ((2013, 2, 13, 12, 0, 0), (2013, 2, 13, 18, 0, 0)) Hour)
[ "morgenmiddag"
, "morgen 's middags"
]
, examples (datetimeInterval ((2013, 2, 11, 18, 0, 0), (2013, 2, 12, 0, 0, 0)) Hour)
[ "gisteravond"
]
, examples (datetimeInterval ((2013, 2, 15, 18, 0, 0), (2013, 2, 18, 0, 0, 0)) Hour)
[ "dit weekend"
, "komend weekend"
]
, examples (datetimeInterval ((2013, 2, 15, 0, 0, 0), (2013, 2, 15, 12, 0, 0)) Hour)
[ "15 februari 's morgens"
, "15 februari in de morgen"
]
, examples (datetimeInterval ((2013, 2, 12, 4, 29, 58), (2013, 2, 12, 4, 30, 0)) Second)
[ "afgelopen 2 seconden"
, "vorige 2 secondes"
]
, examples (datetimeInterval ((2013, 2, 12, 4, 30, 1), (2013, 2, 12, 4, 30, 4)) Second)
[ "komende drie secondes"
]
, examples (datetimeInterval ((2013, 2, 12, 4, 28, 0), (2013, 2, 12, 4, 30, 0)) Minute)
[ "afgelopen 2 minuten"
, "afgelopen twee minuten"
]
, examples (datetimeInterval ((2013, 2, 12, 4, 31, 0), (2013, 2, 12, 4, 34, 0)) Minute)
[ "komende 3 minuten"
, "volgende drie minuten"
]
, examples (datetimeInterval ((2013, 2, 12, 5, 0, 0), (2013, 2, 12, 8, 0, 0)) Hour)
[ "komende 3 uur"
, "volgende 3 uur"
]
, examples (datetimeInterval ((2013, 2, 10, 0, 0, 0), (2013, 2, 12, 0, 0, 0)) Day)
[ "afgelopen 2 dagen"
, "vorige 2 dagen"
]
, examples (datetimeInterval ((2013, 2, 13, 0, 0, 0), (2013, 2, 16, 0, 0, 0)) Day)
[ "komende 3 dagen"
, "komende drie dagen"
]
, examples (datetimeInterval ((2013, 2, 13, 0, 0, 0), (2013, 2, 15, 0, 0, 0)) Day)
[ "komende paar dagen"
]
, examples (datetimeInterval ((2013, 1, 28, 0, 0, 0), (2013, 2, 11, 0, 0, 0)) Week)
[ "vorige 2 weken"
, "afgelopen twee weken"
]
, examples (datetimeInterval ((2013, 2, 18, 0, 0, 0), (2013, 3, 11, 0, 0, 0)) Week)
[ "komende 3 weken"
]
, examples (datetimeInterval ((2012, 12, 0, 0, 0, 0), (2013, 2, 0, 0, 0, 0)) Month)
[ "vorige 2 maanden"
, "afgelopen twee maanden"
]
, examples (datetimeInterval ((2013, 3, 0, 0, 0, 0), (2013, 6, 0, 0, 0, 0)) Month)
[ "komende 3 maanden"
, "volgende drie maanden"
]
, examples (datetimeInterval ((2011, 0, 0, 0, 0, 0), (2013, 0, 0, 0, 0, 0)) Year)
[ "vorige 2 jaren"
, "afgelopen twee jaar"
]
, examples (datetimeInterval ((2014, 0, 0, 0, 0, 0), (2017, 0, 0, 0, 0, 0)) Year)
[ "komende 3 jaren"
, "volgende drie jaar"
]
, examples (datetimeInterval ((2013, 7, 13, 0, 0, 0), (2013, 7, 16, 0, 0, 0)) Day)
[ "13 - 15 juli"
, "13 t/m 15 juli"
, "13 - 15 juli"
, "juli 13 - juli 15"
, "13 tot en met 15 juli"
]
, examples (datetimeInterval ((2013, 8, 8, 0, 0, 0), (2013, 8, 13, 0, 0, 0)) Day)
[ "aug 8 - aug 12"
]
, examples (datetimeInterval ((2013, 2, 12, 9, 30, 0), (2013, 2, 12, 11, 1, 0)) Minute)
[ "9:30 - 11:00"
]
, examples (datetimeInterval ((2013, 2, 14, 9, 30, 0), (2013, 2, 14, 11, 1, 0)) Minute)
[ "op donderdag om 9:30 - 11:00"
, "op donderdag tussen 9:30 en 11:00"
, "donderdag 9:30 - 11:00"
, "op donderdag na 9:30 maar voor 11:00"
, "donderdag van 9:30 tot 11:00"
]
, examples (datetimeInterval ((2013, 2, 14, 9, 0, 0), (2013, 2, 14, 12, 0, 0)) Hour)
[ "donderdag ochtend van 9 tot 11"
]
, examples (datetimeInterval ((2013, 2, 12, 11, 30, 0), (2013, 2, 12, 13, 31, 0)) Minute)
[ "11:30-13:30"
]
, examples (datetime (2013, 9, 21, 1, 30, 0) Minute)
[ "1:30 am Za. 21 sept"
]
, examples (datetimeInterval ((2013, 2, 12, 4, 30, 0), (2013, 2, 26, 0, 0, 0)) Second)
[ "binnen 2 weken"
]
, examples (datetimeOpenInterval Before (2013, 2, 12, 14, 0, 0) Hour)
[ "tot 2 uur 's middags"
]
, examples (datetimeOpenInterval Before (2013, 3, 1, 0, 0, 0) Month)
[ "tot het einde van de maand"
]
, examples (datetime (2013, 2, 12, 13, 0, 0) Minute)
[ "16 uur CET"
]
, examples (datetime (2013, 2, 14, 6, 0, 0) Minute)
[ "donderdag 8:00 GMT"
]
, examples (datetime (2013, 2, 12, 14, 0, 0) Hour)
[ "vandaag om 14 uur"
, "om 2 uur"
]
, examples (datetime (2013, 2, 13, 15, 0, 0) Hour)
[ "morgen om 15 uur"
]
, examples (datetimeOpenInterval After (2013, 2, 12, 14, 0, 0) Hour)
[ "vanaf 14u"
, "op zijn vroegst om 14 uur"
, "twee uur op zijn vroegst"
]
, examples (datetimeOpenInterval Before (2013, 2, 12, 11, 0, 0) Hour)
[ "tot 11 uur"
, "tot 11h 's morgens"
, "tot 11 am in de ochtend"
, "op zijn laatst om 11 uur"
, "11 uur op zijn laatst"
]
, examples (datetimeInterval ((2013, 2, 12, 12, 0, 0), (2013, 2, 12, 18, 0, 0)) Hour)
[ "vanmiddag"
]
, examples (datetime (2013, 2, 12, 13, 30, 0) Minute)
[ "om 13:30 in de middag"
, "vanmiddag om 1 uur 30"
, "13:30"
]
, examples (datetime (2013, 2, 12, 4, 45, 0) Second)
[ "in 15 minuten"
, "over een kwartier"
]
, examples (datetimeInterval ((2013, 2, 12, 13, 0, 0), (2013, 2, 12, 17, 0, 0)) Hour)
[ "na de lunch"
]
, examples (datetime (2013, 2, 12, 10, 30, 0) Minute)
[ "10:30"
]
, examples (datetime (2013, 2, 18, 0, 0, 0) Day)
[ "komende maandag"
, "aanstaande maandag"
]
, examples (datetime (2013, 12, 10, 0, 0, 0) Day)
[ "10-12"
]
  , examples (datetimeInterval ((2013, 2, 12, 18, 30, 0), (2013, 2, 12, 19, 1, 0)) Minute)
[ "18:30u - 19:00u"
, "18:30h tot 19:00h"
]
, examples (datetimeInterval ((2013, 10, 14, 0, 0, 0), (2013, 10, 16, 0, 0, 0)) Day)
[ "14/10 - 15/10"
, "van 14/10/2013 tot 15/10/2013"
]
, examples (datetimeInterval ((2018, 10, 14, 0, 0, 0), (2018, 10, 16, 0, 0, 0)) Day)
[ "14 t/m 15 oktober 2018"
]
, examples (datetime (2013, 10, 10, 0, 0, 0) Day)
[ "op 10-10"
, "op 10.10"
, "10/10"
]
, examples (datetime (2013, 2, 12, 10, 10, 0) Minute)
[ "om 10:10"
, "op 10:10"
]
, examples (datetime (2013, 2, 12, 17, 10, 0) Minute)
[ "17h10"
, "17u10"
]
]

1646
Duckling/Time/NL/Rules.hs Normal file

File diff suppressed because it is too large Load Diff

View File

@ -22,11 +22,11 @@ import qualified Duckling.TimeGrain.Types as TG
grains :: [(Text, String, TG.Grain)]
grains = [ ("second (grain) " , "(seconde(n|s)?|sec|s)" , TG.Second)
, ("minute (grain)" , "(minuut|minuten|min|m)", TG.Minute)
, ("hour (grain)" , "(u|h|uur|uren)", TG.Hour)
, ("day (grain)" , "(dagen|dag|d)", TG.Day)
, ("hour (grain)" , "(uur|uren|u|h)", TG.Hour)
, ("day (grain)" , "dagen|dag|d", TG.Day)
, ("week (grain)" , "(weken|week|w)", TG.Week)
, ("month (grain)" , "(maanden|maand|mnd)", TG.Month)
, ("quarter (grain)" , "kwartier", TG.Quarter)
, ("quarter (grain)" , "(kwartaal|kwartalen)", TG.Quarter)
, ("year (grain)" , "(jaren|jaar|j)", TG.Year)
]

View File

@ -463,6 +463,8 @@ library
, Duckling.Time.KO.Rules
, Duckling.Time.NB.Corpus
, Duckling.Time.NB.Rules
, Duckling.Time.NL.Corpus
, Duckling.Time.NL.Rules
, Duckling.Time.PL.Corpus
, Duckling.Time.PL.Rules
, Duckling.Time.PT.Corpus
@ -745,6 +747,7 @@ test-suite duckling-test
, Duckling.Time.IT.Tests
, Duckling.Time.KO.Tests
, Duckling.Time.NB.Tests
, Duckling.Time.NL.Tests
, Duckling.Time.PL.Tests
, Duckling.Time.PT.Tests
, Duckling.Time.RO.Tests

View File

@ -42,6 +42,7 @@ import qualified Duckling.Time.HU.Corpus as HUTime
import qualified Duckling.Time.IT.Corpus as ITTime
import qualified Duckling.Time.KO.Corpus as KOTime
import qualified Duckling.Time.NB.Corpus as NBTime
import qualified Duckling.Time.NL.Corpus as NLTime
import qualified Duckling.Time.PL.Corpus as PLTime
import qualified Duckling.Time.PT.Corpus as PTTime
import qualified Duckling.Time.RO.Corpus as ROTime
@ -177,7 +178,7 @@ getCorpusForLang KA = (testContext, [])
getCorpusForLang KO = KOTime.corpus
getCorpusForLang MY = (testContext, [])
getCorpusForLang NB = NBTime.corpus
getCorpusForLang NL = (testContext, [])
getCorpusForLang NL = NLTime.corpus
getCorpusForLang PL = PLTime.corpus
getCorpusForLang PT = PTTime.corpus
getCorpusForLang RO = ROTime.corpus

View File

@ -0,0 +1,24 @@
-- Copyright (c) 2016-present, Facebook, Inc.
-- All rights reserved.
--
-- This source code is licensed under the BSD-style license found in the
-- LICENSE file in the root directory of this source tree. An additional grant
-- of patent rights can be found in the PATENTS file in the same directory.
module Duckling.Time.NL.Tests
( tests ) where
import Data.String
import Prelude
import Test.Tasty
import Duckling.Dimensions.Types
import Duckling.Testing.Asserts
import Duckling.Time.NL.Corpus
tests :: TestTree
tests = testGroup "NL Tests"
[ makeCorpusTest [This Time] corpus
, makeNegativeCorpusTest [This Time] negativeCorpus
]

View File

@ -36,6 +36,7 @@ import qualified Duckling.Time.HU.Tests as HU
import qualified Duckling.Time.IT.Tests as IT
import qualified Duckling.Time.KO.Tests as KO
import qualified Duckling.Time.NB.Tests as NB
import qualified Duckling.Time.NL.Tests as NL
import qualified Duckling.Time.PL.Tests as PL
import qualified Duckling.Time.PT.Tests as PT
import qualified Duckling.Time.RO.Tests as RO
@ -57,6 +58,7 @@ tests = testGroup "Time Tests"
, IT.tests
, KO.tests
, NB.tests
, NL.tests
, PL.tests
, PT.tests
, RO.tests