packages feed

duckling 0.1.1.0 → 0.1.2.0

raw patch · 22 files changed

+4071/−3323 lines, 22 filesdep ~aesondep ~basedep ~bytestringnew-component:exe:duckling-expensivenew-component:exe:duckling-request-samplePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: aeson, base, bytestring, dependent-sum, extra, text, text-show, time, timezone-series, unordered-containers

API changes (from Hackage documentation)

+ Duckling.Numeral.Helpers: notOkForAnyTime :: Token -> Maybe Token
+ Duckling.Numeral.Types: [okForAnyTime] :: NumeralData -> Bool
+ Duckling.Time.Helpers: isNumeralSafeToUse :: Predicate
+ Duckling.Time.Helpers: weekend :: TimeData
- Duckling.Numeral.Types: NumeralData :: Double -> Maybe Int -> Bool -> NumeralData
+ Duckling.Numeral.Types: NumeralData :: Double -> Maybe Int -> Bool -> Bool -> NumeralData

Files

Duckling/Numeral/EN/Rules.hs view
@@ -13,20 +13,21 @@ module Duckling.Numeral.EN.Rules   ( rules ) where +import Control.Applicative ((<|>)) import Data.HashMap.Strict (HashMap)-import qualified Data.HashMap.Strict as HashMap import Data.Maybe+import Data.String import Data.Text (Text)-import qualified Data.Text as Text import Prelude-import Data.String+import qualified Data.HashMap.Strict as HashMap+import qualified Data.Text as Text  import Duckling.Dimensions.Types import Duckling.Numeral.Helpers import Duckling.Numeral.Types (NumeralData (..))-import qualified Duckling.Numeral.Types as TNumeral import Duckling.Regex.Types import Duckling.Types+import qualified Duckling.Numeral.Types as TNumeral  ruleIntegers :: Rule ruleIntegers = Rule@@ -46,7 +47,7 @@   , pattern =     [ regex "(a )?dozens?( of)?"     ]-  , prod = \_ -> integer 12 >>= withMultipliable+  , prod = \_ -> integer 12 >>= withMultipliable >>= notOkForAnyTime   }  zeroNineteenMap :: HashMap Text Integer@@ -58,23 +59,8 @@   , ( "zero"  , 0 )   , ( "zilch" , 0 )   , ( "one"   , 1 )-  , ( "single", 1 )   , ( "two", 2 )-  , ( "a couple", 2 )-  , ( "a couple of", 2 )-  , ( "couple", 2 )-  , ( "couples", 2 )-  , ( "couple of", 2 )-  , ( "couples of", 2 )-  , ( "a pair", 2 )-  , ( "a pair of", 2 )-  , ( "pair", 2 )-  , ( "pairs", 2 )-  , ( "pair of", 2 )-  , ( "pairs of", 2 )   , ( "three", 3 )-  , ( "a few", 3 )-  , ( "few", 3 )   , ( "four", 4 )   , ( "five", 5 )   , ( "six", 6 )@@ -93,14 +79,37 @@   , ( "nineteen", 19 )   ] +informalMap :: HashMap Text Integer+informalMap = HashMap.fromList+  [ ( "single", 1 )+  , ( "a couple", 2 )+  , ( "a couple of", 2 )+  , ( "couple", 2 )+  , ( "couples", 2 )+  , ( "couple of", 2 )+  , ( "couples of", 2 )+  , ( "a pair", 2 )+  , ( "a pair of", 2 )+  , ( "pair", 2 )+  , ( "pairs", 2 )+  , ( "pair of", 2 )+  , ( "pairs of", 2 )+  , ( "a few", 3 )+  , ( "few", 3 )+  ]+ ruleToNineteen :: Rule ruleToNineteen = Rule   { name = "integer (0..19)"   -- e.g. fourteen must be before four, otherwise four will always shadow fourteen-  , pattern = [regex "(none|zilch|naught|nought|nil|zero|one|single|two|(a )?(pair|couple)s?( of)?|three|(a )?few|fourteen|four|fifteen|five|sixteen|six|seventeen|seven|eighteen|eight|nineteen|nine|ten|eleven|twelve|thirteen)"]+  , pattern =+    [ regex "(none|zilch|naught|nought|nil|zero|one|single|two|(a )?(pair|couple)s?( of)?|three|(a )?few|fourteen|four|fifteen|five|sixteen|six|seventeen|seven|eighteen|eight|nineteen|nine|ten|eleven|twelve|thirteen)"+    ]   , prod = \tokens -> case tokens of       (Token RegexMatch (GroupMatch (match:_)):_) ->-        HashMap.lookup (Text.toLower match) zeroNineteenMap >>= integer+        let x = Text.toLower match in+        (HashMap.lookup x zeroNineteenMap >>= integer) <|>+        (HashMap.lookup x informalMap >>= integer >>= notOkForAnyTime)       _ -> Nothing   } @@ -110,7 +119,7 @@   , pattern = [regex "(twenty|thirty|fou?rty|fifty|sixty|seventy|eighty|ninety)"]   , prod = \tokens ->       case tokens of-        (Token RegexMatch (GroupMatch (match : _)) : _) ->+        (Token RegexMatch (GroupMatch (match:_)):_) ->           case Text.toLower match of             "twenty"  -> integer 20             "thirty"  -> integer 30
Duckling/Numeral/Helpers.hs view
@@ -15,6 +15,7 @@   , integer   , multiply   , divide+  , notOkForAnyTime   , numberBetween   , numberWith   , oneOf@@ -23,18 +24,18 @@   , parseInteger   , withGrain   , withMultipliable-  , parseDecimal,+  , parseDecimal   ) where -import qualified Data.Attoparsec.Text as Atto import Data.Maybe import Data.Text (Text)-import qualified Data.Text as Text import Prelude+import qualified Data.Attoparsec.Text as Atto+import qualified Data.Text as Text  import Duckling.Dimensions.Types import Duckling.Numeral.Types-import Duckling.Types hiding (value)+import Duckling.Types hiding (Entity(value))  zeroT :: Text zeroT = Text.singleton '0'@@ -106,11 +107,17 @@   Just . Token Numeral $ x {grain = Just g} withGrain _ _ = Nothing +notOkForAnyTime :: Token -> Maybe Token+notOkForAnyTime (Token Numeral x) =+  Just . Token Numeral $ x {okForAnyTime = False}+notOkForAnyTime _ = Nothing+ double :: Double -> Maybe Token double x = Just . Token Numeral $ NumeralData   { value = x   , grain = Nothing   , multipliable = False+  , okForAnyTime = True   }  integer :: Integer -> Maybe Token
Duckling/Numeral/PT/Corpus.hs view
@@ -131,11 +131,24 @@              [ "100"              , "Cem"              ]+  , examples (NumeralValue 104)+             [ "104"+             , "cento e quatro"+             ]   , examples (NumeralValue 243)              [ "243"+             ,"duzentos e quarenta e tres"              ]   , examples (NumeralValue 300)              [ "trezentos"+             ]+  , examples (NumeralValue 343)+             [ "trezentos e quarenta e tres"+             , "343"+             ]+  , examples (NumeralValue 891)+             [ "oitocentos e noventa e um"+             , "891"              ]   , examples (NumeralValue 3000000)              [ "3M"
Duckling/Numeral/PT/Rules.hs view
@@ -184,7 +184,8 @@ ruleNumeral6 = Rule   { name = "number 100..1000 "   , pattern =-    [ regex "(ce(m|to)|duzentos|trezentos|quatrocentos|quinhentos|seiscentos|setecentos|oitocentos|novecentos|mil)"+    [+      regex "(cem|cento|duzentos|trezentos|quatrocentos|quinhentos|seiscentos|setecentos|oitocentos|novecentos|mil)"     ]   , prod = \tokens -> case tokens of       (Token RegexMatch (GroupMatch (match:_)):_) -> case Text.toLower match of@@ -244,17 +245,17 @@  ruleNumerals :: Rule ruleNumerals = Rule-  { name = "numbers 200..999"+  { name = "numbers (100..999)"   , pattern =-    [ numberBetween 2 10-    , numberWith TNumeral.value (== 100)+    [ numberBetween 100 1000+    , regex "e"     , numberBetween 0 100     ]   , prod = \tokens -> case tokens of       (Token Numeral (NumeralData {TNumeral.value = v1}):        _:        Token Numeral (NumeralData {TNumeral.value = v2}):-       _) -> double $ v1 * 100 + v2+       _) -> double $ v1 + v2       _ -> Nothing   } 
Duckling/Numeral/Types.hs view
@@ -29,6 +29,11 @@   { value        :: Double   , grain        :: Maybe Int   , multipliable :: Bool+  -- Hack until other use cases pop up,+  -- at which point we'll craft a generic solution.+  -- This allows to explicitly flag Numerals that don't work well with Time.+  -- See `ruleTODLatent`. Prevents things like "at single", "dozens o'clock".+  , okForAnyTime :: Bool   }   deriving (Eq, Generic, Hashable, Ord, Show, NFData) 
Duckling/Numeral/VI/Corpus.hs view
@@ -56,6 +56,10 @@              [ "18"              , "mười tám"              ]+  , examples (NumeralValue 100)+            [ "100"+            , "tră"+            ]   , examples (NumeralValue 1.1)              [ "1.1"              , "1.10"
Duckling/Numeral/VI/Rules.hs view
@@ -12,6 +12,7 @@ module Duckling.Numeral.VI.Rules   ( rules ) where +import qualified Data.HashMap.Strict as HashMap import Data.Maybe import qualified Data.Text as Text import Prelude@@ -24,6 +25,18 @@ import Duckling.Regex.Types import Duckling.Types +powersOfTenMap :: HashMap.HashMap Text.Text (Double, Int)+powersOfTenMap = HashMap.fromList+  [ ( "tr\x0103",   (1e2, 2) )+  , ( "tr\x0103m",  (1e2, 2) )+  , ( "ngh\x00ec",  (1e3, 3) )+  , ( "ngh\x00ecn", (1e3, 3) )+  , ( "tri\x1ec7",  (1e6, 6) )+  , ( "tri\x1ec7u", (1e6, 6) )+  , ( "t",          (1e9, 9) )+  , ( "t\x1ef7",    (1e9, 9) )+  ]+ rulePowersOfTen :: Rule rulePowersOfTen = Rule   { name = "powers of tens"@@ -31,16 +44,10 @@     [ regex "(tr\x0103m?|ngh\x00ecn?|tri\x1ec7u?|t\x1ef7?)"     ]   , prod = \tokens -> case tokens of-      (Token RegexMatch (GroupMatch (match:_)):_) -> case Text.toLower match of-        "tr\x0103"   -> double 1e2 >>= withGrain 2 >>= withMultipliable-        "tr\x0103m"  -> double 1e2 >>= withGrain 2 >>= withMultipliable-        "ngh\x00ec"  -> double 1e3 >>= withGrain 3 >>= withMultipliable-        "ngh\x00ecn" -> double 1e3 >>= withGrain 3 >>= withMultipliable-        "tri\x1ec7"  -> double 1e6 >>= withGrain 6 >>= withMultipliable-        "tri\x1ec7u" -> double 1e6 >>= withGrain 6 >>= withMultipliable-        "t"          -> double 1e9 >>= withGrain 9 >>= withMultipliable-        "t\x1ef7"    -> double 1e9 >>= withGrain 9 >>= withMultipliable-        _            -> Nothing+      (Token RegexMatch (GroupMatch (match:_)):_) ->+        do+          (value, grain) <- HashMap.lookup (Text.toLower match) powersOfTenMap+          double value >>= withGrain grain >>= withMultipliable       _ -> Nothing   } @@ -206,6 +213,50 @@       _ -> Nothing   } +integerMap :: HashMap.HashMap Text.Text Integer+integerMap = HashMap.fromList+  [ ("kh\x00f4ng",               0)+  , ("m\x1ed9t",                 1)+  , ("linh m\x1ed9t",            1)+  , ("l\x1ebb m\x1ed9t",         1)+  , ("hai",                      2)+  , ("l\x1ebb hai",              2)+  , ("linh hai",                 2)+  , ("ba",                       3)+  , ("l\x1ebb",                  3)+  , ("linh ba",                  3)+  , ("l\x1ebb b\x1ed1n",         4)+  , ("linh b\x1ed1n",            4)+  , ("b\x1ed1n",                 4)+  , ("n\x0103m",                 5)+  , ("l\x1ebb n\x0103m",         5)+  , ("linh n\x0103m",            5)+  , ("linh s\x00e1u",            6)+  , ("s\x00e1u",                 6)+  , ("l\x1ebb s\x00e1u",         6)+  , ("linh b\x1ea3y",            7)+  , ("l\x1ebb b\x1ea3y",         7)+  , ("b\x1ea3y",                 7)+  , ("l\x1ebb t\x00e1m",         8)+  , ("linh t\x00e1m",            8)+  , ("t\x00e1m",                 8)+  , ("l\x1ebb ch\x00edn",        9)+  , ("ch\x00edn",                9)+  , ("linh ch\x00edn",           9)+  , ("linh m\x01b0\x1eddi",      10)+  , ("m\x01b0\x1eddi",           10)+  , ("l\x1ebb m\x01b0\x1eddi",   10)+  , ("m\x01b0\x1eddi m\x1ed9t",  11)+  , ("m\x01b0\x1eddi hai",       12)+  , ("m\x01b0\x1eddi ba",        13)+  , ("m\x01b0\x1eddi b\x1ed1n",  14)+  , ("m\x01b0\x1eddi l\x0103m",  15)+  , ("m\x01b0\x1eddi s\x00e1u",  16)+  , ("m\x01b0\x1eddi b\x1ea3y",  17)+  , ("m\x01b0\x1eddi t\x00e1m",  18)+  , ("m\x01b0\x1eddi ch\x00edn", 19)+  ]+ ruleInteger :: Rule ruleInteger = Rule   { name = "integer (0..19)"@@ -213,51 +264,23 @@     [ regex "(kh\x00f4ng|m\x1ed9t|linh m\x1ed9t|l\x1ebb m\x1ed9t|hai|linh hai|l\x1ebb hai|ba|linh ba|l\x1ebb ba|b\x1ed1n|linh b\x1ed1n|l\x1ebb b\x1ed1n|n\x0103m|linh n\x0103m|l\x1ebb n\x0103m|s\x00e1u|l\x1ebb s\x00e1u|linh s\x00e1u|b\x1ea3y|l\x1ebb b\x1ea3y|linh b\x1ea3y|t\x00e1m|linh t\x00e1m|l\x1ebb t\x00e1m|ch\x00edn|linh ch\x00edn|l\x1ebb ch\x00edn|m\x01b0\x1eddi m\x1ed9t|m\x01b0\x1eddi hai|m\x01b0\x1eddi ba|m\x01b0\x1eddi b\x1ed1n|m\x01b0\x1eddi l\x0103m|m\x01b0\x1eddi s\x00e1u|m\x01b0\x1eddi b\x1ea3y|m\x01b0\x1eddi t\x00e1m|m\x01b0\x1eddi ch\x00edn|m\x01b0\x1eddi|linh m\x01b0\x1eddi)"     ]   , prod = \tokens -> case tokens of-      (Token RegexMatch (GroupMatch (match:_)):_) -> case match of-        "kh\x00f4ng" -> integer 0-        "m\x1ed9t" -> integer 1-        "linh m\x1ed9t" -> integer 1-        "l\x1ebb m\x1ed9t" -> integer 1-        "hai" -> integer 2-        "l\x1ebb hai" -> integer 2-        "linh hai" -> integer 2-        "ba" -> integer 3-        "l\x1ebb" -> integer 3-        "linh ba" -> integer 3-        "l\x1ebb b\x1ed1n" -> integer 4-        "linh b\x1ed1n" -> integer 4-        "b\x1ed1n" -> integer 4-        "n\x0103m" -> integer 5-        "l\x1ebb n\x0103m" -> integer 5-        "linh n\x0103m" -> integer 5-        "linh s\x00e1u" -> integer 6-        "s\x00e1u" -> integer 6-        "l\x1ebb s\x00e1u" -> integer 6-        "linh b\x1ea3y" -> integer 7-        "l\x1ebb b\x1ea3y" -> integer 7-        "b\x1ea3y" -> integer 7-        "l\x1ebb t\x00e1m" -> integer 8-        "linh t\x00e1m" -> integer 8-        "t\x00e1m" -> integer 8-        "l\x1ebb ch\x00edn" -> integer 9-        "ch\x00edn" -> integer 9-        "linh ch\x00edn" -> integer 9-        "linh m\x01b0\x1eddi" -> integer 10-        "m\x01b0\x1eddi" -> integer 10-        "l\x1ebb m\x01b0\x1eddi" -> integer 10-        "m\x01b0\x1eddi m\x1ed9t" -> integer 11-        "m\x01b0\x1eddi hai" -> integer 12-        "m\x01b0\x1eddi ba" -> integer 13-        "m\x01b0\x1eddi b\x1ed1n" -> integer 14-        "m\x01b0\x1eddi l\x0103m" -> integer 15-        "m\x01b0\x1eddi s\x00e1u" -> integer 16-        "m\x01b0\x1eddi b\x1ea3y" -> integer 17-        "m\x01b0\x1eddi t\x00e1m" -> integer 18-        "m\x01b0\x1eddi ch\x00edn" -> integer 19-        _ -> Nothing+      (Token RegexMatch (GroupMatch (match:_)):_) ->+        HashMap.lookup (Text.toLower match) integerMap >>= integer       _ -> Nothing   } +tensMap :: HashMap.HashMap Text.Text Integer+tensMap = HashMap.fromList+  [ ("hai m\x01b0\x01a1i",       20)+  , ("ba m\x01b0\x01a1i",        30)+  , ("b\x1ed1n m\x01b0\x01a1i",  40)+  , ("n\x0103m m\x01b0\x01a1i",  50)+  , ("s\x00e1u m\x01b0\x01a1i",  60)+  , ("b\x1ea3y m\x01b0\x01a1i",  70)+  , ("t\x00e1m m\x01b0\x01a1i",  80)+  , ("ch\x00edn m\x01b0\x01a1i", 90)+  ]+ ruleInteger2 :: Rule ruleInteger2 = Rule   { name = "integer (20..90)"@@ -265,16 +288,8 @@     [ regex "(hai m\x01b0\x01a1i|ba m\x01b0\x01a1i|b\x1ed1n m\x01b0\x01a1i|n\x0103m m\x01b0\x01a1i|s\x00e1u m\x01b0\x01a1i|b\x1ea3y m\x01b0\x01a1i|t\x00e1m m\x01b0\x01a1i|ch\x00edn m\x01b0\x01a1i)"     ]   , prod = \tokens -> case tokens of-      (Token RegexMatch (GroupMatch (match:_)):_) -> case match of-        "hai m\x01b0\x01a1i" -> integer 20-        "ba m\x01b0\x01a1i" -> integer 30-        "b\x1ed1n m\x01b0\x01a1i" -> integer 40-        "n\x0103m m\x01b0\x01a1i" -> integer 50-        "s\x00e1u m\x01b0\x01a1i" -> integer 60-        "b\x1ea3y m\x01b0\x01a1i" -> integer 70-        "t\x00e1m m\x01b0\x01a1i" -> integer 80-        "ch\x00edn m\x01b0\x01a1i" -> integer 90-        _ -> Nothing+      (Token RegexMatch (GroupMatch (match:_)):_) ->+        HashMap.lookup (Text.toLower match) tensMap >>= integer       _ -> Nothing   } 
Duckling/Ordinal/GA/Corpus.hs view
@@ -26,6 +26,11 @@ allExamples = concat   [ examples (OrdinalData 6)              [ "séu"+             , "6a"+             , "6d"+             , "06u"+             , "6 ú"+             , "0006 adh"              ]   , examples (OrdinalData 1)              [ "chead"
Duckling/Ordinal/GA/Rules.hs view
@@ -107,7 +107,7 @@ ruleOrdinalDigits = Rule   { name = "ordinal (digits)"   , pattern =-    [ regex "0*(\\d+) ?(a|d|(\x00fa|u))"+    [ regex "0*(\\d+) ?(adh|a|d|\x00fa|u)"     ]   , prod = \tokens -> case tokens of       (Token RegexMatch (GroupMatch (match:_)):_) -> ordinal <$> parseInt match
Duckling/Ranking/Classifiers/DE.hs view
@@ -35,11 +35,11 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("integer (numeric)",         Classifier{okData =-                     ClassData{prior = -0.6616839111041602, unseen = -4.74493212836325,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 113},+                     ClassData{prior = -0.9179699933938751, unseen = -4.795790545596741,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 119},                    koData =-                     ClassData{prior = -0.7256326357044337, unseen = -4.68213122712422,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 106}}),+                     ClassData{prior = -0.5097076806646496, unseen = -5.198497031265826,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 179}}),        ("exactly <time-of-day>",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.3025850929940455,@@ -175,41 +175,39 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("mm/dd",         Classifier{okData =-                     ClassData{prior = -0.13353139262452263,-                               unseen = -2.1972245773362196,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},+                     ClassData{prior = -0.40546510810816444,+                               unseen = -3.258096538021482,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 24},                    koData =-                     ClassData{prior = -2.0794415416798357,-                               unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),+                     ClassData{prior = -1.0986122886681098, unseen = -2.639057329615259,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12}}),        ("at <time-of-day>",         Classifier{okData =-                     ClassData{prior = -0.19237189264745613,-                               unseen = -4.356708826689592,+                     ClassData{prior = -0.2113090936672069, unseen = -4.382026634673881,                                likelihoods =                                  HashMap.fromList-                                   [("<time-of-day>  o'clock", -2.0412203288596382),+                                   [("<time-of-day>  o'clock", -2.0668627594729756),                                     ("half <integer> (german style hour-of-day)",-                                     -3.6506582412937383),-                                    ("about <time-of-day>", -2.7343675094195836),-                                    ("time-of-day (latent)", -1.7047480922384253),+                                     -3.676300671907076),+                                    ("about <time-of-day>", -2.760009940032921),+                                    ("time-of-day (latent)", -1.7303905228517629),                                     ("relative minutes after|past <integer> (hour-of-day)",-                                     -3.6506582412937383),-                                    ("hh:mm", -2.9575110607337933),+                                     -3.676300671907076),+                                    ("hh:mm", -2.760009940032921),                                     ("quarter after|past <integer> (hour-of-day)",-                                     -3.6506582412937383),-                                    ("hour", -1.0479685558493548), ("minute", -2.264363880173848),+                                     -3.676300671907076),+                                    ("hour", -1.0736109864626924), ("minute", -2.172223275130802),                                     ("<hour-of-day> <integer> (as relative minutes)",-                                     -3.6506582412937383)],-                               n = 33},+                                     -3.676300671907076)],+                               n = 34},                    koData =-                     ClassData{prior = -1.742969305058623, unseen = -3.258096538021482,+                     ClassData{prior = -1.6582280766035324, unseen = -3.332204510175204,                                likelihoods =                                  HashMap.fromList-                                   [("time-of-day (latent)", -1.6094379124341003),-                                    ("<time-of-day> am|pm", -1.8325814637483102),-                                    ("hour", -1.4271163556401458), ("minute", -2.120263536200091)],-                               n = 7}}),+                                   [("time-of-day (latent)", -1.5040773967762742),+                                    ("<time-of-day> am|pm", -1.9095425048844386),+                                    ("hour", -1.349926716949016), ("minute", -2.1972245773362196)],+                               n = 8}}),        ("absorption of , after named day",         Classifier{okData =                      ClassData{prior = -7.410797215372185e-2,@@ -227,36 +225,36 @@                                n = 1}}),        ("on <date>",         Classifier{okData =-                     ClassData{prior = -0.2076393647782445, unseen = -4.804021044733257,+                     ClassData{prior = -0.24256163717131135,+                               unseen = -4.787491742782046,                                likelihoods =                                  HashMap.fromList-                                   [("mm/dd", -4.102643365036796),-                                    ("absorption of , after named day", -3.6971782569286313),-                                    ("intersect", -1.8513515664303006),-                                    ("after lunch", -2.849880396541428),-                                    ("day", -1.499953679592412), ("afternoon", -2.849880396541428),-                                    ("named-day", -2.849880396541428),-                                    ("intersect by ','", -2.849880396541428),-                                    ("intersect by 'of', 'from', 's", -3.4094961844768505),-                                    ("<day-of-month> (ordinal)", -4.102643365036796),-                                    ("hour", -1.9054187877005764), ("evening", -4.102643365036796),-                                    ("<datetime> - <datetime> (interval)", -4.102643365036796),-                                    ("minute", -2.4932054526026954),-                                    ("morning", -4.102643365036796)],-                               n = 52},+                                   [("absorption of , after named day", -3.6805112044434196),+                                    ("intersect", -1.834684513945089),+                                    ("after lunch", -2.833213344056216),+                                    ("day", -1.5210269550900473), ("afternoon", -2.833213344056216),+                                    ("named-day", -2.833213344056216),+                                    ("intersect by ','", -2.833213344056216),+                                    ("intersect by 'of', 'from', 's", -3.392829131991639),+                                    ("<day-of-month> (ordinal)", -4.085976312551584),+                                    ("hour", -1.8887517352153647), ("evening", -4.085976312551584),+                                    ("<datetime> - <datetime> (interval)", -4.085976312551584),+                                    ("minute", -2.4765384001174837),+                                    ("morning", -4.085976312551584)],+                               n = 51},                    koData =-                     ClassData{prior = -1.6739764335716716,-                               unseen = -3.7376696182833684,+                     ClassData{prior = -1.5353299402803784, unseen = -3.828641396489095,                                likelihoods =                                  HashMap.fromList-                                   [("intersect", -1.6341305250244718),-                                    ("after lunch", -3.0204248861443626),-                                    ("<day-of-month>(ordinal) <named-month>", -3.0204248861443626),-                                    ("tomorrow", -3.0204248861443626), ("day", -2.1041341542702074),-                                    ("intersect by 'of', 'from', 's", -3.0204248861443626),-                                    ("<day-of-month> (ordinal)", -3.0204248861443626),-                                    ("hour", -3.0204248861443626), ("minute", -1.6341305250244718)],-                               n = 12}}),+                                   [("intersect", -1.7272209480904839),+                                    ("after lunch", -3.1135153092103742),+                                    ("<day-of-month>(ordinal) <named-month>", -3.1135153092103742),+                                    ("tomorrow", -3.1135153092103742), ("day", -2.1972245773362196),+                                    ("hh:mm", -2.70805020110221),+                                    ("intersect by 'of', 'from', 's", -3.1135153092103742),+                                    ("<day-of-month> (ordinal)", -3.1135153092103742),+                                    ("hour", -3.1135153092103742), ("minute", -1.5040773967762742)],+                               n = 14}}),        ("integer (0..19)",         Classifier{okData =                      ClassData{prior = -0.10536051565782628,@@ -308,7 +306,7 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("<time-of-day>  o'clock",         Classifier{okData =-                     ClassData{prior = -3.077165866675366e-2,+                     ClassData{prior = -4.580953603129422e-2,                                unseen = -4.9344739331306915,                                likelihoods =                                  HashMap.fromList@@ -325,13 +323,13 @@                                     ("after <time-of-day>", -3.1354942159291497)],                                n = 64},                    koData =-                     ClassData{prior = -3.4965075614664802, unseen = -2.70805020110221,+                     ClassData{prior = -3.1060803307228566, unseen = -2.833213344056216,                                likelihoods =                                  HashMap.fromList-                                   [("time-of-day (latent)", -1.9459101490553135),-                                    ("hour", -1.540445040947149),-                                    ("after <time-of-day>", -1.9459101490553135)],-                               n = 2}}),+                                   [("time-of-day (latent)", -1.6739764335716716),+                                    ("hour", -1.3862943611198906),+                                    ("after <time-of-day>", -2.0794415416798357)],+                               n = 3}}),        ("hour (grain)",         Classifier{okData =                      ClassData{prior = -0.15415067982725836,@@ -358,264 +356,274 @@                                n = 1}}),        ("intersect",         Classifier{okData =-                     ClassData{prior = -0.23031204079282233,-                               unseen = -6.885509670034817,+                     ClassData{prior = -0.26452876747706405, unseen = -6.90975328164481,                                likelihoods =                                  HashMap.fromList-                                   [("intersect by ','named-month", -4.399580002254782),-                                    ("hourday", -4.93857650298747), ("dayhour", -2.527777825353191),-                                    ("daymonth", -3.1232865363492204),+                                   [("intersect by ','named-month", -4.4238481295272205),+                                    ("hourday", -4.962844630259907),+                                    ("<datetime> - <datetime> (interval)year", -4.962844630259907),+                                    ("dayhour", -2.5520459526256287),+                                    ("daymonth", -3.147554663621658),                                     ("<day-of-month>(ordinal) <named-month> year<time-of-day>  o'clock",-                                     -6.191339471482838),-                                    ("monthyear", -4.4865913792444125),-                                    ("yearhour", -6.191339471482838),-                                    ("intersect<time-of-day>  o'clock", -4.051273307986567),-                                    ("christmasyear", -6.191339471482838),-                                    ("after lunchat <time-of-day>", -6.191339471482838),+                                     -6.215607598755275),+                                    ("monthyear", -4.51085950651685),+                                    ("yearhour", -6.215607598755275),+                                    ("intersect<time-of-day>  o'clock", -4.075541435259004),+                                    ("christmasyear", -6.215607598755275),+                                    ("after lunchat <time-of-day>", -6.215607598755275),                                     ("absorption of , after named daymm/dd/yyyy",-                                     -6.191339471482838),-                                    ("named-daylast <cycle>", -6.191339471482838),-                                    ("intersect by 'of', 'from', 'syear", -5.785874363374673),-                                    ("<time-of-day> am|pmintersect", -5.092727182814728),-                                    ("intersect<time> <part-of-day>", -4.111897929803002),-                                    ("the <day-of-month> (ordinal)named-month", -6.191339471482838),-                                    ("<time-of-day>  o'clockafter lunch", -5.498192290922892),+                                     -6.215607598755275),+                                    ("named-daylast <cycle>", -6.215607598755275),+                                    ("intersect by 'of', 'from', 'syear", -5.810142490647111),+                                    ("<time-of-day> am|pmintersect", -5.116995310087166),+                                    ("intersect<time> <part-of-day>", -4.13616605707544),+                                    ("the <day-of-month> (ordinal)named-month", -6.215607598755275),+                                    ("<time-of-day>  o'clockafter lunch", -5.52246041819533),                                     ("<time> <part-of-day><time-of-day>  o'clock",-                                     -6.191339471482838),-                                    ("today<time-of-day>  o'clock", -6.191339471482838),-                                    ("<time-of-day>  o'clockon <date>", -5.785874363374673),-                                    ("<time-of-day> am|pmintersect by ','", -5.498192290922892),-                                    ("intersect by ','year", -5.092727182814728),-                                    ("on <date><time-of-day>  o'clock", -6.191339471482838),-                                    ("exactly <time-of-day>tomorrow", -5.785874363374673),-                                    ("mm/dd<time-of-day>  o'clock", -6.191339471482838),-                                    ("monthhour", -5.785874363374673),+                                     -6.215607598755275),+                                    ("today<time-of-day>  o'clock", -6.215607598755275),+                                    ("<time-of-day>  o'clockon <date>", -5.810142490647111),+                                    ("<time-of-day> am|pmintersect by ','", -5.52246041819533),+                                    ("intersect by ','year", -5.116995310087166),+                                    ("on <date><time-of-day>  o'clock", -6.215607598755275),+                                    ("exactly <time-of-day>tomorrow", -5.810142490647111),+                                    ("mm/dd<time-of-day>  o'clock", -6.215607598755275),+                                    ("monthhour", -5.810142490647111),                                     ("on <date>between <datetime> and <datetime> (interval)",-                                     -6.191339471482838),-                                    ("last <day-of-week> of <time>year", -6.191339471482838),-                                    ("hourmonth", -5.785874363374673),-                                    ("todayat <time-of-day>", -5.498192290922892),-                                    ("mm/ddabout <time-of-day>", -5.785874363374673),+                                     -6.215607598755275),+                                    ("last <day-of-week> of <time>year", -6.215607598755275),+                                    ("hourmonth", -5.810142490647111),+                                    ("todayat <time-of-day>", -5.52246041819533),+                                    ("mm/ddabout <time-of-day>", -5.810142490647111),                                     ("on <date>between <time-of-day> and <time-of-day> (interval)",-                                     -6.191339471482838),-                                    ("on <date>at <time-of-day>", -5.785874363374673),-                                    ("named-dayhh:mm", -6.191339471482838),-                                    ("dayday", -3.013285641134892),-                                    ("<time> <part-of-day>at <time-of-day>", -5.785874363374673),+                                     -6.215607598755275),+                                    ("on <date>at <time-of-day>", -5.810142490647111),+                                    ("named-dayhh:mm", -6.215607598755275),+                                    ("dayday", -3.0375537684073297),+                                    ("<time> <part-of-day>at <time-of-day>", -5.810142490647111),                                     ("<time-of-day> am|pmabsorption of , after named day",-                                     -6.191339471482838),-                                    ("about <time-of-day>on <date>", -6.191339471482838),+                                     -6.215607598755275),+                                    ("about <time-of-day>on <date>", -6.215607598755275),                                     ("<hour-of-day> <integer> (as relative minutes)in|during the <part-of-day>",-                                     -5.785874363374673),-                                    ("<day-of-month> (ordinal)intersect", -5.092727182814728),-                                    ("hourhour", -3.6656108271745818),-                                    ("<part-of-day> of <time>named-month", -5.785874363374673),-                                    ("hh:mmintersect by ','", -4.93857650298747),-                                    ("intersectnamed-month", -3.358126127426621),-                                    ("dayyear", -3.552282141867579),+                                     -5.810142490647111),+                                    ("<day-of-month> (ordinal)intersect", -5.116995310087166),+                                    ("hourhour", -3.68987895444702),+                                    ("<part-of-day> of <time>named-month", -5.810142490647111),+                                    ("hh:mmintersect by ','", -4.962844630259907),+                                    ("intersectnamed-month", -3.3823942546990593),+                                    ("dayyear", -3.297836866670996),                                     ("<time-of-day>  o'clockin|during the <part-of-day>",-                                     -5.092727182814728),-                                    ("tomorrow<time-of-day>  o'clock", -6.191339471482838),-                                    ("<time-of-day>  o'clocktomorrow", -5.498192290922892),+                                     -5.116995310087166),+                                    ("tomorrow<time-of-day>  o'clock", -6.215607598755275),+                                    ("<time-of-day>  o'clocktomorrow", -5.52246041819533),                                     ("<day-of-month>(ordinal) <named-month>year",-                                     -5.785874363374673),+                                     -5.810142490647111),                                     ("half <integer> (german style hour-of-day)after lunch",-                                     -6.191339471482838),+                                     -6.215607598755275),                                     ("absorption of , after named day<day-of-month>(ordinal) <named-month>",-                                     -4.93857650298747),-                                    ("hourminute", -5.498192290922892),+                                     -4.962844630259907),+                                    ("hourminute", -5.52246041819533),                                     ("on <date><day-of-month>(ordinal) <named-month>",-                                     -5.785874363374673),-                                    ("minutemonth", -3.5171908220563086),-                                    ("minutehour", -3.9400476728763425),-                                    ("named-day<time> timezone", -6.191339471482838),+                                     -5.810142490647111),+                                    ("minutemonth", -3.5414589493287467),+                                    ("minutehour", -3.96431580014878),+                                    ("named-day<time> timezone", -6.215607598755275),                                     ("at <time-of-day>in|during the <part-of-day>",-                                     -5.275048739608683),-                                    ("named-monthyear", -4.4865913792444125),+                                     -5.29931686688112),+                                    ("named-monthyear", -4.51085950651685),                                     ("absorption of , after named day<day-of-month>(ordinal) <named-month> year",-                                     -5.785874363374673),+                                     -5.810142490647111),                                     ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",-                                     -5.092727182814728),+                                     -5.116995310087166),                                     ("named-day<time-of-day> - <time-of-day> (interval)",-                                     -6.191339471482838),+                                     -6.215607598755275),                                     ("<day-of-month>(ordinal) <named-month> year<time> <part-of-day>",-                                     -6.191339471482838),+                                     -6.215607598755275),                                     ("<hour-of-day> <integer> (as relative minutes)after lunch",-                                     -6.191339471482838),+                                     -6.215607598755275),                                     ("named-day<datetime> - <datetime> (interval)",-                                     -6.191339471482838),-                                    ("on <date>named-month", -5.275048739608683),+                                     -6.215607598755275),+                                    ("on <date>named-month", -5.29931686688112),                                     ("intersect<day-of-month>(ordinal) <named-month>",-                                     -4.805045110362947),+                                     -4.829313237635384),                                     ("this <part-of-day><time-of-day>  o'clock",-                                     -6.191339471482838),+                                     -6.215607598755275),                                     ("<day-of-month>(ordinal) <named-month>intersect",-                                     -6.191339471482838),-                                    ("hh:mmintersect", -3.748992436113633),+                                     -6.215607598755275),+                                    ("hh:mmintersect", -3.7732605633860707),                                     ("named-dayfrom <datetime> - <datetime> (interval)",-                                     -5.785874363374673),-                                    ("named-daynext <cycle>", -6.191339471482838),+                                     -5.810142490647111),+                                    ("named-daynext <cycle>", -6.215607598755275),                                     ("named-dayfrom <time-of-day> - <time-of-day> (interval)",-                                     -5.498192290922892),-                                    ("<day-of-month> (ordinal)named-day", -5.785874363374673),-                                    ("intersect by ','intersect", -4.93857650298747),+                                     -5.52246041819533),+                                    ("<day-of-month> (ordinal)named-day", -5.810142490647111),+                                    ("intersect by ','intersect", -4.962844630259907),                                     ("half <integer> (german style hour-of-day)in|during the <part-of-day>",-                                     -5.785874363374673),-                                    ("at <time-of-day>intersect", -4.399580002254782),+                                     -5.810142490647111),+                                    ("from <datetime> - <datetime> (interval)year",+                                     -5.52246041819533),+                                    ("at <time-of-day>intersect", -4.4238481295272205),                                     ("on <date>from <time-of-day> - <time-of-day> (interval)",-                                     -5.785874363374673),+                                     -5.810142490647111),                                     ("<time> <part-of-day>from <time-of-day> - <time-of-day> (interval)",-                                     -6.191339471482838),+                                     -6.215607598755275),                                     ("absorption of , after named day<day-of-month> (ordinal)",-                                     -4.93857650298747),-                                    ("dayminute", -3.9941148941466182),+                                     -4.962844630259907),+                                    ("dayminute", -4.018383021419056),                                     ("on <date>from <datetime> - <datetime> (interval)",-                                     -6.191339471482838),+                                     -6.215607598755275),                                     ("<time> <part-of-day>from <datetime> - <datetime> (interval)",-                                     -6.191339471482838),-                                    ("intersectyear", -4.399580002254782),-                                    ("on <date>intersect", -5.785874363374673),-                                    ("on <date><day-of-month> (ordinal)", -5.785874363374673),-                                    ("<ordinal> <cycle> of <time>year", -6.191339471482838),-                                    ("minuteday", -2.2116578175808765),+                                     -6.215607598755275),+                                    ("intersectyear", -4.4238481295272205),+                                    ("on <date>intersect", -5.810142490647111),+                                    ("on <date><day-of-month> (ordinal)", -5.810142490647111),+                                    ("<ordinal> <cycle> of <time>year", -6.215607598755275),+                                    ("minuteday", -2.235925944853314),                                     ("absorption of , after named dayintersect",-                                     -3.7934441986844667),+                                     -3.817712325956905),                                     ("named-daybetween <time-of-day> and <time-of-day> (interval)",-                                     -6.191339471482838),+                                     -6.215607598755275),                                     ("<datetime> - <datetime> (interval)named-month",-                                     -5.785874363374673),-                                    ("year<time-of-day>  o'clock", -6.191339471482838),-                                    ("at <time-of-day>intersect by ','", -5.498192290922892),-                                    ("named-dayat <time-of-day>", -5.785874363374673),-                                    ("hh:mmabsorption of , after named day", -5.785874363374673),-                                    ("<time-of-day> am|pmnamed-day", -6.191339471482838),-                                    ("intersect by ','<time> <part-of-day>", -5.275048739608683),-                                    ("hh:mmon <date>", -3.748992436113633),+                                     -5.810142490647111),+                                    ("year<time-of-day>  o'clock", -6.215607598755275),+                                    ("at <time-of-day>intersect by ','", -5.52246041819533),+                                    ("named-dayat <time-of-day>", -5.810142490647111),+                                    ("hh:mmabsorption of , after named day", -5.810142490647111),+                                    ("<time-of-day> am|pmnamed-day", -6.215607598755275),+                                    ("intersect by ','<time> <part-of-day>", -5.29931686688112),+                                    ("hh:mmon <date>", -3.7732605633860707),                                     ("named-daybetween <datetime> and <datetime> (interval)",-                                     -6.191339471482838),+                                     -6.215607598755275),                                     ("at <time-of-day>absorption of , after named day",-                                     -6.191339471482838),-                                    ("until <time-of-day>after lunch", -6.191339471482838),-                                    ("mm/ddyear", -5.785874363374673),-                                    ("intersect by ','<time-of-day>  o'clock", -5.275048739608683),-                                    ("intersect<day-of-month> (ordinal)", -4.805045110362947),-                                    ("absorption of , after named daymm/dd", -6.191339471482838),-                                    ("named-day<time-of-day>  o'clock", -6.191339471482838),+                                     -6.215607598755275),+                                    ("until <time-of-day>after lunch", -6.215607598755275),+                                    ("mm/ddyear", -5.810142490647111),+                                    ("intersect by ','<time-of-day>  o'clock", -5.29931686688112),+                                    ("intersect<day-of-month> (ordinal)", -4.829313237635384),+                                    ("absorption of , after named daymm/dd", -6.215607598755275),+                                    ("named-day<time-of-day>  o'clock", -6.215607598755275),                                     ("<day-of-month> (ordinal)intersect by 'of', 'from', 's",-                                     -5.498192290922892),-                                    ("at <time-of-day>on <date>", -4.319537294581246),-                                    ("intersectintersect", -4.051273307986567),-                                    ("dayweek", -5.092727182814728),+                                     -5.52246041819533),+                                    ("at <time-of-day>on <date>", -4.343805421853684),+                                    ("intersectintersect", -4.075541435259004),+                                    ("dayweek", -5.116995310087166),                                     ("absorption of , after named daythe <day-of-month> (ordinal)",-                                     -6.191339471482838),-                                    ("weekyear", -5.785874363374673),-                                    ("hh:mmin|during the <part-of-day>", -5.275048739608683),+                                     -6.215607598755275),+                                    ("weekyear", -5.810142490647111),+                                    ("hh:mmin|during the <part-of-day>", -5.29931686688112),                                     ("intersect by 'of', 'from', 'snamed-month",-                                     -6.191339471482838),-                                    ("named-monthintersect", -6.191339471482838),-                                    ("<day-of-month> (ordinal)named-month", -4.319537294581246),-                                    ("tomorrowat <time-of-day>", -5.785874363374673),+                                     -6.215607598755275),+                                    ("named-monthintersect", -6.215607598755275),+                                    ("<day-of-month> (ordinal)named-month", -4.343805421853684),+                                    ("tomorrowat <time-of-day>", -5.810142490647111),                                     ("<hour-of-day> <integer> (as relative minutes)on <date>",-                                     -6.191339471482838),-                                    ("named-daythis <cycle>", -5.498192290922892),-                                    ("at <time-of-day>tomorrow", -6.191339471482838),+                                     -6.215607598755275),+                                    ("named-daythis <cycle>", -5.52246041819533),+                                    ("at <time-of-day>tomorrow", -6.215607598755275),                                     ("about <time-of-day>in|during the <part-of-day>",-                                     -5.785874363374673),+                                     -5.810142490647111),                                     ("half <integer> (german style hour-of-day)on <date>",-                                     -6.191339471482838),-                                    ("this <part-of-day>at <time-of-day>", -5.785874363374673),+                                     -6.215607598755275),+                                    ("this <part-of-day>at <time-of-day>", -5.810142490647111),                                     ("after lunch<hour-of-day> <integer> (as relative minutes)",-                                     -5.785874363374673),-                                    ("last <cycle> of <time>year", -5.785874363374673),+                                     -5.810142490647111),+                                    ("last <cycle> of <time>year", -5.810142490647111),                                     ("<named-month> <day-of-month> (non ordinal)year",-                                     -6.191339471482838),+                                     -6.215607598755275),                                     ("<day-of-month> (non ordinal) <named-month>year",-                                     -6.191339471482838)],-                               n = 417},+                                     -6.215607598755275)],+                               n = 426},                    koData =-                     ClassData{prior = -1.581267035467404, unseen = -5.886104031450156,+                     ClassData{prior = -1.4591557093847622,+                               unseen = -6.0112671744041615,                                likelihoods =                                  HashMap.fromList-                                   [("intersect by ','named-month", -4.497028027368389),-                                    ("named-day<part-of-day> of <time>", -5.190175207928333),+                                   [("intersect by ','named-month", -4.622518824322705),+                                    ("named-day<part-of-day> of <time>", -5.31566600488265),                                     ("absorption of , after named daythe <day-of-month> (non ordinal)",-                                     -5.190175207928333),-                                    ("dayhour", -4.497028027368389),-                                    ("daymonth", -3.3183730310267423),-                                    ("monthday", -4.7847100998201695),-                                    ("monthyear", -5.190175207928333),-                                    ("yearhour", -5.190175207928333),-                                    ("after lunchat <time-of-day>", -4.7847100998201695),-                                    ("intersect by 'of', 'from', 'syear", -4.497028027368389),-                                    ("<time-of-day> am|pmintersect", -3.4854271156899084),-                                    ("intersect<time> <part-of-day>", -5.190175207928333),-                                    ("<time-of-day>  o'clockafter lunch", -5.190175207928333),-                                    ("after lunch<time-of-day>  o'clock", -5.190175207928333),-                                    ("at <time-of-day>named-day", -5.190175207928333),-                                    ("absorption of , after named dayhh:mm", -5.190175207928333),-                                    ("<time-of-day> am|pmintersect by ','", -3.9374122394329656),+                                     -5.31566600488265),+                                    ("<datetime> - <datetime> (interval)year", -5.31566600488265),+                                    ("dayhour", -4.622518824322705),+                                    ("daymonth", -3.4438638279810583),+                                    ("monthday", -4.9102008967744855),+                                    ("monthyear", -5.31566600488265),+                                    ("yearhour", -5.31566600488265),+                                    ("after lunchat <time-of-day>", -4.9102008967744855),+                                    ("mm/dduntil <time-of-day>", -4.9102008967744855),+                                    ("until <time-of-day>year", -4.9102008967744855),+                                    ("intersect by 'of', 'from', 'syear", -4.622518824322705),+                                    ("<time-of-day> am|pmintersect", -3.6109179126442243),+                                    ("intersect<time> <part-of-day>", -5.31566600488265),+                                    ("<time-of-day>  o'clockafter lunch", -5.31566600488265),+                                    ("after lunch<time-of-day>  o'clock", -5.31566600488265),+                                    ("at <time-of-day>named-day", -5.31566600488265),+                                    ("absorption of , after named dayhh:mm", -5.31566600488265),+                                    ("<time-of-day> am|pmintersect by ','", -4.062903036387282),                                     ("<time-of-day>  o'clock<time> <part-of-day>",-                                     -4.273884476054178),-                                    ("monthhour", -5.190175207928333),+                                     -4.399375273008495),+                                    ("mm/ddhh:mm", -4.399375273008495),+                                    ("monthhour", -5.31566600488265),                                     ("on <date>between <datetime> and <datetime> (interval)",-                                     -5.190175207928333),-                                    ("todayat <time-of-day>", -5.190175207928333),+                                     -5.31566600488265),+                                    ("todayat <time-of-day>", -5.31566600488265),                                     ("on <date>between <time-of-day> and <time-of-day> (interval)",-                                     -5.190175207928333),-                                    ("named-dayhh:mm", -5.190175207928333),-                                    ("dayday", -3.803880846808443),+                                     -5.31566600488265),+                                    ("named-dayhh:mm", -5.31566600488265),+                                    ("dayday", -3.9293716437627593),                                     ("<time-of-day> am|pmabsorption of , after named day",-                                     -4.7847100998201695),-                                    ("hourhour", -3.6860978111520595),-                                    ("intersectnamed-month", -3.580737295494233),-                                    ("dayyear", -4.273884476054178),-                                    ("minutemonth", -3.24426505887302),-                                    ("named-monthyear", -5.190175207928333),+                                     -4.9102008967744855),+                                    ("hourhour", -3.8115886081063755),+                                    ("intersectnamed-month", -3.7062280924485496),+                                    ("dayyear", -3.236224463202814),+                                    ("minutemonth", -3.369755855827336),+                                    ("named-monthyear", -5.31566600488265),                                     ("named-day<time-of-day> - <time-of-day> (interval)",-                                     -5.190175207928333),-                                    ("on <date>named-month", -5.190175207928333),+                                     -5.31566600488265),+                                    ("on <date>named-month", -5.31566600488265),                                     ("absorption of , after named daynamed-month",-                                     -4.091562919260224),+                                     -4.21705371621454),                                     ("intersect<day-of-month>(ordinal) <named-month>",-                                     -4.497028027368389),-                                    ("named-dayafter <time-of-day>", -4.7847100998201695),+                                     -4.622518824322705),+                                    ("named-dayafter <time-of-day>", -4.9102008967744855),                                     ("named-dayfrom <datetime> - <datetime> (interval)",-                                     -4.7847100998201695),+                                     -4.9102008967744855),                                     ("<hour-of-day> <integer> (as relative minutes)named-month",-                                     -5.190175207928333),+                                     -5.31566600488265),                                     ("named-dayfrom <time-of-day> - <time-of-day> (interval)",-                                     -4.497028027368389),-                                    ("<day-of-month> (ordinal)named-day", -4.497028027368389),-                                    ("at <time-of-day>intersect", -4.091562919260224),+                                     -4.622518824322705),+                                    ("<day-of-month> (ordinal)named-day", -4.622518824322705),+                                    ("<day-of-month> (ordinal)hh:mm", -4.399375273008495),+                                    ("at <time-of-day>intersect", -4.21705371621454),                                     ("on <date>from <time-of-day> - <time-of-day> (interval)",-                                     -4.7847100998201695),-                                    ("dayminute", -2.992950630592114),+                                     -4.9102008967744855),+                                    ("dayminute", -2.676608675267391),                                     ("on <date>from <datetime> - <datetime> (interval)",-                                     -5.190175207928333),-                                    ("minuteday", -2.194442934374343),+                                     -5.31566600488265),+                                    ("minuteday", -2.3199337313286588),                                     ("named-daybetween <time-of-day> and <time-of-day> (interval)",-                                     -5.190175207928333),-                                    ("at <time-of-day>intersect by ','", -4.497028027368389),-                                    ("<time-of-day> am|pmnamed-day", -4.7847100998201695),+                                     -5.31566600488265),+                                    ("at <time-of-day>intersect by ','", -4.622518824322705),+                                    ("<time-of-day> am|pmnamed-day", -4.9102008967744855),                                     ("named-daybetween <datetime> and <datetime> (interval)",-                                     -5.190175207928333),+                                     -5.31566600488265),                                     ("at <time-of-day>absorption of , after named day",-                                     -5.190175207928333),+                                     -5.31566600488265),                                     ("named-month<day-of-month> (non ordinal) <named-month>",-                                     -4.7847100998201695),-                                    ("year<time> <part-of-day>", -5.190175207928333),-                                    ("intersect<day-of-month> (ordinal)", -4.497028027368389),+                                     -4.9102008967744855),+                                    ("year<time> <part-of-day>", -5.31566600488265),+                                    ("mm/ddyear", -3.8115886081063755),+                                    ("intersect<day-of-month> (ordinal)", -4.622518824322705),                                     ("<day-of-month> (ordinal)intersect by 'of', 'from', 's",-                                     -4.7847100998201695),+                                     -4.9102008967744855),                                     ("<named-month> <day-of-month> (non ordinal)named-month",-                                     -4.7847100998201695),-                                    ("intersectintersect", -4.497028027368389),-                                    ("<day-of-month> (ordinal)named-month", -4.497028027368389),-                                    ("until <time-of-day>named-month", -5.190175207928333),-                                    ("after <time-of-day>year", -5.190175207928333),-                                    ("on <date>after <time-of-day>", -5.190175207928333),-                                    ("tomorrownoon", -5.190175207928333)],-                               n = 108}}),+                                     -4.9102008967744855),+                                    ("intersectintersect", -4.622518824322705),+                                    ("<day-of-month> (ordinal)named-month", -4.622518824322705),+                                    ("until <time-of-day>named-month", -5.31566600488265),+                                    ("after <time-of-day>year", -5.31566600488265),+                                    ("on <date>after <time-of-day>", -5.31566600488265),+                                    ("tomorrownoon", -5.31566600488265)],+                               n = 129}}),        ("<ordinal> <cycle> of <time>",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.4849066497880004,@@ -649,23 +657,32 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("from <datetime> - <datetime> (interval)",         Classifier{okData =-                     ClassData{prior = -0.5108256237659907,-                               unseen = -2.5649493574615367,+                     ClassData{prior = -1.2039728043259361, unseen = -3.295836866004329,                                likelihoods =                                  HashMap.fromList-                                   [("minuteminute", -1.3862943611198906),+                                   [("minuteminute", -2.159484249353372),                                     ("time-of-day (latent)time-of-day (latent)",-                                     -1.791759469228055),-                                    ("hh:mmhh:mm", -1.3862943611198906),-                                    ("hourhour", -1.791759469228055)],-                               n = 3},+                                     -2.5649493574615367),+                                    ("hh:mmhh:mm", -2.159484249353372),+                                    ("dayday", -1.8718021769015913),+                                    ("hourhour", -2.5649493574615367),+                                    ("mm/ddmm/dd", -1.8718021769015913)],+                               n = 6},                    koData =-                     ClassData{prior = -0.916290731874155, unseen = -2.3978952727983707,+                     ClassData{prior = -0.35667494393873245,+                               unseen = -3.7612001156935624,                                likelihoods =                                  HashMap.fromList-                                   [("hh:mmtime-of-day (latent)", -1.2039728043259361),-                                    ("minutehour", -1.2039728043259361)],-                               n = 2}}),+                                   [("dayhour", -2.3513752571634776),+                                    ("mm/ddmm/dd/yyyy", -2.3513752571634776),+                                    ("hh:mmtime-of-day (latent)", -2.639057329615259),+                                    ("mm/ddhh:mm", -2.3513752571634776),+                                    ("dayday", -1.791759469228055),+                                    ("minutehour", -2.639057329615259),+                                    ("mm/ddintersect", -2.3513752571634776),+                                    ("dayminute", -2.3513752571634776),+                                    ("mm/ddtime-of-day (latent)", -2.3513752571634776)],+                               n = 14}}),        ("after tomorrow",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -1.0986122886681098,@@ -731,11 +748,12 @@                                n = 1}}),        ("mm/dd/yyyy",         Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.791759469228055,+                     ClassData{prior = -1.252762968495368, unseen = -1.791759469228055,                                likelihoods = HashMap.fromList [("", 0.0)], n = 4},                    koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),+                     ClassData{prior = -0.3364722366212129,+                               unseen = -2.4849066497880004,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10}}),        ("couple",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -1.6094379124341003,@@ -910,9 +928,9 @@                      ClassData{prior = -infinity, unseen = -0.6931471805599453,                                likelihoods = HashMap.fromList [], n = 0},                    koData =-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,+                     ClassData{prior = 0.0, unseen = -2.995732273553991,                                likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 7}}),+                               n = 18}}),        ("in|during the <part-of-day>",         Classifier{okData =                      ClassData{prior = -6.0624621816434854e-2,@@ -1041,28 +1059,31 @@                                n = 2}}),        ("time-of-day (latent)",         Classifier{okData =-                     ClassData{prior = -0.6931471805599453, unseen = -4.007333185232471,+                     ClassData{prior = -0.7686547330680905, unseen = -4.007333185232471,                                likelihoods =                                  HashMap.fromList                                    [("integer (numeric)", -0.11778303565638351),                                     ("integer (0..19)", -2.379546134130174)],                                n = 51},                    koData =-                     ClassData{prior = -0.6931471805599453, unseen = -4.007333185232471,+                     ClassData{prior = -0.6229429218866968, unseen = -4.143134726391533,                                likelihoods =                                  HashMap.fromList-                                   [("integer (numeric)", -0.587786664902119),-                                    ("integer (0..19)", -0.9444616088408514),-                                    ("couple", -2.890371757896165)],-                               n = 51}}),+                                   [("integer (numeric)", -0.4895482253187058),+                                    ("integer (0..19)", -1.0826119473216687),+                                    ("couple", -3.028522096376982)],+                               n = 59}}),        ("year",         Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,+                     ClassData{prior = -8.338160893905101e-2,+                               unseen = -3.2188758248682006,                                likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 17},+                               n = 23},                    koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),+                     ClassData{prior = -2.5257286443082556,+                               unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],+                               n = 2}}),        ("last <day-of-week> of <time>",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.3025850929940455,@@ -1198,14 +1219,22 @@                    koData =                      ClassData{prior = -infinity, unseen = -2.3978952727983707,                                likelihoods = HashMap.fromList [], n = 0}}),+       ("dd.(mm.)? - dd.mm.(yy[yy]?)? (interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.890371757896165,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 16},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),        ("hh:mm",         Classifier{okData =-                     ClassData{prior = -0.12136085700426748,-                               unseen = -3.4965075614664802,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 31},+                     ClassData{prior = -0.6190392084062235,+                               unseen = -3.6109179126442243,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 35},                    koData =-                     ClassData{prior = -2.169053700369523, unseen = -1.791759469228055,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),+                     ClassData{prior = -0.7731898882334817,+                               unseen = -3.4657359027997265,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 30}}),        ("quarter after|past <integer> (hour-of-day)",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.3025850929940455,@@ -1382,7 +1411,7 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("<day-of-month> (ordinal)",         Classifier{okData =-                     ClassData{prior = -0.3513978868378886,+                     ClassData{prior = -0.5520685823000397,                                unseen = -3.0910424533583156,                                likelihoods =                                  HashMap.fromList@@ -1390,13 +1419,12 @@                                     ("ordinal (digits)", -0.2113090936672069)],                                n = 19},                    koData =-                     ClassData{prior = -1.2163953243244932,-                               unseen = -2.3978952727983707,+                     ClassData{prior = -0.8574502318512216, unseen = -2.833213344056216,                                likelihoods =                                  HashMap.fromList-                                   [("ordinals (first..19th)", -0.35667494393873245),-                                    ("ordinal (digits)", -1.2039728043259361)],-                               n = 8}}),+                                   [("ordinals (first..19th)", -0.8266785731844679),+                                    ("ordinal (digits)", -0.5753641449035618)],+                               n = 14}}),        ("noon",         Classifier{okData =                      ClassData{prior = -infinity, unseen = -0.6931471805599453,@@ -1406,31 +1434,32 @@                                likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),        ("until <time-of-day>",         Classifier{okData =-                     ClassData{prior = -0.25131442828090605,-                               unseen = -4.060443010546419,+                     ClassData{prior = -0.5108256237659907, unseen = -4.0943445622221,                                likelihoods =                                  HashMap.fromList-                                   [("<time> <part-of-day>", -2.097141118779237),-                                    ("<time-of-day>  o'clock", -2.2512917986064953),-                                    ("intersect", -3.349904087274605),-                                    ("time-of-day (latent)", -2.097141118779237),-                                    ("<time-of-day> am|pm", -3.349904087274605),-                                    ("EOM|End of month", -3.349904087274605),-                                    ("hour", -0.9985288301111273), ("month", -3.349904087274605),-                                    ("midnight|EOD|end of day", -3.349904087274605)],+                                   [("<time> <part-of-day>", -2.1316272948504063),+                                    ("<time-of-day>  o'clock", -2.2857779746776643),+                                    ("intersect", -3.3843902633457743),+                                    ("time-of-day (latent)", -2.1316272948504063),+                                    ("<time-of-day> am|pm", -3.3843902633457743),+                                    ("EOM|End of month", -3.3843902633457743),+                                    ("hour", -1.0330150061822965), ("month", -3.3843902633457743),+                                    ("midnight|EOD|end of day", -3.3843902633457743)],                                n = 21},                    koData =-                     ClassData{prior = -1.5040773967762742, unseen = -3.332204510175204,+                     ClassData{prior = -0.916290731874155, unseen = -3.828641396489095,                                likelihoods =                                  HashMap.fromList-                                   [("intersect", -2.6026896854443837),-                                    ("<day-of-month>(ordinal) <named-month>", -2.6026896854443837),-                                    ("day", -1.6863989535702288), ("hh:mm", -2.1972245773362196),-                                    ("<day-of-month> (ordinal)", -2.6026896854443837),+                                   [("mm/dd", -2.70805020110221),+                                    ("intersect", -2.4203681286504293),+                                    ("mm/dd/yyyy", -2.70805020110221),+                                    ("<day-of-month>(ordinal) <named-month>", -3.1135153092103742),+                                    ("day", -1.4087672169719492), ("hh:mm", -2.1972245773362196),+                                    ("<day-of-month> (ordinal)", -3.1135153092103742),                                     ("<day-of-month> (non ordinal) <named-month>",-                                     -2.6026896854443837),+                                     -3.1135153092103742),                                     ("minute", -2.1972245773362196)],-                               n = 6}}),+                               n = 14}}),        ("<integer> and an half hours",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -1.0986122886681098,@@ -1598,48 +1627,58 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("<datetime> - <datetime> (interval)",         Classifier{okData =-                     ClassData{prior = -0.3364722366212129,-                               unseen = -3.7612001156935624,+                     ClassData{prior = -0.9694005571881036, unseen = -4.174387269895637,                                likelihoods =                                  HashMap.fromList-                                   [("intersecthh:mm", -3.044522437723423),-                                    ("on <date>hh:mm", -3.044522437723423),-                                    ("minuteminute", -1.252762968495368),+                                   [("intersecthh:mm", -3.4657359027997265),+                                    ("on <date>hh:mm", -3.4657359027997265),+                                    ("minuteminute", -1.6739764335716716),                                     ("<day-of-month> (ordinal)<day-of-month> (ordinal)",-                                     -2.639057329615259),-                                    ("hh:mmhh:mm", -1.791759469228055),-                                    ("dayday", -2.128231705849268),+                                     -3.0602707946915624),+                                    ("hh:mmhh:mm", -2.2129729343043585),+                                    ("dayday", -1.6739764335716716),                                     ("<named-month> <day-of-month> (non ordinal)<named-month> <day-of-month> (non ordinal)",-                                     -2.639057329615259),-                                    ("intersect by 'of', 'from', 'shh:mm", -2.3513752571634776)],-                               n = 15},+                                     -3.0602707946915624),+                                    ("intersect by 'of', 'from', 'shh:mm", -2.772588722239781),+                                    ("mm/ddmm/dd", -2.0794415416798357)],+                               n = 22},                    koData =-                     ClassData{prior = -1.252762968495368, unseen = -3.2188758248682006,+                     ClassData{prior = -0.4769240720903093, unseen = -4.532599493153256,                                likelihoods =                                  HashMap.fromList                                    [("<day-of-month> (ordinal)<day-of-month>(ordinal) <named-month>",-                                     -2.0794415416798357),-                                    ("daymonth", -2.0794415416798357),-                                    ("dayday", -1.5686159179138452),-                                    ("<day-of-month> (ordinal)intersect", -2.0794415416798357),+                                     -3.4231762883809305),+                                    ("daymonth", -3.4231762883809305),+                                    ("mm/ddmm/dd/yyyy", -2.575878427993727),+                                    ("<day-of-month> (ordinal)mm/dd", -2.91235066461494),+                                    ("mm/ddhh:mm", -2.4423470353692043),+                                    ("dayday", -1.3437347467010947),+                                    ("<day-of-month> (ordinal)intersect", -3.1354942159291497),+                                    ("<day-of-month> (ordinal)hh:mm", -2.91235066461494),+                                    ("mm/ddintersect", -2.575878427993727),+                                    ("dayminute", -2.03688192726104),+                                    ("<day-of-month> (ordinal)mm/dd/yyyy", -3.4231762883809305),                                     ("<named-month> <day-of-month> (non ordinal)named-month",-                                     -2.0794415416798357)],-                               n = 6}}),+                                     -3.4231762883809305)],+                               n = 36}}),        ("<time-of-day> - <time-of-day> (interval)",         Classifier{okData =-                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,+                     ClassData{prior = -0.8266785731844679, unseen = -3.044522437723423,                                likelihoods =                                  HashMap.fromList-                                   [("minuteminute", -0.8266785731844679),-                                    ("hh:mmhh:mm", -0.8266785731844679)],-                               n = 6},+                                   [("minuteminute", -0.916290731874155),+                                    ("hh:mmhh:mm", -0.916290731874155)],+                               n = 7},                    koData =-                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,+                     ClassData{prior = -0.5753641449035618,+                               unseen = -3.2188758248682006,                                likelihoods =                                  HashMap.fromList-                                   [("hh:mmtime-of-day (latent)", -0.8266785731844679),-                                    ("minutehour", -0.8266785731844679)],-                               n = 6}}),+                                   [("hh:mmtime-of-day (latent)", -1.2321436812926323),+                                    ("hourminute", -1.791759469228055),+                                    ("minutehour", -1.2321436812926323),+                                    ("time-of-day (latent)hh:mm", -1.791759469228055)],+                               n = 9}}),        ("last n <cycle>",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -3.9318256327243257,@@ -1741,11 +1780,12 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("ordinal (digits)",         Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.995732273553991,+                     ClassData{prior = -0.2876820724517809, unseen = -2.995732273553991,                                likelihoods = HashMap.fromList [("", 0.0)], n = 18},                    koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),+                     ClassData{prior = -1.3862943611198906,+                               unseen = -2.0794415416798357,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),        ("quarter (grain)",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -1.791759469228055,@@ -1845,7 +1885,7 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("<hour-of-day> <integer> (as relative minutes)",         Classifier{okData =-                     ClassData{prior = -0.3364722366212129, unseen = -2.772588722239781,+                     ClassData{prior = -0.6931471805599453, unseen = -2.772588722239781,                                likelihoods =                                  HashMap.fromList                                    [("hour", -0.916290731874155),@@ -1854,13 +1894,13 @@                                      -1.0986122886681098)],                                n = 5},                    koData =-                     ClassData{prior = -1.252762968495368, unseen = -2.3025850929940455,+                     ClassData{prior = -0.6931471805599453, unseen = -2.772588722239781,                                likelihoods =                                  HashMap.fromList-                                   [("time-of-day (latent)integer (0..19)", -1.5040773967762742),-                                    ("time-of-day (latent)integer (numeric)", -1.5040773967762742),-                                    ("hour", -1.0986122886681098)],-                               n = 2}}),+                                   [("time-of-day (latent)integer (0..19)", -2.0149030205422647),+                                    ("time-of-day (latent)integer (numeric)", -1.0986122886681098),+                                    ("hour", -0.916290731874155)],+                               n = 5}}),        ("this <time>",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.639057329615259,
Duckling/Ranking/Classifiers/EN.hs view
@@ -59,11 +59,12 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("integer (numeric)",         Classifier{okData =-                     ClassData{prior = -0.8463513387831728, unseen = -5.030437921392435,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 151},+                     ClassData{prior = -0.8649974374866046,+                               unseen = -5.0369526024136295,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 152},                    koData =-                     ClassData{prior = -0.5603262675390213, unseen = -5.313205979041787,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 201}}),+                     ClassData{prior = -0.5465437063680699, unseen = -5.351858133476067,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 209}}),        ("<duration> hence|ago",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -3.784189633918261,@@ -136,6 +137,15 @@                    koData =                      ClassData{prior = -infinity, unseen = -0.6931471805599453,                                likelihoods = HashMap.fromList [], n = 0}}),+       ("mm/yyyy",+        Classifier{okData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},+                   koData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),        ("integer after|past <hour-of-day>",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.3025850929940455,@@ -224,11 +234,12 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("mm/dd",         Classifier{okData =-                     ClassData{prior = -1.4469189829363254, unseen = -1.791759469228055,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                     ClassData{prior = -1.3862943611198906,+                               unseen = -2.0794415416798357,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},                    koData =-                     ClassData{prior = -0.2682639865946794, unseen = -2.70805020110221,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 13}}),+                     ClassData{prior = -0.2876820724517809, unseen = -2.995732273553991,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18}}),        ("at <time-of-day>",         Classifier{okData =                      ClassData{prior = -0.10919929196499197,@@ -319,12 +330,11 @@                                n = 4}}),        ("integer (0..19)",         Classifier{okData =-                     ClassData{prior = -2.7398974188114388e-2,-                               unseen = -3.6375861597263857,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 36},+                     ClassData{prior = -2.469261259037152e-2,+                               unseen = -3.7376696182833684,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 40},                    koData =-                     ClassData{prior = -3.6109179126442243,-                               unseen = -1.0986122886681098,+                     ClassData{prior = -3.713572066704308, unseen = -1.0986122886681098,                                likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),        ("between <time-of-day> and <time-of-day> (interval)",         Classifier{okData =@@ -350,10 +360,20 @@                    koData =                      ClassData{prior = -infinity, unseen = -0.6931471805599453,                                likelihoods = HashMap.fromList [], n = 0}}),+       ("from <month> dd-dd (interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("July", -0.6931471805599453), ("month", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),        ("October",         Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.5649493574615367,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},+                     ClassData{prior = 0.0, unseen = -2.833213344056216,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 15},                    koData =                      ClassData{prior = -infinity, unseen = -0.6931471805599453,                                likelihoods = HashMap.fromList [], n = 0}}),@@ -388,27 +408,27 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("in|within|after <duration>",         Classifier{okData =-                     ClassData{prior = -5.129329438755058e-2,-                               unseen = -4.532599493153256,+                     ClassData{prior = -4.652001563489282e-2,+                               unseen = -4.61512051684126,                                likelihoods =                                  HashMap.fromList-                                   [("week", -3.1354942159291497),-                                    ("<integer> more <unit-of-duration>", -3.828641396489095),-                                    ("three-quarters of an hour", -2.91235066461494),-                                    ("<integer> + '\"", -3.1354942159291497),-                                    ("number.number hours", -3.828641396489095),-                                    ("second", -3.4231762883809305), ("day", -3.1354942159291497),-                                    ("half an hour", -2.91235066461494),-                                    ("<integer> <unit-of-duration>", -1.749199854809259),-                                    ("a <unit-of-duration>", -2.91235066461494),-                                    ("quarter of an hour", -2.91235066461494),-                                    ("hour", -2.4423470353692043),-                                    ("about|exactly <duration>", -3.828641396489095),-                                    ("<integer> and an half hour", -3.828641396489095),-                                    ("minute", -1.3437347467010947)],-                               n = 38},+                                   [("week", -3.2188758248682006),+                                    ("<integer> more <unit-of-duration>", -3.912023005428146),+                                    ("three-quarters of an hour", -2.995732273553991),+                                    ("<integer> + '\"", -3.2188758248682006),+                                    ("number.number hours", -3.912023005428146),+                                    ("second", -3.506557897319982), ("day", -3.2188758248682006),+                                    ("half an hour", -2.995732273553991),+                                    ("<integer> <unit-of-duration>", -1.6094379124341003),+                                    ("a <unit-of-duration>", -2.995732273553991),+                                    ("quarter of an hour", -2.995732273553991),+                                    ("hour", -2.5257286443082556),+                                    ("about|exactly <duration>", -3.912023005428146),+                                    ("<integer> and an half hour", -3.912023005428146),+                                    ("minute", -1.2729656758128873)],+                               n = 42},                    koData =-                     ClassData{prior = -2.995732273553991, unseen = -3.044522437723423,+                     ClassData{prior = -3.0910424533583156, unseen = -3.044522437723423,                                likelihoods =                                  HashMap.fromList                                    [("quarter", -1.8971199848858813),@@ -461,8 +481,8 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("July",         Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.5649493574615367,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},+                     ClassData{prior = 0.0, unseen = -2.70805020110221,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 13},                    koData =                      ClassData{prior = -infinity, unseen = -0.6931471805599453,                                likelihoods = HashMap.fromList [], n = 0}}),@@ -497,219 +517,225 @@                      ClassData{prior = -infinity, unseen = -0.6931471805599453,                                likelihoods = HashMap.fromList [], n = 0},                    koData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,                                likelihoods =                                  HashMap.fromList [("integer (numeric)integer (numeric)", 0.0)],-                               n = 1}}),+                               n = 3}}),        ("intersect",         Classifier{okData =-                     ClassData{prior = -0.44313061099463913,-                               unseen = -6.1092475827643655,+                     ClassData{prior = -0.4563567154045537, unseen = -6.124683390894205,                                likelihoods =                                  HashMap.fromList                                    [("<datetime> - <datetime> (interval)on <date>",-                                     -4.497584975308154),+                                     -4.513054897080286),                                     ("<time-of-day> - <time-of-day> (interval)on <date>",-                                     -4.497584975308154),-                                    ("hourday", -3.709127614943884),-                                    ("dayhour", -3.162583908575814),-                                    ("daymonth", -5.413875707182309),-                                    ("monthday", -5.0084105990741445),-                                    ("monthyear", -3.8044377947482086),-                                    ("Tuesdaythe <day-of-month> (ordinal)", -5.413875707182309),-                                    ("Christmasyear", -5.413875707182309),+                                     -4.513054897080286),+                                    ("hourday", -3.724597536716016),+                                    ("dayhour", -3.1780538303479458),+                                    ("daymonth", -5.429345628954441),+                                    ("monthday", -5.0238805208462765),+                                    ("monthyear", -3.8199077165203406),+                                    ("Tuesdaythe <day-of-month> (ordinal)", -5.429345628954441),+                                    ("Christmasyear", -5.429345628954441),+                                    ("houryear", -5.429345628954441),                                     ("this|next <day-of-week>hh(:mm) - <time-of-day> am|pm",-                                     -5.413875707182309),+                                     -5.429345628954441),                                     ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",-                                     -4.720728526622364),-                                    ("<time-of-day> am|pmintersect", -4.161112738686941),+                                     -4.736198448394496),+                                    ("<time-of-day> am|pmintersect", -4.176582660459073),                                     ("intersect by \",\", \"of\", \"from\", \"'s\"year",-                                     -5.413875707182309),-                                    ("Marchyear", -5.413875707182309),+                                     -5.429345628954441),+                                    ("Marchyear", -5.429345628954441),                                     ("<named-month>|<named-day> <day-of-month> (ordinal)year",-                                     -5.0084105990741445),-                                    ("intersect<time-of-day> am|pm", -5.413875707182309),-                                    ("Thursdayhh(:mm) - <time-of-day> am|pm", -5.413875707182309),-                                    ("monthhour", -5.0084105990741445),-                                    ("last <day-of-week> of <time>year", -5.413875707182309),-                                    ("todayat <time-of-day>", -5.413875707182309),-                                    ("Thursday<time> timezone", -5.0084105990741445),+                                     -5.0238805208462765),+                                    ("intersect<time-of-day> am|pm", -5.429345628954441),+                                    ("Thursdayhh(:mm) - <time-of-day> am|pm", -5.429345628954441),+                                    ("monthhour", -5.0238805208462765),+                                    ("last <day-of-week> of <time>year", -5.429345628954441),+                                    ("todayat <time-of-day>", -5.429345628954441),+                                    ("Thursday<time> timezone", -5.0238805208462765),                                     ("this <time>hh(:mm) - <time-of-day> am|pm",-                                     -5.413875707182309),-                                    ("dayday", -3.398972686640044),-                                    ("Thanksgiving Dayyear", -5.0084105990741445),-                                    ("<time> <part-of-day>at <time-of-day>", -5.413875707182309),-                                    ("Tuesdayin <named-month>", -5.413875707182309),-                                    ("mm/ddat <time-of-day>", -5.413875707182309),-                                    ("tonightat <time-of-day>", -5.413875707182309),+                                     -5.429345628954441),+                                    ("dayday", -3.414442608412176),+                                    ("Thanksgiving Dayyear", -5.0238805208462765),+                                    ("<time> <part-of-day>at <time-of-day>", -5.429345628954441),+                                    ("Tuesdayin <named-month>", -5.429345628954441),+                                    ("mm/ddat <time-of-day>", -5.429345628954441),+                                    ("tonightat <time-of-day>", -5.429345628954441),                                     ("<time-of-day> am|pmabsorption of , after named day",-                                     -4.720728526622364),-                                    ("today<time-of-day> am|pm", -5.413875707182309),-                                    ("Februarythe <day-of-month> (ordinal)", -5.0084105990741445),-                                    ("at <time-of-day><time> <part-of-day>", -5.413875707182309),-                                    ("mm/dd<time-of-day> am|pm", -5.413875707182309),-                                    ("hourhour", -4.161112738686941),-                                    ("<time-of-day> am|pmon <date>", -3.398972686640044),-                                    ("Wednesdaythis|last|next <cycle>", -5.413875707182309),+                                     -4.736198448394496),+                                    ("today<time-of-day> am|pm", -5.429345628954441),+                                    ("Februarythe <day-of-month> (ordinal)", -5.0238805208462765),+                                    ("at <time-of-day><time> <part-of-day>", -5.429345628954441),+                                    ("mm/dd<time-of-day> am|pm", -5.429345628954441),+                                    ("hourhour", -4.176582660459073),+                                    ("<time-of-day> am|pmon <date>", -3.414442608412176),+                                    ("Wednesdaythis|last|next <cycle>", -5.429345628954441),                                     ("intersect<named-month> <day-of-month> (non ordinal)",-                                     -3.909798310406035),-                                    ("dayyear", -3.2166511298460896),+                                     -3.925268232178167),+                                    ("dayyear", -3.2321210516182215),+                                    ("last weekend of <named-month>year", -5.429345628954441),                                     ("<time-of-day> o'clockin|during the <part-of-day>",-                                     -5.413875707182309),-                                    ("<time-of-day> am|pmtomorrow", -4.720728526622364),-                                    ("minutehour", -4.497584975308154),-                                    ("Mother's Dayyear", -5.413875707182309),+                                     -5.429345628954441),+                                    ("<time-of-day> am|pmtomorrow", -4.736198448394496),+                                    ("minutehour", -4.513054897080286),+                                    ("Mother's Dayyear", -5.429345628954441),                                     ("at <time-of-day>in|during the <part-of-day>",-                                     -5.0084105990741445),+                                     -5.0238805208462765),                                     ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",-                                     -3.709127614943884),-                                    ("tomorrow<time-of-day> sharp|exactly", -5.413875707182309),+                                     -3.724597536716016),+                                    ("tomorrow<time-of-day> sharp|exactly", -5.429345628954441),                                     ("Thursdayfrom <datetime> - <datetime> (interval)",-                                     -4.497584975308154),+                                     -4.513054897080286),                                     ("on <date><named-month> <day-of-month> (non ordinal)",-                                     -5.0084105990741445),+                                     -5.0238805208462765),                                     ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",-                                     -4.497584975308154),-                                    ("Mondayin|during the <part-of-day>", -5.413875707182309),+                                     -4.513054897080286),+                                    ("Mondayin|during the <part-of-day>", -5.429345628954441),                                     ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",-                                     -5.0084105990741445),-                                    ("intersectin|during the <part-of-day>", -5.413875707182309),+                                     -5.0238805208462765),+                                    ("intersectin|during the <part-of-day>", -5.429345628954441),                                     ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",-                                     -5.413875707182309),+                                     -5.429345628954441),                                     ("from <time-of-day> - <time-of-day> (interval)on <date>",-                                     -4.720728526622364),+                                     -4.736198448394496),                                     ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",-                                     -4.497584975308154),-                                    ("at <time-of-day>intersect", -5.0084105990741445),+                                     -4.513054897080286),+                                    ("at <time-of-day>intersect", -5.0238805208462765),                                     ("<time-of-day> - <time-of-day> (interval)tomorrow",-                                     -5.413875707182309),+                                     -5.429345628954441),                                     ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",-                                     -5.413875707182309),-                                    ("dayminute", -3.1112906141882632),+                                     -5.429345628954441),+                                    ("dayminute", -3.126760535960395),                                     ("from <datetime> - <datetime> (interval)on <date>",-                                     -5.0084105990741445),+                                     -5.0238805208462765),                                     ("<datetime> - <datetime> (interval)tomorrow",-                                     -5.413875707182309),+                                     -5.429345628954441),                                     ("absorption of , after named dayintersect by \",\", \"of\", \"from\", \"'s\"",-                                     -5.0084105990741445),-                                    ("<ordinal> <cycle> of <time>year", -5.413875707182309),-                                    ("minuteday", -2.0126783255201537),+                                     -5.0238805208462765),+                                    ("<ordinal> <cycle> of <time>year", -5.429345628954441),+                                    ("minuteday", -2.0281482472922856),                                     ("absorption of , after named dayintersect",-                                     -5.413875707182309),-                                    ("Octoberyear", -4.161112738686941),+                                     -5.429345628954441),+                                    ("Octoberyear", -4.176582660459073),                                     ("the <day-of-month> (ordinal)in|during the <part-of-day>",-                                     -5.413875707182309),+                                     -5.429345628954441),                                     ("at <time-of-day>absorption of , after named day",-                                     -5.413875707182309),+                                     -5.429345628954441),                                     ("<day-of-month> (ordinal or number) <named-month>year",-                                     -5.413875707182309),-                                    ("year<time-of-day> am|pm", -5.413875707182309),-                                    ("Septemberyear", -5.0084105990741445),-                                    ("at <time-of-day>on <date>", -4.315263418514199),+                                     -5.429345628954441),+                                    ("year<time-of-day> am|pm", -5.429345628954441),+                                    ("Septemberyear", -5.0238805208462765),+                                    ("at <time-of-day>on <date>", -4.330733340286331),                                     ("between <time-of-day> and <time-of-day> (interval)on <date>",-                                     -4.720728526622364),-                                    ("Halloweenyear", -5.413875707182309),-                                    ("dayweek", -5.413875707182309),-                                    ("weekyear", -5.0084105990741445),-                                    ("hh:mmin|during the <part-of-day>", -4.720728526622364),-                                    ("Father's Dayyear", -5.413875707182309),+                                     -4.736198448394496),+                                    ("Halloweenyear", -5.429345628954441),+                                    ("dayweek", -5.429345628954441),+                                    ("weekyear", -5.0238805208462765),+                                    ("hh:mmin|during the <part-of-day>", -4.736198448394496),+                                    ("Father's Dayyear", -5.429345628954441),                                     ("<cycle> after|before <time><time-of-day> am|pm",-                                     -5.0084105990741445),-                                    ("February<time> <part-of-day>", -5.413875707182309),-                                    ("Martin Luther King's Dayyear", -5.0084105990741445),-                                    ("tomorrowat <time-of-day>", -4.720728526622364),-                                    ("between <time> and <time>on <date>", -4.720728526622364),-                                    ("at <time-of-day>tomorrow", -5.0084105990741445),-                                    ("tomorrow<time-of-day> am|pm", -5.413875707182309),+                                     -5.0238805208462765),+                                    ("February<time> <part-of-day>", -5.429345628954441),+                                    ("Martin Luther King's Dayyear", -5.0238805208462765),+                                    ("tomorrowat <time-of-day>", -4.736198448394496),+                                    ("between <time> and <time>on <date>", -4.736198448394496),+                                    ("at <time-of-day>tomorrow", -5.0238805208462765),+                                    ("tomorrow<time-of-day> am|pm", -5.429345628954441),                                     ("in|during the <part-of-day>at <time-of-day>",-                                     -5.413875707182309),-                                    ("Labor Dayyear", -5.413875707182309),-                                    ("Februaryintersect", -5.413875707182309),-                                    ("last <cycle> of <time>year", -4.720728526622364),+                                     -5.429345628954441),+                                    ("Labor Dayyear", -5.429345628954441),+                                    ("Februaryintersect", -5.429345628954441),+                                    ("last <cycle> of <time>year", -4.736198448394496),                                     ("<named-month> <day-of-month> (non ordinal)year",-                                     -5.413875707182309),-                                    ("yearminute", -5.413875707182309)],-                               n = 165},+                                     -5.429345628954441),+                                    ("yearminute", -5.429345628954441)],+                               n = 166},                    koData =-                     ClassData{prior = -1.0272875078461794, unseen = -5.717027701406222,+                     ClassData{prior = -1.0039963122932607, unseen = -5.75890177387728,                                likelihoods =                                  HashMap.fromList-                                   [("in <named-month>year", -5.020585624949423),+                                   [("in <named-month>year", -5.062595033026967),                                     ("<time-of-day> - <time-of-day> (interval)on <date>",-                                     -5.020585624949423),-                                    ("hourday", -5.020585624949423),+                                     -5.062595033026967),+                                    ("hourday", -5.062595033026967),                                     ("<named-month> <day-of-month> (non ordinal)July",-                                     -5.020585624949423),-                                    ("dayhour", -3.228826155721369),-                                    ("daymonth", -3.005682604407159),-                                    ("monthday", -4.61512051684126),-                                    ("monthyear", -4.61512051684126),-                                    ("intersecthh:mm", -5.020585624949423),-                                    ("until <time-of-day><time-of-day> am|pm", -5.020585624949423),+                                     -5.062595033026967),+                                    ("dayhour", -3.270835563798912),+                                    ("daymonth", -3.047692012484702),+                                    ("monthday", -4.657129924918802),+                                    ("monthyear", -4.3694478524670215),+                                    ("intersecthh:mm", -5.062595033026967),+                                    ("houryear", -5.062595033026967),+                                    ("until <time-of-day><time-of-day> am|pm", -5.062595033026967),                                     ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",-                                     -4.327438444389479),-                                    ("<time-of-day> am|pmintersect", -3.767822656454056),+                                     -4.3694478524670215),+                                    ("<time-of-day> am|pmintersect", -3.809832064531599),                                     ("intersect by \",\", \"of\", \"from\", \"'s\"year",-                                     -4.327438444389479),-                                    ("Tuesdayafter <time-of-day>", -5.020585624949423),+                                     -4.146304301152812),+                                    ("Tuesdayafter <time-of-day>", -5.062595033026967),                                     ("July<day-of-month> (ordinal or number) <named-month>",-                                     -5.020585624949423),-                                    ("absorption of , after named dayJuly", -4.61512051684126),-                                    ("monthhour", -4.61512051684126),-                                    ("todayat <time-of-day>", -5.020585624949423),-                                    ("dayday", -5.020585624949423),-                                    ("mm/ddat <time-of-day>", -4.61512051684126),-                                    ("<time-of-day> am|pmon <date>", -3.767822656454056),-                                    ("dayyear", -4.104294893075269),-                                    ("Thursdayat <time-of-day>", -5.020585624949423),-                                    ("August<time-of-day> am|pm", -5.020585624949423),-                                    ("monthminute", -5.020585624949423),-                                    ("<time-of-day> am|pmtomorrow", -5.020585624949423),-                                    ("Thursdayhh:mm", -5.020585624949423),+                                     -5.062595033026967),+                                    ("absorption of , after named dayJuly", -4.657129924918802),+                                    ("monthhour", -4.657129924918802),+                                    ("hourmonth", -5.062595033026967),+                                    ("todayat <time-of-day>", -5.062595033026967),+                                    ("dayday", -4.657129924918802),+                                    ("mm/ddat <time-of-day>", -4.657129924918802),+                                    ("<time-of-day> am|pmon <date>", -3.809832064531599),+                                    ("dayyear", -4.146304301152812),+                                    ("Thursdaymm/dd", -5.062595033026967),+                                    ("Thursdayat <time-of-day>", -5.062595033026967),+                                    ("August<time-of-day> am|pm", -5.062595033026967),+                                    ("monthminute", -5.062595033026967),+                                    ("<time-of-day> am|pmtomorrow", -5.062595033026967),+                                    ("Thursdayhh:mm", -5.062595033026967),                                     ("August<day-of-month> (ordinal or number) <named-month>",-                                     -5.020585624949423),-                                    ("minutemonth", -3.5165082281731497),+                                     -5.062595033026967),+                                    ("minutemonth", -3.5585176362506927),                                     ("Thursdayfrom <datetime> - <datetime> (interval)",-                                     -4.61512051684126),+                                     -4.657129924918802),                                     ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",-                                     -4.61512051684126),-                                    ("Aprilyear", -5.020585624949423),+                                     -4.657129924918802),+                                    ("Aprilyear", -5.062595033026967),                                     ("mm/dd<time-of-day> - <time-of-day> (interval)",-                                     -4.61512051684126),+                                     -4.657129924918802),                                     ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",-                                     -5.020585624949423),-                                    ("yesterday<time-of-day> am|pm", -5.020585624949423),+                                     -5.062595033026967),+                                    ("yesterday<time-of-day> am|pm", -5.062595033026967),                                     ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",-                                     -4.104294893075269),+                                     -4.146304301152812),                                     ("<named-month> <day-of-month> (non ordinal)August",-                                     -5.020585624949423),-                                    ("until <time-of-day>on <date>", -4.327438444389479),-                                    ("at <time-of-day>intersect", -4.61512051684126),+                                     -5.062595033026967),+                                    ("until <time-of-day>on <date>", -4.3694478524670215),+                                    ("at <time-of-day>intersect", -4.657129924918802),                                     ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",-                                     -5.020585624949423),-                                    ("dayminute", -3.0746754758941104),-                                    ("intersectSeptember", -3.5165082281731497),+                                     -5.062595033026967),+                                    ("dayminute", -3.1166848839716534),+                                    ("intersectSeptember", -3.5585176362506927),                                     ("absorption of , after named dayintersect by \",\", \"of\", \"from\", \"'s\"",-                                     -5.020585624949423),-                                    ("minuteday", -2.217225244042889),+                                     -5.062595033026967),+                                    ("minuteday", -2.259234652120432),                                     ("absorption of , after named dayintersect",-                                     -5.020585624949423),-                                    ("Februaryin|during the <part-of-day>", -5.020585624949423),-                                    ("yearhh:mm", -5.020585624949423),-                                    ("hh:mmon <date>", -3.5165082281731497),+                                     -5.062595033026967),+                                    ("Februaryin|during the <part-of-day>", -5.062595033026967),+                                    ("week-endin <named-month>", -5.062595033026967),+                                    ("Octoberyear", -5.062595033026967),+                                    ("yearhh:mm", -5.062595033026967),+                                    ("hh:mmon <date>", -3.5585176362506927),                                     ("absorption of , after named daySeptember",-                                     -4.104294893075269),-                                    ("on <date>September", -4.61512051684126),-                                    ("at <time-of-day>on <date>", -4.61512051684126),-                                    ("absorption of , after named dayFebruary", -4.104294893075269),+                                     -4.146304301152812),+                                    ("on <date>September", -4.657129924918802),+                                    ("at <time-of-day>on <date>", -4.657129924918802),+                                    ("absorption of , after named dayFebruary", -4.146304301152812),                                     ("July<integer> to|till|before <hour-of-day>",-                                     -5.020585624949423),-                                    ("tomorrowat <time-of-day>", -5.020585624949423),-                                    ("tomorrow<time-of-day> am|pm", -5.020585624949423),-                                    ("after <time-of-day><time-of-day> am|pm", -5.020585624949423),-                                    ("after <time-of-day>year", -5.020585624949423),-                                    ("yearminute", -5.020585624949423)],-                               n = 92}}),+                                     -5.062595033026967),+                                    ("tomorrowat <time-of-day>", -5.062595033026967),+                                    ("tomorrow<time-of-day> am|pm", -5.062595033026967),+                                    ("after <time-of-day><time-of-day> am|pm", -5.062595033026967),+                                    ("after <time-of-day>year", -5.062595033026967),+                                    ("yearminute", -5.062595033026967)],+                               n = 96}}),        ("after lunch/work/school",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -1.3862943611198906,@@ -726,15 +752,14 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("in <number> (implicit minutes)",         Classifier{okData =-                     ClassData{prior = -1.3217558399823195,-                               unseen = -2.3978952727983707,+                     ClassData{prior = -1.041453874828161, unseen = -2.70805020110221,                                likelihoods =                                  HashMap.fromList-                                   [("integer (numeric)", -0.2231435513142097),-                                    ("integer (0..19)", -1.6094379124341003)],-                               n = 8},+                                   [("integer (numeric)", -0.5596157879354228),+                                    ("integer (0..19)", -0.8472978603872037)],+                               n = 12},                    koData =-                     ClassData{prior = -0.3101549283038396,+                     ClassData{prior = -0.4353180712578455,                                unseen = -3.2188758248682006,                                likelihoods =                                  HashMap.fromList@@ -769,32 +794,33 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("from <datetime> - <datetime> (interval)",         Classifier{okData =-                     ClassData{prior = -0.8472978603872037,-                               unseen = -3.1354942159291497,+                     ClassData{prior = -0.916290731874155, unseen = -3.2188758248682006,                                likelihoods =                                  HashMap.fromList-                                   [("minuteminute", -1.4816045409242156),-                                    ("hh:mmhh:mm", -1.4816045409242156),+                                   [("minuteminute", -1.5686159179138452),+                                    ("hh:mmhh:mm", -1.5686159179138452),                                     ("<time-of-day> am|pmtime-of-day (latent)",-                                     -2.3978952727983707),-                                    ("hourhour", -1.9924301646902063),+                                     -2.4849066497880004),+                                    ("hourhour", -2.0794415416798357),                                     ("<time-of-day> am|pm<time-of-day> am|pm",-                                     -2.3978952727983707)],+                                     -2.4849066497880004)],                                n = 6},                    koData =-                     ClassData{prior = -0.5596157879354228, unseen = -3.295836866004329,+                     ClassData{prior = -0.5108256237659907,+                               unseen = -3.4339872044851463,                                likelihoods =                                  HashMap.fromList-                                   [("hh:mmtime-of-day (latent)", -1.6486586255873816),-                                    ("minuteminute", -2.159484249353372),-                                    ("time-of-day (latent)time-of-day (latent)",-                                     -2.5649493574615367),-                                    ("hourhour", -2.159484249353372),-                                    ("minutehour", -1.6486586255873816),-                                    ("hh:mmintersect", -2.159484249353372),-                                    ("time-of-day (latent)<time-of-day> am|pm",-                                     -2.5649493574615367)],-                               n = 8}}),+                                   [("dayhour", -2.70805020110221),+                                    ("hh:mmtime-of-day (latent)", -1.791759469228055),+                                    ("minuteminute", -2.3025850929940455),+                                    ("time-of-day (latent)time-of-day (latent)", -2.70805020110221),+                                    ("hourhour", -2.3025850929940455),+                                    ("minutehour", -1.791759469228055),+                                    ("hh:mmintersect", -2.3025850929940455),+                                    ("time-of-day (latent)<time-of-day> am|pm", -2.70805020110221),+                                    ("<named-month> <day-of-month> (non ordinal)time-of-day (latent)",+                                     -2.70805020110221)],+                               n = 9}}),        ("Saturday",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.0794415416798357,@@ -1003,13 +1029,13 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("week (grain)",         Classifier{okData =-                     ClassData{prior = -2.7398974188114388e-2,+                     ClassData{prior = -8.004270767353637e-2,                                unseen = -3.6375861597263857,                                likelihoods = HashMap.fromList [("", 0.0)], n = 36},                    koData =-                     ClassData{prior = -3.6109179126442243,-                               unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),+                     ClassData{prior = -2.5649493574615367,+                               unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),        ("<part-of-day> of <time>",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.3978952727983707,@@ -1119,7 +1145,7 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("this|last|next <cycle>",         Classifier{okData =-                     ClassData{prior = -0.11122563511022437,+                     ClassData{prior = -0.16251892949777494,                                unseen = -4.3694478524670215,                                likelihoods =                                  HashMap.fromList@@ -1132,15 +1158,15 @@                                     ("quarter (grain)", -2.7472709142554916)],                                n = 34},                    koData =-                     ClassData{prior = -2.2512917986064953,-                               unseen = -2.9444389791664407,+                     ClassData{prior = -1.8971199848858813,+                               unseen = -3.1354942159291497,                                likelihoods =                                  HashMap.fromList-                                   [("week", -1.791759469228055),-                                    ("week (grain)", -1.791759469228055),-                                    ("day", -1.791759469228055),-                                    ("day (grain)", -1.791759469228055)],-                               n = 4}}),+                                   [("week", -1.4816045409242156),+                                    ("week (grain)", -1.4816045409242156),+                                    ("day", -1.9924301646902063),+                                    ("day (grain)", -1.9924301646902063)],+                               n = 6}}),        ("Mother's Day",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -1.791759469228055,@@ -1204,6 +1230,17 @@                                likelihoods =                                  HashMap.fromList [("ordinal (digits)", -0.2876820724517809)],                                n = 2}}),+       ("last weekend of <named-month>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.639057329615259,+                               likelihoods =+                                 HashMap.fromList+                                   [("October", -0.9555114450274363), ("July", -1.8718021769015913),+                                    ("month", -0.7731898882334817)],+                               n = 5},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [], n = 0}}),        ("the <day-of-month> (number)",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -1.0986122886681098,@@ -1217,8 +1254,8 @@                      ClassData{prior = -infinity, unseen = -0.6931471805599453,                                likelihoods = HashMap.fromList [], n = 0},                    koData =-                     ClassData{prior = 0.0, unseen = -2.890371757896165,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 16}}),+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 17}}),        ("Sunday",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.3025850929940455,@@ -1235,8 +1272,8 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("minute (grain)",         Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.5649493574615367,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},+                     ClassData{prior = 0.0, unseen = -2.833213344056216,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 15},                    koData =                      ClassData{prior = -infinity, unseen = -0.6931471805599453,                                likelihoods = HashMap.fromList [], n = 0}}),@@ -1259,30 +1296,28 @@                                n = 1}}),        ("time-of-day (latent)",         Classifier{okData =-                     ClassData{prior = -0.6330432564902398, unseen = -4.143134726391533,+                     ClassData{prior = -0.5108256237659907, unseen = -4.143134726391533,                                likelihoods =                                  HashMap.fromList                                    [("integer (numeric)", -0.10178269430994236),                                     ("integer (0..19)", -2.3353749158170367)],                                n = 60},                    koData =-                     ClassData{prior = -0.7570959051602187, unseen = -4.02535169073515,+                     ClassData{prior = -0.916290731874155, unseen = -3.7612001156935624,                                likelihoods =-                                 HashMap.fromList-                                   [("integer (numeric)", -0.15718558352241238),-                                    ("integer (0..19)", -1.927891643552635)],-                               n = 53}}),+                                 HashMap.fromList [("integer (numeric)", -2.409755157906053e-2)],+                               n = 40}}),        ("year",         Classifier{okData =-                     ClassData{prior = -0.2231435513142097,-                               unseen = -3.4011973816621555,+                     ClassData{prior = -0.24362208265775043,+                               unseen = -3.4339872044851463,                                likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 28},+                               n = 29},                    koData =-                     ClassData{prior = -1.6094379124341003,-                               unseen = -2.1972245773362196,+                     ClassData{prior = -1.5314763709643884,+                               unseen = -2.3025850929940455,                                likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 7}}),+                               n = 8}}),        ("last <day-of-week> of <time>",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.3978952727983707,@@ -1298,28 +1333,28 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("<integer> <unit-of-duration>",         Classifier{okData =-                     ClassData{prior = -0.8209805520698302, unseen = -4.499809670330265,+                     ClassData{prior = -0.758529939822797, unseen = -4.584967478670572,                                likelihoods =                                  HashMap.fromList-                                   [("week", -2.2914117923959205),-                                    ("integer (0..19)year (grain)", -3.1023420086122493),-                                    ("integer (numeric)day (grain)", -2.5427262206768266),-                                    ("integer (0..19)second (grain) ", -3.7954891891721947),-                                    ("integer (0..19)hour (grain)", -2.6968769005040847),-                                    ("second", -3.7954891891721947),-                                    ("integer (numeric)year (grain)", -3.7954891891721947),-                                    ("day", -2.5427262206768266), ("year", -2.8791984572980396),-                                    ("integer (numeric)week (grain)", -2.8791984572980396),-                                    ("integer (0..19)month (grain)", -3.39002408106403),-                                    ("hour", -2.409194828052304), ("month", -3.39002408106403),-                                    ("integer (numeric)minute (grain)", -2.8791984572980396),-                                    ("integer (0..19)minute (grain)", -3.7954891891721947),-                                    ("minute", -2.6968769005040847),-                                    ("integer (numeric)hour (grain)", -3.39002408106403),-                                    ("integer (0..19)week (grain)", -2.8791984572980396)],-                               n = 33},+                                   [("week", -2.3774864011671633),+                                    ("integer (0..19)year (grain)", -3.188416617383492),+                                    ("integer (numeric)day (grain)", -2.62880082944807),+                                    ("integer (0..19)second (grain) ", -3.8815637979434374),+                                    ("integer (0..19)hour (grain)", -2.782951509275328),+                                    ("second", -3.8815637979434374),+                                    ("integer (numeric)year (grain)", -3.8815637979434374),+                                    ("day", -2.62880082944807), ("year", -2.9652730660692823),+                                    ("integer (numeric)week (grain)", -2.9652730660692823),+                                    ("integer (0..19)month (grain)", -3.4760986898352733),+                                    ("hour", -2.495269436823547), ("month", -3.4760986898352733),+                                    ("integer (numeric)minute (grain)", -2.9652730660692823),+                                    ("integer (0..19)minute (grain)", -2.782951509275328),+                                    ("minute", -2.2721258855093374),+                                    ("integer (numeric)hour (grain)", -3.4760986898352733),+                                    ("integer (0..19)week (grain)", -2.9652730660692823)],+                               n = 37},                    koData =-                     ClassData{prior = -0.579818495252942, unseen = -4.68213122712422,+                     ClassData{prior = -0.6317782341836533, unseen = -4.68213122712422,                                likelihoods =                                  HashMap.fromList                                    [("week", -2.8810693652338513),@@ -1480,134 +1515,137 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("about|exactly <time-of-day>",         Classifier{okData =-                     ClassData{prior = -0.11778303565638351,-                               unseen = -3.332204510175204,+                     ClassData{prior = -0.2231435513142097, unseen = -3.367295829986474,                                likelihoods =                                  HashMap.fromList-                                   [("week", -2.6026896854443837),-                                    ("hh(:mm) - <time-of-day> am|pm", -2.6026896854443837),-                                    ("this|last|next <cycle>", -2.6026896854443837),-                                    ("day", -2.1972245773362196),-                                    ("time-of-day (latent)", -2.6026896854443837),-                                    ("hhmm (latent)", -2.1972245773362196),-                                    ("<time-of-day> am|pm", -2.6026896854443837),-                                    ("hour", -1.9095425048844386),-                                    ("next <time>", -2.6026896854443837),-                                    ("this|next <day-of-week>", -2.6026896854443837),-                                    ("minute", -2.1972245773362196)],+                                   [("week", -2.639057329615259),+                                    ("hh(:mm) - <time-of-day> am|pm", -2.639057329615259),+                                    ("this|last|next <cycle>", -2.639057329615259),+                                    ("day", -2.2335922215070942),+                                    ("time-of-day (latent)", -2.639057329615259),+                                    ("hhmm (latent)", -2.2335922215070942),+                                    ("<time-of-day> am|pm", -2.639057329615259),+                                    ("hour", -1.9459101490553135),+                                    ("next <time>", -2.639057329615259),+                                    ("this|next <day-of-week>", -2.639057329615259),+                                    ("minute", -2.2335922215070942)],                                n = 8},                    koData =-                     ClassData{prior = -2.1972245773362196, unseen = -2.639057329615259,+                     ClassData{prior = -1.6094379124341003, unseen = -2.833213344056216,                                likelihoods =                                  HashMap.fromList-                                   [("time-of-day (latent)", -1.8718021769015913),-                                    ("hour", -1.8718021769015913)],-                               n = 1}}),+                                   [("mm/dd", -2.0794415416798357), ("day", -2.0794415416798357),+                                    ("time-of-day (latent)", -2.0794415416798357),+                                    ("hour", -2.0794415416798357)],+                               n = 2}}),        ("intersect by \",\", \"of\", \"from\", \"'s\"",         Classifier{okData =-                     ClassData{prior = -0.41773520069997866,-                               unseen = -5.1298987149230735,+                     ClassData{prior = -0.4769240720903093, unseen = -5.147494476813453,                                likelihoods =                                  HashMap.fromList                                    [("Wednesday<named-month> <day-of-month> (non ordinal)",-                                     -4.430816798843313),-                                    ("dayhour", -3.1780538303479458),-                                    ("daymonth", -3.1780538303479458),+                                     -4.448516375942715),+                                    ("dayhour", -3.1957534074473464),+                                    ("daymonth", -3.1957534074473464),                                     ("<named-month> <day-of-month> (non ordinal)Friday",-                                     -4.430816798843313),+                                     -4.448516375942715),                                     ("Friday<named-month> <day-of-month> (non ordinal)",-                                     -3.7376696182833684),-                                    ("Wednesdayintersect", -4.430816798843313),-                                    ("Labor Daythis|last|next <cycle>", -4.430816798843313),+                                     -3.7553691953827695),+                                    ("Wednesdayintersect", -4.448516375942715),+                                    ("Labor Daythis|last|next <cycle>", -4.448516375942715),                                     ("intersect by \",\", \"of\", \"from\", \"'s\"year",-                                     -4.430816798843313),-                                    ("<part-of-day> of <time>February", -4.430816798843313),-                                    ("Saturday<time-of-day> am|pm", -4.430816798843313),+                                     -4.448516375942715),+                                    ("<part-of-day> of <time>February", -4.448516375942715),+                                    ("Saturday<time-of-day> am|pm", -4.448516375942715),                                     ("Martin Luther King's Daythis|last|next <cycle>",-                                     -4.430816798843313),-                                    ("on <date><time-of-day> am|pm", -4.430816798843313),-                                    ("hourmonth", -4.430816798843313),+                                     -4.448516375942715),+                                    ("on <date><time-of-day> am|pm", -4.448516375942715),+                                    ("hourmonth", -4.448516375942715),                                     ("intersect by \",\", \"of\", \"from\", \"'s\"intersect",-                                     -4.430816798843313),-                                    ("dayday", -2.559014621941722),-                                    ("the <day-of-month> (ordinal)February", -4.02535169073515),-                                    ("WednesdayOctober", -4.430816798843313),-                                    ("Wednesdaythis|last|next <cycle>", -4.02535169073515),+                                     -4.448516375942715),+                                    ("dayday", -2.576714199041123),+                                    ("the <day-of-month> (ordinal)February", -4.04305126783455),+                                    ("WednesdayOctober", -4.448516375942715),+                                    ("Wednesdaythis|last|next <cycle>", -4.04305126783455),                                     ("intersect<named-month> <day-of-month> (non ordinal)",-                                     -3.5145260669691587),-                                    ("dayyear", -2.9267394020670396),+                                     -3.5322256440685593),+                                    ("dayyear", -2.9444389791664407),                                     ("Saturday<named-month> <day-of-month> (non ordinal)",-                                     -4.430816798843313),+                                     -4.448516375942715),                                     ("<named-month> <day-of-month> (non ordinal)intersect",-                                     -4.430816798843313),-                                    ("Thursdayhh:mm", -4.02535169073515),-                                    ("Thanksgiving Daythis|last|next <cycle>", -4.430816798843313),-                                    ("Memorial Daythis|last|next <cycle>", -4.430816798843313),+                                     -4.448516375942715),+                                    ("Thursdayhh:mm", -4.04305126783455),+                                    ("Thanksgiving Daythis|last|next <cycle>", -4.448516375942715),+                                    ("Memorial Daythis|last|next <cycle>", -4.448516375942715),                                     ("on <date><named-month> <day-of-month> (non ordinal)",-                                     -4.02535169073515),-                                    ("TuesdayOctober", -4.430816798843313),-                                    ("the <day-of-month> (ordinal)March", -4.430816798843313),-                                    ("Mondaythis|last|next <cycle>", -4.430816798843313),+                                     -4.04305126783455),+                                    ("TuesdayOctober", -4.448516375942715),+                                    ("the <day-of-month> (ordinal)March", -4.448516375942715),+                                    ("Mondaythis|last|next <cycle>", -4.448516375942715),                                     ("Fridayintersect by \",\", \"of\", \"from\", \"'s\"",-                                     -4.02535169073515),-                                    ("Fridayintersect", -4.430816798843313),+                                     -4.04305126783455),+                                    ("Fridayintersect", -4.448516375942715),                                     ("Thursday<datetime> - <datetime> (interval)",-                                     -3.7376696182833684),+                                     -3.7553691953827695),                                     ("Thursday<time-of-day> - <time-of-day> (interval)",-                                     -3.5145260669691587),-                                    ("Tuesdaythis|last|next <cycle>", -4.430816798843313),+                                     -3.5322256440685593),+                                    ("Tuesdaythis|last|next <cycle>", -4.448516375942715),                                     ("Sunday<named-month> <day-of-month> (non ordinal)",-                                     -4.430816798843313),-                                    ("dayminute", -2.639057329615259),-                                    ("intersectyear", -4.430816798843313),-                                    ("minuteday", -3.5145260669691587),-                                    ("this|last|next <cycle>Sunday", -4.430816798843313),-                                    ("Sundaythis|last|next <cycle>", -4.430816798843313),-                                    ("intersectintersect", -4.430816798843313),-                                    ("weekday", -4.430816798843313),-                                    ("dayweek", -3.332204510175204),-                                    ("Thursday<time-of-day> am|pm", -4.430816798843313),+                                     -4.448516375942715),+                                    ("dayminute", -2.6567569067146595),+                                    ("intersectyear", -4.448516375942715),+                                    ("minuteday", -3.5322256440685593),+                                    ("this|last|next <cycle>Sunday", -4.448516375942715),+                                    ("Sundaythis|last|next <cycle>", -4.448516375942715),+                                    ("intersectintersect", -4.448516375942715),+                                    ("weekday", -4.448516375942715),+                                    ("dayweek", -3.349904087274605),+                                    ("Thursday<time-of-day> am|pm", -4.448516375942715),                                     ("Monday<named-month> <day-of-month> (non ordinal)",-                                     -4.02535169073515),+                                     -4.04305126783455),                                     ("<named-month> <day-of-month> (non ordinal)year",-                                     -4.02535169073515)],+                                     -4.04305126783455)],                                n = 54},                    koData =-                     ClassData{prior = -1.074514737089049, unseen = -4.762173934797756,+                     ClassData{prior = -0.9694005571881036, unseen = -4.867534450455582,                                likelihoods =                                  HashMap.fromList-                                   [("daymonth", -1.8632184332102),-                                    ("TuesdaySeptember", -4.060443010546419),-                                    ("Wednesdayintersect", -4.060443010546419),+                                   [("week-endJuly", -4.1666652238017265),+                                    ("week-endOctober", -3.4735180432417816),+                                    ("daymonth", -1.9694406464655074),+                                    ("TuesdaySeptember", -4.1666652238017265),+                                    ("Wednesdayintersect", -4.1666652238017265),+                                    ("hourmonth", -3.068052935133617),                                     ("intersect by \",\", \"of\", \"from\", \"'s\"intersect",-                                     -4.060443010546419),-                                    ("SundayFebruary", -4.060443010546419),-                                    ("WednesdayOctober", -4.060443010546419),-                                    ("FridayJuly", -3.654977902438255),+                                     -4.1666652238017265),+                                    ("SundayFebruary", -4.1666652238017265),+                                    ("WednesdayOctober", -4.1666652238017265),+                                    ("week-endintersect", -4.1666652238017265),+                                    ("FridayJuly", -3.7612001156935624),                                     ("<named-month> <day-of-month> (non ordinal)intersect",-                                     -4.060443010546419),-                                    ("FridaySeptember", -4.060443010546419),-                                    ("WednesdayFebruary", -4.060443010546419),-                                    ("minutemonth", -3.144152278672264),-                                    ("SundayMarch", -4.060443010546419),+                                     -4.1666652238017265),+                                    ("FridaySeptember", -4.1666652238017265),+                                    ("WednesdayFebruary", -4.1666652238017265),+                                    ("minutemonth", -3.250374491927572),+                                    ("SundayMarch", -4.1666652238017265),                                     ("Fridayintersect by \",\", \"of\", \"from\", \"'s\"",-                                     -4.060443010546419),-                                    ("MondayFebruary", -3.654977902438255),-                                    ("Fridayintersect", -4.060443010546419),+                                     -4.1666652238017265),+                                    ("MondayFebruary", -3.7612001156935624),+                                    ("Fridayintersect", -4.1666652238017265),                                     ("Thursday<time-of-day> - <time-of-day> (interval)",-                                     -3.654977902438255),-                                    ("dayminute", -2.6741486494265287),-                                    ("SaturdaySeptember", -4.060443010546419),-                                    ("intersectSeptember", -3.144152278672264),-                                    ("MondayMarch", -4.060443010546419),-                                    ("on <date>September", -3.654977902438255),-                                    ("intersectintersect", -4.060443010546419),-                                    ("Tuesdayintersect", -4.060443010546419),-                                    ("Sundayintersect", -4.060443010546419)],-                               n = 28}}),+                                     -3.7612001156935624),+                                    ("dayminute", -2.780370862681836),+                                    ("SaturdaySeptember", -4.1666652238017265),+                                    ("intersectSeptember", -3.250374491927572),+                                    ("MondayMarch", -4.1666652238017265),+                                    ("on <date>September", -3.7612001156935624),+                                    ("intersectintersect", -4.1666652238017265),+                                    ("Tuesdayintersect", -4.1666652238017265),+                                    ("Sundayintersect", -4.1666652238017265)],+                               n = 33}}),        ("last <time>",         Classifier{okData =-                     ClassData{prior = -1.2729656758128873, unseen = -3.295836866004329,+                     ClassData{prior = -1.0986122886681098, unseen = -3.295836866004329,                                likelihoods =                                  HashMap.fromList                                    [("Father's Day", -2.5649493574615367),@@ -1619,16 +1657,18 @@                                     ("week-end", -2.5649493574615367)],                                n = 7},                    koData =-                     ClassData{prior = -0.3285040669720361, unseen = -3.891820298110627,+                     ClassData{prior = -0.40546510810816444,+                               unseen = -3.713572066704308,                                likelihoods =                                  HashMap.fromList-                                   [("Monday", -3.1780538303479458), ("day", -2.2617630984737906),-                                    ("Sunday", -3.1780538303479458),-                                    ("time-of-day (latent)", -1.1631508098056809),+                                   [("intersect", -2.995732273553991),+                                    ("Monday", -2.995732273553991), ("day", -2.0794415416798357),+                                    ("Sunday", -2.995732273553991),                                     ("intersect by \",\", \"of\", \"from\", \"'s\"",-                                     -2.772588722239781),-                                    ("hour", -1.1631508098056809)],-                               n = 18}}),+                                     -1.742969305058623),+                                    ("hour", -1.2909841813155656),+                                    ("week-end", -1.8971199848858813)],+                               n = 14}}),        ("March",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.9444389791664407,@@ -1771,9 +1811,9 @@                      ClassData{prior = -infinity, unseen = -0.6931471805599453,                                likelihoods = HashMap.fromList [], n = 0},                    koData =-                     ClassData{prior = 0.0, unseen = -2.995732273553991,+                     ClassData{prior = 0.0, unseen = -3.1354942159291497,                                likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 18}}),+                               n = 21}}),        ("about|exactly <duration>",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -1.6094379124341003,@@ -1886,7 +1926,7 @@                                likelihoods = HashMap.fromList [], n = 0}}),        ("in <named-month>",         Classifier{okData =-                     ClassData{prior = -0.40546510810816444,+                     ClassData{prior = -0.6931471805599453,                                unseen = -2.0794415416798357,                                likelihoods =                                  HashMap.fromList@@ -1894,11 +1934,13 @@                                     ("month", -0.8472978603872037)],                                n = 2},                    koData =-                     ClassData{prior = -1.0986122886681098, unseen = -1.791759469228055,+                     ClassData{prior = -0.6931471805599453,+                               unseen = -2.0794415416798357,                                likelihoods =                                  HashMap.fromList-                                   [("October", -0.916290731874155), ("month", -0.916290731874155)],-                               n = 1}}),+                                   [("October", -0.8472978603872037),+                                    ("month", -0.8472978603872037)],+                               n = 2}}),        ("<time-of-day> - <time-of-day> (interval)",         Classifier{okData =                      ClassData{prior = -0.8873031950009028,@@ -1950,7 +1992,7 @@                                n = 1}}),        ("<named-month> <day-of-month> (non ordinal)",         Classifier{okData =-                     ClassData{prior = -0.25131442828090605,+                     ClassData{prior = -0.2876820724517809,                                unseen = -3.9318256327243257,                                likelihoods =                                  HashMap.fromList@@ -1964,14 +2006,15 @@                                     ("Julyinteger (numeric)", -2.120263536200091)],                                n = 21},                    koData =-                     ClassData{prior = -1.5040773967762742, unseen = -3.044522437723423,+                     ClassData{prior = -1.3862943611198906,+                               unseen = -3.1354942159291497,                                likelihoods =                                  HashMap.fromList-                                   [("Marchinteger (numeric)", -2.3025850929940455),-                                    ("Aprilinteger (numeric)", -2.3025850929940455),-                                    ("month", -1.0498221244986778),-                                    ("Julyinteger (numeric)", -1.3862943611198906)],-                               n = 6}}),+                                   [("Marchinteger (numeric)", -2.3978952727983707),+                                    ("Aprilinteger (numeric)", -2.3978952727983707),+                                    ("month", -1.0116009116784799),+                                    ("Julyinteger (numeric)", -1.2992829841302609)],+                               n = 7}}),        ("this|next <day-of-week>",         Classifier{okData =                      ClassData{prior = 0.0, unseen = -2.995732273553991,@@ -2043,13 +2086,13 @@                                likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),        ("week-end",         Classifier{okData =-                     ClassData{prior = -0.6931471805599453,+                     ClassData{prior = -1.5040773967762742,                                unseen = -1.3862943611198906,                                likelihoods = HashMap.fromList [("", 0.0)], n = 2},                    koData =-                     ClassData{prior = -0.6931471805599453,-                               unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),+                     ClassData{prior = -0.25131442828090605,+                               unseen = -2.1972245773362196,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7}}),        ("after <time-of-day>",         Classifier{okData =                      ClassData{prior = -1.6094379124341003,@@ -2099,11 +2142,11 @@                                n = 6}}),        ("<month> dd-dd (interval)",         Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,+                     ClassData{prior = 0.0, unseen = -2.5649493574615367,                                likelihoods =                                  HashMap.fromList                                    [("July", -0.6931471805599453), ("month", -0.6931471805599453)],-                               n = 4},+                               n = 5},                    koData =                      ClassData{prior = -infinity, unseen = -1.0986122886681098,                                likelihoods = HashMap.fromList [], n = 0}}),@@ -2118,26 +2161,25 @@                                likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),        ("this <time>",         Classifier{okData =-                     ClassData{prior = -8.701137698962981e-2,-                               unseen = -3.4965075614664802,+                     ClassData{prior = -0.10536051565782628,+                               unseen = -3.332204510175204,                                likelihoods =                                  HashMap.fromList-                                   [("Thursday", -2.772588722239781),-                                    ("Martin Luther King's Day", -2.772588722239781),-                                    ("intersect", -2.772588722239781),-                                    ("Monday", -2.772588722239781), ("day", -1.3862943611198906),-                                    ("Thanksgiving Day", -2.772588722239781),-                                    ("hour", -1.8562979903656263), ("seasons", -2.0794415416798357),-                                    ("week-end", -2.772588722239781),-                                    ("part of days", -2.367123614131617)],-                               n = 11},+                                   [("Thursday", -2.6026896854443837),+                                    ("Martin Luther King's Day", -2.6026896854443837),+                                    ("intersect", -2.6026896854443837),+                                    ("Monday", -2.6026896854443837), ("day", -1.2163953243244932),+                                    ("Thanksgiving Day", -2.6026896854443837),+                                    ("hour", -2.1972245773362196), ("seasons", -1.9095425048844386),+                                    ("week-end", -2.6026896854443837)],+                               n = 9},                    koData =-                     ClassData{prior = -2.4849066497880004,-                               unseen = -2.5649493574615367,+                     ClassData{prior = -2.3025850929940455,+                               unseen = -2.4849066497880004,                                likelihoods =                                  HashMap.fromList-                                   [("hour", -1.791759469228055),-                                    ("part of days", -1.791759469228055)],+                                   [("intersect", -1.7047480922384253),+                                    ("day", -1.7047480922384253)],                                n = 1}}),        ("August",         Classifier{okData =
Duckling/Ranking/Classifiers/FR.hs view
@@ -63,2287 +63,2493 @@                                n = 2}}),        ("du|dans le <part-of-day>",         Classifier{okData =-                     ClassData{prior = -0.2657031657330056, unseen = -4.07753744390572,-                               likelihoods =-                                 HashMap.fromList-                                   [("soir", -2.114532861491106),-                                    ("fin de journ\233e", -3.367295829986474),-                                    ("fin de matin\233e", -3.367295829986474),-                                    ("d\233but de soir\233e", -3.367295829986474),-                                    ("d\233but de matin\233e", -3.367295829986474),-                                    ("apr\232s-midi", -2.9618307218783095),-                                    ("d\233but de journ\233e", -3.367295829986474),-                                    ("matin", -2.114532861491106), ("hour", -0.8823891801984737),-                                    ("fin de soir\233e", -3.367295829986474),-                                    ("fin d'apr\232s-midi", -2.9618307218783095),-                                    ("d\233but d'apr\232s-midi", -3.367295829986474)],-                               n = 23},-                   koData =-                     ClassData{prior = -1.455287232606842, unseen = -3.295836866004329,-                               likelihoods =-                                 HashMap.fromList-                                   [("soir", -2.5649493574615367), ("matin", -1.3121863889661687),-                                    ("hour", -1.1786549963416462)],-                               n = 7}}),-       ("dans <duration>",-        Classifier{okData =-                     ClassData{prior = -8.338160893905101e-2,-                               unseen = -4.04305126783455,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -2.639057329615259),-                                    ("<integer> + '\"", -2.9267394020670396),-                                    ("second", -2.639057329615259), ("day", -2.9267394020670396),-                                    ("year", -2.639057329615259),-                                    ("<integer> <unit-of-duration>", -1.1921383466789333),-                                    ("une <unit-of-duration>", -2.2335922215070942),-                                    ("hour", -2.4159137783010487), ("month", -3.332204510175204),-                                    ("minute", -1.9459101490553135)],-                               n = 23},-                   koData =-                     ClassData{prior = -2.5257286443082556, unseen = -2.70805020110221,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -1.9459101490553135), ("day", -1.9459101490553135),-                                    ("une <unit-of-duration>", -1.540445040947149)],-                               n = 2}}),-       ("<time> timezone",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.3025850929940455,-                               likelihoods =-                                 HashMap.fromList-                                   [("\224|vers <time-of-day>", -1.5040773967762742),-                                    ("hour", -0.8109302162163288),-                                    ("<time-of-day> heures", -1.0986122886681098)],-                               n = 3},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("n <cycle> apr\232s",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,-                               likelihoods =-                                 HashMap.fromList-                                   [("number (0..16)jour (grain)", -0.6931471805599453),-                                    ("day", -0.6931471805599453)],-                               n = 2},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("integer (numeric)",-        Classifier{okData =-                     ClassData{prior = -0.500101660403015, unseen = -5.424950017481403,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 225},-                   koData =-                     ClassData{prior = -0.9325954408990987, unseen = -4.997212273764115,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 146}}),-       ("<named-month>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("apr\232s le travail",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("n prochains <cycle>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -3.5553480614894135,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -2.833213344056216),-                                    ("number (0..16)seconde (grain)", -2.833213344056216),-                                    ("second", -2.4277482359480516),-                                    ("integer (numeric)ann\233e (grain)", -2.833213344056216),-                                    ("integer (numeric)seconde (grain)", -2.833213344056216),-                                    ("number (0..16)minute (grain)", -2.833213344056216),-                                    ("integer (numeric)jour (grain)", -2.833213344056216),-                                    ("day", -2.833213344056216), ("year", -2.833213344056216),-                                    ("hour", -2.833213344056216), ("month", -2.833213344056216),-                                    ("integer (numeric)minute (grain)", -2.833213344056216),-                                    ("integer (numeric)mois (grain)", -2.833213344056216),-                                    ("minute", -2.4277482359480516),-                                    ("integer (numeric)semaine (grain)", -2.833213344056216),-                                    ("integer (numeric)heure (grain)", -2.833213344056216)],-                               n = 9},-                   koData =-                     ClassData{prior = -infinity, unseen = -2.833213344056216,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<day-of-week> <day-of-month> \224 <time-of-day>)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -3.58351893845611,-                               likelihoods =-                                 HashMap.fromList-                                   [("dayhour", -0.7827593392496325),-                                    ("named-dayinteger (numeric)\224|vers <time-of-day>",-                                     -1.6094379124341003),-                                    ("named-daynumber (0..16)<time-of-day> heures",-                                     -2.456735772821304),-                                    ("named-dayinteger (numeric)<time-of-day> heures",-                                     -2.169053700369523),-                                    ("named-daynumber (0..16)\224|vers <time-of-day>",-                                     -1.9459101490553135)],-                               n = 15},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.791759469228055,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("apr\232s le d\233jeuner",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<named-day> en quinze",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.70805020110221,-                               likelihoods =-                                 HashMap.fromList-                                   [("day", -0.6931471805599453),-                                    ("named-day", -0.6931471805599453)],-                               n = 6},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("entre <datetime> et <datetime> (interval)",-        Classifier{okData =-                     ClassData{prior = -0.25131442828090605,-                               unseen = -4.127134385045092,-                               likelihoods =-                                 HashMap.fromList-                                   [("le <time>le <day-of-month> (non ordinal)",-                                     -3.417726683613366),-                                    ("le <time>le <time>", -3.012261575505202),-                                    ("dayday", -1.7129785913749407),-                                    ("hourhour", -3.417726683613366),-                                    ("le <time>intersect", -3.417726683613366),-                                    ("miditime-of-day (latent)", -3.417726683613366),-                                    ("intersectle <day-of-month> (non ordinal)",-                                     -3.417726683613366),-                                    ("minutehour", -1.7129785913749407),-                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",-                                     -3.012261575505202),-                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",-                                     -2.7245795030534206),-                                    ("le <day-of-month> (non ordinal)le <day-of-month> (non ordinal)",-                                     -3.012261575505202),-                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",-                                     -2.7245795030534206),-                                    ("intersectintersect", -3.417726683613366),-                                    ("intersectle <time>", -3.012261575505202),-                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",-                                     -3.012261575505202)],-                               n = 21},-                   koData =-                     ClassData{prior = -1.5040773967762742,-                               unseen = -3.4657359027997265,-                               likelihoods =-                                 HashMap.fromList-                                   [("<hour-of-day> <integer> (as relative minutes)intersect",-                                     -2.740840023925201),-                                    ("dayday", -2.3353749158170367),-                                    ("le <day-of-month> (non ordinal)intersect",-                                     -2.740840023925201),-                                    ("minutehour", -1.824549292051046),-                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",-                                     -2.740840023925201),-                                    ("le <day-of-month> (non ordinal)le <time>",-                                     -2.740840023925201),-                                    ("hh(:|h)mm (time-of-day)intersect", -2.740840023925201),-                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",-                                     -2.740840023925201)],-                               n = 6}}),-       ("soir",-        Classifier{okData =-                     ClassData{prior = -8.701137698962981e-2,-                               unseen = -2.5649493574615367,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},-                   koData =-                     ClassData{prior = -2.4849066497880004,-                               unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),-       ("ann\233e (grain)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("d\233but de semaine",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<hour-of-day> moins <integer> (as relative minutes)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("midinumber (0..16)", -0.6931471805599453),-                                    ("hour", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<named-month|named-day> suivant|d'apr\232s",-        Classifier{okData =-                     ClassData{prior = -0.10178269430994236,-                               unseen = -4.174387269895637,-                               likelihoods =-                                 HashMap.fromList-                                   [("intersect", -2.5494451709255714),-                                    ("en semaine", -1.9616585060234524),-                                    ("intersect by 'de' or ','", -2.5494451709255714),-                                    ("day", -0.7915872533731978),-                                    ("named-day", -2.5494451709255714),-                                    ("le <time>", -1.9616585060234524)],-                               n = 28},-                   koData =-                     ClassData{prior = -2.3353749158170367, unseen = -2.70805020110221,-                               likelihoods =-                                 HashMap.fromList-                                   [("en semaine", -1.9459101490553135),-                                    ("day", -1.540445040947149), ("hour", -1.9459101490553135),-                                    ("<time-of-day> heures", -1.9459101490553135),-                                    ("le <time>", -1.9459101490553135)],-                               n = 3}}),-       ("seconde (grain)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 5},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<hour-of-day> et|pass\233 de <number>",-        Classifier{okData =-                     ClassData{prior = -0.13353139262452263,-                               unseen = -3.0910424533583156,-                               likelihoods =-                                 HashMap.fromList-                                   [("\224|vers <time-of-day>number (20..60)", -2.3513752571634776),-                                    ("<time-of-day> heuresinteger (numeric)", -2.3513752571634776),-                                    ("\224|vers <time-of-day>number (0..16)", -2.3513752571634776),-                                    ("hour", -0.9650808960435872),-                                    ("<time-of-day> heuresnumber (20..60)", -1.9459101490553135),-                                    ("<time-of-day> heuresnumber (0..16)", -1.9459101490553135)],-                               n = 7},-                   koData =-                     ClassData{prior = -2.0794415416798357,-                               unseen = -2.3025850929940455,-                               likelihoods =-                                 HashMap.fromList-                                   [("midiinteger (numeric)", -1.5040773967762742),-                                    ("hour", -1.5040773967762742)],-                               n = 1}}),-       ("<hour-of-day> moins quart",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("midi", -0.6931471805599453), ("hour", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("de <time-of-day> - <time-of-day> (interval)",-        Classifier{okData =-                     ClassData{prior = -0.587786664902119, unseen = -3.8066624897703196,-                               likelihoods =-                                 HashMap.fromList-                                   [("hh(:|h)mm (time-of-day)<hour-of-day> <integer> (as relative minutes)",-                                     -2.6855773452501515),-                                    ("minuteminute", -1.5869650565820417),-                                    ("time-of-day (latent)time-of-day (latent)",-                                     -3.0910424533583156),-                                    ("<time-of-day> heures<time-of-day> heures",-                                     -3.0910424533583156),-                                    ("hh(:|h)mm (time-of-day)hh(:|h)mm (time-of-day)",-                                     -2.6855773452501515),-                                    ("hourhour", -2.3978952727983707),-                                    ("minutehour", -2.174751721484161),-                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",-                                     -2.3978952727983707),-                                    ("<hour-of-day> <integer> (as relative minutes)hh(:|h)mm (time-of-day)",-                                     -2.6855773452501515),-                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",-                                     -3.0910424533583156),-                                    ("<hour-of-day> <integer> (as relative minutes)<hour-of-day> <integer> (as relative minutes)",-                                     -2.6855773452501515),-                                    ("<time-of-day> heurestime-of-day (latent)",-                                     -3.0910424533583156)],-                               n = 15},-                   koData =-                     ClassData{prior = -0.8109302162163288,-                               unseen = -3.6635616461296463,-                               likelihoods =-                                 HashMap.fromList-                                   [("minutehour", -1.072636802264849),-                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",-                                     -2.2512917986064953),-                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",-                                     -2.538973871058276),-                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",-                                     -2.538973871058276),-                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",-                                     -1.845826690498331)],-                               n = 12}}),-       ("<datetime>-dd <month>(interval)",-        Classifier{okData =-                     ClassData{prior = -1.466337068793427, unseen = -2.772588722239781,-                               likelihoods =-                                 HashMap.fromList-                                   [("daymonth", -1.3217558399823195),-                                    ("<day-of-month> <named-month>named-month",-                                     -1.6094379124341003),-                                    ("day of month (premier)named-month", -2.0149030205422647)],-                               n = 3},-                   koData =-                     ClassData{prior = -0.262364264467491, unseen = -3.4011973816621555,-                               likelihoods =-                                 HashMap.fromList-                                   [("hourmonth", -1.7578579175523736),-                                    ("named-monthnamed-month", -2.268683541318364),-                                    ("monthmonth", -2.268683541318364),-                                    ("year (latent)named-month", -1.7578579175523736),-                                    ("yearmonth", -1.7578579175523736),-                                    ("time-of-day (latent)named-month", -1.7578579175523736)],-                               n = 10}}),-       ("semaine (grain)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -3.6635616461296463,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 37},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<integer> + '\"",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 2},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("demain",-        Classifier{okData =-                     ClassData{prior = -0.45198512374305727,-                               unseen = -2.1972245773362196,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},-                   koData =-                     ClassData{prior = -1.0116009116784799, unseen = -1.791759469228055,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),-       ("mois (grain)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("intersect by 'mais/par exemple/plut\244t'",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -3.8066624897703196,-                               likelihoods =-                                 HashMap.fromList-                                   [("dayhour", -2.3978952727983707),-                                    ("named-dayentre <time-of-day> et <time-of-day> (interval)",-                                     -1.5869650565820417),-                                    ("le <day-of-month> (non ordinal)<time-of-day> heures",-                                     -3.0910424533583156),-                                    ("le <day-of-month> (non ordinal)\224|vers <time-of-day>",-                                     -2.6855773452501515),-                                    ("dayminute", -0.9509762898620451),-                                    ("named-dayentre <datetime> et <datetime> (interval)",-                                     -1.5869650565820417)],-                               n = 19},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("de <datetime> - <datetime> (interval)",-        Classifier{okData =-                     ClassData{prior = -1.410986973710262, unseen = -4.143134726391533,-                               likelihoods =-                                 HashMap.fromList-                                   [("day of month (premier)<day-of-week> <day-of-month>",-                                     -3.4339872044851463),-                                    ("hh(:|h)mm (time-of-day)<hour-of-day> <integer> (as relative minutes)",-                                     -3.4339872044851463),-                                    ("minuteminute", -2.517696472610991),-                                    ("hh(:|h)mm (time-of-day)hh(:|h)mm (time-of-day)",-                                     -3.4339872044851463),-                                    ("dayday", -2.517696472610991),-                                    ("<day-of-month> <named-month>day of month (premier)",-                                     -3.4339872044851463),-                                    ("minutehour", -3.028522096376982),-                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",-                                     -3.4339872044851463),-                                    ("<hour-of-day> <integer> (as relative minutes)hh(:|h)mm (time-of-day)",-                                     -3.4339872044851463),-                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",-                                     -3.4339872044851463),-                                    ("<hour-of-day> <integer> (as relative minutes)<hour-of-day> <integer> (as relative minutes)",-                                     -3.4339872044851463),-                                    ("<day-of-month> <named-month>intersect", -3.4339872044851463),-                                    ("intersect<day-of-week> <day-of-month>", -3.4339872044851463)],-                               n = 10},-                   koData =-                     ClassData{prior = -0.27958486221916157,-                               unseen = -4.653960350157523,-                               likelihoods =-                                 HashMap.fromList-                                   [("<hour-of-day> <integer> (as relative minutes)intersect",-                                     -3.951243718581427),-                                    ("<day-of-month> <named-month>time-of-day (latent)",-                                     -3.951243718581427),-                                    ("hourday", -3.0349529867072724),-                                    ("dayhour", -3.951243718581427),-                                    ("yearhour", -3.951243718581427),-                                    ("intersectnamed-day", -3.951243718581427),-                                    ("time-of-day (latent)year (latent)", -3.951243718581427),-                                    ("houryear", -3.951243718581427),-                                    ("day of month (premier)named-day", -3.951243718581427),-                                    ("time-of-day (latent)intersect", -3.545778610473263),-                                    ("year (latent)intersect", -3.545778610473263),-                                    ("yearyear", -3.951243718581427),-                                    ("time-of-day (latent)time-of-day (latent)",-                                     -3.951243718581427),-                                    ("dayday", -2.2464956263430023),-                                    ("year (latent)year (latent)", -3.951243718581427),-                                    ("<day-of-week> <day-of-month><day-of-week> <day-of-month>",-                                     -3.951243718581427),-                                    ("hourhour", -3.951243718581427),-                                    ("time-of-day (latent)<day-of-week> <day-of-month>",-                                     -3.951243718581427),-                                    ("minutehour", -2.4471663218051534),-                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",-                                     -3.545778610473263),-                                    ("year (latent)<day-of-week> <day-of-month>",-                                     -3.951243718581427),-                                    ("year (latent)time-of-day (latent)", -3.951243718581427),-                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",-                                     -3.951243718581427),-                                    ("year (latent)named-day", -3.951243718581427),-                                    ("time-of-day (latent)named-day", -3.951243718581427),-                                    ("day of month (premier)intersect", -3.545778610473263),-                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",-                                     -3.951243718581427),-                                    ("intersectintersect", -3.545778610473263),-                                    ("hh(:|h)mm (time-of-day)intersect", -3.951243718581427),-                                    ("yearday", -3.0349529867072724),-                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",-                                     -3.545778610473263),-                                    ("<day-of-week> <day-of-month>named-day", -3.951243718581427),-                                    ("<day-of-week> <day-of-month>intersect", -3.545778610473263)],-                               n = 31}}),-       ("<ordinal> <cycle> de <time>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.890371757896165,-                               likelihoods =-                                 HashMap.fromList-                                   [("daymonth", -1.7346010553881064),-                                    ("ordinals (premier..seizieme)semaine (grain)named-month",-                                     -1.7346010553881064),-                                    ("ordinal (digits)jour (grain)named-month",-                                     -1.7346010553881064),-                                    ("weekmonth", -1.2237754316221157),-                                    ("ordinals (premier..seizieme)semaine (grain)intersect",-                                     -1.7346010553881064)],-                               n = 6},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.791759469228055,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("premi\232re quinzaine de <named-month>(interval)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("n <cycle> suivants",-        Classifier{okData =-                     ClassData{prior = -0.6931471805599453,-                               unseen = -2.3978952727983707,-                               likelihoods =-                                 HashMap.fromList-                                   [("hour", -1.6094379124341003), ("month", -1.6094379124341003),-                                    ("integer (numeric)mois (grain)", -1.6094379124341003),-                                    ("integer (numeric)heure (grain)", -1.6094379124341003)],-                               n = 2},-                   koData =-                     ClassData{prior = -0.6931471805599453,-                               unseen = -2.3978952727983707,-                               likelihoods =-                                 HashMap.fromList-                                   [("number (0..16)jour (grain)", -1.2039728043259361),-                                    ("day", -1.2039728043259361)],-                               n = 2}}),-       ("intersect",-        Classifier{okData =-                     ClassData{prior = -0.2911008792005665,-                               unseen = -6.9440872082295275,-                               likelihoods =-                                 HashMap.fromList-                                   [("apr\232s <time-of-day>named-month", -5.844510134151319),-                                    ("<day-of-month> <named-month><dim time> <part-of-day>",-                                     -5.844510134151319),-                                    ("intersect<dim time> du matin", -5.844510134151319),-                                    ("<hour-of-day> <integer> (as relative minutes)intersect",-                                     -5.844510134151319),-                                    ("hh(:|h)mm (time-of-day)named-day", -5.844510134151319),-                                    ("demain<time-of-day> heures", -5.844510134151319),-                                    ("hourday", -4.640537329825383),-                                    ("<day-of-month> <named-month>year", -5.556828061699537),-                                    ("dayhour", -1.6960983506589422),-                                    ("daymonth", -3.0719214119115374),-                                    ("monthyear", -4.745897845483209),-                                    ("dernier <cycle> de <time> (latent)year", -5.333684510385328),-                                    ("named-month<dim time> du matin", -5.844510134151319),-                                    ("<day-of-month> <named-month>\224|vers <time-of-day>",-                                     -4.109909078763212),-                                    ("dd mmyear", -4.997212273764115),-                                    ("le <day-of-month> (non ordinal)<dim time> du matin",-                                     -5.844510134151319),-                                    ("hh(:|h)mm (time-of-day)<day-of-week> <day-of-month>",-                                     -6.249975242259483),-                                    ("named-month\224|vers <time-of-day>", -4.997212273764115),-                                    ("named-dayday of month (premier)", -5.556828061699537),-                                    ("<time-of-day> heuresdu|dans le <part-of-day>",-                                     -4.745897845483209),-                                    ("<hour-of-day> et quart<dim time> <part-of-day>",-                                     -5.556828061699537),-                                    ("<day-of-week> <day-of-month>named-month", -5.556828061699537),-                                    ("le <time>du|dans le <part-of-day>", -5.333684510385328),-                                    ("\224|vers <time-of-day>ce <part-of-day>", -5.556828061699537),-                                    ("le <day-of-month> (non ordinal)<dim time> du soir",-                                     -4.997212273764115),-                                    ("entre <datetime> et <datetime> (interval)named-day",-                                     -5.844510134151319),-                                    ("<hour-of-day> et demice <part-of-day>", -5.556828061699537),-                                    ("le <day-of-month> (non ordinal)<time-of-day> heures",-                                     -4.640537329825383),-                                    ("<hour-of-day> <integer> (as relative minutes)<day-of-week> <day-of-month>",-                                     -6.249975242259483),-                                    ("le <day-of-month> (non ordinal)named-month",-                                     -4.2350722217172185),-                                    ("monthhour", -4.1705337005796475),-                                    ("le <time><time-of-day> heures", -5.151362953591374),-                                    ("hourmonth", -5.333684510385328),-                                    ("<time-of-day> heuresle <time>", -5.333684510385328),-                                    ("dayday", -3.898599985096005),-                                    ("aujourd'hui<hour-of-day> <integer> (as relative minutes)",-                                     -5.556828061699537),-                                    ("apr\232s <time-of-day>named-day", -5.844510134151319),-                                    ("named-dayle <cycle> prochain|suivant|d'apr\232s",-                                     -4.863680881139593),-                                    ("named-dayapr\232s <time-of-day>", -5.556828061699537),-                                    ("hourhour", -3.2295503561151206),-                                    ("<day-of-week> <day-of-month>\224|vers <time-of-day>",-                                     -4.5452271500210575),-                                    ("le <time>intersect", -5.556828061699537),-                                    ("\224|vers <time-of-day><dim time> <part-of-day>",-                                     -6.249975242259483),-                                    ("<time-of-day> heuresintersect", -5.844510134151319),-                                    ("intersectnamed-month", -4.997212273764115),-                                    ("intersect<time-of-day> heures", -5.556828061699537),-                                    ("<hour-of-day> et quartce <part-of-day>", -5.556828061699537),-                                    ("dayyear", -3.8520799694611125),-                                    ("named-dayce|dans le <cycle>", -5.556828061699537),-                                    ("apr\232s-demain\224|vers <time-of-day>", -5.333684510385328),-                                    ("le <ordinal> <cycle> de <time>year", -6.249975242259483),-                                    ("demain\224|vers <time-of-day>", -5.333684510385328),-                                    ("le <day-of-month> (non ordinal)intersect",-                                     -3.6472855568150995),-                                    ("hourminute", -6.249975242259483),-                                    ("dd-dd <month>(interval)year", -6.249975242259483),-                                    ("intersect<day-of-month> <named-month>", -5.844510134151319),-                                    ("minutemonth", -5.844510134151319),-                                    ("\224|vers <time-of-day>demain", -6.249975242259483),-                                    ("minutehour", -4.378173065357892),-                                    ("named-daydu|dans le <part-of-day>", -5.556828061699537),-                                    ("named-monthyear", -4.745897845483209),-                                    ("entre <datetime> et <datetime> (interval)named-month",-                                     -6.249975242259483),-                                    ("intersectdu|dans le <part-of-day>", -3.898599985096005),-                                    ("le <day-of-month> \224 <datetime>du|dans le <part-of-day>",-                                     -5.844510134151319),-                                    ("named-month<dim time> <part-of-day>", -5.844510134151319),-                                    ("le <day-of-month> (non ordinal)apr\232s <time-of-day>",-                                     -6.249975242259483),-                                    ("named-day<day-of-month> <named-month>", -5.556828061699537),-                                    ("named-dayle <time>", -4.109909078763212),-                                    ("le <day-of-month> (non ordinal)<dim time> <part-of-day>",-                                     -4.5452271500210575),-                                    ("dd/-mm<time-of-day> heures", -5.844510134151319),-                                    ("de <datetime> - <datetime> (interval)named-month",-                                     -5.844510134151319),-                                    ("apr\232s <time-of-day>le <time>", -5.844510134151319),-                                    ("named-day<time-of-day> heures", -5.556828061699537),-                                    ("<hour-of-day> et quartdemain", -5.556828061699537),-                                    ("<time-of-day> heuresce <time>", -6.249975242259483),-                                    ("<day-of-month> <named-month>du|dans le <part-of-day>",-                                     -5.844510134151319),-                                    ("named-dayintersect", -6.249975242259483),-                                    ("le <time><dim time> du matin", -5.844510134151319),-                                    ("apr\232s <time-of-day>intersect", -6.249975242259483),-                                    ("le <day-of-month> (non ordinal)\224|vers <time-of-day>",-                                     -4.304065093204169),-                                    ("hierdu|dans le <part-of-day>", -6.249975242259483),-                                    ("intersect<dim time> <part-of-day>", -5.844510134151319),-                                    ("dayminute", -4.745897845483209),-                                    ("<ordinal> <cycle> de <time>year", -5.844510134151319),-                                    ("le <time>\224|vers <time-of-day>", -4.5452271500210575),-                                    ("<day-of-month> <named-month><dim time> du matin",-                                     -5.844510134151319),-                                    ("intersectyear", -5.556828061699537),-                                    ("<day-of-week> <day-of-month><time-of-day> heures",-                                     -5.151362953591374),-                                    ("minuteday", -3.279560776689782),-                                    ("<datetime> - <datetime> (interval)named-month",-                                     -4.997212273764115),-                                    ("<day-of-month> <named-month><time-of-day> heures",-                                     -4.745897845483209),-                                    ("aujourd'hui\224|vers <time-of-day>", -5.333684510385328),-                                    ("day of month (premier)intersect", -6.249975242259483),-                                    ("entre <time-of-day> et <time-of-day> (interval)named-day",-                                     -5.844510134151319),-                                    ("named-day<named-month|named-day> suivant|d'apr\232s",-                                     -5.333684510385328),-                                    ("<dim time> <part-of-day>apr\232s <time-of-day>",-                                     -6.249975242259483),-                                    ("named-month<time-of-day> heures", -5.556828061699537),-                                    ("<time-of-day> heuresce <part-of-day>", -5.556828061699537),-                                    ("le <time>named-month", -5.151362953591374),-                                    ("apr\232s le <day-of-month>named-month", -6.249975242259483),-                                    ("\224|vers <time-of-day>du|dans le <part-of-day>",-                                     -5.151362953591374),-                                    ("intersectintersect", -5.844510134151319),-                                    ("de <time-of-day> - <time-of-day> (interval)named-day",-                                     -5.333684510385328),-                                    ("de <datetime> - <datetime> (interval)named-day",-                                     -5.844510134151319),-                                    ("named-dayde <time-of-day> - <time-of-day> (interval)",-                                     -5.844510134151319),-                                    ("dayweek", -4.052750664923264),-                                    ("weekyear", -4.863680881139593),-                                    ("<hour-of-day> <integer> (as relative minutes)named-day",-                                     -5.844510134151319),-                                    ("hh(:|h)mm (time-of-day)intersect", -5.844510134151319),-                                    ("named-monthintersect", -5.844510134151319),-                                    ("dd/-mm\224|vers <time-of-day>", -5.333684510385328),-                                    ("day of month (premier)named-month", -4.5452271500210575),-                                    ("named-day\224|vers <time-of-day>", -4.863680881139593),-                                    ("<day-of-month> <named-month>intersect", -5.844510134151319),-                                    ("intersect\224|vers <time-of-day>", -4.997212273764115),-                                    ("le <time>year", -4.745897845483209),-                                    ("le <time><dim time> <part-of-day>", -5.844510134151319),-                                    ("<time-of-day> - <time-of-day> (interval)named-day",-                                     -4.997212273764115),-                                    ("apr\232s-demain<time-of-day> heures", -5.844510134151319),-                                    ("<datetime> - <datetime> (interval)named-day",-                                     -5.333684510385328)],-                               n = 438},-                   koData =-                     ClassData{prior = -1.3761075158128977, unseen = -6.124683390894205,-                               likelihoods =-                                 HashMap.fromList-                                   [("<hour-of-day> <integer> (as relative minutes)intersect",-                                     -5.429345628954441),-                                    ("hh(:|h)mm (time-of-day)named-day", -5.429345628954441),-                                    ("year<time-of-day> - <time-of-day> (interval)",-                                     -4.736198448394496),-                                    ("demain<time-of-day> heures", -4.736198448394496),-                                    ("hourday", -3.2321210516182215),-                                    ("<day-of-month> <named-month>year", -5.429345628954441),-                                    ("demainavant <time-of-day>", -5.429345628954441),-                                    ("dayhour", -2.4336133554004498),-                                    ("le lendemain du <time>named-month", -5.429345628954441),-                                    ("daymonth", -3.8199077165203406),-                                    ("monthday", -5.429345628954441),-                                    ("monthyear", -4.736198448394496),-                                    ("yearhour", -4.736198448394496),-                                    ("houryear", -5.0238805208462765),-                                    ("aujourd'hui<time-of-day> heures", -5.429345628954441),-                                    ("named-month\224|vers <time-of-day>", -3.724597536716016),-                                    ("<time-of-day> heuresdu|dans le <part-of-day>",-                                     -4.736198448394496),-                                    ("<day-of-week> <day-of-month>named-month", -4.04305126783455),-                                    ("le <time>du|dans le <part-of-day>", -5.0238805208462765),-                                    ("le <day-of-month> (non ordinal)<hour-of-day> <integer> (as relative minutes)",-                                     -4.736198448394496),-                                    ("named-month<day-of-month> <named-month>", -5.429345628954441),-                                    ("<time-of-day> heuresle <day-of-month> (non ordinal)",-                                     -5.0238805208462765),-                                    ("le <day-of-month> (non ordinal)<time-of-day> heures",-                                     -5.429345628954441),-                                    ("aujourd'huidu|dans le <part-of-day>", -5.0238805208462765),-                                    ("le <day-of-month> (non ordinal)named-month",-                                     -5.429345628954441),-                                    ("monthhour", -3.2321210516182215),-                                    ("hourmonth", -4.176582660459073),-                                    ("dayday", -3.6375861597263857),-                                    ("named-dayapr\232s <time-of-day>", -5.0238805208462765),-                                    ("hourhour", -3.8199077165203406),-                                    ("named-day<hour-of-day> <integer> (as relative minutes)",-                                     -5.0238805208462765),-                                    ("dayyear", -4.176582660459073),-                                    ("le <cycle> de <time>named-month", -5.0238805208462765),-                                    ("year<hour-of-day> <integer> (as relative minutes)",-                                     -4.736198448394496),-                                    ("demain\224|vers <time-of-day>", -4.513054897080286),-                                    ("<dim time> <part-of-day><hour-of-day> <integer> (as relative minutes)",-                                     -5.0238805208462765),-                                    ("hourminute", -5.0238805208462765),-                                    ("minutemonth", -4.736198448394496),-                                    ("named-monthyear", -4.736198448394496),-                                    ("intersect by 'de' or ','year", -5.0238805208462765),-                                    ("named-day<time-of-day> - <time-of-day> (interval)",-                                     -3.724597536716016),-                                    ("named-day<datetime> - <datetime> (interval)",-                                     -5.0238805208462765),-                                    ("named-day<day-of-month> <named-month>", -4.04305126783455),-                                    ("weekmonth", -5.0238805208462765),-                                    ("named-dayle <time>", -5.0238805208462765),-                                    ("avant <time-of-day>named-day", -5.429345628954441),-                                    ("de <datetime> - <datetime> (interval)named-month",-                                     -5.429345628954441),-                                    ("le <day-of-month> (non ordinal)year", -5.0238805208462765),-                                    ("named-day<time-of-day> heures", -5.429345628954441),-                                    ("<time-of-day> heuresnamed-day", -3.925268232178167),-                                    ("apr\232s <time-of-day><time-of-day> heures",-                                     -5.0238805208462765),-                                    ("<time-of-day> heuresdd/-mm", -5.429345628954441),-                                    ("<time-of-day> - <time-of-day> (interval)du|dans le <part-of-day>",-                                     -5.0238805208462765),-                                    ("<hour-of-day> <integer> (as relative minutes)named-month",-                                     -5.0238805208462765),-                                    ("le <day-of-month> (non ordinal)\224|vers <time-of-day>",-                                     -4.736198448394496),-                                    ("dayminute", -4.330733340286331),-                                    ("named-monthdu|dans le <part-of-day>", -5.0238805208462765),-                                    ("intersectyear", -5.0238805208462765),-                                    ("minuteday", -4.736198448394496),-                                    ("aujourd'hui\224|vers <time-of-day>", -4.736198448394496),-                                    ("<datetime>-dd <month>(interval)year", -5.0238805208462765),-                                    ("<time-of-day> - <time-of-day> (interval)named-month",-                                     -4.513054897080286),-                                    ("le <day-of-month> (non ordinal)avant <time-of-day>",-                                     -5.429345628954441),-                                    ("<dim time> <part-of-day>apr\232s <time-of-day>",-                                     -5.429345628954441),-                                    ("named-month<time-of-day> heures", -4.330733340286331),-                                    ("demainapr\232s <time-of-day>", -5.429345628954441),-                                    ("<hour-of-day> <integer> (as relative minutes)named-day",-                                     -5.0238805208462765),-                                    ("<hour-of-day> <integer> (as relative minutes)year",-                                     -4.513054897080286),-                                    ("<time-of-day> - <time-of-day> (interval)intersect",-                                     -5.429345628954441),-                                    ("apr\232s <time-of-day>\224|vers <time-of-day>",-                                     -4.513054897080286),-                                    ("\224|vers <time-of-day>named-day", -4.736198448394496),-                                    ("le <time>year", -5.0238805208462765),-                                    ("apr\232s <time-of-day>le <day-of-month> (non ordinal)",-                                     -5.429345628954441),-                                    ("de <datetime> - <datetime> (interval)<day-of-month> <named-month>",-                                     -5.429345628954441),-                                    ("minuteyear", -4.04305126783455),-                                    ("yearminute", -4.736198448394496),-                                    ("<dim time> <part-of-day><time-of-day> heures",-                                     -5.429345628954441)],-                               n = 148}}),-       ("season",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("ce <day-of-week>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("day", -0.6931471805599453),-                                    ("named-day", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("le <cycle> de <time>",-        Classifier{okData =-                     ClassData{prior = -0.8472978603872037, unseen = -2.70805020110221,-                               likelihoods =-                                 HashMap.fromList-                                   [("monthmonth", -1.9459101490553135),-                                    ("mois (grain)named-month", -1.9459101490553135),-                                    ("weekday", -1.540445040947149),-                                    ("semaine (grain)<day-of-month> <named-month>",-                                     -1.540445040947149)],-                               n = 3},-                   koData =-                     ClassData{prior = -0.5596157879354228, unseen = -2.833213344056216,-                               likelihoods =-                                 HashMap.fromList-                                   [("semaine (grain)year (latent)", -1.6739764335716716),-                                    ("weekhour", -1.6739764335716716),-                                    ("semaine (grain)time-of-day (latent)", -1.6739764335716716),-                                    ("weekyear", -1.6739764335716716)],-                               n = 4}}),-       ("<hour-of-day> et trois quarts",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("hour", -0.6931471805599453),-                                    ("<time-of-day> heures", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("le <day-of-month> \224 <datetime>",-        Classifier{okData =-                     ClassData{prior = -0.325422400434628, unseen = -3.58351893845611,-                               likelihoods =-                                 HashMap.fromList-                                   [("integer (numeric)<time-of-day> heures", -1.9459101490553135),-                                    ("integer (numeric)<dim time> du soir", -2.8622008809294686),-                                    ("integer (numeric)intersect", -2.456735772821304),-                                    ("integer (numeric)<dim time> du matin", -2.8622008809294686),-                                    ("hour", -0.916290731874155),-                                    ("integer (numeric)time-of-day (latent)", -2.169053700369523),-                                    ("integer (numeric)<dim time> <part-of-day>",-                                     -2.456735772821304)],-                               n = 13},-                   koData =-                     ClassData{prior = -1.2809338454620642, unseen = -2.995732273553991,-                               likelihoods =-                                 HashMap.fromList-                                   [("integer (numeric)year (latent)", -1.3350010667323402),-                                    ("year", -1.3350010667323402), ("hour", -2.2512917986064953),-                                    ("integer (numeric)time-of-day (latent)", -2.2512917986064953)],-                               n = 5}}),-       ("yyyy-mm-dd",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("le <cycle> dernier",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.70805020110221,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -1.540445040947149),-                                    ("ann\233e (grain)", -1.9459101490553135),-                                    ("semaine (grain)", -1.540445040947149),-                                    ("mois (grain)", -1.9459101490553135),-                                    ("year", -1.9459101490553135), ("month", -1.9459101490553135)],-                               n = 4},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("year (latent)",-        Classifier{okData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0},-                   koData =-                     ClassData{prior = 0.0, unseen = -3.044522437723423,-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 19}}),-       ("soir de no\235l",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("fin de journ\233e",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("du <datetime>-<day-of-week> dd <month>(interval)",-        Classifier{okData =-                     ClassData{prior = -0.5108256237659907, unseen = -2.70805020110221,-                               likelihoods =-                                 HashMap.fromList-                                   [("intersectnamed-daynamed-month", -1.9459101490553135),-                                    ("day of month (premier)named-daynamed-month",-                                     -1.9459101490553135),-                                    ("<day-of-week> <day-of-month>named-daynamed-month",-                                     -1.9459101490553135),-                                    ("daydaymonth", -1.252762968495368)],-                               n = 3},-                   koData =-                     ClassData{prior = -0.916290731874155, unseen = -2.5649493574615367,-                               likelihoods =-                                 HashMap.fromList-                                   [("year (latent)named-daynamed-month", -1.791759469228055),-                                    ("hourdaymonth", -1.791759469228055),-                                    ("time-of-day (latent)named-daynamed-month",-                                     -1.791759469228055),-                                    ("yeardaymonth", -1.791759469228055)],-                               n = 2}}),-       ("milieu de semaine",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("noel",-        Classifier{okData =-                     ClassData{prior = -0.2876820724517809,-                               unseen = -1.6094379124341003,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},-                   koData =-                     ClassData{prior = -1.3862943611198906,-                               unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),-       ("fin de matin\233e",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("le <day-of-month> (non ordinal)",-        Classifier{okData =-                     ClassData{prior = -0.4228568508200336, unseen = -3.713572066704308,-                               likelihoods =-                                 HashMap.fromList [("integer (numeric)", -2.5317807984289897e-2)],-                               n = 38},-                   koData =-                     ClassData{prior = -1.0647107369924282,-                               unseen = -3.1354942159291497,-                               likelihoods =-                                 HashMap.fromList-                                   [("integer (numeric)", -0.2578291093020998),-                                    ("numbers 22..29 32..39 .. 52..59", -1.4816045409242156)],-                               n = 20}}),-       ("du dd-<day-of-week> dd <month>(interval)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-daynamed-month", -0.6931471805599453),-                                    ("daymonth", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("en semaine",-        Classifier{okData =-                     ClassData{prior = -1.1856236656577395,-                               unseen = -2.5649493574615367,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},-                   koData =-                     ClassData{prior = -0.3646431135879093, unseen = -3.295836866004329,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 25}}),-       ("numbers 22..29 32..39 .. 52..59",-        Classifier{okData =-                     ClassData{prior = -2.3025850929940455,-                               unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("number (20..60)number (0..16)", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -0.10536051565782628,-                               unseen = -2.5649493574615367,-                               likelihoods =-                                 HashMap.fromList-                                   [("integer (numeric)integer (numeric)", -0.2876820724517809),-                                    ("integer (numeric)number (0..16)", -1.791759469228055)],-                               n = 9}}),-       ("<day-of-week> prochain",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,-                               likelihoods =-                                 HashMap.fromList-                                   [("day", -0.6931471805599453),-                                    ("named-day", -0.6931471805599453)],-                               n = 3},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("intersect by 'de' or ','",-        Classifier{okData =-                     ClassData{prior = -0.2719337154836418, unseen = -4.394449154672439,-                               likelihoods =-                                 HashMap.fromList-                                   [("dayhour", -3.283414346005772),-                                    ("hourmonth", -3.6888794541139363),-                                    ("dayday", -1.742969305058623),-                                    ("named-dayle <cycle> prochain|suivant|d'apr\232s",-                                     -2.3025850929940455),-                                    ("named-day<time-of-day> - <time-of-day> (interval)",-                                     -3.283414346005772),-                                    ("named-dayle <time>", -1.491654876777717),-                                    ("named-dayle <cycle> dernier", -3.6888794541139363),-                                    ("named-day<named-month|named-day> suivant|d'apr\232s",-                                     -2.772588722239781),-                                    ("week-endnamed-month", -3.6888794541139363),-                                    ("dayweek", -1.5488132906176655)],-                               n = 32},-                   koData =-                     ClassData{prior = -1.4350845252893227,-                               unseen = -3.6109179126442243,-                               likelihoods =-                                 HashMap.fromList-                                   [("hourday", -2.890371757896165),-                                    ("dayhour", -2.890371757896165),-                                    ("daymonth", -1.9740810260220096),-                                    ("du|dans le <part-of-day>noel", -2.890371757896165),-                                    ("en semainenamed-month", -2.4849066497880004),-                                    ("hourmonth", -2.4849066497880004),-                                    ("dayday", -2.4849066497880004),-                                    ("en semaineintersect", -2.4849066497880004),-                                    ("named-dayle <time>", -2.4849066497880004),-                                    ("named-day<time-of-day> heures", -2.890371757896165),-                                    ("week-endnamed-month", -2.4849066497880004)],-                               n = 10}}),-       ("named-month",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -4.499809670330265,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 88},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("ce <part-of-day>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.772588722239781,-                               likelihoods =-                                 HashMap.fromList-                                   [("soir", -1.6094379124341003),-                                    ("apr\232s-midi", -1.0986122886681098),-                                    ("hour", -0.7621400520468967)],-                               n = 6},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("hh(:|h)mm (time-of-day)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -3.258096538021482,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 24},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("number (20..60)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.791759469228055,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("hier",-        Classifier{okData =-                     ClassData{prior = -0.2231435513142097, unseen = -1.791759469228055,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},-                   koData =-                     ClassData{prior = -1.6094379124341003,-                               unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),-       ("numbers prefix with -, negative or minus",-        Classifier{okData =-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [], n = 0},-                   koData =-                     ClassData{prior = 0.0, unseen = -2.833213344056216,-                               likelihoods =-                                 HashMap.fromList-                                   [("integer (numeric)", -0.2876820724517809),-                                    ("numbers 22..29 32..39 .. 52..59", -2.0794415416798357),-                                    ("number (0..16)", -2.0794415416798357)],-                               n = 13}}),-       ("dd-dd <month>(interval)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 4},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<datetime>-<day-of-week> dd <month>(interval)",-        Classifier{okData =-                     ClassData{prior = -0.6931471805599453,-                               unseen = -3.2188758248682006,-                               likelihoods =-                                 HashMap.fromList-                                   [("intersectnamed-daynamed-month", -2.0794415416798357),-                                    ("day of month (premier)named-daynamed-month",-                                     -1.791759469228055),-                                    ("<day-of-week> <day-of-month>named-daynamed-month",-                                     -1.791759469228055),-                                    ("daydaymonth", -0.9808292530117262)],-                               n = 8},-                   koData =-                     ClassData{prior = -0.6931471805599453,-                               unseen = -3.2188758248682006,-                               likelihoods =-                                 HashMap.fromList-                                   [("year (latent)named-daynamed-month", -1.5686159179138452),-                                    ("hourdaymonth", -1.5686159179138452),-                                    ("time-of-day (latent)named-daynamed-month",-                                     -1.5686159179138452),-                                    ("yeardaymonth", -1.5686159179138452)],-                               n = 8}}),-       ("<dim time> du soir",-        Classifier{okData =-                     ClassData{prior = -0.2231435513142097, unseen = -2.995732273553991,-                               likelihoods =-                                 HashMap.fromList-                                   [("\224|vers <time-of-day>", -1.55814461804655),-                                    ("hour", -0.7472144018302211),-                                    ("<time-of-day> heures", -1.1526795099383855)],-                               n = 8},-                   koData =-                     ClassData{prior = -1.6094379124341003,-                               unseen = -2.0794415416798357,-                               likelihoods =-                                 HashMap.fromList-                                   [("hour", -0.8472978603872037),-                                    ("<time-of-day> heures", -0.8472978603872037)],-                               n = 2}}),-       ("aujourd'hui",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.639057329615259,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("midi",-        Classifier{okData =-                     ClassData{prior = -0.7375989431307791,-                               unseen = -2.5649493574615367,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},-                   koData =-                     ClassData{prior = -0.6505875661411494, unseen = -2.639057329615259,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12}}),-       ("toussaint",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 5},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("d\233but de soir\233e",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<day-of-week> <day-of-month>",-        Classifier{okData =-                     ClassData{prior = -0.24512245803298496,-                               unseen = -3.6888794541139363,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-daynumber (0..16)", -2.5649493574615367),-                                    ("named-dayinteger (numeric)", -0.8303483020734304),-                                    ("day", -0.719122666963206)],-                               n = 18},-                   koData =-                     ClassData{prior = -1.5260563034950494, unseen = -2.639057329615259,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-dayinteger (numeric)", -0.7731898882334817),-                                    ("day", -0.7731898882334817)],-                               n = 5}}),-       ("d'ici <duration>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -1.252762968495368), ("day", -1.252762968495368),-                                    ("<integer> <unit-of-duration>", -0.8472978603872037)],-                               n = 2},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("\224|vers <time-of-day>",-        Classifier{okData =-                     ClassData{prior = -0.21936282847430377,-                               unseen = -5.420534999272286,-                               likelihoods =-                                 HashMap.fromList-                                   [("<time> timezone", -4.722953221644475),-                                    ("<hour-of-day> et|pass\233 de <number>", -4.31748811353631),-                                    ("hh(:|h)mm (time-of-day)", -4.722953221644475),-                                    ("midi", -4.31748811353631),-                                    ("time-of-day (latent)", -1.587459005715325),-                                    ("<hour-of-day> et|pass\233 de <number> minutes",-                                     -4.31748811353631),-                                    ("minuit", -4.722953221644475),-                                    ("<hour-of-day> et quart", -4.31748811353631),-                                    ("hour", -0.8622235106038793),-                                    ("<hour-of-day> et demi", -4.722953221644475),-                                    ("minute", -2.8511510447428834),-                                    ("<time-of-day> heures", -1.587459005715325),-                                    ("<hour-of-day> <integer> (as relative minutes)",-                                     -3.8066624897703196)],-                               n = 106},-                   koData =-                     ClassData{prior = -1.6247053845648889, unseen = -4.189654742026425,-                               likelihoods =-                                 HashMap.fromList-                                   [("hh(:|h)mm (time-of-day)", -3.0757749812275272),-                                    ("time-of-day (latent)", -1.5353299402803784),-                                    ("hour", -1.0388930539664873), ("minute", -2.5649493574615367),-                                    ("<time-of-day> heures", -1.8718021769015913),-                                    ("<hour-of-day> <integer> (as relative minutes)",-                                     -3.0757749812275272)],-                               n = 26}}),-       ("d\233but <named-month>(interval)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 4},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("d\233but de matin\233e",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 5},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("apr\232s-midi",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.3025850929940455,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 8},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("le <ordinal> <cycle> de <time>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,-                               likelihoods =-                                 HashMap.fromList-                                   [("daymonth", -1.7047480922384253),-                                    ("ordinals (premier..seizieme)semaine (grain)named-month",-                                     -1.7047480922384253),-                                    ("ordinal (digits)jour (grain)named-month",-                                     -1.7047480922384253),-                                    ("weekmonth", -1.2992829841302609),-                                    ("ordinals (premier..seizieme)semaine (grain)intersect",-                                     -1.7047480922384253)],-                               n = 3},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.791759469228055,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("ordinals (premier..seizieme)",-        Classifier{okData =-                     ClassData{prior = -0.916290731874155, unseen = -1.791759469228055,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},-                   koData =-                     ClassData{prior = -0.5108256237659907,-                               unseen = -2.0794415416798357,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),-       ("minute (grain)",-        Classifier{okData =-                     ClassData{prior = -0.2876820724517809,-                               unseen = -2.3978952727983707,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},-                   koData =-                     ClassData{prior = -1.3862943611198906,-                               unseen = -1.6094379124341003,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),-       ("deuxi\232me quinzaine de <named-month>(interval)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<dim time> <part-of-day>",-        Classifier{okData =-                     ClassData{prior = -0.13858616328614667,-                               unseen = -5.181783550292085,-                               likelihoods =-                                 HashMap.fromList-                                   [("dayhour", -1.9980959022258835),-                                    ("<time-of-day> heuresdu|dans le <part-of-day>",-                                     -2.9789251552376097),-                                    ("le <time>du|dans le <part-of-day>", -3.5667118201397288),-                                    ("\224|vers <time-of-day>ce <part-of-day>",-                                     -3.7898553714539385),-                                    ("named-daymatin", -4.07753744390572),-                                    ("demainsoir", -4.483002552013883),-                                    ("<hour-of-day> et demice <part-of-day>", -3.7898553714539385),-                                    ("hourhour", -1.4872702784598928),-                                    ("aujourd'huiau d\233jeuner", -4.483002552013883),-                                    ("<hour-of-day> et quartce <part-of-day>", -3.7898553714539385),-                                    ("demainapr\232s-midi", -4.483002552013883),-                                    ("minutehour", -2.6112003751122925),-                                    ("named-daydu|dans le <part-of-day>", -3.7898553714539385),-                                    ("intersectdu|dans le <part-of-day>", -2.1316272948504063),-                                    ("le <day-of-month> \224 <datetime>du|dans le <part-of-day>",-                                     -4.07753744390572),-                                    ("named-dayfin d'apr\232s-midi", -4.483002552013883),-                                    ("<day-of-month> <named-month>du|dans le <part-of-day>",-                                     -4.07753744390572),-                                    ("hierdu|dans le <part-of-day>", -4.483002552013883),-                                    ("named-daysoir", -4.483002552013883),-                                    ("aujourd'huid\233but de matin\233e", -3.5667118201397288),-                                    ("<time-of-day> heuresce <part-of-day>", -3.7898553714539385),-                                    ("\224|vers <time-of-day>du|dans le <part-of-day>",-                                     -3.3843902633457743),-                                    ("named-dayapr\232s-midi", -4.483002552013883),-                                    ("intersectapr\232s-midi", -3.5667118201397288),-                                    ("hiersoir", -4.483002552013883)],-                               n = 74},-                   koData =-                     ClassData{prior = -2.044755983691946, unseen = -3.951243718581427,-                               likelihoods =-                                 HashMap.fromList-                                   [("dayhour", -2.833213344056216),-                                    ("<time-of-day> heuresdu|dans le <part-of-day>",-                                     -2.5455312716044354),-                                    ("le <time>du|dans le <part-of-day>", -2.833213344056216),-                                    ("aujourd'huidu|dans le <part-of-day>", -2.833213344056216),-                                    ("monthhour", -2.833213344056216),-                                    ("hourhour", -1.8523840910444898),-                                    ("<time-of-day> - <time-of-day> (interval)du|dans le <part-of-day>",-                                     -2.833213344056216),-                                    ("named-monthdu|dans le <part-of-day>", -2.833213344056216)],-                               n = 11}}),-       ("jour de l'an",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("time-of-day (latent)",-        Classifier{okData =-                     ClassData{prior = -0.5690945318899665, unseen = -4.553876891600541,-                               likelihoods =-                                 HashMap.fromList-                                   [("integer (numeric)", -0.16126814759612226),-                                    ("number (0..16)", -2.0583881324820035)],-                               n = 90},-                   koData =-                     ClassData{prior = -0.8347976976229721, unseen = -4.304065093204169,-                               likelihoods =-                                 HashMap.fromList-                                   [("integer (numeric)", -0.24740817331384096),-                                    ("numbers 22..29 32..39 .. 52..59", -2.681021528714291),-                                    ("number (20..60)", -3.597312260588446),-                                    ("number (0..16)", -2.093234863812172)],-                               n = 69}}),-       ("apr\232s-demain",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("year",-        Classifier{okData =-                     ClassData{prior = -0.46262352194811296,-                               unseen = -2.9444389791664407,-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 17},-                   koData =-                     ClassData{prior = -0.9932517730102834,-                               unseen = -2.4849066497880004,-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 10}}),-       ("<hour-of-day> et|pass\233 de <number> minutes",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -3.044522437723423,-                               likelihoods =-                                 HashMap.fromList-                                   [("\224|vers <time-of-day>number (20..60)", -2.3025850929940455),-                                    ("<time-of-day> heuresinteger (numeric)", -2.3025850929940455),-                                    ("\224|vers <time-of-day>number (0..16)", -2.3025850929940455),-                                    ("hour", -0.916290731874155),-                                    ("<time-of-day> heuresnumber (20..60)", -1.8971199848858813),-                                    ("<time-of-day> heuresnumber (0..16)", -1.8971199848858813)],-                               n = 7},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<integer> <unit-of-duration>",-        Classifier{okData =-                     ClassData{prior = -0.916290731874155, unseen = -4.204692619390966,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -2.580216829592325),-                                    ("number (0..16)semaine (grain)", -3.0910424533583156),-                                    ("number (0..16)ann\233e (grain)", -3.0910424533583156),-                                    ("number (0..16)seconde (grain)", -3.4965075614664802),-                                    ("number (0..16)jour (grain)", -3.4965075614664802),-                                    ("second", -3.4965075614664802),-                                    ("integer (numeric)ann\233e (grain)", -3.4965075614664802),-                                    ("number (0..16)minute (grain)", -3.0910424533583156),-                                    ("integer (numeric)jour (grain)", -3.0910424533583156),-                                    ("day", -2.803360380906535), ("year", -2.803360380906535),-                                    ("number (0..16)mois (grain)", -3.0910424533583156),-                                    ("hour", -2.580216829592325),-                                    ("number (0..16)heure (grain)", -3.0910424533583156),-                                    ("month", -3.0910424533583156),-                                    ("integer (numeric)minute (grain)", -2.803360380906535),-                                    ("minute", -2.3978952727983707),-                                    ("integer (numeric)semaine (grain)", -3.0910424533583156),-                                    ("numbers 22..29 32..39 .. 52..59heure (grain)",-                                     -3.4965075614664802),-                                    ("integer (numeric)heure (grain)", -3.4965075614664802)],-                               n = 22},-                   koData =-                     ClassData{prior = -0.5108256237659907, unseen = -4.48863636973214,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -3.784189633918261),-                                    ("number (20..60)minute (grain)", -3.784189633918261),-                                    ("number (0..16)jour (grain)", -3.0910424533583156),-                                    ("integer (numeric)ann\233e (grain)", -3.784189633918261),-                                    ("number (0..16)minute (grain)", -3.784189633918261),-                                    ("day", -3.0910424533583156), ("year", -3.784189633918261),-                                    ("hour", -1.2584609896100056),-                                    ("number (0..16)heure (grain)", -1.9123874570166697),-                                    ("month", -3.784189633918261),-                                    ("integer (numeric)minute (grain)", -3.784189633918261),-                                    ("integer (numeric)mois (grain)", -3.784189633918261),-                                    ("minute", -3.0910424533583156),-                                    ("integer (numeric)semaine (grain)", -3.784189633918261),-                                    ("integer (numeric)heure (grain)", -1.9123874570166697)],-                               n = 33}}),-       ("avant-hier",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("d\233but de journ\233e",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("entre <time-of-day> et <time-of-day> (interval)",-        Classifier{okData =-                     ClassData{prior = -0.1670540846631662,-                               unseen = -3.4011973816621555,-                               likelihoods =-                                 HashMap.fromList-                                   [("hourhour", -2.6741486494265287),-                                    ("miditime-of-day (latent)", -2.6741486494265287),-                                    ("minutehour", -0.9694005571881036),-                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",-                                     -2.268683541318364),-                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",-                                     -1.9810014688665833),-                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",-                                     -1.9810014688665833),-                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",-                                     -2.268683541318364)],-                               n = 11},-                   koData =-                     ClassData{prior = -1.8718021769015913,-                               unseen = -2.4849066497880004,-                               likelihoods =-                                 HashMap.fromList-                                   [("minutehour", -1.2992829841302609),-                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",-                                     -1.7047480922384253),-                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",-                                     -1.7047480922384253)],-                               n = 2}}),-       ("matin",-        Classifier{okData =-                     ClassData{prior = -0.5108256237659907,-                               unseen = -2.3978952727983707,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},-                   koData =-                     ClassData{prior = -0.916290731874155, unseen = -2.0794415416798357,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),-       ("en <named-month>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 2},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("maintenant",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<day-of-week> 1er-<day-of-week> dd <month>(interval)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-daynamed-daynamed-month", -0.6931471805599453),-                                    ("daydaymonth", -0.6931471805599453)],-                               n = 2},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("named-day",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -4.543294782270004,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 92},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("au d\233jeuner",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("le lendemain du <time>",-        Classifier{okData =-                     ClassData{prior = -1.0986122886681098,-                               unseen = -2.1972245773362196,-                               likelihoods =-                                 HashMap.fromList-                                   [("day", -1.3862943611198906),-                                    ("<day-of-month> <named-month>", -1.3862943611198906)],-                               n = 1},-                   koData =-                     ClassData{prior = -0.40546510810816444,-                               unseen = -2.3978952727983707,-                               likelihoods =-                                 HashMap.fromList-                                   [("year (latent)", -1.6094379124341003),-                                    ("time-of-day (latent)", -1.6094379124341003),-                                    ("year", -1.6094379124341003), ("hour", -1.6094379124341003)],-                               n = 2}}),-       ("le <cycle> prochain|suivant|d'apr\232s",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -3.970291913552122,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -1.0608719606852628),-                                    ("ann\233e (grain)", -3.258096538021482),-                                    ("semaine (grain)", -1.0608719606852628),-                                    ("mois (grain)", -2.8526314299133175),-                                    ("day", -2.8526314299133175), ("year", -3.258096538021482),-                                    ("jour (grain)", -2.8526314299133175),-                                    ("month", -2.8526314299133175)],-                               n = 22},-                   koData =-                     ClassData{prior = -infinity, unseen = -2.1972245773362196,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("apr\232s <time-of-day>",-        Classifier{okData =-                     ClassData{prior = -0.9267620317414506,-                               unseen = -3.9318256327243257,-                               likelihoods =-                                 HashMap.fromList-                                   [("intersect", -1.8325814637483102),-                                    ("hh(:|h)mm (time-of-day)", -2.8134107167600364),-                                    ("midi", -3.2188758248682006), ("day", -2.5257286443082556),-                                    ("time-of-day (latent)", -2.8134107167600364),-                                    ("hour", -1.6094379124341003), ("minute", -1.8325814637483102),-                                    ("<time-of-day> heures", -2.8134107167600364),-                                    ("le <time>", -2.8134107167600364),-                                    ("<hour-of-day> <integer> (as relative minutes)",-                                     -2.5257286443082556)],-                               n = 19},-                   koData =-                     ClassData{prior = -0.503905180921417, unseen = -4.2626798770413155,-                               likelihoods =-                                 HashMap.fromList-                                   [("demain", -2.8622008809294686),-                                    ("intersect", -2.169053700369523),-                                    ("le <day-of-month> (non ordinal)", -3.5553480614894135),-                                    ("midi", -1.6835458845878222), ("day", -2.639057329615259),-                                    ("time-of-day (latent)", -2.8622008809294686),-                                    ("hour", -0.9903987040278769),-                                    ("<time-of-day> heures", -2.8622008809294686)],-                               n = 29}}),-       ("dd/-mm",-        Classifier{okData =-                     ClassData{prior = -0.7375989431307791,-                               unseen = -2.5649493574615367,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},-                   koData =-                     ClassData{prior = -0.6505875661411494, unseen = -2.639057329615259,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12}}),-       ("minuit",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("entre dd et dd <month>(interval)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("une <unit-of-duration>",-        Classifier{okData =-                     ClassData{prior = -2.0281482472922856,-                               unseen = -3.2188758248682006,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -2.4849066497880004),-                                    ("ann\233e (grain)", -2.4849066497880004),-                                    ("seconde (grain)", -2.4849066497880004),-                                    ("semaine (grain)", -2.4849066497880004),-                                    ("second", -2.4849066497880004),-                                    ("minute (grain)", -2.4849066497880004),-                                    ("year", -2.4849066497880004),-                                    ("heure (grain)", -2.4849066497880004),-                                    ("hour", -2.4849066497880004), ("minute", -2.4849066497880004)],-                               n = 5},-                   koData =-                     ClassData{prior = -0.14107859825990549,-                               unseen = -4.394449154672439,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -1.246532418744732),-                                    ("semaine (grain)", -1.246532418744732),-                                    ("mois (grain)", -2.772588722239781),-                                    ("day", -2.3025850929940455),-                                    ("jour (grain)", -2.3025850929940455),-                                    ("month", -2.772588722239781)],-                               n = 33}}),-       ("<hour-of-day> et quart",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,-                               likelihoods =-                                 HashMap.fromList-                                   [("midi", -2.1972245773362196),-                                    ("\224|vers <time-of-day>", -1.791759469228055),-                                    ("hour", -0.8109302162163288),-                                    ("<time-of-day> heures", -1.2809338454620642)],-                               n = 7},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("number (0..16)",-        Classifier{okData =-                     ClassData{prior = -0.2076393647782445, unseen = -3.713572066704308,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 39},-                   koData =-                     ClassData{prior = -1.6739764335716716,-                               unseen = -2.3978952727983707,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 9}}),-       ("heure (grain)",-        Classifier{okData =-                     ClassData{prior = -1.540445040947149, unseen = -2.0794415416798357,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},-                   koData =-                     ClassData{prior = -0.2411620568168881,-                               unseen = -3.1780538303479458,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 22}}),-       ("<named-month|named-day> dernier|pass\233",-        Classifier{okData =-                     ClassData{prior = -2.3978952727983707,-                               unseen = -2.5649493574615367,-                               likelihoods =-                                 HashMap.fromList-                                   [("day", -1.791759469228055), ("named-day", -1.791759469228055)],-                               n = 1},-                   koData =-                     ClassData{prior = -9.53101798043249e-2,-                               unseen = -3.4339872044851463,-                               likelihoods =-                                 HashMap.fromList-                                   [("year (latent)", -2.70805020110221),-                                    ("en semaine", -2.3025850929940455),-                                    ("day", -1.791759469228055),-                                    ("\224|vers <time-of-day>", -2.70805020110221),-                                    ("time-of-day (latent)", -2.70805020110221),-                                    ("year", -2.70805020110221), ("hour", -1.6094379124341003),-                                    ("<time-of-day> heures", -2.0149030205422647),-                                    ("le <time>", -2.3025850929940455)],-                               n = 10}}),-       ("dd/-mm/-yyyy",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.70805020110221,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 13},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("fin de semaine",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("dd mm yyyy",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.639057329615259,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("day of month (premier)",-        Classifier{okData =-                     ClassData{prior = -6.899287148695143e-2,-                               unseen = -2.772588722239781,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 14},-                   koData =-                     ClassData{prior = -2.70805020110221, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),-       ("jour (grain)",-        Classifier{okData =-                     ClassData{prior = -0.1466034741918754, unseen = -3.044522437723423,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 19},-                   koData =-                     ClassData{prior = -1.9924301646902063,-                               unseen = -1.6094379124341003,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),-       ("dd mm",-        Classifier{okData =-                     ClassData{prior = -0.40546510810816444,-                               unseen = -2.639057329615259,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},-                   koData =-                     ClassData{prior = -1.0986122886681098,-                               unseen = -2.0794415416798357,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),-       ("dernier <cycle> de <time> (latent)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -3.1354942159291497,-                               likelihoods =-                                 HashMap.fromList-                                   [("daymonth", -1.4816045409242156),-                                    ("semaine (grain)intersect", -1.9924301646902063),-                                    ("weekmonth", -1.4816045409242156),-                                    ("semaine (grain)named-month", -1.9924301646902063),-                                    ("jour (grain)intersect", -1.9924301646902063),-                                    ("jour (grain)named-month", -1.9924301646902063)],-                               n = 8},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("avant le d\233jeuner",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("1er mai",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("fin de soir\233e",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<datetime> - <datetime> (interval)",-        Classifier{okData =-                     ClassData{prior = -1.0185695809945732, unseen = -4.454347296253507,-                               likelihoods =-                                 HashMap.fromList-                                   [("demain<time-of-day> heures", -3.7495040759303713),-                                    ("day of month (premier)<day-of-week> <day-of-month>",-                                     -3.056356895370426),-                                    ("dayhour", -3.3440389678222067),-                                    ("hh(:|h)mm (time-of-day)<hour-of-day> <integer> (as relative minutes)",-                                     -3.3440389678222067),-                                    ("le <day-of-month> (non ordinal)<time-of-day> heures",-                                     -3.7495040759303713),-                                    ("minuteminute", -2.044755983691946),-                                    ("<day-of-month> <named-month><day-of-month> <named-month>",-                                     -3.3440389678222067),-                                    ("hh(:|h)mm (time-of-day)hh(:|h)mm (time-of-day)",-                                     -3.056356895370426),-                                    ("dayday", -1.8777018990287797),-                                    ("<day-of-week> <day-of-month><day-of-week> <day-of-month>",-                                     -3.7495040759303713),-                                    ("<day-of-month> <named-month>day of month (premier)",-                                     -3.3440389678222067),-                                    ("minutehour", -3.3440389678222067),-                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",-                                     -3.7495040759303713),-                                    ("<hour-of-day> <integer> (as relative minutes)hh(:|h)mm (time-of-day)",-                                     -3.056356895370426),-                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",-                                     -3.7495040759303713),-                                    ("<hour-of-day> <integer> (as relative minutes)<hour-of-day> <integer> (as relative minutes)",-                                     -3.3440389678222067),-                                    ("<day-of-month> <named-month>intersect", -3.3440389678222067),-                                    ("intersect<day-of-week> <day-of-month>", -3.3440389678222067)],-                               n = 26},-                   koData =-                     ClassData{prior = -0.4480247225269604, unseen = -4.836281906951478,-                               likelihoods =-                                 HashMap.fromList-                                   [("<hour-of-day> <integer> (as relative minutes)intersect",-                                     -3.7297014486341915),-                                    ("monthday", -2.8824035882469876),-                                    ("intersectnamed-day", -3.7297014486341915),-                                    ("day of month (premier)named-day", -3.4420193761824103),-                                    ("named-month<day-of-month> <named-month>",-                                     -3.7297014486341915),-                                    ("minuteminute", -3.7297014486341915),-                                    ("dayday", -1.4961092271270973),-                                    ("<day-of-week> <day-of-month><day-of-week> <day-of-month>",-                                     -3.7297014486341915),-                                    ("day of month (premier)<day-of-month> <named-month>",-                                     -4.135166556742356),-                                    ("year<hour-of-day> <integer> (as relative minutes)",-                                     -3.4420193761824103),-                                    ("minutehour", -2.631089159966082),-                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",-                                     -3.4420193761824103),-                                    ("day of month (premier)intersect", -2.8824035882469876),-                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",-                                     -3.4420193761824103),-                                    ("intersectintersect", -3.2188758248682006),-                                    ("hh(:|h)mm (time-of-day)intersect", -3.7297014486341915),-                                    ("named-monthintersect", -3.7297014486341915),-                                    ("<day-of-week> <day-of-month>named-day", -3.4420193761824103),-                                    ("named-monthday of month (premier)", -3.7297014486341915),-                                    ("<day-of-week> <day-of-month>intersect", -2.8824035882469876),-                                    ("yearminute", -3.4420193761824103)],-                               n = 46}}),-       ("<day-of-month> <named-month>",-        Classifier{okData =-                     ClassData{prior = -0.30010459245033816,-                               unseen = -4.418840607796598,-                               likelihoods =-                                 HashMap.fromList-                                   [("integer (numeric)named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 40},-                   koData =-                     ClassData{prior = -1.349926716949016, unseen = -3.4339872044851463,-                               likelihoods =-                                 HashMap.fromList-                                   [("integer (numeric)named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 14}}),-       ("<cycle> prochain|suivant|d'apr\232s",-        Classifier{okData =-                     ClassData{prior = -8.338160893905101e-2,-                               unseen = -4.007333185232471,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -1.0986122886681098),-                                    ("ann\233e (grain)", -3.295836866004329),-                                    ("semaine (grain)", -1.0986122886681098),-                                    ("mois (grain)", -2.890371757896165),-                                    ("day", -2.6026896854443837), ("year", -3.295836866004329),-                                    ("jour (grain)", -2.6026896854443837),-                                    ("month", -2.890371757896165)],-                               n = 23},-                   koData =-                     ClassData{prior = -2.5257286443082556,-                               unseen = -2.5649493574615367,-                               likelihoods =-                                 HashMap.fromList-                                   [("mois (grain)", -1.791759469228055),-                                    ("day", -1.791759469228055),-                                    ("jour (grain)", -1.791759469228055),-                                    ("month", -1.791759469228055)],-                               n = 2}}),-       ("fin <named-month>(interval)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 2},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<time-of-day> - <time-of-day> (interval)",-        Classifier{okData =-                     ClassData{prior = -1.2321436812926323, unseen = -4.0943445622221,-                               likelihoods =-                                 HashMap.fromList-                                   [("hh(:|h)mm (time-of-day)<hour-of-day> <integer> (as relative minutes)",-                                     -2.691243082785829),-                                    ("minuteminute", -1.3694872428035094),-                                    ("time-of-day (latent)time-of-day (latent)",-                                     -3.3843902633457743),-                                    ("<time-of-day> heures<time-of-day> heures",-                                     -3.3843902633457743),-                                    ("hh(:|h)mm (time-of-day)hh(:|h)mm (time-of-day)",-                                     -2.468099531471619),-                                    ("hourhour", -2.691243082785829),-                                    ("minutehour", -2.468099531471619),-                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",-                                     -2.691243082785829),-                                    ("<hour-of-day> <integer> (as relative minutes)hh(:|h)mm (time-of-day)",-                                     -2.468099531471619),-                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",-                                     -3.3843902633457743),-                                    ("<hour-of-day> <integer> (as relative minutes)<hour-of-day> <integer> (as relative minutes)",-                                     -2.691243082785829),-                                    ("<time-of-day> heurestime-of-day (latent)",-                                     -3.3843902633457743)],-                               n = 21},-                   koData =-                     ClassData{prior = -0.3448404862917295, unseen = -4.787491742782046,-                               likelihoods =-                                 HashMap.fromList-                                   [("time-of-day (latent)time-of-day (latent)",-                                     -1.7833912195575383),-                                    ("hourhour", -1.3451362886263831),-                                    ("time-of-day (latent)<hour-of-day> <integer> (as relative minutes)",-                                     -4.085976312551584),-                                    ("hourminute", -4.085976312551584),-                                    ("minutehour", -1.7346010553881064),-                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",-                                     -2.987364023883474),-                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",-                                     -3.169685580677429),-                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",-                                     -3.169685580677429),-                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",-                                     -2.6996819514316934),-                                    ("time-of-day (latent)<time-of-day> heures",-                                     -2.2942168433235293)],-                               n = 51}}),-       ("<named-day> en huit",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.70805020110221,-                               likelihoods =-                                 HashMap.fromList-                                   [("day", -0.6931471805599453),-                                    ("named-day", -0.6931471805599453)],-                               n = 6},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<hour-of-day> et demi",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.5649493574615367,-                               likelihoods =-                                 HashMap.fromList-                                   [("midi", -1.791759469228055),-                                    ("\224|vers <time-of-day>", -1.791759469228055),-                                    ("hour", -0.8754687373538999),-                                    ("<time-of-day> heures", -1.3862943611198906)],-                               n = 4},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("dernier week-end de <time>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods =-                                 HashMap.fromList-                                   [("named-month", -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("du dd au dd(interval)",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("ordinal (digits)",-        Classifier{okData =-                     ClassData{prior = -1.8718021769015913,-                               unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},-                   koData =-                     ClassData{prior = -0.1670540846631662,-                               unseen = -2.5649493574615367,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11}}),-       ("avant <time-of-day>",-        Classifier{okData =-                     ClassData{prior = -1.3862943611198906, unseen = -2.890371757896165,-                               likelihoods =-                                 HashMap.fromList-                                   [("time-of-day (latent)", -1.7346010553881064),-                                    ("hour", -1.2237754316221157),-                                    ("<time-of-day> heures", -1.7346010553881064)],-                               n = 4},-                   koData =-                     ClassData{prior = -0.2876820724517809,-                               unseen = -3.5263605246161616,-                               likelihoods =-                                 HashMap.fromList-                                   [("intersect", -2.803360380906535),-                                    ("hh(:|h)mm (time-of-day)", -2.803360380906535),-                                    ("hier", -2.803360380906535), ("day", -2.803360380906535),-                                    ("time-of-day (latent)", -1.8870696490323797),-                                    ("hour", -1.1939224684724346), ("minute", -2.3978952727983707),-                                    ("<time-of-day> heures", -1.8870696490323797),-                                    ("<hour-of-day> <integer> (as relative minutes)",-                                     -2.803360380906535)],-                               n = 12}}),-       ("fin d'apr\232s-midi",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<part-of-day> du <dim time>",-        Classifier{okData =-                     ClassData{prior = -0.6931471805599453,-                               unseen = -1.9459101490553135,-                               likelihoods =-                                 HashMap.fromList-                                   [("matin<day-of-month> <named-month>", -1.0986122886681098),-                                    ("hourday", -1.0986122886681098)],-                               n = 1},-                   koData =-                     ClassData{prior = -0.6931471805599453,-                               unseen = -1.9459101490553135,-                               likelihoods =-                                 HashMap.fromList-                                   [("matinyear (latent)", -1.0986122886681098),-                                    ("houryear", -1.0986122886681098)],-                               n = 1}}),-       ("<time-of-day> heures",-        Classifier{okData =-                     ClassData{prior = -0.16251892949777494,-                               unseen = -5.634789603169249,-                               likelihoods =-                                 HashMap.fromList-                                   [("\224|vers <time-of-day>", -1.8025703853322705),-                                    ("time-of-day (latent)", -1.1538749673431592),-                                    ("apr\232s <time-of-day>", -4.532599493153256),-                                    ("hour", -0.7112308559932407),-                                    ("avant <time-of-day>", -4.532599493153256)],-                               n = 136},-                   koData =-                     ClassData{prior = -1.8971199848858813, unseen = -4.02535169073515,-                               likelihoods =-                                 HashMap.fromList-                                   [("\224|vers <time-of-day>", -1.7047480922384253),-                                    ("time-of-day (latent)", -1.927891643552635),-                                    ("apr\232s <time-of-day>", -2.6210388241125804),-                                    ("hour", -0.8292793548845253),-                                    ("avant <time-of-day>", -2.3978952727983707),-                                    ("minute", -3.3141860046725258),-                                    ("<hour-of-day> <integer> (as relative minutes)",-                                     -3.3141860046725258)],-                               n = 24}}),-       ("week-end",-        Classifier{okData =-                     ClassData{prior = -0.6931471805599453,-                               unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},-                   koData =-                     ClassData{prior = -0.6931471805599453,-                               unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),-       ("le <time>",-        Classifier{okData =-                     ClassData{prior = -0.2876820724517809, unseen = -5.739792912179234,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -2.4784757594577096),-                                    ("<named-month|named-day> suivant|d'apr\232s",-                                     -3.5393477201429726),-                                    ("<ordinal> <cycle> de <time>", -4.350277936359301),-                                    ("premi\232re quinzaine de <named-month>(interval)",-                                     -5.043425116919247),-                                    ("intersect", -2.0476928433652555),-                                    ("soir de no\235l", -5.043425116919247),-                                    ("en semaine", -3.3386770246808215),-                                    ("toussaint", -4.637960008811082), ("day", -1.3421231428067533),-                                    ("deuxi\232me quinzaine de <named-month>(interval)",-                                     -5.043425116919247),-                                    ("<dim time> <part-of-day>", -4.127134385045092),-                                    ("dd/-mm", -3.7906621484238787),-                                    ("dd/-mm/-yyyy", -4.350277936359301),-                                    ("dd mm yyyy", -3.7906621484238787),-                                    ("day of month (premier)", -3.9448128282511368),-                                    ("dd mm", -3.7906621484238787), ("hour", -2.2102117728630306),-                                    ("month", -4.350277936359301),-                                    ("dernier <cycle> de <time> (latent)", -4.127134385045092),-                                    ("<day-of-month> <named-month>", -3.028522096376982),-                                    ("<cycle> prochain|suivant|d'apr\232s", -2.6920498597557687),-                                    ("dernier week-end de <time>", -5.043425116919247),-                                    ("<ordinal> week-end de <time>", -4.637960008811082),-                                    ("<cycle> dernier", -3.9448128282511368)],-                               n = 141},-                   koData =-                     ClassData{prior = -1.3862943611198906, unseen = -4.812184355372417,-                               likelihoods =-                                 HashMap.fromList-                                   [("<named-month|named-day> suivant|d'apr\232s",-                                     -4.110873864173311),-                                    ("intersect", -3.1945831322991562),-                                    ("en semaine", -2.23907168727172), ("day", -1.625967214385311),-                                    ("<dim time> <part-of-day>", -3.7054087560651467),-                                    ("dd/-mm", -3.417726683613366),-                                    ("<named-month|named-day> dernier|pass\233",-                                     -3.7054087560651467),-                                    ("day of month (premier)", -4.110873864173311),-                                    ("dd mm", -3.417726683613366), ("hour", -2.0959708436310467),-                                    ("<day-of-month> <named-month>", -4.110873864173311),-                                    ("<time-of-day> - <time-of-day> (interval)",-                                     -2.406125771934886),-                                    ("minute", -2.406125771934886),-                                    ("<hour-of-day> <integer> (as relative minutes)",-                                     -2.606796467397037)],-                               n = 47}}),-       ("apr\232s le <day-of-month>",-        Classifier{okData =-                     ClassData{prior = -0.40546510810816444,-                               unseen = -1.3862943611198906,-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 2},-                   koData =-                     ClassData{prior = -1.0986122886681098,-                               unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],-                               n = 1}}),-       ("n <cycle> passes|precedents",-        Classifier{okData =-                     ClassData{prior = -0.40546510810816444,-                               unseen = -2.3978952727983707,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -1.6094379124341003),-                                    ("integer (numeric)ann\233e (grain)", -1.6094379124341003),-                                    ("year", -1.6094379124341003),-                                    ("integer (numeric)semaine (grain)", -1.6094379124341003)],-                               n = 2},-                   koData =-                     ClassData{prior = -1.0986122886681098,-                               unseen = -2.1972245773362196,-                               likelihoods =-                                 HashMap.fromList-                                   [("hour", -1.3862943611198906),-                                    ("number (0..16)heure (grain)", -1.3862943611198906)],-                               n = 1}}),-       ("il y a <duration>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -2.639057329615259,-                               likelihoods =-                                 HashMap.fromList-                                   [("week", -1.8718021769015913), ("year", -1.8718021769015913),-                                    ("<integer> <unit-of-duration>", -0.9555114450274363),-                                    ("hour", -1.8718021769015913), ("month", -1.8718021769015913)],-                               n = 4},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.791759469228055,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<ordinal> week-end de <time>",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,-                               likelihoods =-                                 HashMap.fromList-                                   [("ordinals (premier..seizieme)named-month",-                                     -0.6931471805599453),-                                    ("month", -0.6931471805599453)],-                               n = 2},-                   koData =-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<dim time> du matin",-        Classifier{okData =-                     ClassData{prior = -0.13353139262452263,-                               unseen = -2.890371757896165,-                               likelihoods =-                                 HashMap.fromList-                                   [("\224|vers <time-of-day>", -1.7346010553881064),-                                    ("hour", -0.7537718023763802),-                                    ("<time-of-day> heures", -1.041453874828161)],-                               n = 7},-                   koData =-                     ClassData{prior = -2.0794415416798357, unseen = -1.791759469228055,-                               likelihoods =-                                 HashMap.fromList-                                   [("hour", -0.916290731874155),-                                    ("<time-of-day> heures", -0.916290731874155)],-                               n = 1}}),-       ("d\233but d'apr\232s-midi",-        Classifier{okData =-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},-                   koData =-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,-                               likelihoods = HashMap.fromList [], n = 0}}),-       ("<hour-of-day> <integer> (as relative minutes)",-        Classifier{okData =-                     ClassData{prior = -0.8174448972375224, unseen = -4.430816798843313,-                               likelihoods =-                                 HashMap.fromList-                                   [("minuitnumber (0..16)", -3.3202283191284883),-                                    ("midinumber (20..60)", -3.7256934272366524),-                                    ("\224|vers <time-of-day>number (20..60)", -3.7256934272366524),-                                    ("<time-of-day> heuresinteger (numeric)", -1.2833463918674481),-                                    ("\224|vers <time-of-day>number (0..16)", -3.3202283191284883),-                                    ("midinumber (0..16)", -3.7256934272366524),-                                    ("hour", -0.8634925463071842),-                                    ("<time-of-day> heuresnumber (20..60)", -3.3202283191284883),-                                    ("\224|vers <time-of-day>integer (numeric)",-                                     -3.7256934272366524),-                                    ("<time-of-day> heuresnumber (0..16)", -3.3202283191284883)],-                               n = 34},-                   koData =-                     ClassData{prior = -0.5826053061601215, unseen = -4.624972813284271,-                               likelihoods =-                                 HashMap.fromList-                                   [("time-of-day (latent)numbers 22..29 32..39 .. 52..59",-                                     -3.9219733362813143),-                                    ("time-of-day (latent)number (0..16)", -3.5165082281731497),-                                    ("<time-of-day> heuresinteger (numeric)", -2.6692103677859462),-                                    ("avant <time-of-day>integer (numeric)", -3.9219733362813143),-                                    ("time-of-day (latent)integer (numeric)", -1.2829160066660554),-                                    ("apr\232s <time-of-day>integer (numeric)", -3.228826155721369),-                                    ("hour", -0.8309308829229983),-                                    ("\224|vers <time-of-day>integer (numeric)",-                                     -3.5165082281731497),-                                    ("<time-of-day> heuresnumber (0..16)", -3.9219733362813143)],-                               n = 43}}),+                     ClassData{prior = -0.587786664902119, unseen = -3.8066624897703196,+                               likelihoods =+                                 HashMap.fromList+                                   [("soir", -1.3862943611198906),+                                    ("apr\232s-midi", -2.174751721484161),+                                    ("matin", -1.8382794848629478), ("hour", -0.7396671961948381)],+                               n = 20},+                   koData =+                     ClassData{prior = -0.8109302162163288,+                               unseen = -3.6109179126442243,+                               likelihoods =+                                 HashMap.fromList+                                   [("soir", -2.1972245773362196),+                                    ("apr\232s-midi", -2.1972245773362196),+                                    ("matin", -1.1856236656577395), ("hour", -0.750305594399894)],+                               n = 16}}),+       ("dans <duration>",+        Classifier{okData =+                     ClassData{prior = -8.338160893905101e-2,+                               unseen = -4.04305126783455,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -2.639057329615259),+                                    ("<integer> + '\"", -2.9267394020670396),+                                    ("second", -2.639057329615259), ("day", -2.9267394020670396),+                                    ("year", -2.639057329615259),+                                    ("<integer> <unit-of-duration>", -1.1921383466789333),+                                    ("une <unit-of-duration>", -2.2335922215070942),+                                    ("hour", -2.4159137783010487), ("month", -3.332204510175204),+                                    ("minute", -1.9459101490553135)],+                               n = 23},+                   koData =+                     ClassData{prior = -2.5257286443082556, unseen = -2.70805020110221,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -1.9459101490553135), ("day", -1.9459101490553135),+                                    ("une <unit-of-duration>", -1.540445040947149)],+                               n = 2}}),+       ("<time> timezone",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.3025850929940455,+                               likelihoods =+                                 HashMap.fromList+                                   [("\224|vers <time-of-day>", -1.5040773967762742),+                                    ("hour", -0.8109302162163288),+                                    ("<time-of-day> heures", -1.0986122886681098)],+                               n = 3},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("n <cycle> apr\232s",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,+                               likelihoods =+                                 HashMap.fromList+                                   [("number (0..16)jour (grain)", -0.6931471805599453),+                                    ("day", -0.6931471805599453)],+                               n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("integer (numeric)",+        Classifier{okData =+                     ClassData{prior = -0.4793738175333202, unseen = -5.484796933490655,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 239},+                   koData =+                     ClassData{prior = -0.9654047826860945, unseen = -5.003946305945459,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 147}}),+       ("<named-month>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("apr\232s le travail",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("n prochains <cycle>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -3.5553480614894135,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -2.833213344056216),+                                    ("number (0..16)seconde (grain)", -2.833213344056216),+                                    ("second", -2.4277482359480516),+                                    ("integer (numeric)ann\233e (grain)", -2.833213344056216),+                                    ("integer (numeric)seconde (grain)", -2.833213344056216),+                                    ("number (0..16)minute (grain)", -2.833213344056216),+                                    ("integer (numeric)jour (grain)", -2.833213344056216),+                                    ("day", -2.833213344056216), ("year", -2.833213344056216),+                                    ("hour", -2.833213344056216), ("month", -2.833213344056216),+                                    ("integer (numeric)minute (grain)", -2.833213344056216),+                                    ("integer (numeric)mois (grain)", -2.833213344056216),+                                    ("minute", -2.4277482359480516),+                                    ("integer (numeric)semaine (grain)", -2.833213344056216),+                                    ("integer (numeric)heure (grain)", -2.833213344056216)],+                               n = 9},+                   koData =+                     ClassData{prior = -infinity, unseen = -2.833213344056216,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("fin d'ann\233e",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<day-of-week> <day-of-month> \224 <time-of-day>)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -3.58351893845611,+                               likelihoods =+                                 HashMap.fromList+                                   [("dayhour", -0.7827593392496325),+                                    ("named-dayinteger (numeric)\224|vers <time-of-day>",+                                     -1.6094379124341003),+                                    ("named-daynumber (0..16)<time-of-day> heures",+                                     -2.456735772821304),+                                    ("named-dayinteger (numeric)<time-of-day> heures",+                                     -2.169053700369523),+                                    ("named-daynumber (0..16)\224|vers <time-of-day>",+                                     -1.9459101490553135)],+                               n = 15},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("apr\232s le d\233jeuner",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<named-day> en quinze",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.70805020110221,+                               likelihoods =+                                 HashMap.fromList+                                   [("day", -0.6931471805599453),+                                    ("named-day", -0.6931471805599453)],+                               n = 6},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("entre <datetime> et <datetime> (interval)",+        Classifier{okData =+                     ClassData{prior = -0.25131442828090605,+                               unseen = -4.127134385045092,+                               likelihoods =+                                 HashMap.fromList+                                   [("le <time>le <day-of-month> (non ordinal)",+                                     -3.417726683613366),+                                    ("le <time>le <time>", -3.012261575505202),+                                    ("dayday", -1.7129785913749407),+                                    ("hourhour", -3.417726683613366),+                                    ("le <time>intersect", -3.417726683613366),+                                    ("miditime-of-day (latent)", -3.417726683613366),+                                    ("intersectle <day-of-month> (non ordinal)",+                                     -3.417726683613366),+                                    ("minutehour", -1.7129785913749407),+                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",+                                     -3.012261575505202),+                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",+                                     -2.7245795030534206),+                                    ("le <day-of-month> (non ordinal)le <day-of-month> (non ordinal)",+                                     -3.012261575505202),+                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",+                                     -2.7245795030534206),+                                    ("intersectintersect", -3.417726683613366),+                                    ("intersectle <time>", -3.012261575505202),+                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",+                                     -3.012261575505202)],+                               n = 21},+                   koData =+                     ClassData{prior = -1.5040773967762742,+                               unseen = -3.4657359027997265,+                               likelihoods =+                                 HashMap.fromList+                                   [("<hour-of-day> <integer> (as relative minutes)intersect",+                                     -2.740840023925201),+                                    ("dayday", -2.3353749158170367),+                                    ("le <day-of-month> (non ordinal)intersect",+                                     -2.740840023925201),+                                    ("minutehour", -1.824549292051046),+                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",+                                     -2.740840023925201),+                                    ("le <day-of-month> (non ordinal)le <time>",+                                     -2.740840023925201),+                                    ("hh(:|h)mm (time-of-day)intersect", -2.740840023925201),+                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",+                                     -2.740840023925201)],+                               n = 6}}),+       ("soir",+        Classifier{okData =+                     ClassData{prior = -0.1823215567939546, unseen = -2.833213344056216,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 15},+                   koData =+                     ClassData{prior = -1.791759469228055, unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),+       ("ann\233e (grain)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("d\233but de semaine",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<hour-of-day> moins <integer> (as relative minutes)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("midinumber (0..16)", -0.6931471805599453),+                                    ("hour", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<named-month|named-day> suivant|d'apr\232s",+        Classifier{okData =+                     ClassData{prior = -0.10178269430994236,+                               unseen = -4.174387269895637,+                               likelihoods =+                                 HashMap.fromList+                                   [("intersect", -2.5494451709255714),+                                    ("en semaine", -1.9616585060234524),+                                    ("intersect by 'de' or ','", -2.5494451709255714),+                                    ("day", -0.7915872533731978),+                                    ("named-day", -2.5494451709255714),+                                    ("le <time>", -1.9616585060234524)],+                               n = 28},+                   koData =+                     ClassData{prior = -2.3353749158170367, unseen = -2.70805020110221,+                               likelihoods =+                                 HashMap.fromList+                                   [("en semaine", -1.9459101490553135),+                                    ("day", -1.540445040947149), ("hour", -1.9459101490553135),+                                    ("<time-of-day> heures", -1.9459101490553135),+                                    ("le <time>", -1.9459101490553135)],+                               n = 3}}),+       ("seconde (grain)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 5},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<hour-of-day> et|pass\233 de <number>",+        Classifier{okData =+                     ClassData{prior = -0.13353139262452263,+                               unseen = -3.0910424533583156,+                               likelihoods =+                                 HashMap.fromList+                                   [("\224|vers <time-of-day>number (20..60)", -2.3513752571634776),+                                    ("<time-of-day> heuresinteger (numeric)", -2.3513752571634776),+                                    ("\224|vers <time-of-day>number (0..16)", -2.3513752571634776),+                                    ("hour", -0.9650808960435872),+                                    ("<time-of-day> heuresnumber (20..60)", -1.9459101490553135),+                                    ("<time-of-day> heuresnumber (0..16)", -1.9459101490553135)],+                               n = 7},+                   koData =+                     ClassData{prior = -2.0794415416798357,+                               unseen = -2.3025850929940455,+                               likelihoods =+                                 HashMap.fromList+                                   [("midiinteger (numeric)", -1.5040773967762742),+                                    ("hour", -1.5040773967762742)],+                               n = 1}}),+       ("<hour-of-day> moins quart",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("midi", -0.6931471805599453), ("hour", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("de <time-of-day> - <time-of-day> (interval)",+        Classifier{okData =+                     ClassData{prior = -0.587786664902119, unseen = -3.8066624897703196,+                               likelihoods =+                                 HashMap.fromList+                                   [("hh(:|h)mm (time-of-day)<hour-of-day> <integer> (as relative minutes)",+                                     -2.6855773452501515),+                                    ("minuteminute", -1.5869650565820417),+                                    ("time-of-day (latent)time-of-day (latent)",+                                     -3.0910424533583156),+                                    ("<time-of-day> heures<time-of-day> heures",+                                     -3.0910424533583156),+                                    ("hh(:|h)mm (time-of-day)hh(:|h)mm (time-of-day)",+                                     -2.6855773452501515),+                                    ("hourhour", -2.3978952727983707),+                                    ("minutehour", -2.174751721484161),+                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",+                                     -2.3978952727983707),+                                    ("<hour-of-day> <integer> (as relative minutes)hh(:|h)mm (time-of-day)",+                                     -2.6855773452501515),+                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",+                                     -3.0910424533583156),+                                    ("<hour-of-day> <integer> (as relative minutes)<hour-of-day> <integer> (as relative minutes)",+                                     -2.6855773452501515),+                                    ("<time-of-day> heurestime-of-day (latent)",+                                     -3.0910424533583156)],+                               n = 15},+                   koData =+                     ClassData{prior = -0.8109302162163288,+                               unseen = -3.6635616461296463,+                               likelihoods =+                                 HashMap.fromList+                                   [("minutehour", -1.072636802264849),+                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",+                                     -2.2512917986064953),+                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",+                                     -2.538973871058276),+                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",+                                     -2.538973871058276),+                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",+                                     -1.845826690498331)],+                               n = 12}}),+       ("<datetime>-dd <month>(interval)",+        Classifier{okData =+                     ClassData{prior = -1.466337068793427, unseen = -2.772588722239781,+                               likelihoods =+                                 HashMap.fromList+                                   [("daymonth", -1.3217558399823195),+                                    ("<day-of-month> <named-month>named-month",+                                     -1.6094379124341003),+                                    ("day of month (premier)named-month", -2.0149030205422647)],+                               n = 3},+                   koData =+                     ClassData{prior = -0.262364264467491, unseen = -3.4011973816621555,+                               likelihoods =+                                 HashMap.fromList+                                   [("hourmonth", -1.7578579175523736),+                                    ("named-monthnamed-month", -2.268683541318364),+                                    ("monthmonth", -2.268683541318364),+                                    ("year (latent)named-month", -1.7578579175523736),+                                    ("yearmonth", -1.7578579175523736),+                                    ("time-of-day (latent)named-month", -1.7578579175523736)],+                               n = 10}}),+       ("semaine (grain)",+        Classifier{okData =+                     ClassData{prior = -7.79615414697118e-2,+                               unseen = -3.6635616461296463,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 37},+                   koData =+                     ClassData{prior = -2.5902671654458267,+                               unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),+       ("<integer> + '\"",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],+                               n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("demain",+        Classifier{okData =+                     ClassData{prior = -0.45198512374305727,+                               unseen = -2.1972245773362196,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},+                   koData =+                     ClassData{prior = -1.0116009116784799, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),+       ("mois (grain)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("intersect by 'mais/par exemple/plut\244t'",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -3.8066624897703196,+                               likelihoods =+                                 HashMap.fromList+                                   [("dayhour", -2.3978952727983707),+                                    ("named-dayentre <time-of-day> et <time-of-day> (interval)",+                                     -1.5869650565820417),+                                    ("le <day-of-month> (non ordinal)<time-of-day> heures",+                                     -3.0910424533583156),+                                    ("le <day-of-month> (non ordinal)\224|vers <time-of-day>",+                                     -2.6855773452501515),+                                    ("dayminute", -0.9509762898620451),+                                    ("named-dayentre <datetime> et <datetime> (interval)",+                                     -1.5869650565820417)],+                               n = 19},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("de <datetime> - <datetime> (interval)",+        Classifier{okData =+                     ClassData{prior = -1.410986973710262, unseen = -4.143134726391533,+                               likelihoods =+                                 HashMap.fromList+                                   [("day of month (premier)<day-of-week> <day-of-month>",+                                     -3.4339872044851463),+                                    ("hh(:|h)mm (time-of-day)<hour-of-day> <integer> (as relative minutes)",+                                     -3.4339872044851463),+                                    ("minuteminute", -2.517696472610991),+                                    ("hh(:|h)mm (time-of-day)hh(:|h)mm (time-of-day)",+                                     -3.4339872044851463),+                                    ("dayday", -2.517696472610991),+                                    ("<day-of-month> <named-month>day of month (premier)",+                                     -3.4339872044851463),+                                    ("minutehour", -3.028522096376982),+                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",+                                     -3.4339872044851463),+                                    ("<hour-of-day> <integer> (as relative minutes)hh(:|h)mm (time-of-day)",+                                     -3.4339872044851463),+                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",+                                     -3.4339872044851463),+                                    ("<hour-of-day> <integer> (as relative minutes)<hour-of-day> <integer> (as relative minutes)",+                                     -3.4339872044851463),+                                    ("<day-of-month> <named-month>intersect", -3.4339872044851463),+                                    ("intersect<day-of-week> <day-of-month>", -3.4339872044851463)],+                               n = 10},+                   koData =+                     ClassData{prior = -0.27958486221916157,+                               unseen = -4.653960350157523,+                               likelihoods =+                                 HashMap.fromList+                                   [("<hour-of-day> <integer> (as relative minutes)intersect",+                                     -3.951243718581427),+                                    ("<day-of-month> <named-month>time-of-day (latent)",+                                     -3.951243718581427),+                                    ("hourday", -3.0349529867072724),+                                    ("dayhour", -3.951243718581427),+                                    ("yearhour", -3.951243718581427),+                                    ("intersectnamed-day", -3.951243718581427),+                                    ("time-of-day (latent)year (latent)", -3.951243718581427),+                                    ("houryear", -3.951243718581427),+                                    ("day of month (premier)named-day", -3.951243718581427),+                                    ("time-of-day (latent)intersect", -3.545778610473263),+                                    ("year (latent)intersect", -3.545778610473263),+                                    ("yearyear", -3.951243718581427),+                                    ("time-of-day (latent)time-of-day (latent)",+                                     -3.951243718581427),+                                    ("dayday", -2.2464956263430023),+                                    ("year (latent)year (latent)", -3.951243718581427),+                                    ("<day-of-week> <day-of-month><day-of-week> <day-of-month>",+                                     -3.951243718581427),+                                    ("hourhour", -3.951243718581427),+                                    ("time-of-day (latent)<day-of-week> <day-of-month>",+                                     -3.951243718581427),+                                    ("minutehour", -2.4471663218051534),+                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",+                                     -3.545778610473263),+                                    ("year (latent)<day-of-week> <day-of-month>",+                                     -3.951243718581427),+                                    ("year (latent)time-of-day (latent)", -3.951243718581427),+                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",+                                     -3.951243718581427),+                                    ("year (latent)named-day", -3.951243718581427),+                                    ("time-of-day (latent)named-day", -3.951243718581427),+                                    ("day of month (premier)intersect", -3.545778610473263),+                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",+                                     -3.951243718581427),+                                    ("intersectintersect", -3.545778610473263),+                                    ("hh(:|h)mm (time-of-day)intersect", -3.951243718581427),+                                    ("yearday", -3.0349529867072724),+                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",+                                     -3.545778610473263),+                                    ("<day-of-week> <day-of-month>named-day", -3.951243718581427),+                                    ("<day-of-week> <day-of-month>intersect", -3.545778610473263)],+                               n = 31}}),+       ("<ordinal> <cycle> de <time>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.890371757896165,+                               likelihoods =+                                 HashMap.fromList+                                   [("daymonth", -1.7346010553881064),+                                    ("ordinals (premier..seizieme)semaine (grain)named-month",+                                     -1.7346010553881064),+                                    ("ordinal (digits)jour (grain)named-month",+                                     -1.7346010553881064),+                                    ("weekmonth", -1.2237754316221157),+                                    ("ordinals (premier..seizieme)semaine (grain)intersect",+                                     -1.7346010553881064)],+                               n = 6},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("premi\232re quinzaine de <named-month>(interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("n <cycle> suivants",+        Classifier{okData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -2.3978952727983707,+                               likelihoods =+                                 HashMap.fromList+                                   [("hour", -1.6094379124341003), ("month", -1.6094379124341003),+                                    ("integer (numeric)mois (grain)", -1.6094379124341003),+                                    ("integer (numeric)heure (grain)", -1.6094379124341003)],+                               n = 2},+                   koData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -2.3978952727983707,+                               likelihoods =+                                 HashMap.fromList+                                   [("number (0..16)jour (grain)", -1.2039728043259361),+                                    ("day", -1.2039728043259361)],+                               n = 2}}),+       ("intersect",+        Classifier{okData =+                     ClassData{prior = -0.24867991464851183,+                               unseen = -7.182352111885263,+                               likelihoods =+                                 HashMap.fromList+                                   [("apr\232s <time-of-day>named-month", -5.795297583491974),+                                    ("<day-of-month> <named-month><dim time> <part-of-day>",+                                     -6.082979655943755),+                                    ("intersect<dim time> du matin", -6.082979655943755),+                                    ("<hour-of-day> <integer> (as relative minutes)intersect",+                                     -6.082979655943755),+                                    ("hh(:|h)mm (time-of-day)named-day", -6.082979655943755),+                                    ("<day-of-month> <named-month>d\233but de journ\233e",+                                     -6.48844476405192),+                                    ("demain<time-of-day> heures", -6.082979655943755),+                                    ("hourday", -4.237152965445424),+                                    ("<day-of-month> <named-month>year", -5.795297583491974),+                                    ("dayhour", -1.6132474408507682),+                                    ("daymonth", -3.070718080438554),+                                    ("monthyear", -4.984367367275645),+                                    ("<day-of-month> <named-month>d\233but de matin\233e",+                                     -6.48844476405192),+                                    ("dernier <cycle> de <time> (latent)year", -5.572154032177765),+                                    ("aujourd'huimilieu d'apr\232s-midi", -6.48844476405192),+                                    ("named-month<dim time> du matin", -6.082979655943755),+                                    ("<day-of-month> <named-month>\224|vers <time-of-day>",+                                     -4.348378600555649),+                                    ("dd mmyear", -5.235681795556552),+                                    ("named-monthd\233but d'apr\232s-midi", -6.48844476405192),+                                    ("aujourd'huifin d'apr\232s-midi", -6.48844476405192),+                                    ("le <day-of-month> (non ordinal)<dim time> du matin",+                                     -6.082979655943755),+                                    ("named-monthd\233but de matin\233e", -6.48844476405192),+                                    ("aujourd'huimilieu de matin\233e", -6.48844476405192),+                                    ("hh(:|h)mm (time-of-day)<day-of-week> <day-of-month>",+                                     -6.48844476405192),+                                    ("named-month\224|vers <time-of-day>", -5.235681795556552),+                                    ("named-dayday of month (premier)", -5.795297583491974),+                                    ("<time-of-day> heuresdu|dans le <part-of-day>",+                                     -4.984367367275645),+                                    ("named-monthd\233but de soir\233e", -6.48844476405192),+                                    ("<hour-of-day> et quart<dim time> <part-of-day>",+                                     -5.795297583491974),+                                    ("<day-of-week> <day-of-month>named-month", -5.795297583491974),+                                    ("le <time>du|dans le <part-of-day>", -5.572154032177765),+                                    ("aujourd'huifin de matin\233e", -6.48844476405192),+                                    ("aujourd'huifin de soir\233e", -6.48844476405192),+                                    ("\224|vers <time-of-day>ce <part-of-day>", -5.795297583491974),+                                    ("<day-of-month> <named-month>d\233but d'apr\232s-midi",+                                     -6.48844476405192),+                                    ("le <day-of-month> (non ordinal)<dim time> du soir",+                                     -5.235681795556552),+                                    ("named-monthmilieu de matin\233e", -6.48844476405192),+                                    ("aujourd'huid\233but de soir\233e", -6.48844476405192),+                                    ("named-monthfin de soir\233e", -6.48844476405192),+                                    ("entre <datetime> et <datetime> (interval)named-day",+                                     -6.082979655943755),+                                    ("<hour-of-day> et demice <part-of-day>", -5.795297583491974),+                                    ("le <time>fin de matin\233e", -6.48844476405192),+                                    ("intersectmilieu de journ\233e", -6.48844476405192),+                                    ("intersectfin de journ\233e", -6.48844476405192),+                                    ("le <day-of-month> (non ordinal)<time-of-day> heures",+                                     -4.879006851617819),+                                    ("<hour-of-day> <integer> (as relative minutes)<day-of-week> <day-of-month>",+                                     -6.48844476405192),+                                    ("le <day-of-month> (non ordinal)named-month",+                                     -3.923495406590383),+                                    ("monthhour", -3.8857550786075357),+                                    ("le <time><time-of-day> heures", -5.38983247538381),+                                    ("le <time>fin d'apr\232s-midi", -6.48844476405192),+                                    ("hourmonth", -4.984367367275645),+                                    ("named-monthmilieu d'apr\232s-midi", -6.48844476405192),+                                    ("<time-of-day> heuresle <time>", -4.984367367275645),+                                    ("dayday", -4.137069506888442),+                                    ("aujourd'hui<hour-of-day> <integer> (as relative minutes)",+                                     -5.795297583491974),+                                    ("apr\232s <time-of-day>named-day", -6.082979655943755),+                                    ("named-dayle <cycle> prochain|suivant|d'apr\232s",+                                     -5.102150402932029),+                                    ("named-dayapr\232s <time-of-day>", -5.38983247538381),+                                    ("hourhour", -3.4680198779075573),+                                    ("<day-of-week> <day-of-month>\224|vers <time-of-day>",+                                     -4.783696671813495),+                                    ("le <time>intersect", -5.795297583491974),+                                    ("\224|vers <time-of-day><dim time> <part-of-day>",+                                     -6.48844476405192),+                                    ("aujourd'huiau d\233jeuner", -6.48844476405192),+                                    ("<time-of-day> heuresintersect", -5.572154032177765),+                                    ("intersectnamed-month", -4.879006851617819),+                                    ("intersect<time-of-day> heures", -5.795297583491974),+                                    ("<hour-of-day> et quartce <part-of-day>", -5.795297583491974),+                                    ("dayyear", -4.090549491253549),+                                    ("named-dayce|dans le <cycle>", -5.795297583491974),+                                    ("apr\232s-demain\224|vers <time-of-day>", -5.572154032177765),+                                    ("intersectfin d'apr\232s-midi", -6.48844476405192),+                                    ("le <ordinal> <cycle> de <time>year", -6.48844476405192),+                                    ("intersectmilieu d'apr\232s-midi", -6.48844476405192),+                                    ("named-monthfin de journ\233e", -6.48844476405192),+                                    ("le <time>milieu de journ\233e", -6.48844476405192),+                                    ("aujourd'huid\233but de journ\233e", -6.48844476405192),+                                    ("demain\224|vers <time-of-day>", -5.572154032177765),+                                    ("le <day-of-month> (non ordinal)intersect",+                                     -3.544005784885479),+                                    ("hourminute", -6.48844476405192),+                                    ("dd-dd <month>(interval)year", -6.48844476405192),+                                    ("intersect<day-of-month> <named-month>", -6.082979655943755),+                                    ("minutemonth", -6.082979655943755),+                                    ("\224|vers <time-of-day>demain", -6.48844476405192),+                                    ("minutehour", -4.616642587150328),+                                    ("named-daydu|dans le <part-of-day>", -6.082979655943755),+                                    ("aujourd'huimilieu de journ\233e", -6.48844476405192),+                                    ("named-monthyear", -4.984367367275645),+                                    ("intersectd\233but de soir\233e", -6.48844476405192),+                                    ("entre <datetime> et <datetime> (interval)named-month",+                                     -6.48844476405192),+                                    ("aujourd'huifin de journ\233e", -6.48844476405192),+                                    ("intersectdu|dans le <part-of-day>", -4.137069506888442),+                                    ("le <day-of-month> \224 <datetime>du|dans le <part-of-day>",+                                     -6.082979655943755),+                                    ("named-monthd\233but de journ\233e", -6.48844476405192),+                                    ("named-month<dim time> <part-of-day>", -6.082979655943755),+                                    ("le <day-of-month> (non ordinal)apr\232s <time-of-day>",+                                     -6.48844476405192),+                                    ("named-day<day-of-month> <named-month>", -5.795297583491974),+                                    ("named-dayle <time>", -4.348378600555649),+                                    ("le <day-of-month> (non ordinal)<dim time> <part-of-day>",+                                     -4.090549491253549),+                                    ("dd/-mm<time-of-day> heures", -6.082979655943755),+                                    ("de <datetime> - <datetime> (interval)named-month",+                                     -6.082979655943755),+                                    ("apr\232s <time-of-day>le <time>", -5.572154032177765),+                                    ("named-day<time-of-day> heures", -5.795297583491974),+                                    ("intersectd\233but d'apr\232s-midi", -6.48844476405192),+                                    ("named-dayfin d'apr\232s-midi", -6.082979655943755),+                                    ("<hour-of-day> et quartdemain", -5.795297583491974),+                                    ("<time-of-day> heuresce <time>", -6.48844476405192),+                                    ("le <time>d\233but d'apr\232s-midi", -6.48844476405192),+                                    ("<day-of-month> <named-month>du|dans le <part-of-day>",+                                     -6.082979655943755),+                                    ("named-dayintersect", -6.48844476405192),+                                    ("le <time><dim time> du matin", -6.082979655943755),+                                    ("apr\232s <time-of-day>intersect", -6.082979655943755),+                                    ("le <day-of-month> (non ordinal)\224|vers <time-of-day>",+                                     -4.542534614996606),+                                    ("<day-of-month> <named-month>d\233but de soir\233e",+                                     -6.48844476405192),+                                    ("hierdu|dans le <part-of-day>", -6.48844476405192),+                                    ("le <time>d\233but de soir\233e", -6.48844476405192),+                                    ("intersect<dim time> <part-of-day>", -6.082979655943755),+                                    ("dayminute", -4.783696671813495),+                                    ("intersectd\233but de journ\233e", -6.48844476405192),+                                    ("<ordinal> <cycle> de <time>year", -6.082979655943755),+                                    ("le <time>\224|vers <time-of-day>", -4.783696671813495),+                                    ("<day-of-month> <named-month><dim time> du matin",+                                     -6.082979655943755),+                                    ("intersectyear", -5.795297583491974),+                                    ("<day-of-week> <day-of-month><time-of-day> heures",+                                     -5.38983247538381),+                                    ("minuteday", -3.5180302984822185),+                                    ("le <time>d\233but de matin\233e", -6.48844476405192),+                                    ("<datetime> - <datetime> (interval)named-month",+                                     -5.235681795556552),+                                    ("<day-of-month> <named-month><time-of-day> heures",+                                     -4.984367367275645),+                                    ("aujourd'hui\224|vers <time-of-day>", -5.572154032177765),+                                    ("<day-of-month> <named-month>milieu d'apr\232s-midi",+                                     -6.48844476405192),+                                    ("day of month (premier)intersect", -6.48844476405192),+                                    ("<day-of-month> <named-month>fin d'apr\232s-midi",+                                     -6.48844476405192),+                                    ("entre <time-of-day> et <time-of-day> (interval)named-day",+                                     -6.082979655943755),+                                    ("named-monthfin de matin\233e", -6.48844476405192),+                                    ("named-day<named-month|named-day> suivant|d'apr\232s",+                                     -5.572154032177765),+                                    ("le <time>milieu de matin\233e", -6.48844476405192),+                                    ("aujourd'huid\233but de matin\233e", -5.38983247538381),+                                    ("<dim time> <part-of-day>apr\232s <time-of-day>",+                                     -6.48844476405192),+                                    ("le <time>fin de soir\233e", -6.48844476405192),+                                    ("<day-of-month> <named-month>milieu de matin\233e",+                                     -6.48844476405192),+                                    ("<day-of-month> <named-month>fin de soir\233e",+                                     -6.48844476405192),+                                    ("named-month<time-of-day> heures", -5.795297583491974),+                                    ("<day-of-month> <named-month>fin de matin\233e",+                                     -6.48844476405192),+                                    ("<time-of-day> heuresce <part-of-day>", -5.795297583491974),+                                    ("named-monthfin d'apr\232s-midi", -6.48844476405192),+                                    ("le <time>named-month", -5.235681795556552),+                                    ("apr\232s le <day-of-month>named-month", -6.48844476405192),+                                    ("aujourd'huid\233but d'apr\232s-midi", -6.48844476405192),+                                    ("le <time>milieu d'apr\232s-midi", -6.48844476405192),+                                    ("\224|vers <time-of-day>du|dans le <part-of-day>",+                                     -5.38983247538381),+                                    ("intersectintersect", -6.082979655943755),+                                    ("de <time-of-day> - <time-of-day> (interval)named-day",+                                     -5.572154032177765),+                                    ("de <datetime> - <datetime> (interval)named-day",+                                     -6.082979655943755),+                                    ("named-dayde <time-of-day> - <time-of-day> (interval)",+                                     -6.082979655943755),+                                    ("dayweek", -4.2912201867157), ("weekyear", -5.102150402932029),+                                    ("<hour-of-day> <integer> (as relative minutes)named-day",+                                     -6.082979655943755),+                                    ("hh(:|h)mm (time-of-day)intersect", -6.082979655943755),+                                    ("named-monthintersect", -6.082979655943755),+                                    ("<day-of-month> <named-month>fin de journ\233e",+                                     -6.48844476405192),+                                    ("<day-of-month> <named-month>milieu de journ\233e",+                                     -6.48844476405192),+                                    ("le <time>fin de journ\233e", -6.48844476405192),+                                    ("dd/-mm\224|vers <time-of-day>", -5.572154032177765),+                                    ("intersectfin de matin\233e", -6.48844476405192),+                                    ("day of month (premier)named-month", -4.696685294823864),+                                    ("named-day\224|vers <time-of-day>", -5.102150402932029),+                                    ("named-monthmilieu de journ\233e", -6.48844476405192),+                                    ("<day-of-month> <named-month>intersect", -6.082979655943755),+                                    ("intersectfin de soir\233e", -6.48844476405192),+                                    ("intersectmilieu de matin\233e", -6.48844476405192),+                                    ("intersect\224|vers <time-of-day>", -5.235681795556552),+                                    ("le <time>year", -4.984367367275645),+                                    ("le <time><dim time> <part-of-day>", -6.082979655943755),+                                    ("<time-of-day> - <time-of-day> (interval)named-day",+                                     -5.235681795556552),+                                    ("apr\232s-demain<time-of-day> heures", -6.082979655943755),+                                    ("le <time>d\233but de journ\233e", -6.48844476405192),+                                    ("intersectd\233but de matin\233e", -6.48844476405192),+                                    ("<datetime> - <datetime> (interval)named-day",+                                     -5.572154032177765)],+                               n = 549},+                   koData =+                     ClassData{prior = -1.5133532392387958, unseen = -6.269096283706261,+                               likelihoods =+                                 HashMap.fromList+                                   [("<hour-of-day> <integer> (as relative minutes)intersect",+                                     -5.574053367981417),+                                    ("hh(:|h)mm (time-of-day)named-day", -5.574053367981417),+                                    ("year<time-of-day> - <time-of-day> (interval)",+                                     -4.880906187421472),+                                    ("demain<time-of-day> heures", -4.880906187421472),+                                    ("hourday", -3.2226781108179394),+                                    ("<day-of-month> <named-month>year", -5.574053367981417),+                                    ("demainavant <time-of-day>", -5.574053367981417),+                                    ("dayhour", -2.529530930257994),+                                    ("le lendemain du <time>named-month", -5.574053367981417),+                                    ("daymonth", -3.9646154555473165),+                                    ("monthday", -5.574053367981417),+                                    ("monthyear", -4.880906187421472),+                                    ("yearhour", -4.880906187421472),+                                    ("houryear", -5.168588259873252),+                                    ("aujourd'hui<time-of-day> heures", -5.574053367981417),+                                    ("named-month\224|vers <time-of-day>", -3.8693052757429918),+                                    ("<time-of-day> heuresdu|dans le <part-of-day>",+                                     -4.880906187421472),+                                    ("<day-of-week> <day-of-month>named-month", -4.187759006861526),+                                    ("le <time>du|dans le <part-of-day>", -5.168588259873252),+                                    ("le <day-of-month> (non ordinal)<hour-of-day> <integer> (as relative minutes)",+                                     -4.880906187421472),+                                    ("named-month<day-of-month> <named-month>", -5.574053367981417),+                                    ("<time-of-day> heuresle <day-of-month> (non ordinal)",+                                     -4.657762636107262),+                                    ("le <day-of-month> (non ordinal)<time-of-day> heures",+                                     -5.574053367981417),+                                    ("aujourd'huidu|dans le <part-of-day>", -5.168588259873252),+                                    ("le <day-of-month> (non ordinal)named-month",+                                     -5.574053367981417),+                                    ("monthhour", -3.3768287906451975),+                                    ("hourmonth", -4.321290399486049),+                                    ("dayday", -3.782293898753362),+                                    ("named-dayapr\232s <time-of-day>", -4.880906187421472),+                                    ("hourhour", -3.9646154555473165),+                                    ("named-day<hour-of-day> <integer> (as relative minutes)",+                                     -4.657762636107262),+                                    ("dayyear", -4.321290399486049),+                                    ("le <cycle> de <time>named-month", -5.168588259873252),+                                    ("year<hour-of-day> <integer> (as relative minutes)",+                                     -4.880906187421472),+                                    ("demain\224|vers <time-of-day>", -4.657762636107262),+                                    ("<dim time> <part-of-day><hour-of-day> <integer> (as relative minutes)",+                                     -5.168588259873252),+                                    ("hourminute", -5.168588259873252),+                                    ("minutemonth", -4.880906187421472),+                                    ("named-monthyear", -4.880906187421472),+                                    ("intersect by 'de' or ','year", -5.168588259873252),+                                    ("named-day<time-of-day> - <time-of-day> (interval)",+                                     -3.8693052757429918),+                                    ("named-day<datetime> - <datetime> (interval)",+                                     -5.168588259873252),+                                    ("named-day<day-of-month> <named-month>", -4.187759006861526),+                                    ("weekmonth", -5.168588259873252),+                                    ("named-dayle <time>", -5.168588259873252),+                                    ("avant <time-of-day>named-day", -5.574053367981417),+                                    ("de <datetime> - <datetime> (interval)named-month",+                                     -5.574053367981417),+                                    ("le <day-of-month> (non ordinal)year", -5.168588259873252),+                                    ("named-day<time-of-day> heures", -5.168588259873252),+                                    ("<time-of-day> heuresnamed-day", -4.069975971205143),+                                    ("apr\232s <time-of-day><time-of-day> heures",+                                     -5.168588259873252),+                                    ("<time-of-day> heuresdd/-mm", -5.574053367981417),+                                    ("<time-of-day> - <time-of-day> (interval)du|dans le <part-of-day>",+                                     -5.168588259873252),+                                    ("<hour-of-day> <integer> (as relative minutes)named-month",+                                     -5.168588259873252),+                                    ("le <day-of-month> (non ordinal)\224|vers <time-of-day>",+                                     -4.880906187421472),+                                    ("dayminute", -4.187759006861526),+                                    ("named-monthdu|dans le <part-of-day>", -5.168588259873252),+                                    ("intersectyear", -5.168588259873252),+                                    ("minuteday", -4.880906187421472),+                                    ("aujourd'hui\224|vers <time-of-day>", -4.880906187421472),+                                    ("<datetime>-dd <month>(interval)year", -5.168588259873252),+                                    ("<time-of-day> - <time-of-day> (interval)named-month",+                                     -4.657762636107262),+                                    ("le <day-of-month> (non ordinal)avant <time-of-day>",+                                     -5.574053367981417),+                                    ("<dim time> <part-of-day>apr\232s <time-of-day>",+                                     -5.574053367981417),+                                    ("named-month<time-of-day> heures", -4.475441079313307),+                                    ("demainapr\232s <time-of-day>", -5.574053367981417),+                                    ("<hour-of-day> <integer> (as relative minutes)named-day",+                                     -5.168588259873252),+                                    ("<hour-of-day> <integer> (as relative minutes)year",+                                     -4.657762636107262),+                                    ("<time-of-day> - <time-of-day> (interval)intersect",+                                     -5.574053367981417),+                                    ("apr\232s <time-of-day>\224|vers <time-of-day>",+                                     -4.657762636107262),+                                    ("\224|vers <time-of-day>named-day", -4.880906187421472),+                                    ("le <time>year", -5.168588259873252),+                                    ("apr\232s <time-of-day>le <day-of-month> (non ordinal)",+                                     -5.168588259873252),+                                    ("de <datetime> - <datetime> (interval)<day-of-month> <named-month>",+                                     -5.574053367981417),+                                    ("minuteyear", -4.187759006861526),+                                    ("yearminute", -4.880906187421472),+                                    ("<dim time> <part-of-day><time-of-day> heures",+                                     -5.574053367981417)],+                               n = 155}}),+       ("season",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("ce <day-of-week>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("day", -0.6931471805599453),+                                    ("named-day", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("le <cycle> de <time>",+        Classifier{okData =+                     ClassData{prior = -0.8472978603872037, unseen = -2.70805020110221,+                               likelihoods =+                                 HashMap.fromList+                                   [("monthmonth", -1.9459101490553135),+                                    ("mois (grain)named-month", -1.9459101490553135),+                                    ("weekday", -1.540445040947149),+                                    ("semaine (grain)<day-of-month> <named-month>",+                                     -1.540445040947149)],+                               n = 3},+                   koData =+                     ClassData{prior = -0.5596157879354228, unseen = -2.833213344056216,+                               likelihoods =+                                 HashMap.fromList+                                   [("semaine (grain)year (latent)", -1.6739764335716716),+                                    ("weekhour", -1.6739764335716716),+                                    ("semaine (grain)time-of-day (latent)", -1.6739764335716716),+                                    ("weekyear", -1.6739764335716716)],+                               n = 4}}),+       ("<hour-of-day> et trois quarts",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("hour", -0.6931471805599453),+                                    ("<time-of-day> heures", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("le <day-of-month> \224 <datetime>",+        Classifier{okData =+                     ClassData{prior = -0.325422400434628, unseen = -3.58351893845611,+                               likelihoods =+                                 HashMap.fromList+                                   [("integer (numeric)<time-of-day> heures", -1.9459101490553135),+                                    ("integer (numeric)<dim time> du soir", -2.8622008809294686),+                                    ("integer (numeric)intersect", -2.456735772821304),+                                    ("integer (numeric)<dim time> du matin", -2.8622008809294686),+                                    ("hour", -0.916290731874155),+                                    ("integer (numeric)time-of-day (latent)", -2.169053700369523),+                                    ("integer (numeric)<dim time> <part-of-day>",+                                     -2.456735772821304)],+                               n = 13},+                   koData =+                     ClassData{prior = -1.2809338454620642, unseen = -2.995732273553991,+                               likelihoods =+                                 HashMap.fromList+                                   [("integer (numeric)year (latent)", -1.3350010667323402),+                                    ("year", -1.3350010667323402), ("hour", -2.2512917986064953),+                                    ("integer (numeric)time-of-day (latent)", -2.2512917986064953)],+                               n = 5}}),+       ("yyyy-mm-dd",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("le <cycle> dernier",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.70805020110221,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -1.540445040947149),+                                    ("ann\233e (grain)", -1.9459101490553135),+                                    ("semaine (grain)", -1.540445040947149),+                                    ("mois (grain)", -1.9459101490553135),+                                    ("year", -1.9459101490553135), ("month", -1.9459101490553135)],+                               n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("year (latent)",+        Classifier{okData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0},+                   koData =+                     ClassData{prior = 0.0, unseen = -3.044522437723423,+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],+                               n = 19}}),+       ("soir de no\235l",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("fin de journ\233e",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("du <datetime>-<day-of-week> dd <month>(interval)",+        Classifier{okData =+                     ClassData{prior = -0.5108256237659907, unseen = -2.70805020110221,+                               likelihoods =+                                 HashMap.fromList+                                   [("intersectnamed-daynamed-month", -1.9459101490553135),+                                    ("day of month (premier)named-daynamed-month",+                                     -1.9459101490553135),+                                    ("<day-of-week> <day-of-month>named-daynamed-month",+                                     -1.9459101490553135),+                                    ("daydaymonth", -1.252762968495368)],+                               n = 3},+                   koData =+                     ClassData{prior = -0.916290731874155, unseen = -2.5649493574615367,+                               likelihoods =+                                 HashMap.fromList+                                   [("year (latent)named-daynamed-month", -1.791759469228055),+                                    ("hourdaymonth", -1.791759469228055),+                                    ("time-of-day (latent)named-daynamed-month",+                                     -1.791759469228055),+                                    ("yeardaymonth", -1.791759469228055)],+                               n = 2}}),+       ("milieu de semaine",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("d\233but d'ann\233e",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("noel",+        Classifier{okData =+                     ClassData{prior = -0.2876820724517809,+                               unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},+                   koData =+                     ClassData{prior = -1.3862943611198906,+                               unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),+       ("fin de matin\233e",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("le <day-of-month> (non ordinal)",+        Classifier{okData =+                     ClassData{prior = -0.35667494393873245,+                               unseen = -3.951243718581427,+                               likelihoods =+                                 HashMap.fromList [("integer (numeric)", -1.9802627296179754e-2)],+                               n = 49},+                   koData =+                     ClassData{prior = -1.2039728043259361,+                               unseen = -3.1780538303479458,+                               likelihoods =+                                 HashMap.fromList+                                   [("integer (numeric)", -0.24512245803298496),+                                    ("numbers 22..29 32..39 .. 52..59", -1.5260563034950494)],+                               n = 21}}),+       ("du dd-<day-of-week> dd <month>(interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-daynamed-month", -0.6931471805599453),+                                    ("daymonth", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("en semaine",+        Classifier{okData =+                     ClassData{prior = -1.2656663733312759,+                               unseen = -2.5649493574615367,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},+                   koData =+                     ClassData{prior = -0.3313571359544425,+                               unseen = -3.4011973816621555,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 28}}),+       ("numbers 22..29 32..39 .. 52..59",+        Classifier{okData =+                     ClassData{prior = -2.3025850929940455,+                               unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("number (20..60)number (0..16)", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -0.10536051565782628,+                               unseen = -2.5649493574615367,+                               likelihoods =+                                 HashMap.fromList+                                   [("integer (numeric)integer (numeric)", -0.2876820724517809),+                                    ("integer (numeric)number (0..16)", -1.791759469228055)],+                               n = 9}}),+       ("<day-of-week> prochain",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,+                               likelihoods =+                                 HashMap.fromList+                                   [("day", -0.6931471805599453),+                                    ("named-day", -0.6931471805599453)],+                               n = 3},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("intersect by 'de' or ','",+        Classifier{okData =+                     ClassData{prior = -0.26469255422708216,+                               unseen = -4.430816798843313,+                               likelihoods =+                                 HashMap.fromList+                                   [("dayhour", -3.3202283191284883),+                                    ("daymonth", -3.7256934272366524),+                                    ("hourmonth", -3.7256934272366524),+                                    ("dayday", -1.7797832781813394),+                                    ("named-dayle <cycle> prochain|suivant|d'apr\232s",+                                     -2.339399066116762),+                                    ("named-day<time-of-day> - <time-of-day> (interval)",+                                     -3.3202283191284883),+                                    ("named-dayle <time>", -1.5284688499004333),+                                    ("named-dayle <cycle> dernier", -3.7256934272366524),+                                    ("named-day<named-month|named-day> suivant|d'apr\232s",+                                     -2.8094026953624978),+                                    ("week-endnamed-month", -3.7256934272366524),+                                    ("dayweek", -1.5856272637403819),+                                    ("fin du moisnamed-month", -3.7256934272366524)],+                               n = 33},+                   koData =+                     ClassData{prior = -1.4586150226995167,+                               unseen = -3.6375861597263857,+                               likelihoods =+                                 HashMap.fromList+                                   [("hourday", -2.917770732084279),+                                    ("dayhour", -2.917770732084279),+                                    ("daymonth", -2.001480000210124),+                                    ("du|dans le <part-of-day>noel", -2.917770732084279),+                                    ("en semainenamed-month", -2.512305623976115),+                                    ("hourmonth", -2.512305623976115),+                                    ("dayday", -2.512305623976115),+                                    ("en semaineintersect", -2.512305623976115),+                                    ("named-dayle <time>", -2.512305623976115),+                                    ("named-day<time-of-day> heures", -2.917770732084279),+                                    ("week-endnamed-month", -2.512305623976115)],+                               n = 10}}),+       ("named-month",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -4.624972813284271,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 100},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("milieu d'apr\232s-midi",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("ce <part-of-day>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.772588722239781,+                               likelihoods =+                                 HashMap.fromList+                                   [("soir", -1.6094379124341003),+                                    ("apr\232s-midi", -1.0986122886681098),+                                    ("hour", -0.7621400520468967)],+                               n = 6},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("hh(:|h)mm (time-of-day)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -3.295836866004329,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 25},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("number (20..60)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("hier",+        Classifier{okData =+                     ClassData{prior = -0.2231435513142097, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -1.6094379124341003,+                               unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),+       ("plus tard",+        Classifier{okData =+                     ClassData{prior = -1.5040773967762742,+                               unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -0.25131442828090605,+                               unseen = -2.1972245773362196,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7}}),+       ("numbers prefix with -, negative or minus",+        Classifier{okData =+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [], n = 0},+                   koData =+                     ClassData{prior = 0.0, unseen = -2.833213344056216,+                               likelihoods =+                                 HashMap.fromList+                                   [("integer (numeric)", -0.2876820724517809),+                                    ("numbers 22..29 32..39 .. 52..59", -2.0794415416798357),+                                    ("number (0..16)", -2.0794415416798357)],+                               n = 13}}),+       ("dd-dd <month>(interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("plus tard <part-of-day>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,+                               likelihoods =+                                 HashMap.fromList+                                   [("du|dans le <part-of-day>", -0.6931471805599453),+                                    ("hour", -0.6931471805599453)],+                               n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<datetime>-<day-of-week> dd <month>(interval)",+        Classifier{okData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -3.2188758248682006,+                               likelihoods =+                                 HashMap.fromList+                                   [("intersectnamed-daynamed-month", -2.0794415416798357),+                                    ("day of month (premier)named-daynamed-month",+                                     -1.791759469228055),+                                    ("<day-of-week> <day-of-month>named-daynamed-month",+                                     -1.791759469228055),+                                    ("daydaymonth", -0.9808292530117262)],+                               n = 8},+                   koData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -3.2188758248682006,+                               likelihoods =+                                 HashMap.fromList+                                   [("year (latent)named-daynamed-month", -1.5686159179138452),+                                    ("hourdaymonth", -1.5686159179138452),+                                    ("time-of-day (latent)named-daynamed-month",+                                     -1.5686159179138452),+                                    ("yeardaymonth", -1.5686159179138452)],+                               n = 8}}),+       ("<dim time> du soir",+        Classifier{okData =+                     ClassData{prior = -0.2231435513142097, unseen = -2.995732273553991,+                               likelihoods =+                                 HashMap.fromList+                                   [("\224|vers <time-of-day>", -1.55814461804655),+                                    ("hour", -0.7472144018302211),+                                    ("<time-of-day> heures", -1.1526795099383855)],+                               n = 8},+                   koData =+                     ClassData{prior = -1.6094379124341003,+                               unseen = -2.0794415416798357,+                               likelihoods =+                                 HashMap.fromList+                                   [("hour", -0.8472978603872037),+                                    ("<time-of-day> heures", -0.8472978603872037)],+                               n = 2}}),+       ("aujourd'hui",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -3.2188758248682006,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 23},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("midi",+        Classifier{okData =+                     ClassData{prior = -1.157452788691043, unseen = -2.5649493574615367,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},+                   koData =+                     ClassData{prior = -0.37729423114146804,+                               unseen = -3.258096538021482,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 24}}),+       ("toussaint",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 5},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("d\233but de soir\233e",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<day-of-week> <day-of-month>",+        Classifier{okData =+                     ClassData{prior = -0.24512245803298496,+                               unseen = -3.6888794541139363,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-daynumber (0..16)", -2.5649493574615367),+                                    ("named-dayinteger (numeric)", -0.8303483020734304),+                                    ("day", -0.719122666963206)],+                               n = 18},+                   koData =+                     ClassData{prior = -1.5260563034950494, unseen = -2.639057329615259,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-dayinteger (numeric)", -0.7731898882334817),+                                    ("day", -0.7731898882334817)],+                               n = 5}}),+       ("d'ici <duration>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -1.252762968495368), ("day", -1.252762968495368),+                                    ("<integer> <unit-of-duration>", -0.8472978603872037)],+                               n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("\224|vers <time-of-day>",+        Classifier{okData =+                     ClassData{prior = -0.21936282847430377,+                               unseen = -5.420534999272286,+                               likelihoods =+                                 HashMap.fromList+                                   [("<time> timezone", -4.722953221644475),+                                    ("<hour-of-day> et|pass\233 de <number>", -4.31748811353631),+                                    ("hh(:|h)mm (time-of-day)", -4.722953221644475),+                                    ("midi", -4.31748811353631),+                                    ("time-of-day (latent)", -1.587459005715325),+                                    ("<hour-of-day> et|pass\233 de <number> minutes",+                                     -4.31748811353631),+                                    ("minuit", -4.722953221644475),+                                    ("<hour-of-day> et quart", -4.31748811353631),+                                    ("hour", -0.8622235106038793),+                                    ("<hour-of-day> et demi", -4.722953221644475),+                                    ("minute", -2.8511510447428834),+                                    ("<time-of-day> heures", -1.587459005715325),+                                    ("<hour-of-day> <integer> (as relative minutes)",+                                     -3.8066624897703196)],+                               n = 106},+                   koData =+                     ClassData{prior = -1.6247053845648889, unseen = -4.189654742026425,+                               likelihoods =+                                 HashMap.fromList+                                   [("hh(:|h)mm (time-of-day)", -3.0757749812275272),+                                    ("time-of-day (latent)", -1.5353299402803784),+                                    ("hour", -1.0388930539664873), ("minute", -2.5649493574615367),+                                    ("<time-of-day> heures", -1.8718021769015913),+                                    ("<hour-of-day> <integer> (as relative minutes)",+                                     -3.0757749812275272)],+                               n = 26}}),+       ("d\233but <named-month>(interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("d\233but de matin\233e",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.5649493574615367,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("apr\232s-midi",+        Classifier{okData =+                     ClassData{prior = -0.262364264467491, unseen = -2.4849066497880004,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},+                   koData =+                     ClassData{prior = -1.466337068793427, unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),+       ("le <ordinal> <cycle> de <time>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,+                               likelihoods =+                                 HashMap.fromList+                                   [("daymonth", -1.7047480922384253),+                                    ("ordinals (premier..seizieme)semaine (grain)named-month",+                                     -1.7047480922384253),+                                    ("ordinal (digits)jour (grain)named-month",+                                     -1.7047480922384253),+                                    ("weekmonth", -1.2992829841302609),+                                    ("ordinals (premier..seizieme)semaine (grain)intersect",+                                     -1.7047480922384253)],+                               n = 3},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("ordinals (premier..seizieme)",+        Classifier{okData =+                     ClassData{prior = -0.916290731874155, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -0.5108256237659907,+                               unseen = -2.0794415416798357,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),+       ("minute (grain)",+        Classifier{okData =+                     ClassData{prior = -0.2876820724517809,+                               unseen = -2.3978952727983707,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},+                   koData =+                     ClassData{prior = -1.3862943611198906,+                               unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),+       ("deuxi\232me quinzaine de <named-month>(interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<dim time> <part-of-day>",+        Classifier{okData =+                     ClassData{prior = -8.183001824763224e-2,+                               unseen = -5.834810737062605,+                               likelihoods =+                                 HashMap.fromList+                                   [("<day-of-month> <named-month>d\233but de journ\233e",+                                     -5.1387352967235715),+                                    ("dayhour", -1.6123747721074102),+                                    ("<day-of-month> <named-month>d\233but de matin\233e",+                                     -5.1387352967235715),+                                    ("aujourd'huimilieu d'apr\232s-midi", -5.1387352967235715),+                                    ("named-monthd\233but d'apr\232s-midi", -5.1387352967235715),+                                    ("aujourd'huifin d'apr\232s-midi", -5.1387352967235715),+                                    ("named-monthd\233but de matin\233e", -5.1387352967235715),+                                    ("aujourd'huimilieu de matin\233e", -5.1387352967235715),+                                    ("<time-of-day> heuresdu|dans le <part-of-day>",+                                     -3.6346578999472974),+                                    ("named-monthd\233but de soir\233e", -5.1387352967235715),+                                    ("le <time>du|dans le <part-of-day>", -4.222444564849416),+                                    ("aujourd'huifin de matin\233e", -5.1387352967235715),+                                    ("aujourd'huifin de soir\233e", -5.1387352967235715),+                                    ("\224|vers <time-of-day>ce <part-of-day>", -4.445588116163626),+                                    ("<day-of-month> <named-month>d\233but d'apr\232s-midi",+                                     -5.1387352967235715),+                                    ("named-daymatin", -4.733270188615407),+                                    ("named-monthmilieu de matin\233e", -5.1387352967235715),+                                    ("demainsoir", -5.1387352967235715),+                                    ("aujourd'huid\233but de soir\233e", -5.1387352967235715),+                                    ("named-monthfin de soir\233e", -5.1387352967235715),+                                    ("<hour-of-day> et demice <part-of-day>", -4.445588116163626),+                                    ("le <time>fin de matin\233e", -5.1387352967235715),+                                    ("intersectmilieu de journ\233e", -5.1387352967235715),+                                    ("intersectfin de journ\233e", -5.1387352967235715),+                                    ("monthhour", -3.3469758274955166),+                                    ("le <time>fin d'apr\232s-midi", -5.1387352967235715),+                                    ("named-monthmilieu d'apr\232s-midi", -5.1387352967235715),+                                    ("hourhour", -2.1430030231695802),+                                    ("aujourd'huiau d\233jeuner", -5.1387352967235715),+                                    ("<hour-of-day> et quartce <part-of-day>", -4.445588116163626),+                                    ("intersectfin d'apr\232s-midi", -5.1387352967235715),+                                    ("intersectmilieu d'apr\232s-midi", -5.1387352967235715),+                                    ("named-monthfin de journ\233e", -5.1387352967235715),+                                    ("le <time>milieu de journ\233e", -5.1387352967235715),+                                    ("aujourd'huid\233but de journ\233e", -5.1387352967235715),+                                    ("demainapr\232s-midi", -5.1387352967235715),+                                    ("minutehour", -3.26693311982198),+                                    ("named-daydu|dans le <part-of-day>", -4.733270188615407),+                                    ("aujourd'huimilieu de journ\233e", -5.1387352967235715),+                                    ("intersectd\233but de soir\233e", -5.1387352967235715),+                                    ("aujourd'huifin de journ\233e", -5.1387352967235715),+                                    ("intersectdu|dans le <part-of-day>", -2.787360039560094),+                                    ("le <day-of-month> \224 <datetime>du|dans le <part-of-day>",+                                     -4.733270188615407),+                                    ("named-monthd\233but de journ\233e", -5.1387352967235715),+                                    ("intersectd\233but d'apr\232s-midi", -5.1387352967235715),+                                    ("named-dayfin d'apr\232s-midi", -4.733270188615407),+                                    ("le <time>d\233but d'apr\232s-midi", -5.1387352967235715),+                                    ("<day-of-month> <named-month>du|dans le <part-of-day>",+                                     -4.733270188615407),+                                    ("<day-of-month> <named-month>d\233but de soir\233e",+                                     -5.1387352967235715),+                                    ("hierdu|dans le <part-of-day>", -5.1387352967235715),+                                    ("le <time>d\233but de soir\233e", -5.1387352967235715),+                                    ("intersectd\233but de journ\233e", -5.1387352967235715),+                                    ("le <time>d\233but de matin\233e", -5.1387352967235715),+                                    ("<day-of-month> <named-month>milieu d'apr\232s-midi",+                                     -5.1387352967235715),+                                    ("<day-of-month> <named-month>fin d'apr\232s-midi",+                                     -5.1387352967235715),+                                    ("named-daysoir", -5.1387352967235715),+                                    ("named-monthfin de matin\233e", -5.1387352967235715),+                                    ("le <time>milieu de matin\233e", -5.1387352967235715),+                                    ("aujourd'huid\233but de matin\233e", -4.0401230080554615),+                                    ("le <time>fin de soir\233e", -5.1387352967235715),+                                    ("<day-of-month> <named-month>milieu de matin\233e",+                                     -5.1387352967235715),+                                    ("<day-of-month> <named-month>fin de soir\233e",+                                     -5.1387352967235715),+                                    ("<day-of-month> <named-month>fin de matin\233e",+                                     -5.1387352967235715),+                                    ("<time-of-day> heuresce <part-of-day>", -4.445588116163626),+                                    ("named-monthfin d'apr\232s-midi", -5.1387352967235715),+                                    ("aujourd'huid\233but d'apr\232s-midi", -5.1387352967235715),+                                    ("le <time>milieu d'apr\232s-midi", -5.1387352967235715),+                                    ("\224|vers <time-of-day>du|dans le <part-of-day>",+                                     -4.0401230080554615),+                                    ("<day-of-month> <named-month>fin de journ\233e",+                                     -5.1387352967235715),+                                    ("<day-of-month> <named-month>milieu de journ\233e",+                                     -5.1387352967235715),+                                    ("le <time>fin de journ\233e", -5.1387352967235715),+                                    ("intersectfin de matin\233e", -5.1387352967235715),+                                    ("named-monthmilieu de journ\233e", -5.1387352967235715),+                                    ("named-dayapr\232s-midi", -5.1387352967235715),+                                    ("intersectfin de soir\233e", -5.1387352967235715),+                                    ("intersectmilieu de matin\233e", -5.1387352967235715),+                                    ("intersectapr\232s-midi", -4.222444564849416),+                                    ("le <time>d\233but de journ\233e", -5.1387352967235715),+                                    ("intersectd\233but de matin\233e", -5.1387352967235715),+                                    ("hiersoir", -5.1387352967235715)],+                               n = 129},+                   koData =+                     ClassData{prior = -2.5437471498109336, unseen = -4.663439094112067,+                               likelihoods =+                                 HashMap.fromList+                                   [("dayhour", -3.5553480614894135),+                                    ("<time-of-day> heuresdu|dans le <part-of-day>",+                                     -3.2676659890376327),+                                    ("le <time>du|dans le <part-of-day>", -3.5553480614894135),+                                    ("aujourd'huidu|dans le <part-of-day>", -3.5553480614894135),+                                    ("monthhour", -3.5553480614894135),+                                    ("hourhour", -2.5745188084776873),+                                    ("<time-of-day> - <time-of-day> (interval)du|dans le <part-of-day>",+                                     -3.5553480614894135),+                                    ("named-monthdu|dans le <part-of-day>", -3.5553480614894135)],+                               n = 11}}),+       ("jour de l'an",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("time-of-day (latent)",+        Classifier{okData =+                     ClassData{prior = -0.5596157879354228, unseen = -4.574710978503383,+                               likelihoods =+                                 HashMap.fromList+                                   [("integer (numeric)", -0.15762894420358317),+                                    ("number (0..16)", -2.0794415416798357)],+                               n = 92},+                   koData =+                     ClassData{prior = -0.8472978603872037, unseen = -4.304065093204169,+                               likelihoods =+                                 HashMap.fromList+                                   [("integer (numeric)", -0.24740817331384096),+                                    ("numbers 22..29 32..39 .. 52..59", -2.681021528714291),+                                    ("number (20..60)", -3.597312260588446),+                                    ("number (0..16)", -2.093234863812172)],+                               n = 69}}),+       ("apr\232s-demain",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("year",+        Classifier{okData =+                     ClassData{prior = -0.46262352194811296,+                               unseen = -2.9444389791664407,+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],+                               n = 17},+                   koData =+                     ClassData{prior = -0.9932517730102834,+                               unseen = -2.4849066497880004,+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],+                               n = 10}}),+       ("<hour-of-day> et|pass\233 de <number> minutes",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -3.044522437723423,+                               likelihoods =+                                 HashMap.fromList+                                   [("\224|vers <time-of-day>number (20..60)", -2.3025850929940455),+                                    ("<time-of-day> heuresinteger (numeric)", -2.3025850929940455),+                                    ("\224|vers <time-of-day>number (0..16)", -2.3025850929940455),+                                    ("hour", -0.916290731874155),+                                    ("<time-of-day> heuresnumber (20..60)", -1.8971199848858813),+                                    ("<time-of-day> heuresnumber (0..16)", -1.8971199848858813)],+                               n = 7},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<integer> <unit-of-duration>",+        Classifier{okData =+                     ClassData{prior = -0.916290731874155, unseen = -4.204692619390966,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -2.580216829592325),+                                    ("number (0..16)semaine (grain)", -3.0910424533583156),+                                    ("number (0..16)ann\233e (grain)", -3.0910424533583156),+                                    ("number (0..16)seconde (grain)", -3.4965075614664802),+                                    ("number (0..16)jour (grain)", -3.4965075614664802),+                                    ("second", -3.4965075614664802),+                                    ("integer (numeric)ann\233e (grain)", -3.4965075614664802),+                                    ("number (0..16)minute (grain)", -3.0910424533583156),+                                    ("integer (numeric)jour (grain)", -3.0910424533583156),+                                    ("day", -2.803360380906535), ("year", -2.803360380906535),+                                    ("number (0..16)mois (grain)", -3.0910424533583156),+                                    ("hour", -2.580216829592325),+                                    ("number (0..16)heure (grain)", -3.0910424533583156),+                                    ("month", -3.0910424533583156),+                                    ("integer (numeric)minute (grain)", -2.803360380906535),+                                    ("minute", -2.3978952727983707),+                                    ("integer (numeric)semaine (grain)", -3.0910424533583156),+                                    ("numbers 22..29 32..39 .. 52..59heure (grain)",+                                     -3.4965075614664802),+                                    ("integer (numeric)heure (grain)", -3.4965075614664802)],+                               n = 22},+                   koData =+                     ClassData{prior = -0.5108256237659907, unseen = -4.48863636973214,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -3.784189633918261),+                                    ("number (20..60)minute (grain)", -3.784189633918261),+                                    ("number (0..16)jour (grain)", -3.0910424533583156),+                                    ("integer (numeric)ann\233e (grain)", -3.784189633918261),+                                    ("number (0..16)minute (grain)", -3.784189633918261),+                                    ("day", -3.0910424533583156), ("year", -3.784189633918261),+                                    ("hour", -1.2584609896100056),+                                    ("number (0..16)heure (grain)", -1.9123874570166697),+                                    ("month", -3.784189633918261),+                                    ("integer (numeric)minute (grain)", -3.784189633918261),+                                    ("integer (numeric)mois (grain)", -3.784189633918261),+                                    ("minute", -3.0910424533583156),+                                    ("integer (numeric)semaine (grain)", -3.784189633918261),+                                    ("integer (numeric)heure (grain)", -1.9123874570166697)],+                               n = 33}}),+       ("avant-hier",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("d\233but de journ\233e",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("entre <time-of-day> et <time-of-day> (interval)",+        Classifier{okData =+                     ClassData{prior = -0.1670540846631662,+                               unseen = -3.4011973816621555,+                               likelihoods =+                                 HashMap.fromList+                                   [("hourhour", -2.6741486494265287),+                                    ("miditime-of-day (latent)", -2.6741486494265287),+                                    ("minutehour", -0.9694005571881036),+                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",+                                     -2.268683541318364),+                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",+                                     -1.9810014688665833),+                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",+                                     -1.9810014688665833),+                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",+                                     -2.268683541318364)],+                               n = 11},+                   koData =+                     ClassData{prior = -1.8718021769015913,+                               unseen = -2.4849066497880004,+                               likelihoods =+                                 HashMap.fromList+                                   [("minutehour", -1.2992829841302609),+                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",+                                     -1.7047480922384253),+                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",+                                     -1.7047480922384253)],+                               n = 2}}),+       ("d\233but du mois",+        Classifier{okData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),+       ("matin",+        Classifier{okData =+                     ClassData{prior = -0.7472144018302211,+                               unseen = -2.3978952727983707,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},+                   koData =+                     ClassData{prior = -0.6418538861723948,+                               unseen = -2.4849066497880004,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10}}),+       ("en <named-month>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("maintenant",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<day-of-week> 1er-<day-of-week> dd <month>(interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-daynamed-daynamed-month", -0.6931471805599453),+                                    ("daydaymonth", -0.6931471805599453)],+                               n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("named-day",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -4.553876891600541,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 93},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("au d\233jeuner",+        Classifier{okData =+                     ClassData{prior = -0.40546510810816444,+                               unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -1.0986122886681098,+                               unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),+       ("le lendemain du <time>",+        Classifier{okData =+                     ClassData{prior = -1.0986122886681098,+                               unseen = -2.1972245773362196,+                               likelihoods =+                                 HashMap.fromList+                                   [("day", -1.3862943611198906),+                                    ("<day-of-month> <named-month>", -1.3862943611198906)],+                               n = 1},+                   koData =+                     ClassData{prior = -0.40546510810816444,+                               unseen = -2.3978952727983707,+                               likelihoods =+                                 HashMap.fromList+                                   [("year (latent)", -1.6094379124341003),+                                    ("time-of-day (latent)", -1.6094379124341003),+                                    ("year", -1.6094379124341003), ("hour", -1.6094379124341003)],+                               n = 2}}),+       ("le <cycle> prochain|suivant|d'apr\232s",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -3.970291913552122,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -1.0608719606852628),+                                    ("ann\233e (grain)", -3.258096538021482),+                                    ("semaine (grain)", -1.0608719606852628),+                                    ("mois (grain)", -2.8526314299133175),+                                    ("day", -2.8526314299133175), ("year", -3.258096538021482),+                                    ("jour (grain)", -2.8526314299133175),+                                    ("month", -2.8526314299133175)],+                               n = 22},+                   koData =+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("apr\232s <time-of-day>",+        Classifier{okData =+                     ClassData{prior = -0.9808292530117262, unseen = -4.219507705176107,+                               likelihoods =+                                 HashMap.fromList+                                   [("intersect", -1.7197859696029658),+                                    ("hh(:|h)mm (time-of-day)", -2.8183982582710754),+                                    ("midi", -3.5115454388310208), ("day", -2.8183982582710754),+                                    ("time-of-day (latent)", -2.8183982582710754),+                                    ("hour", -1.4321038971511848), ("minute", -1.9021075263969205),+                                    ("<time-of-day> heures", -2.8183982582710754),+                                    ("le <time>", -3.1060803307228566),+                                    ("<hour-of-day> <integer> (as relative minutes)",+                                     -2.5952547069568657)],+                               n = 27},+                   koData =+                     ClassData{prior = -0.4700036292457356,+                               unseen = -4.6443908991413725,+                               likelihoods =+                                 HashMap.fromList+                                   [("demain", -3.248434627109745),+                                    ("intersect", -2.4375044108934163),+                                    ("le <day-of-month> (non ordinal)", -3.9415818076696905),+                                    ("midi", -1.415853163361435), ("day", -3.0252910757955354),+                                    ("time-of-day (latent)", -3.0252910757955354),+                                    ("au d\233jeuner", -3.9415818076696905),+                                    ("hour", -0.8970593699462674),+                                    ("<time-of-day> heures", -3.0252910757955354)],+                               n = 45}}),+       ("dd/-mm",+        Classifier{okData =+                     ClassData{prior = -0.7375989431307791,+                               unseen = -2.5649493574615367,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},+                   koData =+                     ClassData{prior = -0.6505875661411494, unseen = -2.639057329615259,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12}}),+       ("minuit",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("entre dd et dd <month>(interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("une <unit-of-duration>",+        Classifier{okData =+                     ClassData{prior = -2.174751721484161, unseen = -3.2188758248682006,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -2.4849066497880004),+                                    ("ann\233e (grain)", -2.4849066497880004),+                                    ("seconde (grain)", -2.4849066497880004),+                                    ("semaine (grain)", -2.4849066497880004),+                                    ("second", -2.4849066497880004),+                                    ("minute (grain)", -2.4849066497880004),+                                    ("year", -2.4849066497880004),+                                    ("heure (grain)", -2.4849066497880004),+                                    ("hour", -2.4849066497880004), ("minute", -2.4849066497880004)],+                               n = 5},+                   koData =+                     ClassData{prior = -0.12062798778861475,+                               unseen = -4.532599493153256,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -1.2636920390275583),+                                    ("semaine (grain)", -1.2636920390275583),+                                    ("mois (grain)", -2.91235066461494), ("day", -2.12389330425067),+                                    ("jour (grain)", -2.12389330425067),+                                    ("month", -2.91235066461494)],+                               n = 39}}),+       ("<hour-of-day> et quart",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,+                               likelihoods =+                                 HashMap.fromList+                                   [("midi", -2.1972245773362196),+                                    ("\224|vers <time-of-day>", -1.791759469228055),+                                    ("hour", -0.8109302162163288),+                                    ("<time-of-day> heures", -1.2809338454620642)],+                               n = 7},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("number (0..16)",+        Classifier{okData =+                     ClassData{prior = -0.2682639865946794, unseen = -3.713572066704308,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 39},+                   koData =+                     ClassData{prior = -1.4469189829363254, unseen = -2.639057329615259,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12}}),+       ("heure (grain)",+        Classifier{okData =+                     ClassData{prior = -1.540445040947149, unseen = -2.0794415416798357,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},+                   koData =+                     ClassData{prior = -0.2411620568168881,+                               unseen = -3.1780538303479458,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 22}}),+       ("<named-month|named-day> dernier|pass\233",+        Classifier{okData =+                     ClassData{prior = -2.3978952727983707,+                               unseen = -2.5649493574615367,+                               likelihoods =+                                 HashMap.fromList+                                   [("day", -1.791759469228055), ("named-day", -1.791759469228055)],+                               n = 1},+                   koData =+                     ClassData{prior = -9.53101798043249e-2,+                               unseen = -3.4339872044851463,+                               likelihoods =+                                 HashMap.fromList+                                   [("year (latent)", -2.70805020110221),+                                    ("en semaine", -2.3025850929940455),+                                    ("day", -1.791759469228055),+                                    ("\224|vers <time-of-day>", -2.70805020110221),+                                    ("time-of-day (latent)", -2.70805020110221),+                                    ("year", -2.70805020110221), ("hour", -1.6094379124341003),+                                    ("<time-of-day> heures", -2.0149030205422647),+                                    ("le <time>", -2.3025850929940455)],+                               n = 10}}),+       ("milieu de journ\233e",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("dd/-mm/-yyyy",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.70805020110221,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 13},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("fin de semaine",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("dd mm yyyy",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.639057329615259,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("fin du mois",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("day of month (premier)",+        Classifier{okData =+                     ClassData{prior = -6.453852113757118e-2,+                               unseen = -2.833213344056216,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 15},+                   koData =+                     ClassData{prior = -2.772588722239781, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),+       ("jour (grain)",+        Classifier{okData =+                     ClassData{prior = -0.2744368457017603, unseen = -3.044522437723423,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 19},+                   koData =+                     ClassData{prior = -1.4271163556401458,+                               unseen = -2.0794415416798357,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),+       ("dd mm",+        Classifier{okData =+                     ClassData{prior = -0.40546510810816444,+                               unseen = -2.639057329615259,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},+                   koData =+                     ClassData{prior = -1.0986122886681098,+                               unseen = -2.0794415416798357,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),+       ("dernier <cycle> de <time> (latent)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -3.1354942159291497,+                               likelihoods =+                                 HashMap.fromList+                                   [("daymonth", -1.4816045409242156),+                                    ("semaine (grain)intersect", -1.9924301646902063),+                                    ("weekmonth", -1.4816045409242156),+                                    ("semaine (grain)named-month", -1.9924301646902063),+                                    ("jour (grain)intersect", -1.9924301646902063),+                                    ("jour (grain)named-month", -1.9924301646902063)],+                               n = 8},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("milieu de matin\233e",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("avant le d\233jeuner",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("1er mai",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("fin de soir\233e",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<datetime> - <datetime> (interval)",+        Classifier{okData =+                     ClassData{prior = -1.0185695809945732, unseen = -4.454347296253507,+                               likelihoods =+                                 HashMap.fromList+                                   [("demain<time-of-day> heures", -3.7495040759303713),+                                    ("day of month (premier)<day-of-week> <day-of-month>",+                                     -3.056356895370426),+                                    ("dayhour", -3.3440389678222067),+                                    ("hh(:|h)mm (time-of-day)<hour-of-day> <integer> (as relative minutes)",+                                     -3.3440389678222067),+                                    ("le <day-of-month> (non ordinal)<time-of-day> heures",+                                     -3.7495040759303713),+                                    ("minuteminute", -2.044755983691946),+                                    ("<day-of-month> <named-month><day-of-month> <named-month>",+                                     -3.3440389678222067),+                                    ("hh(:|h)mm (time-of-day)hh(:|h)mm (time-of-day)",+                                     -3.056356895370426),+                                    ("dayday", -1.8777018990287797),+                                    ("<day-of-week> <day-of-month><day-of-week> <day-of-month>",+                                     -3.7495040759303713),+                                    ("<day-of-month> <named-month>day of month (premier)",+                                     -3.3440389678222067),+                                    ("minutehour", -3.3440389678222067),+                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",+                                     -3.7495040759303713),+                                    ("<hour-of-day> <integer> (as relative minutes)hh(:|h)mm (time-of-day)",+                                     -3.056356895370426),+                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",+                                     -3.7495040759303713),+                                    ("<hour-of-day> <integer> (as relative minutes)<hour-of-day> <integer> (as relative minutes)",+                                     -3.3440389678222067),+                                    ("<day-of-month> <named-month>intersect", -3.3440389678222067),+                                    ("intersect<day-of-week> <day-of-month>", -3.3440389678222067)],+                               n = 26},+                   koData =+                     ClassData{prior = -0.4480247225269604, unseen = -4.836281906951478,+                               likelihoods =+                                 HashMap.fromList+                                   [("<hour-of-day> <integer> (as relative minutes)intersect",+                                     -3.7297014486341915),+                                    ("monthday", -2.8824035882469876),+                                    ("intersectnamed-day", -3.7297014486341915),+                                    ("day of month (premier)named-day", -3.4420193761824103),+                                    ("named-month<day-of-month> <named-month>",+                                     -3.7297014486341915),+                                    ("minuteminute", -3.7297014486341915),+                                    ("dayday", -1.4961092271270973),+                                    ("<day-of-week> <day-of-month><day-of-week> <day-of-month>",+                                     -3.7297014486341915),+                                    ("day of month (premier)<day-of-month> <named-month>",+                                     -4.135166556742356),+                                    ("year<hour-of-day> <integer> (as relative minutes)",+                                     -3.4420193761824103),+                                    ("minutehour", -2.631089159966082),+                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",+                                     -3.4420193761824103),+                                    ("day of month (premier)intersect", -2.8824035882469876),+                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",+                                     -3.4420193761824103),+                                    ("intersectintersect", -3.2188758248682006),+                                    ("hh(:|h)mm (time-of-day)intersect", -3.7297014486341915),+                                    ("named-monthintersect", -3.7297014486341915),+                                    ("<day-of-week> <day-of-month>named-day", -3.4420193761824103),+                                    ("named-monthday of month (premier)", -3.7297014486341915),+                                    ("<day-of-week> <day-of-month>intersect", -2.8824035882469876),+                                    ("yearminute", -3.4420193761824103)],+                               n = 46}}),+       ("<day-of-month> <named-month>",+        Classifier{okData =+                     ClassData{prior = -0.24256163717131135,+                               unseen = -4.653960350157523,+                               likelihoods =+                                 HashMap.fromList+                                   [("integer (numeric)named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 51},+                   koData =+                     ClassData{prior = -1.5353299402803784,+                               unseen = -3.4339872044851463,+                               likelihoods =+                                 HashMap.fromList+                                   [("integer (numeric)named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 14}}),+       ("<cycle> prochain|suivant|d'apr\232s",+        Classifier{okData =+                     ClassData{prior = -8.338160893905101e-2,+                               unseen = -4.007333185232471,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -1.0986122886681098),+                                    ("ann\233e (grain)", -3.295836866004329),+                                    ("semaine (grain)", -1.0986122886681098),+                                    ("mois (grain)", -2.890371757896165),+                                    ("day", -2.6026896854443837), ("year", -3.295836866004329),+                                    ("jour (grain)", -2.6026896854443837),+                                    ("month", -2.890371757896165)],+                               n = 23},+                   koData =+                     ClassData{prior = -2.5257286443082556,+                               unseen = -2.5649493574615367,+                               likelihoods =+                                 HashMap.fromList+                                   [("mois (grain)", -1.791759469228055),+                                    ("day", -1.791759469228055),+                                    ("jour (grain)", -1.791759469228055),+                                    ("month", -1.791759469228055)],+                               n = 2}}),+       ("fin <named-month>(interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<time-of-day> - <time-of-day> (interval)",+        Classifier{okData =+                     ClassData{prior = -1.2321436812926323, unseen = -4.0943445622221,+                               likelihoods =+                                 HashMap.fromList+                                   [("hh(:|h)mm (time-of-day)<hour-of-day> <integer> (as relative minutes)",+                                     -2.691243082785829),+                                    ("minuteminute", -1.3694872428035094),+                                    ("time-of-day (latent)time-of-day (latent)",+                                     -3.3843902633457743),+                                    ("<time-of-day> heures<time-of-day> heures",+                                     -3.3843902633457743),+                                    ("hh(:|h)mm (time-of-day)hh(:|h)mm (time-of-day)",+                                     -2.468099531471619),+                                    ("hourhour", -2.691243082785829),+                                    ("minutehour", -2.468099531471619),+                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",+                                     -2.691243082785829),+                                    ("<hour-of-day> <integer> (as relative minutes)hh(:|h)mm (time-of-day)",+                                     -2.468099531471619),+                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",+                                     -3.3843902633457743),+                                    ("<hour-of-day> <integer> (as relative minutes)<hour-of-day> <integer> (as relative minutes)",+                                     -2.691243082785829),+                                    ("<time-of-day> heurestime-of-day (latent)",+                                     -3.3843902633457743)],+                               n = 21},+                   koData =+                     ClassData{prior = -0.3448404862917295, unseen = -4.787491742782046,+                               likelihoods =+                                 HashMap.fromList+                                   [("time-of-day (latent)time-of-day (latent)",+                                     -1.7833912195575383),+                                    ("hourhour", -1.3451362886263831),+                                    ("time-of-day (latent)<hour-of-day> <integer> (as relative minutes)",+                                     -4.085976312551584),+                                    ("hourminute", -4.085976312551584),+                                    ("minutehour", -1.7346010553881064),+                                    ("hh(:|h)mm (time-of-day)time-of-day (latent)",+                                     -2.987364023883474),+                                    ("<hour-of-day> <integer> (as relative minutes)<time-of-day> heures",+                                     -3.169685580677429),+                                    ("hh(:|h)mm (time-of-day)<time-of-day> heures",+                                     -3.169685580677429),+                                    ("<hour-of-day> <integer> (as relative minutes)time-of-day (latent)",+                                     -2.6996819514316934),+                                    ("time-of-day (latent)<time-of-day> heures",+                                     -2.2942168433235293)],+                               n = 51}}),+       ("<named-day> en huit",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.70805020110221,+                               likelihoods =+                                 HashMap.fromList+                                   [("day", -0.6931471805599453),+                                    ("named-day", -0.6931471805599453)],+                               n = 6},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<hour-of-day> et demi",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.5649493574615367,+                               likelihoods =+                                 HashMap.fromList+                                   [("midi", -1.791759469228055),+                                    ("\224|vers <time-of-day>", -1.791759469228055),+                                    ("hour", -0.8754687373538999),+                                    ("<time-of-day> heures", -1.3862943611198906)],+                               n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("dernier week-end de <time>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,+                               likelihoods =+                                 HashMap.fromList+                                   [("named-month", -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("du dd au dd(interval)",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("ordinal (digits)",+        Classifier{okData =+                     ClassData{prior = -1.9459101490553135,+                               unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -0.15415067982725836,+                               unseen = -2.639057329615259,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12}}),+       ("avant <time-of-day>",+        Classifier{okData =+                     ClassData{prior = -1.4469189829363254,+                               unseen = -2.9444389791664407,+                               likelihoods =+                                 HashMap.fromList+                                   [("time-of-day (latent)", -1.791759469228055),+                                    ("hour", -1.2809338454620642),+                                    ("<time-of-day> heures", -1.791759469228055)],+                               n = 4},+                   koData =+                     ClassData{prior = -0.2682639865946794,+                               unseen = -3.6109179126442243,+                               likelihoods =+                                 HashMap.fromList+                                   [("intersect", -2.890371757896165),+                                    ("hh(:|h)mm (time-of-day)", -2.890371757896165),+                                    ("hier", -2.890371757896165), ("day", -2.890371757896165),+                                    ("time-of-day (latent)", -1.9740810260220096),+                                    ("au d\233jeuner", -2.890371757896165),+                                    ("hour", -1.1856236656577395), ("minute", -2.4849066497880004),+                                    ("<time-of-day> heures", -1.9740810260220096),+                                    ("<hour-of-day> <integer> (as relative minutes)",+                                     -2.890371757896165)],+                               n = 13}}),+       ("fin d'apr\232s-midi",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<part-of-day> du <dim time>",+        Classifier{okData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -1.9459101490553135,+                               likelihoods =+                                 HashMap.fromList+                                   [("matin<day-of-month> <named-month>", -1.0986122886681098),+                                    ("hourday", -1.0986122886681098)],+                               n = 1},+                   koData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -1.9459101490553135,+                               likelihoods =+                                 HashMap.fromList+                                   [("matinyear (latent)", -1.0986122886681098),+                                    ("houryear", -1.0986122886681098)],+                               n = 1}}),+       ("<time-of-day> heures",+        Classifier{okData =+                     ClassData{prior = -0.1653924946935067, unseen = -5.655991810819852,+                               likelihoods =+                                 HashMap.fromList+                                   [("\224|vers <time-of-day>", -1.8238477837795555),+                                    ("time-of-day (latent)", -1.1526795099383855),+                                    ("apr\232s <time-of-day>", -4.26619481914876),+                                    ("hour", -0.7108467576593462),+                                    ("avant <time-of-day>", -4.553876891600541)],+                               n = 139},+                   koData =+                     ClassData{prior = -1.8809906029559977, unseen = -4.060443010546419,+                               likelihoods =+                                 HashMap.fromList+                                   [("\224|vers <time-of-day>", -1.7404661748405046),+                                    ("time-of-day (latent)", -1.9636097261547143),+                                    ("apr\232s <time-of-day>", -2.4336133554004498),+                                    ("hour", -0.8241754429663495),+                                    ("avant <time-of-day>", -2.4336133554004498),+                                    ("minute", -3.349904087274605),+                                    ("<hour-of-day> <integer> (as relative minutes)",+                                     -3.349904087274605)],+                               n = 25}}),+       ("week-end",+        Classifier{okData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},+                   koData =+                     ClassData{prior = -0.6931471805599453,+                               unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),+       ("le <time>",+        Classifier{okData =+                     ClassData{prior = -0.2500510042341341, unseen = -5.942799375126701,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -2.6820747146989494),+                                    ("<named-month|named-day> suivant|d'apr\232s",+                                     -3.742946675384212),+                                    ("<ordinal> <cycle> de <time>", -4.553876891600541),+                                    ("premi\232re quinzaine de <named-month>(interval)",+                                     -5.247024072160486),+                                    ("intersect", -1.988927534139004),+                                    ("soir de no\235l", -5.247024072160486),+                                    ("en semaine", -3.542275979922061),+                                    ("toussaint", -4.841558964052322), ("day", -1.3968764704504275),+                                    ("deuxi\232me quinzaine de <named-month>(interval)",+                                     -5.247024072160486),+                                    ("<dim time> <part-of-day>", -3.1675825304806504),+                                    ("dd/-mm", -3.994261103665118),+                                    ("dd/-mm/-yyyy", -4.553876891600541),+                                    ("dd mm yyyy", -3.994261103665118),+                                    ("day of month (premier)", -3.994261103665118),+                                    ("dd mm", -3.994261103665118), ("hour", -1.9148195619852824),+                                    ("month", -4.553876891600541),+                                    ("dernier <cycle> de <time> (latent)", -4.330733340286331),+                                    ("<day-of-month> <named-month>", -2.6820747146989494),+                                    ("<cycle> prochain|suivant|d'apr\232s", -2.8956488149970085),+                                    ("dernier week-end de <time>", -5.247024072160486),+                                    ("<ordinal> week-end de <time>", -4.841558964052322),+                                    ("<cycle> dernier", -4.148411783492376)],+                               n = 176},+                   koData =+                     ClassData{prior = -1.5085119938441398, unseen = -4.859812404361672,+                               likelihoods =+                                 HashMap.fromList+                                   [("<named-month|named-day> suivant|d'apr\232s",+                                     -4.1588830833596715),+                                    ("intersect", -3.242592351485517),+                                    ("en semaine", -2.0794415416798357),+                                    ("day", -1.556193397915288),+                                    ("<dim time> <part-of-day>", -3.7534179752515073),+                                    ("dd/-mm", -3.4657359027997265),+                                    ("<named-month|named-day> dernier|pass\233",+                                     -3.7534179752515073),+                                    ("day of month (premier)", -4.1588830833596715),+                                    ("dd mm", -3.4657359027997265), ("hour", -2.1439800628174073),+                                    ("<day-of-month> <named-month>", -4.1588830833596715),+                                    ("<time-of-day> - <time-of-day> (interval)",+                                     -2.4541349911212467),+                                    ("minute", -2.4541349911212467),+                                    ("<hour-of-day> <integer> (as relative minutes)",+                                     -2.6548056865833978)],+                               n = 50}}),+       ("apr\232s le <day-of-month>",+        Classifier{okData =+                     ClassData{prior = -0.40546510810816444,+                               unseen = -1.3862943611198906,+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],+                               n = 2},+                   koData =+                     ClassData{prior = -1.0986122886681098,+                               unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],+                               n = 1}}),+       ("n <cycle> passes|precedents",+        Classifier{okData =+                     ClassData{prior = -0.40546510810816444,+                               unseen = -2.3978952727983707,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -1.6094379124341003),+                                    ("integer (numeric)ann\233e (grain)", -1.6094379124341003),+                                    ("year", -1.6094379124341003),+                                    ("integer (numeric)semaine (grain)", -1.6094379124341003)],+                               n = 2},+                   koData =+                     ClassData{prior = -1.0986122886681098,+                               unseen = -2.1972245773362196,+                               likelihoods =+                                 HashMap.fromList+                                   [("hour", -1.3862943611198906),+                                    ("number (0..16)heure (grain)", -1.3862943611198906)],+                               n = 1}}),+       ("il y a <duration>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -2.639057329615259,+                               likelihoods =+                                 HashMap.fromList+                                   [("week", -1.8718021769015913), ("year", -1.8718021769015913),+                                    ("<integer> <unit-of-duration>", -0.9555114450274363),+                                    ("hour", -1.8718021769015913), ("month", -1.8718021769015913)],+                               n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<ordinal> week-end de <time>",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,+                               likelihoods =+                                 HashMap.fromList+                                   [("ordinals (premier..seizieme)named-month",+                                     -0.6931471805599453),+                                    ("month", -0.6931471805599453)],+                               n = 2},+                   koData =+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<dim time> du matin",+        Classifier{okData =+                     ClassData{prior = -0.13353139262452263,+                               unseen = -2.890371757896165,+                               likelihoods =+                                 HashMap.fromList+                                   [("\224|vers <time-of-day>", -1.7346010553881064),+                                    ("hour", -0.7537718023763802),+                                    ("<time-of-day> heures", -1.041453874828161)],+                               n = 7},+                   koData =+                     ClassData{prior = -2.0794415416798357, unseen = -1.791759469228055,+                               likelihoods =+                                 HashMap.fromList+                                   [("hour", -0.916290731874155),+                                    ("<time-of-day> heures", -0.916290731874155)],+                               n = 1}}),+       ("d\233but d'apr\232s-midi",+        Classifier{okData =+                     ClassData{prior = 0.0, unseen = -1.791759469228055,+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},+                   koData =+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,+                               likelihoods = HashMap.fromList [], n = 0}}),+       ("<hour-of-day> <integer> (as relative minutes)",+        Classifier{okData =+                     ClassData{prior = -0.8266785731844679, unseen = -4.454347296253507,+                               likelihoods =+                                 HashMap.fromList+                                   [("minuitnumber (0..16)", -3.3440389678222067),+                                    ("midinumber (20..60)", -3.7495040759303713),+                                    ("\224|vers <time-of-day>number (20..60)", -3.7495040759303713),+                                    ("<time-of-day> heuresinteger (numeric)", -1.264597426142371),+                                    ("\224|vers <time-of-day>number (0..16)", -3.3440389678222067),+                                    ("midinumber (0..16)", -3.7495040759303713),+                                    ("hour", -0.8591323180342064),+                                    ("<time-of-day> heuresnumber (20..60)", -3.3440389678222067),+                                    ("\224|vers <time-of-day>integer (numeric)",+                                     -3.7495040759303713),+                                    ("<time-of-day> heuresnumber (0..16)", -3.3440389678222067)],+                               n = 35},+                   koData =+                     ClassData{prior = -0.5753641449035618, unseen = -4.663439094112067,+                               likelihoods =+                                 HashMap.fromList+                                   [("time-of-day (latent)numbers 22..29 32..39 .. 52..59",+                                     -3.960813169597578),+                                    ("time-of-day (latent)number (0..16)", -3.5553480614894135),+                                    ("<time-of-day> heuresinteger (numeric)", -2.5745188084776873),+                                    ("avant <time-of-day>integer (numeric)", -3.960813169597578),+                                    ("time-of-day (latent)integer (numeric)", -1.3217558399823195),+                                    ("apr\232s <time-of-day>integer (numeric)", -3.044522437723423),+                                    ("hour", -0.8253189536684283),+                                    ("\224|vers <time-of-day>integer (numeric)",+                                     -3.5553480614894135),+                                    ("<time-of-day> heuresnumber (0..16)", -3.960813169597578)],+                               n = 45}}),        ("<cycle> dernier",         Classifier{okData =                      ClassData{prior = -0.15415067982725836,
Duckling/Time/DE/Corpus.hs view
@@ -630,7 +630,39 @@   , 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)+  , examples (datetimeInterval ((2013, 2, 12, 18, 30, 0), (2013, 2, 12, 19, 1, 0)) Minute)              [ "18:30h - 19:00h"+             , "18:30h/19:00h"+             ]+  , examples (datetimeInterval ((2013, 10, 14, 0, 0, 0), (2013, 10, 16, 0, 0, 0)) Day)+             [ "14. - 15.10."+             , "14 - 15.10."+             , "14. - 15.10"+             , "14 - 15.10"+             , "14.10. - 15.10."+             , "14. - 15.10.2013"+             , "14.10. - 15.10.2013"+             , "14./15.10."+             ]+  , examples (datetimeInterval ((2018, 10, 14, 0, 0, 0), (2018, 10, 16, 0, 0, 0)) Day)+             [ "14. - 15.10.18"+             , "14 - 15.10.18"+             , "14.10. - 15.10.2018"+             , "14./15.10.2018"+             , "vom 14.10. - 15.10.2018"+             , "14.10. bis 15.10.2018"+             , "vom 14.10. auf den 15.10.2018"+             , "vom 14.10. bis zum 15.10.2018"+             ]+  , examples (datetime (2013, 10, 10, 0, 0, 0) Day)+             [ "am 10.10."+             , "am 10.10"+             , "10.10"+             ]+  , examples (datetime (2013, 2, 12, 10, 10, 0) Minute)+             [ "um 10.10"+             ]+  , examples (datetime (2013, 2, 12, 17, 10, 0) Minute)+             [ "17h10"              ]   ]
Duckling/Time/DE/Rules.hs view
@@ -180,7 +180,7 @@   { name = "<datetime> - <datetime> (interval)"   , pattern =     [ Predicate isNotLatent-    , regex "\\-|bis"+    , regex "\\-|bis( zum)?|auf( den)?"     , Predicate isNotLatent     ]   , prod = \tokens -> case tokens of@@ -189,6 +189,54 @@       _ -> Nothing   } +ruleDateDateInterval :: Rule+ruleDateDateInterval = Rule+  { name = "dd.(mm.)? - dd.mm.(yy[yy]?)? (interval)"+  , pattern =+    [ regex "(?:vo[nm]\\s+)?(10|20|30|31|[012]?[1-9])\\.?((?<=\\.)(?:10|11|12|0?[1-9])(?:\\.?))?"+    , regex "\\-|/|bis( zum)?|auf( den)?"+    , regex "(10|20|30|31|[012]?[1-9])\\.(10|11|12|0?[1-9])\\.?((?<=\\.)\\d{2,4})?"+    ]+  , prod = \tokens -> case tokens of+      (Token RegexMatch (GroupMatch (d1:"":_)):+       _:+       Token RegexMatch (GroupMatch (d2:m2:"":_)):+       _) -> do+          d1 <- parseInt d1+          d2 <- parseInt d2+          m2 <- parseInt m2+          Token Time <$> interval TTime.Closed (monthDay m2 d1) (monthDay m2 d2)+      (Token RegexMatch (GroupMatch (d1:"":_)):+       _:+       Token RegexMatch (GroupMatch (d2:m2:y:_)):+       _) -> do+          d1 <- parseInt d1+          d2 <- parseInt d2+          m2 <- parseInt m2+          y <- parseInt y+          Token Time <$> interval TTime.Closed (yearMonthDay y m2 d1) (yearMonthDay y m2 d2)+      (Token RegexMatch (GroupMatch (d1:m1:_)):+       _:+       Token RegexMatch (GroupMatch (d2:m2:"":_)):+       _) -> do+          d1 <- parseInt d1+          d2 <- parseInt d2+          m1 <- parseInt m1+          m2 <- parseInt m2+          Token Time <$> interval TTime.Closed (monthDay m1 d1) (monthDay m2 d2)+      (Token RegexMatch (GroupMatch (d1:m1:_)):+       _:+       Token RegexMatch (GroupMatch (d2:m2:y:_)):+       _) -> do+          d1 <- parseInt d1+          d2 <- parseInt d2+          m1 <- parseInt m1+          m2 <- parseInt m2+          y <- parseInt y+          Token Time <$> interval TTime.Closed (yearMonthDay y m1 d1) (yearMonthDay y m2 d2)+      _ -> Nothing+  }+ ruleNamedmonth7 :: Rule ruleNamedmonth7 = Rule   { name = "named-month"@@ -268,7 +316,7 @@   , pattern =     [ regex "vo[nm]"     , dimension Time-    , regex "\\-|bis"+    , regex "\\-|bis( zum)?|auf( den)?"     , dimension Time     ]   , prod = \tokens -> case tokens of@@ -328,7 +376,7 @@   { name = "<month> dd-dd (interval)"   , pattern =     [ regex "([012]?\\d|30|31)(ter|\\.)?"-    , regex "\\-|bis"+    , regex "\\-|bis( zum)?|auf( den)?"     , regex "([012]?\\d|30|31)(ter|\\.)?"     , Predicate isAMonth     ]@@ -754,7 +802,7 @@ ruleMmdd = Rule   { name = "mm/dd"   , pattern =-    [ regex "([012]?[1-9]|10|20|30|31)\\.(0?[1-9]|10|11|12)\\."+    [ regex "(?:am\\s+)?([012]?[1-9]|10|20|30|31)\\.(10|11|12|0?[1-9])\\.?"     ]   , prod = \tokens -> case tokens of       (Token RegexMatch (GroupMatch (m1:m2:_)):_) -> do@@ -1565,7 +1613,7 @@ ruleHhmm = Rule   { name = "hh:mm"   , pattern =-    [ regex "((?:[01]?\\d)|(?:2[0-3]))[:.]([0-5]\\d)(?:uhr|h)?"+    [ regex "((?:[01]?\\d)|(?:2[0-3]))[:.h]([0-5]\\d)(?:uhr|h)?"     ]   , prod = \tokens -> case tokens of       (Token RegexMatch (GroupMatch (m1:m2:_)):_) -> do@@ -1715,7 +1763,7 @@   { name = "<time-of-day> - <time-of-day> (interval)"   , pattern =     [ Predicate isATimeOfDay-    , regex "\\-|bis"+    , regex "\\-|/|bis"     , Predicate $ liftM2 (&&) isATimeOfDay isNotLatent     ]   , prod = \tokens -> case tokens of@@ -1929,6 +1977,7 @@   , ruleChristmas   , ruleChristmasEve   , ruleDatetimeDatetimeInterval+  , ruleDateDateInterval   , ruleDayofmonthNonOrdinalNamedmonth   , ruleDayofmonthNonOrdinalOfNamedmonth   , ruleDayofmonthOrdinal
Duckling/Time/EN/Corpus.hs view
@@ -13,13 +13,13 @@   , negativeCorpus   ) where -import Prelude import Data.String+import Prelude +import Duckling.Testing.Types hiding (examples) import Duckling.Time.Corpus import Duckling.Time.Types hiding (Month) import Duckling.TimeGrain.Types hiding (add)-import Duckling.Testing.Types hiding (examples)  corpus :: Corpus corpus = (testContext, allExamples)@@ -34,6 +34,15 @@       , "25"       , "this is the one"       , "in 61"+      , "this one"+      , "this past one"+      , "at single"+      , "at a couple of"+      , "at pairs"+      , "at a few"+      , "at dozens"+      , "single o'clock"+      , "dozens o'clock"       ]  allExamples :: [Example]@@ -47,6 +56,9 @@              [ "today"              , "at this time"              ]+  , examples (datetime (2013, 2, 1, 0, 0, 0) Day)+             [ "2/2013"+             ]   , examples (datetime (2013, 2, 11, 0, 0, 0) Day)              ["yesterday"]   , examples (datetime (2013, 2, 13, 0, 0, 0) Day)@@ -117,6 +129,8 @@              , "on 2/15"              , "February 15"              , "2 / 15"+             , "2-15"+             , "2 - 15"              ]   , examples (datetime (2013, 8, 8, 0, 0, 0) Day)              ["Aug 8"]@@ -316,7 +330,8 @@              , "half three"              ]   , examples (datetime (2013, 2, 12, 15, 23, 24) Second)-             ["15:23:24"]+             [ "15:23:24"+             ]   , examples (datetime (2013, 2, 12, 11, 45, 0) Minute)              [ "a quarter to noon"              , "11:45am"@@ -330,13 +345,17 @@              , "in the evening at eight"              ]   , examples (datetime (2013, 9, 20, 19, 30, 0) Minute)-             ["at 7:30 PM on Fri, Sep 20"]+             [ "at 7:30 PM on Fri, Sep 20"+             ]   , examples (datetime (2013, 2, 16, 9, 0, 0) Hour)-             ["at 9am on Saturday"]+             [ "at 9am on Saturday"+             ]   , examples (datetime (2013, 2, 16, 9, 0, 0) Hour)-             ["on Saturday for 9am"]+             [ "on Saturday for 9am"+             ]   , examples (datetime (2014, 7, 18, 19, 0, 0) Minute)-             ["Fri, Jul 18, 2014 07:00 PM"]+             [ "Fri, Jul 18, 2014 07:00 PM"+             ]   , examples (datetime (2013, 2, 12, 4, 30, 1) Second)              [ "in a sec"              , "one second from now"@@ -351,9 +370,16 @@              [ "in 2 minutes"              , "in 2 more minutes"              , "2 minutes from now"+             , "in a couple of minutes"+             , "in a pair of minutes"              ]+  , examples (datetime (2013, 2, 12, 4, 33, 0) Second)+             [ "in three minutes"+             , "in a few minutes"+             ]   , examples (datetime (2013, 2, 12, 5, 30, 0) Second)-             ["in 60 minutes"]+             [ "in 60 minutes"+             ]   , examples (datetime (2013, 2, 12, 4, 45, 0) Second)              [ "in a quarter of an hour"              , "in 1/4h"@@ -635,11 +661,14 @@              , "July 13 thru 15"              , "July 13 through 15"              , "July 13 - July 15"+             , "from July 13-15"              ]   , examples (datetimeInterval ((2013, 8, 8, 0, 0, 0), (2013, 8, 13, 0, 0, 0)) Day)-             ["Aug 8 - Aug 12"]+             [ "Aug 8 - Aug 12"+             ]   , examples (datetimeInterval ((2013, 2, 12, 9, 30, 0), (2013, 2, 12, 11, 1, 0)) Minute)-             ["9:30 - 11:00"]+             [ "9:30 - 11:00"+             ]   , examples (datetimeInterval ((2013, 2, 14, 9, 30, 0), (2013, 2, 14, 11, 1, 0)) Minute)              [ "from 9:30 - 11:00 on Thursday"              , "between 9:30 and 11:00 on thursday"@@ -793,5 +822,16 @@              ]   , examples (datetimeInterval ((2013, 3, 21, 0, 0, 0), (2013, 4, 1, 0, 0, 0)) Day)              [ "late March"+             ]+  , examples (datetimeInterval ((2013, 10, 25, 18, 0, 0), (2013, 10, 28, 0, 0, 0)) Hour)+             [ "last weekend of October"+             , "last week-end in October"+             , "last week end of October"+             ]+  , examples (datetimeInterval ((2013, 7, 26, 18, 0, 0), (2013, 7, 29, 0, 0, 0)) Hour)+             [ "last wkend of July"+             ]+  , examples (datetimeInterval ((2017, 10, 27, 18, 0, 0), (2017, 10, 30, 0, 0, 0)) Hour)+             [ "last weekend of October 2017"              ]   ]
Duckling/Time/EN/Rules.hs view
@@ -16,22 +16,22 @@ import Control.Monad (liftM2) import Data.Maybe import Data.Text (Text)-import qualified Data.Text as Text import Prelude+import qualified Data.Text as Text  import Duckling.Dimensions.Types import Duckling.Duration.Helpers (duration) import Duckling.Numeral.Helpers (parseInt) import Duckling.Numeral.Types (NumeralData (..))-import qualified Duckling.Numeral.Types as TNumeral import Duckling.Ordinal.Types (OrdinalData (..))-import qualified Duckling.Ordinal.Types as TOrdinal import Duckling.Regex.Types import Duckling.Time.Helpers import Duckling.Time.Types (TimeData (..))+import Duckling.Types+import qualified Duckling.Numeral.Types as TNumeral+import qualified Duckling.Ordinal.Types as TOrdinal import qualified Duckling.Time.Types as TTime import qualified Duckling.TimeGrain.Types as TG-import Duckling.Types  ruleIntersect :: Rule ruleIntersect = Rule@@ -142,7 +142,7 @@   { name = "this <time>"   , pattern =     [ regex "this|current|coming"-    , dimension Time+    , Predicate isNotLatent     ]   , prod = \tokens -> case tokens of       (_:Token Time td:_) -> tt $ predNth 0 False td@@ -166,13 +166,25 @@   { name = "last <time>"   , pattern =     [ regex "(this past|last|previous)"-    , dimension Time+    , Predicate isNotLatent     ]   , prod = \tokens -> case tokens of       (_:Token Time td:_) -> tt $ predNth (- 1) False td       _ -> Nothing   } +ruleLastWeekendOfMonth :: Rule+ruleLastWeekendOfMonth = Rule+  { name = "last weekend of <named-month>"+  , pattern =+    [ regex "last\\s(week(\\s|-)?end|wkend)\\s(of|in)"+    , Predicate isAMonth+    ]+  , prod = \tokens -> case tokens of+      (_:Token Time td2:_) -> tt $ predLastOf weekend td2+      _ -> Nothing+  }+ ruleTimeBeforeLastAfterNext :: Rule ruleTimeBeforeLastAfterNext = Rule   { name = "<time> before last|after next"@@ -435,7 +447,9 @@ ruleTODLatent :: Rule ruleTODLatent = Rule   { name = "time-of-day (latent)"-  , pattern = [Predicate $ isIntegerBetween 0 23]+  , pattern =+    [ Predicate $ liftM2 (&&) isNumeralSafeToUse (isIntegerBetween 0 23)+    ]   , prod = \tokens -> case tokens of       (token:_) -> do         n <- getIntValue token@@ -669,6 +683,20 @@       _ -> Nothing   } +ruleMMYYYY :: Rule+ruleMMYYYY = Rule+  { name = "mm/yyyy"+  , pattern =+    [ regex "(0?[1-9]|1[0-2])[/-](\\d{4})"+    ]+  , prod = \tokens -> case tokens of+      (Token RegexMatch (GroupMatch (mm:yy:_)):_) -> do+        y <- parseInt yy+        m <- parseInt mm+        tt $ yearMonthDay y m 1+      _ -> Nothing+  }+ ruleMMDDYYYY :: Rule ruleMMDDYYYY = Rule   { name = "mm/dd/yyyy"@@ -699,7 +727,7 @@ ruleMMDD :: Rule ruleMMDD = Rule   { name = "mm/dd"-  , pattern = [regex "(0?[1-9]|1[0-2])\\s?/\\s?(3[01]|[12]\\d|0?[1-9])"]+  , pattern = [regex "(0?[1-9]|1[0-2])\\s?[/-]\\s?(3[01]|[12]\\d|0?[1-9])"]   , prod = \tokens -> case tokens of       (Token RegexMatch (GroupMatch (mm:dd:_)):_) -> do         m <- parseInt mm@@ -831,11 +859,10 @@ ruleWeekend :: Rule ruleWeekend = Rule   { name = "week-end"-  , pattern = [regex "(week(\\s|-)?end|wkend)"]-  , prod = \_ -> do-      fri <- intersect (dayOfWeek 5) (hour False 18)-      mon <- intersect (dayOfWeek 1) (hour False 0)-      Token Time <$> interval TTime.Open fri mon+  , pattern =+    [ regex "(week(\\s|-)?end|wkend)"+    ]+  , prod = \_ -> tt weekend   }  ruleSeasons :: Rule@@ -897,11 +924,11 @@     , regex "(3[01]|[12]\\d|0?[1-9])"     ]   , prod = \tokens -> case tokens of-      ( Token Time td-       :Token RegexMatch (GroupMatch (d1:_))-       :_-       :Token RegexMatch (GroupMatch (d2:_))-       :_) -> do+      (Token Time td:+       Token RegexMatch (GroupMatch (d1:_)):+       _:+       Token RegexMatch (GroupMatch (d2:_)):+       _) -> do         dd1 <- parseInt d1         dd2 <- parseInt d2         dom1 <- intersect (dayOfMonth dd1) td@@ -910,6 +937,31 @@       _ -> Nothing   } +ruleIntervalFromMonthDDDD :: Rule+ruleIntervalFromMonthDDDD = Rule+  { name = "from <month> dd-dd (interval)"+  , pattern =+    [ regex "from"+    , Predicate isAMonth+    , regex "(3[01]|[12]\\d|0?[1-9])"+    , regex "\\-|to|th?ru|through|(un)?til(l)?"+    , regex "(3[01]|[12]\\d|0?[1-9])"+    ]+  , prod = \tokens -> case tokens of+      (_:+       Token Time td:+       Token RegexMatch (GroupMatch (d1:_)):+       _:+       Token RegexMatch (GroupMatch (d2:_)):+       _) -> do+        dd1 <- parseInt d1+        dd2 <- parseInt d2+        dom1 <- intersect (dayOfMonth dd1) td+        dom2 <- intersect (dayOfMonth dd2) td+        Token Time <$> interval TTime.Closed dom1 dom2+      _ -> Nothing+  }+ -- Blocked for :latent time. May need to accept certain latents only, like hours ruleIntervalDash :: Rule ruleIntervalDash = Rule@@ -1532,6 +1584,7 @@   , ruleTimeBeforeLastAfterNext   , ruleLastDOWOfTime   , ruleLastCycleOfTime+  , ruleLastWeekendOfMonth   , ruleNthTimeOfTime   , ruleTheNthTimeOfTime   , ruleNthTimeAfterTime@@ -1569,6 +1622,7 @@   , ruleMMDDYYYY   , ruleYYYYMMDD   , ruleMMDD+  , ruleMMYYYY   , ruleNoonMidnightEOD   , rulePartOfDays   , ruleEarlyMorning@@ -1582,6 +1636,7 @@   , ruleSeasons   , ruleTODPrecision   , rulePrecisionTOD+  , ruleIntervalFromMonthDDDD   , ruleIntervalMonthDDDD   , ruleIntervalDash   , ruleIntervalFrom
Duckling/Time/FR/Corpus.hs view
@@ -9,10 +9,11 @@ {-# LANGUAGE OverloadedStrings #-}  module Duckling.Time.FR.Corpus-  ( corpus ) where+  ( corpus+  ) where -import Prelude import Data.String+import Prelude  import Duckling.Lang import Duckling.Resolve@@ -489,14 +490,27 @@              , "l'après-midi"              ]   , examples (datetimeInterval ((2013, 2, 12, 7, 0, 0), (2013, 2, 12, 9, 0, 0)) Hour)-             [ "en début de matinée"+             [ "aujourd'hui en début de matinée"+             , "en début de matinée"+             , "le 12 février en début de matinée"              , "aujourd'hui très tôt le matin"              , "aujourd'hui tôt le matin"              , "aujourd'hui le matin tôt"              , "aujourd'hui le matin très tôt"+             , "le matin très tôt"+             , "le matin tôt"+             , "tôt le matin"+             , "très tôt le matin"              ]+  , examples (datetimeInterval ((2013, 2, 12, 9, 0, 0), (2013, 2, 12, 11, 0, 0)) Hour)+             [ "aujourd'hui en milieu de matinée"+             , "le 12 février en milieu de matinée"+             , "en milieu de matinée"+             ]   , examples (datetimeInterval ((2013, 2, 12, 10, 0, 0), (2013, 2, 12, 12, 0, 0)) Hour)-             [ "en fin de matinée"+             [ "aujourd'hui en fin de matinée"+             , "en fin de matinée"+             , "le 12 février en fin de matinée"              ]   , examples (datetimeInterval ((2013, 2, 12, 13, 0, 0), (2013, 2, 12, 17, 0, 0)) Hour)              [ "après déjeuner"@@ -506,6 +520,9 @@              ]   , examples (datetimeInterval ((2013, 2, 12, 12, 0, 0), (2013, 2, 12, 14, 0, 0)) Hour)              [ "aujourd'hui pendant le déjeuner"+             , "à l'heure du déjeuner"+             , "au moment de déjeuner"+             , "pendant le déjeuner"              ]   , examples (datetimeInterval ((2013, 2, 12, 17, 0, 0), (2013, 2, 12, 21, 0, 0)) Hour)              [ "après le travail"@@ -515,25 +532,57 @@              , "dès la matinée"              ]   , examples (datetimeInterval ((2013, 2, 12, 12, 0, 0), (2013, 2, 12, 14, 0, 0)) Hour)-             [ "en début d'après-midi"+             [ "aujourd'hui en début d'après-midi"+             , "en début d'après-midi"+             , "le 12 février en début d'après-midi"+             , "au début de l'après-midi"              ]+  , examples (datetimeInterval ((2013, 2, 12, 14, 0, 0), (2013, 2, 12, 17, 0, 0)) Hour)+             [ "aujourd'hui en milieu d'après-midi"+             , "en milieu d'après-midi"+             , "le 12 février en milieu d'après-midi"+             , "au milieu de l'après-midi"+             ]   , examples (datetimeInterval ((2013, 2, 12, 17, 0, 0), (2013, 2, 12, 19, 0, 0)) Hour)-             [ "en fin d'après-midi"+             [ "aujourd'hui en fin d'après-midi"+             , "en fin d'après-midi"+             , "le 12 février en fin d'après-midi"+             , "à la fin de l'après-midi"              ]   , examples (datetimeInterval ((2013, 2, 12, 6, 0, 0), (2013, 2, 12, 10, 0, 0)) Hour)-             [ "en début de journée"+             [ "aujourd'hui en début de journée"+             , "le 12 février en début de journée"+             , "en début de journée"+             , "au début de la journée"              ]+  , examples (datetimeInterval ((2013, 2, 12, 11, 0, 0), (2013, 2, 12, 16, 0, 0)) Hour)+             [ "aujourd'hui en milieu de journée"+             , "en milieu de journée"+             , "le 12 février en milieu de journée"+             , "au milieu de la journée"+             ]   , examples (datetimeInterval ((2013, 2, 12, 17, 0, 0), (2013, 2, 12, 21, 0, 0)) Hour)-             [ "en fin de journée"+             [ "aujourd'hui en fin de journée"+             , "en fin de journée"+             , "le 12 février en fin de journée"+             , "à la fin de la journée"              ]   , examples (datetimeInterval ((2013, 2, 12, 18, 0, 0), (2013, 2, 13, 0, 0, 0)) Hour)              [ "ce soir"+             , "le soir"+             , "dans la soirée"              ]   , examples (datetimeInterval ((2013, 2, 12, 18, 0, 0), (2013, 2, 12, 21, 0, 0)) Hour)-             [ "en début de soirée"+             [ "aujourd'hui en début de soirée"+             , "en début de soirée"+             , "le 12 février en début de soirée"+             , "au début de la soirée"              ]   , examples (datetimeInterval ((2013, 2, 12, 21, 0, 0), (2013, 2, 13, 0, 0, 0)) Hour)-             [ "en fin de soirée"+             [ "aujourd'hui en fin de soirée"+             , "en fin de soirée"+             , "le 12 février en fin de soirée"+             , "à la fin de la soirée"              ]   , examples (datetimeInterval ((2013, 2, 13, 18, 0, 0), (2013, 2, 14, 0, 0, 0)) Hour)              [ "demain soir"@@ -549,12 +598,15 @@              ]   , examples (datetimeInterval ((2013, 2, 11, 0, 0, 0), (2013, 2, 13, 0, 0, 0)) Day)              [ "en début de semaine"+             , "au début de la semaine"              ]   , examples (datetimeInterval ((2013, 2, 13, 0, 0, 0), (2013, 2, 15, 0, 0, 0)) Day)              [ "en milieu de semaine"+             , "au milieu de la semaine"              ]   , examples (datetimeInterval ((2013, 2, 14, 0, 0, 0), (2013, 2, 18, 0, 0, 0)) Day)              [ "en fin de semaine"+             , "à la fin de la semaine"              ]   , examples (datetimeInterval ((2013, 2, 11, 0, 0, 0), (2013, 2, 16, 0, 0, 0)) Day)              [ "en semaine"@@ -685,10 +737,12 @@   , examples (datetimeOpenInterval After (2013, 2, 14, 9, 30, 0) Minute)              [ "à partir de 9h30 jeudi"              , "jeudi après 9h30"+             , "jeudi plus tard que 9h30"              , "jeudi matin à partir de 9 heures 30"              ]   , examples (datetimeOpenInterval After (2013, 11, 1, 16, 0, 0) Hour)              [ "après 16h le 1er novembre"+             , "plus tard que 16h le 1er novembre"              ]   , examples (datetimeOpenInterval After (2013, 11, 1, 0, 0, 0) Day)              [ "après le 1er novembre"@@ -738,7 +792,7 @@   , examples (datetime (2013, 2, 12, 13, 0, 0) Minute)              [ "à seize heures CET"              ]-  , examples (datetimeInterval ((2013, 3, 25, 0, 0, 0), (2013, 4, 1, 0, 0, 0)) Day)+  , examples (datetimeInterval ((2013, 3, 21, 0, 0, 0), (2013, 4, 1, 0, 0, 0)) Day)              [ "fin mars"              , "fin du mois de mars"              ]@@ -759,6 +813,22 @@   , examples (datetimeInterval ((2013, 12, 10, 0, 0, 0), (2013, 12, 20, 0, 0, 0)) Day)              [ "mi-décembre"              ]+  , examples (datetimeInterval ((2013, 2, 21, 0, 0, 0), (2013, 3, 1, 0, 0, 0)) Day)+             [ "en fin de mois"+             , "à la fin du mois"+             ]+  , examples (datetimeInterval ((2013, 11, 1, 0, 0, 0), (2014, 1, 1, 0, 0, 0)) Month)+             [ "en fin d'année"+             , "à la fin de l'année"+             ]+  , examples (datetimeInterval ((2013, 1, 1, 0, 0, 0), (2013, 3, 1, 0, 0, 0)) Month)+             [ "en début d'année"+             , "au début de l'année"+             ]+  , examples (datetimeInterval ((2013, 3, 1, 0, 0, 0), (2013, 3, 11, 0, 0, 0)) Day)+             [ "au début du mois"+             , "en début de mois"+             ]   , examples (datetime (2013, 3, 0, 0, 0, 0) Month)              [ "mars"              , "en mars"@@ -770,5 +840,17 @@              ]   , examples (datetime (2013, 8, 15, 8, 0, 0) Hour)              [ "jeudi 15 à 8h"+             ]+  , examples (datetimeOpenInterval After (2013, 2, 12, 4, 40, 0) Minute)+             [ "plus tard"+             , "un peu plus tard"+             ]+  , examples (datetimeInterval ((2013, 2, 12, 12, 0, 0), (2013, 2, 12, 19, 0, 0)) Hour)+             [ "plus tard dans l'après-midi"+             , "un peu plus tard dans l'après-midi"+             ]+  , examples (datetimeInterval ((2013, 2, 12, 18, 0, 0), (2013, 2, 13, 00, 0, 0)) Hour)+             [ "plus tard dans la soirée"+             , "un peu plus tard dans la soirée"              ]   ]
Duckling/Time/FR/Rules.hs view
@@ -21,9 +21,9 @@ import Duckling.Regex.Types import Duckling.Time.Helpers import Duckling.Time.Types (TimeData (..))+import Duckling.Types import qualified Duckling.Time.Types as TTime import qualified Duckling.TimeGrain.Types as TG-import Duckling.Types  ruleAujourdhui :: Rule ruleAujourdhui = Rule@@ -64,16 +64,146 @@   , prod = \_ -> tt . cycleNth TG.Day $ - 1   } +ruleDbutDeSoire :: Rule+ruleDbutDeSoire = Rule+  { name = "début de soirée"+  , pattern =+    [ regex "(en |au )?d(\x00e9|e)but de (la )?soir(\x00e9|e)e"+    ]+  , prod = \_ -> Token Time . partOfDay <$>+      interval TTime.Open (hour False 18) (hour False 21)+  }++ruleFinDeSoire :: Rule+ruleFinDeSoire = Rule+  { name = "fin de soirée"+  , pattern =+    [ regex "(en |(\x00e0|a) la )?fin de (la )?soir(\x00e9|e)e"+    ]+  , prod = \_ -> Token Time . partOfDay <$>+      interval TTime.Open (hour False 21) (hour False 0)+  }++ruleDbutDeMatine :: Rule+ruleDbutDeMatine = Rule+  { name = "début de matinée"+  , pattern =+    [ regex "le matin (tr(e|\x00e8)s )?t(\x00f4|o)t|(tr(e|\x00e8)s )?t(\x00f4|o)t le matin|(en |au )?d(\x00e9|e)but de (la )?matin(\x00e9|e)e"+    ]+  , prod = \_ -> Token Time . partOfDay <$>+      interval TTime.Open (hour False 7) (hour False 9)+  }++ruleMilieuDeMatine :: Rule+ruleMilieuDeMatine = Rule+  { name = "milieu de matinée"+  , pattern =+    [ regex "(en |au )?milieu de (la )?matin(\x00e9|e)e"+    ]+  , prod = \_ -> Token Time . partOfDay <$>+      interval TTime.Open (hour False 9) (hour False 11)+  }++ruleFinDeMatine :: Rule+ruleFinDeMatine = Rule+  { name = "fin de matinée"+  , pattern =+    [ regex "(en |(\x00e0|a) la )?fin de (la )?matin(\x00e9|e)e"+    ]+  , prod = \_ -> Token Time . partOfDay <$>+      interval TTime.Open (hour False 10) (hour False 12)+  }++ruleDbutDaprsmidi :: Rule+ruleDbutDaprsmidi = Rule+  { name = "début d'après-midi"+  , pattern =+    [ regex "(au |en )?d(\x00e9|e)but (d'|de l')apr(e|\x00e9|\x00e8)s( |\\-)midi"+    ]+  , prod = \_ -> Token Time . partOfDay <$>+      interval TTime.Open (hour False 12) (hour False 14)+  }++ruleMilieuDaprsmidi :: Rule+ruleMilieuDaprsmidi = Rule+  { name = "milieu d'après-midi"+  , pattern =+    [ regex "(au |en )?milieu (d'|de l')apr(e|\x00e9|\x00e8)s( |\\-)midi"+    ]+  , prod = \_ -> Token Time . partOfDay <$>+      interval TTime.Open (hour False 14) (hour False 17)+  }++ruleFinDaprsmidi :: Rule+ruleFinDaprsmidi = Rule+  { name = "fin d'après-midi"+  , pattern =+    [ regex "((\x00e0|a) la |en )?fin (d'|de l')apr(e|\x00e9|\x00e8)s( |\\-)midi"+    ]+  , prod = \_ -> Token Time . partOfDay <$>+      interval TTime.Open (hour False 17) (hour False 19)+  }+ ruleDbutDeJourne :: Rule ruleDbutDeJourne = Rule   { name = "début de journée"   , pattern =-    [ regex "d(\x00e9|e)but de journ(\x00e9|e)e"+    [ regex "(en |au )?d(\x00e9|e)but de (la )?journ(\x00e9|e)e"     ]-  , prod = \_ -> Token Time . partOfDay . mkLatent <$>+  , prod = \_ -> Token Time . partOfDay <$>         interval TTime.Open (hour False 6) (hour False 10)   } +ruleMilieuDeJourne :: Rule+ruleMilieuDeJourne = Rule+  { name = "milieu de journée"+  , pattern =+    [ regex "(en |au )?milieu de (la )?journ(\x00e9|e)e"+    ]+  , prod = \_ -> Token Time . partOfDay <$>+      interval TTime.Open (hour False 11) (hour False 16)+  }++ruleFinDeJourne :: Rule+ruleFinDeJourne = Rule+  { name = "fin de journée"+  , pattern =+    [ regex "(en |(\x00e0|a) la )?fin de (la )?journ(\x00e9|e)e"+    ]+  , prod = \_ -> Token Time . partOfDay <$>+      interval TTime.Open (hour False 17) (hour False 21)+  }++ruleDbutDeSemaine :: Rule+ruleDbutDeSemaine = Rule+  { name = "début de semaine"+  , pattern =+    [ regex "(en |au )?d(\x00e9|e)but de (cette |la )?semaine"+    ]+  , prod = \_ -> Token Time <$>+      interval TTime.Open (dayOfWeek 1) (dayOfWeek 2)+  }++ruleMilieuDeSemaine :: Rule+ruleMilieuDeSemaine = Rule+  { name = "milieu de semaine"+  , pattern =+    [ regex "(en |au )?milieu de (cette |la )?semaine"+    ]+  , prod = \_ -> Token Time <$>+      interval TTime.Open (dayOfWeek 3) (dayOfWeek 4)+  }++ruleFinDeSemaine :: Rule+ruleFinDeSemaine = Rule+  { name = "fin de semaine"+  , pattern =+    [ regex "(en |(\x00e0|a) la )?fin de (cette |la )?semaine"+    ]+  , prod = \_ -> Token Time <$>+      interval TTime.Open (dayOfWeek 4) (dayOfWeek 7)+  }+ ruleLeLendemainDuTime :: Rule ruleLeLendemainDuTime = Rule   { name = "le lendemain du <time>"@@ -785,36 +915,6 @@       interval TTime.Open (hour False 18) (hour False 0)   } -ruleDbutDeSoire :: Rule-ruleDbutDeSoire = Rule-  { name = "début de soirée"-  , pattern =-    [ regex "d(\x00e9|e)but de soir(\x00e9|e)e?"-    ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>-      interval TTime.Open (hour False 18) (hour False 21)-  }--ruleFinDeSoire :: Rule-ruleFinDeSoire = Rule-  { name = "fin de soirée"-  , pattern =-    [ regex "fin de soir(\x00e9|e)e?"-    ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>-      interval TTime.Open (hour False 21) (hour False 0)-  }--ruleDbutDeMatine :: Rule-ruleDbutDeMatine = Rule-  { name = "début de matinée"-  , pattern =-    [ regex "le matin (tr(e|\x00e8)s )?t(\x00f4|o)t|(tr(e|\x00e8)s )?t(\x00f4|o)t le matin|d(\x00e9|e)but de matin(\x00e9|e)e"-    ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>-      interval TTime.Open (hour False 7) (hour False 9)-  }- ruleNamedday5 :: Rule ruleNamedday5 = Rule   { name = "named-day"@@ -901,26 +1001,6 @@   , prod = \_ -> tt $ month 2   } -ruleMilieuDeJourne :: Rule-ruleMilieuDeJourne = Rule-  { name = "milieu de journée"-  , pattern =-    [ regex "milieu de journ(\x00e9|e)e"-    ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>-      interval TTime.Open (hour False 11) (hour False 16)-  }--ruleFinDeJourne :: Rule-ruleFinDeJourne = Rule-  { name = "fin de journée"-  , pattern =-    [ regex "fin de journ(\x00e9|e)e"-    ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>-      interval TTime.Open (hour False 17) (hour False 21)-  }- ruleLeCycleDeTime :: Rule ruleLeCycleDeTime = Rule   { name = "le <cycle> de <time>"@@ -960,7 +1040,7 @@ ruleAprsmidi = Rule   { name = "après-midi"   , pattern =-    [ regex "apr(e|\x00e9|\x00e8)s?[ \\-]?midi"+    [ regex "apr(e|\x00e9|\x00e8)s( |\\-)midi"     ]   , prod = \_ -> Token Time . mkLatent . partOfDay <$>       interval TTime.Open (hour False 12) (hour False 19)@@ -1056,7 +1136,7 @@ ruleAprsTimeofday = Rule   { name = "après <time-of-day>"   , pattern =-    [ regex "(apr(e|\x00e8)s|(a|\x00e0) partir de)"+    [ regex "(apr(e|\x00e8)s|(a|\x00e0) partir de|(un peu )?plus tard que)"     , dimension Time     ]   , prod = \tokens -> case tokens of@@ -1391,26 +1471,6 @@       _ -> Nothing   } -ruleMilieuDeSemaine :: Rule-ruleMilieuDeSemaine = Rule-  { name = "milieu de semaine"-  , pattern =-    [ regex "(en |au )?milieu de (cette |la )?semaine"-    ]-  , prod = \_ -> Token Time <$>-      interval TTime.Open (dayOfWeek 3) (dayOfWeek 4)-  }--ruleDbutDeSemaine :: Rule-ruleDbutDeSemaine = Rule-  { name = "début de semaine"-  , pattern =-    [ regex "(en |au )?d(\x00e9|e)but de (cette |la )?semaine"-    ]-  , prod = \_ -> Token Time <$>-      interval TTime.Open (dayOfWeek 1) (dayOfWeek 2)-  }- ruleTimeofdayHeures :: Rule ruleTimeofdayHeures = Rule   { name = "<time-of-day> heures"@@ -1544,7 +1604,7 @@     ]   , prod = \tokens -> case tokens of       (_:Token Time td:_) -> do-        from <- intersect (dayOfMonth 25) td+        from <- intersect (dayOfMonth 21) td         let to = cycleLastOf TG.Day td         Token Time <$> interval TTime.Closed from to       _ -> Nothing@@ -1665,16 +1725,6 @@   , prod = \_ -> tt $ dayOfWeek 7   } -ruleFinDeSemaine :: Rule-ruleFinDeSemaine = Rule-  { name = "fin de semaine"-  , pattern =-    [ regex "(en |(\x00e0|a) la )?fin de (cette |la )?semaine"-    ]-  , prod = \_ -> Token Time <$>-      interval TTime.Open (dayOfWeek 4) (dayOfWeek 7)-  }- ruleIlYADuration :: Rule ruleIlYADuration = Rule   { name = "il y a <duration>"@@ -1705,9 +1755,9 @@ ruleAuDjeuner = Rule   { name = "au déjeuner"   , pattern =-    [ regex "((\x00e0|a) l(')?heure du|pendant( le)?|au)? d(e|\x00e9|\x00e8)jeuner"+    [ regex "((\x00e0|a) l'heure du|au moment de|pendant( le)?|au)? d(e|\x00e9|\x00e8)jeuner"     ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>+  , prod = \_ -> Token Time . partOfDay <$>       interval TTime.Open (hour False 12) (hour False 14)   } @@ -1742,26 +1792,6 @@   , prod = \_ -> tt $ cycleNth TG.Second 0   } -ruleMilieuDeMatine :: Rule-ruleMilieuDeMatine = Rule-  { name = "milieu de matinée"-  , pattern =-    [ regex "milieu de matin(\x00e9|e)e"-    ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>-      interval TTime.Open (hour False 9) (hour False 11)-  }--ruleFinDeMatine :: Rule-ruleFinDeMatine = Rule-  { name = "fin de matinée"-  , pattern =-    [ regex "fin de matin(\x00e9|e)e"-    ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>-      interval TTime.Open (hour False 10) (hour False 12)-  }- ruleDdmmyyyy :: Rule ruleDdmmyyyy = Rule   { name = "dd/-mm/-yyyy"@@ -1837,16 +1867,6 @@   , prod = \_ -> tt $ month 11   } -ruleDbutDaprsmidi :: Rule-ruleDbutDaprsmidi = Rule-  { name = "début d'après-midi"-  , pattern =-    [ regex "d(\x00e9|e)but d'apr(e|\x00e9|\x00e8)s?[ \\-]?midi"-    ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>-      interval TTime.Open (hour False 12) (hour False 14)-  }- ruleLeTime :: Rule ruleLeTime = Rule   { name = "le <time>"@@ -1886,26 +1906,6 @@       _ -> Nothing   } -ruleMilieuDaprsmidi :: Rule-ruleMilieuDaprsmidi = Rule-  { name = "fin d'après-midi"-  , pattern =-    [ regex "milieu d'apr(e|\x00e9|\x00e8)s?[ \\-]?midi"-    ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>-      interval TTime.Open (hour False 15) (hour False 17)-  }--ruleFinDaprsmidi :: Rule-ruleFinDaprsmidi = Rule-  { name = "fin d'après-midi"-  , pattern =-    [ regex "fin d'apr(e|\x00e9|\x00e8)s?[ \\-]?midi"-    ]-  , prod = \_ -> Token Time . mkLatent . partOfDay <$>-      interval TTime.Open (hour False 17) (hour False 19)-  }- ruleJourDeLan :: Rule ruleJourDeLan = Rule   { name = "jour de l'an"@@ -1996,14 +1996,64 @@ ruleFinDuMois = Rule   { name = "fin du mois"   , pattern =-    [ regex "(((a|\x00e0) )?la )?fin (du|de) mois"+    [ regex "(en |((\x00e0|a) la ))?fin (du|de) (ce )?mois"     ]-  , prod = \_ -> do-      let from = cycleNthAfter False TG.Day (- 10) $ cycleNth TG.Month 1-          to = cycleNth TG.Month 1-      Token Time . mkLatent . partOfDay <$> interval TTime.Open from to+  , prod = \_ -> Token Time <$>+      interval TTime.Open (dayOfMonth 21) (dayOfMonth 0)   } +ruleDbutDuMois :: Rule+ruleDbutDuMois = Rule+  { name = "début du mois"+  , pattern =+    [ regex "(en |au )?d(\x00e9|e)but (du|de) (ce )?mois"+    ]+  , prod = \_ -> Token Time <$>+      interval TTime.Open (dayOfMonth 1) (dayOfMonth 10)+  }++ruleFinDAnnee :: Rule+ruleFinDAnnee = Rule+  { name = "fin d'année"+  , pattern =+    [ regex "(en |(\x00e0|a) la )?fin (d'|de l'|de cette )ann(\x00e9|e)e"+    ]+  , prod = \_ -> Token Time <$>+      interval TTime.Open (month 11) (month 1)+  }++ruleDbutDAnnee :: Rule+ruleDbutDAnnee = Rule+  { name = "début d'année"+  , pattern =+    [ regex "(en |au )?d(\x00e9|e)but (d'|de l'|de cette )ann(\x00e9|e)e"+    ]+  , prod = \_ -> Token Time <$>+      interval TTime.Open (month 1) (month 3)+  }++rulePlusTard :: Rule+rulePlusTard = Rule+  { name = "plus tard"+  , pattern =+    [ regex "(un peu )?plus tard"+    ]+  , prod = \_ -> tt $ withDirection TTime.After $ cycleNth TG.Minute 10++  }++rulePlusTardPartofday :: Rule+rulePlusTardPartofday = Rule+  { name = "plus tard <part-of-day>"+  , pattern =+    [ regex "(un peu )?plus tard"+    , Predicate isAPartOfDay+    ]+  , prod = \tokens -> case tokens of+      (_:Token Time td:_) -> tt $ notLatent td+      _ -> Nothing+  }+ ruleTimezone :: Rule ruleTimezone = Rule   { name = "<time> timezone"@@ -2177,4 +2227,9 @@   , ruleHourofdayEtDemi   , ruleFinDuMois   , ruleTimezone+  , ruleDbutDuMois+  , ruleFinDAnnee+  , ruleDbutDAnnee+  , rulePlusTard+  , rulePlusTardPartofday   ]
Duckling/Time/Helpers.hs view
@@ -15,14 +15,15 @@     isADayOfWeek, isAMonth, isAnHourOfDay, isAPartOfDay, isATimeOfDay   , isDOMInteger, isDOMOrdinal, isDOMValue, isGrain, isGrainFinerThan   , isGrainOfTime, isIntegerBetween, isNotLatent, isOrdinalBetween-  , isMidnightOrNoon+  , isMidnightOrNoon, isNumeralSafeToUse     -- Production   , cycleLastOf, cycleN, cycleNth, cycleNthAfter, dayOfMonth, dayOfWeek   , daysOfWeekOfMonth, durationAfter, durationAgo, durationBefore, form, hour   , hourMinute, hourMinuteSecond, inDuration, intersect, intersectDOM, interval   , inTimezone, longWEBefore, minute, minutesAfter, minutesBefore, mkLatent   , month, monthDay, notLatent, nthDOWOfMonth, partOfDay, predLastOf, predNth-  , predNthAfter, second, timeOfDayAMPM, withDirection, year, yearMonthDay+  , predNthAfter, second, timeOfDayAMPM, weekend, withDirection, year+  , yearMonthDay   , tt     -- Other   , getIntValue@@ -30,18 +31,15 @@  import Control.Monad (liftM2) import Data.Maybe-import Prelude import Data.Text (Text)+import Prelude import qualified Data.Time as Time import qualified Data.Time.Calendar.WeekDate as Time import qualified Data.Time.LocalTime.TimeZone.Series as Series  import Duckling.Dimensions.Types import Duckling.Duration.Types (DurationData (DurationData))-import qualified Duckling.Duration.Types as TDuration-import qualified Duckling.Numeral.Types as TNumeral import Duckling.Ordinal.Types (OrdinalData (OrdinalData))-import qualified Duckling.Ordinal.Types as TOrdinal import Duckling.Time.TimeZone.Parse (parseTimezone) import Duckling.Time.Types   ( TimeData(TimeData)@@ -59,9 +57,12 @@   , runPredicate   , AMPM(..)   )+import Duckling.Types+import qualified Duckling.Duration.Types as TDuration+import qualified Duckling.Numeral.Types as TNumeral+import qualified Duckling.Ordinal.Types as TOrdinal import qualified Duckling.Time.Types as TTime import qualified Duckling.TimeGrain.Types as TG-import Duckling.Types  getIntValue :: Token -> Maybe Int getIntValue (Token Numeral nd) = TNumeral.getIntValue $ TNumeral.value nd@@ -273,6 +274,10 @@   TNumeral.isIntegerBetween (TNumeral.value nd) low high isIntegerBetween _ _ _ = False +isNumeralSafeToUse :: Predicate+isNumeralSafeToUse (Token Numeral nd) = TNumeral.okForAnyTime nd+isNumeralSafeToUse _ = False+ isOrdinalBetween :: Int -> Int -> Predicate isOrdinalBetween low high (Token Ordinal od) =   TOrdinal.isBetween (TOrdinal.value od) low high@@ -479,6 +484,12 @@     end = intersect' (tue, hour False 0)     fri = cycleNthAfter False TG.Day (- 3) monday     tue = cycleNthAfter False TG.Day 1 monday++weekend :: TimeData+weekend = interval' TTime.Open (fri, mon)+  where+    fri = intersect' (dayOfWeek 5, hour False 18)+    mon = intersect' (dayOfWeek 1, hour False 0)  daysOfWeekOfMonth :: Int -> Int -> TimeData daysOfWeekOfMonth dow m = intersect' (dayOfWeek dow, month m)
duckling.cabal view
@@ -1,5 +1,5 @@ name:                duckling-version:             0.1.1.0+version:             0.1.2.0 synopsis:            A Haskell library for parsing text into structured data. description:   Duckling is a library for parsing text into structured data.@@ -15,7 +15,8 @@ stability:           alpha cabal-version:       >=1.10 tested-with:-  GHC==8.0.2+  GHC==8.0.2,+  GHC==8.2.1  extra-source-files:    README.md                      , PATENTS@@ -506,7 +507,7 @@                      , regex-base            >= 0.93.2 && < 0.94                      , regex-pcre            >= 0.94.4 && < 0.95                      , text                  >= 1.2.2.1 && < 1.3-                     , text-show             >= 2.1.2 && < 3.5+                     , text-show             >= 2.1.2 && < 3.7                      , time                  >= 1.5.0.1 && < 1.9                      , timezone-series       >= 0.1.5.1 && < 0.2                      , unordered-containers  >= 0.2.7.2 && < 0.3@@ -518,11 +519,11 @@   main-is:             TestMain.hs   hs-source-dirs:      tests   build-depends:       duckling-                     , base                  >= 4.8.2 && < 5.0-                     , aeson                 >= 0.11.3.0 && < 1.1-                     , text                  >= 1.2.2.1 && < 1.3-                     , time                  >= 1.5.0.1 && < 1.9-                     , unordered-containers  >= 0.2.7.2 && < 0.3+                     , base+                     , aeson+                     , text+                     , time+                     , unordered-containers                      , tasty                 >= 0.11.1 && < 0.12                      , tasty-hunit           >= 0.9.2 && < 1.0   other-modules:       Duckling.Tests@@ -718,10 +719,10 @@   other-modules:       Duckling.Ranking.Train                      , Duckling.Ranking.Generate   build-depends:       duckling-                     , base                  >= 4.8.2 && < 5.0+                     , base                      , haskell-src-exts      >= 1.18 && < 1.19-                     , text                  >= 1.2.2.1 && < 1.3-                     , unordered-containers  >= 0.2.7.2 && < 0.3+                     , text+                     , unordered-containers   default-language:    Haskell2010   default-extensions:  OverloadedStrings @@ -731,20 +732,58 @@   ghc-options:         -threaded -rtsopts -with-rtsopts=-N   other-modules:       Duckling.Data.TimeZone   build-depends:       duckling-                     , base                  >= 4.8.2 && < 5.0-                     , aeson                 >= 0.11.3.0 && < 1.1-                     , bytestring            >= 0.10.6.0 && < 0.11+                     , base+                     , aeson+                     , bytestring                      , directory             >= 1.2.2.0 && < 1.4-                     , extra                 >= 1.4.10 && < 1.6+                     , extra                      , filepath              >= 1.4.0.0 && < 1.5                      , snap-core             >= 1.0.2.0 && < 1.1                      , snap-server           >= 1.0.1.1 && < 1.1-                     , text                  >= 1.2.2.1 && < 1.3-                     , text-show             >= 2.1.2 && < 3.5-                     , time                  >= 1.5.0.1 && < 1.9+                     , text+                     , text-show+                     , time                      , timezone-olson        >= 0.1.7 && < 0.2-                     , timezone-series       >= 0.1.5.1 && < 0.2-                     , unordered-containers  >= 0.2.7.2 && < 0.3+                     , timezone-series+                     , unordered-containers+  default-language:    Haskell2010+  default-extensions:  OverloadedStrings++executable duckling-request-sample+  main-is:             DucklingRequestSample.hs+  hs-source-dirs:      exe+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N+  other-modules:       Duckling.Data.TimeZone+  build-depends:       duckling+                     , base+                     , dependent-sum+                     , directory             >= 1.2.2.0 && < 1.4+                     , extra+                     , filepath              >= 1.4.0.0 && < 1.5+                     , text+                     , time+                     , timezone-olson        >= 0.1.7 && < 0.2+                     , timezone-series+                     , unordered-containers+  default-language:    Haskell2010+  default-extensions:  OverloadedStrings++executable duckling-expensive+  main-is:             DucklingExpensive.hs+  hs-source-dirs:      exe+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N+  other-modules:       Duckling.Data.TimeZone+  build-depends:       duckling+                     , base+                     , dependent-sum+                     , directory             >= 1.2.2.0 && < 1.4+                     , extra+                     , filepath              >= 1.4.0.0 && < 1.5+                     , text+                     , time+                     , timezone-olson        >= 0.1.7 && < 0.2+                     , timezone-series+                     , unordered-containers   default-language:    Haskell2010   default-extensions:  OverloadedStrings 
+ exe/DucklingExpensive.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE ScopedTypeVariables #-}+{-# OPTIONS -fno-full-laziness #-}+module Main (main) where+import Duckling.Debug+import Control.Monad+import System.Environment+import Duckling.Lang+import Data.Some+import Duckling.Dimensions.Types++main :: IO ()+main = do+  (repeatCount :: Int) <- read . head <$> getArgs+  void $ replicateM repeatCount $ void $ do+    debug EN "Monday 3rd at 9.30am or 2.30pm, Saturday 8th at 10.30am, Tuesday 11th at 2pm, Wednesday 12th at 2.30pm, Friday 14th at 12.30pm xx" [This Time]+    debug ES "Horario es de Lunes a Viernes de 2 pm a 10 pm. S\195\161bado de 9 am a 7 pm" [This Time]
+ exe/DucklingRequestSample.hs view
@@ -0,0 +1,22 @@+{-# LANGUAGE ScopedTypeVariables #-}+{-# OPTIONS -fno-full-laziness #-}+module Main (main) where+import Duckling.Debug+import Control.Monad+import System.Environment+import Duckling.Lang+import Data.Some+import Duckling.Dimensions.Types++main :: IO ()+main = do+  (repeatCount :: Int) <- read . head <$> getArgs+  void $ replicateM repeatCount $ void $ do+    debug EN "My number is 123" [This PhoneNumber,This Distance,This Numeral,This Email]+    debug EN "Wednesday 5:00PM 3/29/2017" [This Numeral,This Time]+    debug ZH "12:30pm" [This Time]+    debug EN "tomorrow at 4pm" [This Time]+    debug EN "Tomorrow at 12.30?" [This Time]+    debug EN "Wednesday 9am" [This Time]+    debug EN "Sure do! Will 11:30 work?" [This Time,This AmountOfMoney]+    debug EN "8:00am" [This Time]