diff --git a/Duckling/AmountOfMoney/AR/Rules.hs b/Duckling/AmountOfMoney/AR/Rules.hs
--- a/Duckling/AmountOfMoney/AR/Rules.hs
+++ b/Duckling/AmountOfMoney/AR/Rules.hs
@@ -266,7 +266,7 @@
     [ regex "(من|(ما )?بين)( ال)?"
     , Predicate isPositive
     , regex "(الى|حتى|و|ل)( ا?ل)?"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -283,9 +283,9 @@
   { name = "between|from <amount-of-money> to|and <amount-of-money>"
   , pattern =
     [ regex "(من|(ما )?بين)( ال)?"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     , regex "(الى|حتى|و|ل)( ا?ل)?"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -303,7 +303,7 @@
   , pattern =
     [ Predicate isPositive
     , regex "-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token Numeral NumeralData {TNumeral.value = from}:
@@ -318,9 +318,9 @@
 ruleIntervalDash = Rule
   { name = "<amount-of-money> - <amount-of-money>"
   , pattern =
-    [ financeWith TAmountOfMoney.value isJust
+    [ Predicate isSimpleAmountOfMoney
     , regex "-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token AmountOfMoney AmountOfMoneyData {TAmountOfMoney.value = Just from, TAmountOfMoney.currency = c1}:
@@ -336,7 +336,7 @@
   { name = "under/less/lower/no more than <amount-of-money>"
   , pattern =
     [ regex "(حتى|[أا]قل من|تحت|(ما )?دون)|على ال[أا]كثر"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -350,7 +350,7 @@
   { name = "under/less/lower/no more than <amount-of-money>"
   , pattern =
     [ regex "على ال[أا]كثر"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -364,7 +364,7 @@
   { name = "at least/over/above/more than <amount-of-money>"
   , pattern =
     [ regex "فوق||[أا]كثر من|على ال[اأ]قل"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -377,7 +377,7 @@
 ruleIntervalAtLeast = Rule
   { name = "<amount-of-money> at least"
   , pattern =
-    [ financeWith TAmountOfMoney.value isJust
+    [ Predicate isSimpleAmountOfMoney
     , regex "على ال[اأ]قل"
     ]
   , prod = \tokens -> case tokens of
diff --git a/Duckling/AmountOfMoney/BG/Rules.hs b/Duckling/AmountOfMoney/BG/Rules.hs
--- a/Duckling/AmountOfMoney/BG/Rules.hs
+++ b/Duckling/AmountOfMoney/BG/Rules.hs
@@ -165,7 +165,7 @@
     [ regex "между|от"
     , Predicate isPositive
     , regex "до|и"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -183,9 +183,9 @@
   { name = "between|from <amount-of-money> to|and <amount-of-money>"
   , pattern =
     [ regex "между|от"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     , regex "до|и"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -205,7 +205,7 @@
   , pattern =
     [ Predicate isPositive
     , regex "-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token Numeral NumeralData{TNumeral.value = from}:
@@ -221,9 +221,9 @@
 ruleIntervalDash = Rule
   { name = "<amount-of-money> - <amount-of-money>"
   , pattern =
-    [ financeWith TAmountOfMoney.value isJust
+    [ Predicate isSimpleAmountOfMoney
     , regex "-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just from,
@@ -241,7 +241,7 @@
   { name = "under/less/lower/no more than <amount-of-money>"
   , pattern =
     [ regex "под|по-малко от|не повече от"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -256,7 +256,7 @@
   { name = "over/above/at least/more than <amount-of-money>"
   , pattern =
     [ regex "над|поне|повече от"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
diff --git a/Duckling/AmountOfMoney/EN/AU/Corpus.hs b/Duckling/AmountOfMoney/EN/AU/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/AU/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.AU.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple AUD 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple AUD 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/AU/Rules.hs b/Duckling/AmountOfMoney/EN/AU/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/AU/Rules.hs
@@ -0,0 +1,53 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.AU.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000 $ currencyOnly AUD
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v) $ currencyOnly AUD
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/BZ/Corpus.hs b/Duckling/AmountOfMoney/EN/BZ/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/BZ/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.BZ.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple Dollar 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple Dollar 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/BZ/Rules.hs b/Duckling/AmountOfMoney/EN/BZ/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/BZ/Rules.hs
@@ -0,0 +1,55 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.BZ.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000
+                 $ currencyOnly Dollar
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v)
+           $ currencyOnly Dollar
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/CA/Corpus.hs b/Duckling/AmountOfMoney/EN/CA/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/CA/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.CA.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple CAD 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple CAD 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/CA/Rules.hs b/Duckling/AmountOfMoney/EN/CA/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/CA/Rules.hs
@@ -0,0 +1,53 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.CA.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000 $ currencyOnly CAD
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v) $ currencyOnly CAD
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/GB/Corpus.hs b/Duckling/AmountOfMoney/EN/GB/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/GB/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.GB.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple GBP 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple GBP 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/GB/Rules.hs b/Duckling/AmountOfMoney/EN/GB/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/GB/Rules.hs
@@ -0,0 +1,53 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.GB.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000 $ currencyOnly GBP
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v) $ currencyOnly GBP
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/IE/Corpus.hs b/Duckling/AmountOfMoney/EN/IE/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/IE/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.IE.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple Dollar 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple Dollar 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/IE/Rules.hs b/Duckling/AmountOfMoney/EN/IE/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/IE/Rules.hs
@@ -0,0 +1,55 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.IE.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000
+                 $ currencyOnly Dollar
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v)
+           $ currencyOnly Dollar
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/IN/Corpus.hs b/Duckling/AmountOfMoney/EN/IN/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/IN/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.IN.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple Dollar 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple Dollar 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/IN/Rules.hs b/Duckling/AmountOfMoney/EN/IN/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/IN/Rules.hs
@@ -0,0 +1,53 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.IN.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000 $ currencyOnly Dollar
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v) $ currencyOnly Dollar
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/JM/Corpus.hs b/Duckling/AmountOfMoney/EN/JM/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/JM/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.JM.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple JMD 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple JMD 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/JM/Rules.hs b/Duckling/AmountOfMoney/EN/JM/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/JM/Rules.hs
@@ -0,0 +1,55 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.JM.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000
+                 $ currencyOnly JMD
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v)
+           $ currencyOnly JMD
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/NZ/Corpus.hs b/Duckling/AmountOfMoney/EN/NZ/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/NZ/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.NZ.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple NZD 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple NZD 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/NZ/Rules.hs b/Duckling/AmountOfMoney/EN/NZ/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/NZ/Rules.hs
@@ -0,0 +1,55 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.NZ.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000
+                 $ currencyOnly NZD
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v)
+           $ currencyOnly NZD
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/PH/Corpus.hs b/Duckling/AmountOfMoney/EN/PH/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/PH/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.PH.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple Dollar 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple Dollar 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/PH/Rules.hs b/Duckling/AmountOfMoney/EN/PH/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/PH/Rules.hs
@@ -0,0 +1,55 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.PH.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000
+                 $ currencyOnly Dollar
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v)
+           $ currencyOnly Dollar
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/Rules.hs b/Duckling/AmountOfMoney/EN/Rules.hs
--- a/Duckling/AmountOfMoney/EN/Rules.hs
+++ b/Duckling/AmountOfMoney/EN/Rules.hs
@@ -134,7 +134,7 @@
   { name = "a <currency>"
   , pattern =
     [ regex "an?"
-    , financeWith TAmountOfMoney.value isNothing
+    , Predicate isCurrencyOnly
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -222,7 +222,7 @@
     [ regex "between|from"
     , Predicate isPositive
     , regex "to|and"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -240,9 +240,9 @@
   { name = "between|from <amount-of-money> to|and <amount-of-money>"
   , pattern =
     [ regex "between|from"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     , regex "to|and"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -262,7 +262,7 @@
   , pattern =
     [ Predicate isNatural
     , regex "-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token Numeral NumeralData{TNumeral.value = from}:
@@ -278,9 +278,9 @@
 ruleIntervalDash = Rule
   { name = "<amount-of-money> - <amount-of-money>"
   , pattern =
-    [ financeWith TAmountOfMoney.value isJust
+    [ Predicate isSimpleAmountOfMoney
     , regex "-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just from,
@@ -298,7 +298,7 @@
   { name = "under/less/lower/no more than <amount-of-money>"
   , pattern =
     [ regex "under|(less|lower|not? more) than"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -313,7 +313,7 @@
   { name = "over/above/at least/more than <amount-of-money>"
   , pattern =
     [ regex "over|above|at least|more than"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
diff --git a/Duckling/AmountOfMoney/EN/TT/Corpus.hs b/Duckling/AmountOfMoney/EN/TT/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/TT/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.TT.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple TTD 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple TTD 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/TT/Rules.hs b/Duckling/AmountOfMoney/EN/TT/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/TT/Rules.hs
@@ -0,0 +1,55 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.TT.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000
+                 $ currencyOnly TTD
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v)
+           $ currencyOnly TTD
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/US/Corpus.hs b/Duckling/AmountOfMoney/EN/US/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/US/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.US.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple USD 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple USD 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/US/Rules.hs b/Duckling/AmountOfMoney/EN/US/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/US/Rules.hs
@@ -0,0 +1,53 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.US.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000 $ currencyOnly USD
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v) $ currencyOnly USD
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/EN/ZA/Corpus.hs b/Duckling/AmountOfMoney/EN/ZA/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/ZA/Corpus.hs
@@ -0,0 +1,36 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.ZA.Corpus
+  ( allExamples
+  , negativeExamples
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.AmountOfMoney.Types
+import Duckling.Testing.Types
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple Dollar 1000)
+             [ "a grand"
+             , "1 grand"
+             ]
+  , examples (simple Dollar 10000)
+             [ "10 grand"
+             ]
+  ]
+
+negativeExamples :: [Text]
+negativeExamples =
+  [ "grand"
+  ]
diff --git a/Duckling/AmountOfMoney/EN/ZA/Rules.hs b/Duckling/AmountOfMoney/EN/ZA/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/AmountOfMoney/EN/ZA/Rules.hs
@@ -0,0 +1,55 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.AmountOfMoney.EN.ZA.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.AmountOfMoney.Helpers
+import Duckling.AmountOfMoney.Types (Currency(..))
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Types
+
+import qualified Duckling.Numeral.Types as TNumeral
+
+
+ruleAGrand :: Rule
+ruleAGrand = Rule
+  { name = "a grand"
+  , pattern =
+    [ regex "a grand"
+    ]
+  , prod = \_ -> Just . Token AmountOfMoney . withValue 1000
+                 $ currencyOnly Dollar
+  }
+
+ruleGrand :: Rule
+ruleGrand = Rule
+  { name = "<amount> grand"
+  , pattern =
+    [ Predicate isPositive
+    , regex "grand"
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:_)
+        -> Just . Token AmountOfMoney . withValue (1000 * v)
+           $ currencyOnly Dollar
+      _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleAGrand
+  , ruleGrand
+  ]
diff --git a/Duckling/AmountOfMoney/FR/Rules.hs b/Duckling/AmountOfMoney/FR/Rules.hs
--- a/Duckling/AmountOfMoney/FR/Rules.hs
+++ b/Duckling/AmountOfMoney/FR/Rules.hs
@@ -99,7 +99,7 @@
     [ regex "entre"
     , Predicate isPositive
     , regex "et"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -118,9 +118,9 @@
   { name = "between|from <amount-of-money> to|and <amount-of-money>"
   , pattern =
     [ regex "entre"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     , regex "et"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -145,7 +145,7 @@
   , pattern =
     [ Predicate isNatural
     , regex "-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token Numeral NumeralData{TNumeral.value = from}:
@@ -161,9 +161,9 @@
 ruleIntervalDash = Rule
   { name = "<amount-of-money> - <amount-of-money>"
   , pattern =
-    [ financeWith TAmountOfMoney.value isJust
+    [ Predicate isSimpleAmountOfMoney
     , regex "-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just from,
@@ -181,7 +181,7 @@
   { name = "under/less/lower/no more than <amount-of-money>"
   , pattern =
     [ regex "(moins|pas plus|en-dessous) de"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -196,7 +196,7 @@
   { name = "over/above/at least/more than <amount-of-money>"
   , pattern =
     [ regex "plus (que|de)|au moins"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
diff --git a/Duckling/AmountOfMoney/Helpers.hs b/Duckling/AmountOfMoney/Helpers.hs
--- a/Duckling/AmountOfMoney/Helpers.hs
+++ b/Duckling/AmountOfMoney/Helpers.hs
@@ -11,7 +11,6 @@
 
 module Duckling.AmountOfMoney.Helpers
   ( currencyOnly
-  , financeWith
   , isSimpleAmountOfMoney
   , isCent
   , isCents
@@ -38,12 +37,6 @@
 -- -----------------------------------------------------------------
 -- Patterns
 
-financeWith :: (AmountOfMoneyData -> t) -> (t -> Bool) -> PatternItem
-financeWith f pred = Predicate $ \x ->
-  case x of
-    (Token AmountOfMoney x) -> pred (f x)
-    _ -> False
-
 isCents :: Predicate
 isCents (Token AmountOfMoney AmountOfMoneyData{value = Just _, currency = Cent}) = True
 isCents _ = False
@@ -65,7 +58,7 @@
 
 isSimpleAmountOfMoney :: Predicate
 isSimpleAmountOfMoney (Token AmountOfMoney AmountOfMoneyData
-  {minValue = Nothing, maxValue = Nothing}) = True
+  {value = Just _, minValue = Nothing, maxValue = Nothing}) = True
 isSimpleAmountOfMoney _ = False
 
 isDime :: Predicate
diff --git a/Duckling/AmountOfMoney/NL/Rules.hs b/Duckling/AmountOfMoney/NL/Rules.hs
--- a/Duckling/AmountOfMoney/NL/Rules.hs
+++ b/Duckling/AmountOfMoney/NL/Rules.hs
@@ -149,7 +149,7 @@
     [ regex "tussen|vanaf|van"
     , Predicate isPositive
     , regex "tot|en"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -167,9 +167,9 @@
   { name = "between|from <amount-of-money> to|and <amount-of-money>"
   , pattern =
     [ regex "tussen|vanaf|van"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     , regex "tot|en"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -189,7 +189,7 @@
   , pattern =
     [ Predicate isNatural
     , regex "\\-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token Numeral NumeralData{TNumeral.value = from}:
@@ -205,9 +205,9 @@
 ruleIntervalDash = Rule
   { name = "<amount-of-money> - <amount-of-money>"
   , pattern =
-    [ financeWith TAmountOfMoney.value isJust
+    [ Predicate isSimpleAmountOfMoney
     , regex "\\-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just from,
@@ -225,7 +225,7 @@
   { name = "under/less/lower/no more than <amount-of-money>"
   , pattern =
     [ regex "(minder|lager|niet? meer) dan"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -240,7 +240,7 @@
   { name = "over/above/at least/more than <amount-of-money>"
   , pattern =
     [ regex "boven de|minstens|meer dan"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
diff --git a/Duckling/AmountOfMoney/RO/Corpus.hs b/Duckling/AmountOfMoney/RO/Corpus.hs
--- a/Duckling/AmountOfMoney/RO/Corpus.hs
+++ b/Duckling/AmountOfMoney/RO/Corpus.hs
@@ -10,6 +10,7 @@
 
 module Duckling.AmountOfMoney.RO.Corpus
   ( corpus
+  , negativeCorpus
   ) where
 
 import Data.String
@@ -20,8 +21,18 @@
 import Duckling.Resolve
 import Duckling.Testing.Types
 
+context :: Context
+context = testContext {locale = makeLocale RO Nothing}
+
+negativeCorpus :: NegativeCorpus
+negativeCorpus = (context, testOptions, examples)
+  where
+    examples =
+      [ "10 de dolari"
+      ]
+
 corpus :: Corpus
-corpus = (testContext {locale = makeLocale RO Nothing}, testOptions, allExamples)
+corpus = (context, testOptions, allExamples)
 
 allExamples :: [Example]
 allExamples = concat
@@ -31,8 +42,8 @@
              , "10 RON"
              ]
   , examples (simple Cent 50)
-             [ "50 bani"
-             , "50 BANI"
+             [ "50 de bani"
+             , "50 DE BANI"
              ]
   , examples (simple RON 10.5)
              [ "10,5 lei"
@@ -65,21 +76,21 @@
              [ "2 centi"
              ]
   , examples (simple Cent 23)
-             [ "23 centi"
+             [ "23 de centi"
              ]
   , examples (simple Dollar 2.23)
-             [ "2 dolari si 23 centi"
-             , "2 dolari și 23 cenți"
-             , "doi dolari si douăzeci si trei centi"
-             , "doi dolari și douăzeci și trei cenți"
-             , "2 dolari 23 centi"
+             [ "2 dolari si 23 de centi"
+             , "2 dolari și 23 de cenți"
+             , "doi dolari si douăzeci si trei de centi"
+             , "doi dolari și douăzeci și trei de cenți"
+             , "2 dolari 23 de centi"
              , "doi dolari si 23"
              , "doi dolari și 23"
              ]
   , examples (simple EUR 20)
              [ "20€"
-             , "20 euro"
-             , "20 Euro"
+             , "20 de euro"
+             , "20 de Euro"
              , "EUR 20"
              ]
   , examples (simple EUR 29.99)
@@ -105,7 +116,7 @@
              [ "una liră libaneză"
              ]
   , examples (simple INR 42)
-             [ "42 rupii"
+             [ "42 de rupii"
              , "Rs. 42"
              ]
   , examples (simple KWD 1)
@@ -118,4 +129,29 @@
              [ "1 rial saudit"
              , "un rial saudi"
              ]
+  , examples (between RON (5, 15))
+             [ "intre 5 si 15 lei"
+             , "intre 5 și 15 lei"
+             , "de la 5 RON la 15 RON"
+             , "intre 5 lei si 15 lei"
+             , "de la 5 la 15 lei"
+             , "5 - 15 roni"
+             , "aproximativ 5-15 lei"
+             , "aproape de 5-15 lei"
+             , "cam 5-15 RON"
+             ]
+  , examples (under EUR 7)
+             [ "sub șapte euro"
+             , "mai putin de 7 EUR"
+             , "mai puțin de 7 EUR"
+             , "nu chiar 7€"
+             , "nici macar 7 euro"
+             , "mai ieftin de 7€"
+             , "cel mult 7 euro"
+             ]
+  , examples (above Dollar 3)
+            [ "mai mult de 3 dolari"
+            , "peste 3 dolari"
+            , "mai scump de trei dolari"
+            ]
   ]
diff --git a/Duckling/AmountOfMoney/RO/Rules.hs b/Duckling/AmountOfMoney/RO/Rules.hs
--- a/Duckling/AmountOfMoney/RO/Rules.hs
+++ b/Duckling/AmountOfMoney/RO/Rules.hs
@@ -22,7 +22,7 @@
 import Duckling.AmountOfMoney.Helpers
 import Duckling.AmountOfMoney.Types (Currency(..), AmountOfMoneyData (..))
 import Duckling.Dimensions.Types
-import Duckling.Numeral.Helpers (isNatural, isPositive)
+import Duckling.Numeral.Helpers (isNatural, isPositive, numberWith)
 import Duckling.Numeral.Types (NumeralData (..))
 import Duckling.Regex.Types
 import Duckling.Types
@@ -43,6 +43,22 @@
       _ -> Nothing
   }
 
+ruleAmountDeUnit :: Rule
+ruleAmountDeUnit = Rule
+  { name = "<amount >= 20> de <unit>"
+  , pattern =
+    [ numberWith TNumeral.value (>= 20)
+    , regex "de"
+    , Predicate isCurrencyOnly
+    ]
+  , prod = \case
+      (Token Numeral NumeralData{TNumeral.value = v}:
+       _:
+       Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.currency = c}:
+       _) -> Just . Token AmountOfMoney . withValue v $ currencyOnly c
+      _ -> Nothing
+  }
+
 ruleIntersectAndNumeral :: Rule
 ruleIntersectAndNumeral = Rule
   { name = "intersect (and number)"
@@ -84,11 +100,11 @@
   , prod = \_ -> Just . Token AmountOfMoney $ currencyOnly Dollar
   }
 
-rulePrecisionAmountofmoney :: Rule
-rulePrecisionAmountofmoney = Rule
+rulePrecisionAmountOfMoney :: Rule
+rulePrecisionAmountOfMoney = Rule
   { name = "about/exactly <amount-of-money>"
   , pattern =
-    [ regex "exact|cam|aprox(\\.|imativ)?|aproape|(i|î)n jur (de)?"
+    [ regex "exact|cam|aprox(\\.|imativ)?|(aproape|(i|î)n jur)( de)?"
     , Predicate isMoneyWithValue
     ]
   , prod = \tokens -> case tokens of
@@ -208,9 +224,118 @@
   , prod = \_ -> Just . Token AmountOfMoney $ currencyOnly AED
   }
 
+ruleIntervalBetweenNumeral :: Rule
+ruleIntervalBetweenNumeral = Rule
+  { name = "between|from <numeral> to|and <amount-of-money>"
+  , pattern =
+    [ regex "intre|de la"
+    , Predicate isPositive
+    , regex "[sș]i|la"
+    , Predicate isSimpleAmountOfMoney
+    ]
+  , prod = \tokens -> case tokens of
+      (_:
+       Token Numeral NumeralData{TNumeral.value = from}:
+       _:
+       Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just to,
+                  TAmountOfMoney.currency = c}:
+       _) | from < to ->
+        Just . Token AmountOfMoney . withInterval (from, to) $ currencyOnly c
+      _ -> Nothing
+  }
+
+ruleIntervalBetween :: Rule
+ruleIntervalBetween = Rule
+  { name = "between|from <amount-of-money> to|and <amount-of-money>"
+  , pattern =
+    [ regex "intre|de la"
+    , Predicate isSimpleAmountOfMoney
+    , regex "[sș]i|la"
+    , Predicate isSimpleAmountOfMoney
+    ]
+  , prod = \tokens -> case tokens of
+      (_:
+       Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just from,
+                TAmountOfMoney.currency = c1}:
+       _:
+       Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just to,
+                  TAmountOfMoney.currency = c2}:
+       _) | from < to && c1 == c2 ->
+        Just . Token AmountOfMoney . withInterval (from, to) $ currencyOnly c1
+      _ -> Nothing
+  }
+
+ruleIntervalNumeralDash :: Rule
+ruleIntervalNumeralDash = Rule
+  { name = "<numeral> - <amount-of-money>"
+  , pattern =
+    [ Predicate isNatural
+    , regex "-"
+    , Predicate isSimpleAmountOfMoney
+    ]
+  , prod = \tokens -> case tokens of
+      (Token Numeral NumeralData{TNumeral.value = from}:
+       _:
+       Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just to,
+                  TAmountOfMoney.currency = c}:
+       _) | from < to ->
+        Just . Token AmountOfMoney . withInterval (from, to) $ currencyOnly c
+      _ -> Nothing
+  }
+
+ruleIntervalDash :: Rule
+ruleIntervalDash = Rule
+  { name = "<amount-of-money> - <amount-of-money>"
+  , pattern =
+    [ Predicate isSimpleAmountOfMoney
+    , regex "-"
+    , Predicate isSimpleAmountOfMoney
+    ]
+  , prod = \tokens -> case tokens of
+      (Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just from,
+                  TAmountOfMoney.currency = c1}:
+        _:
+        Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just to,
+                  TAmountOfMoney.currency = c2}:
+        _) | from < to && c1 == c2 ->
+          Just . Token AmountOfMoney . withInterval (from, to) $ currencyOnly c1
+      _ -> Nothing
+  }
+
+ruleIntervalMax :: Rule
+ruleIntervalMax = Rule
+  { name = "under/less/lower/no more than <amount-of-money>"
+  , pattern =
+    [ regex "sub|mai (pu[tț]|ieft)in de|nu chiar|nici macar|cel mult"
+    , Predicate isSimpleAmountOfMoney
+    ]
+  , prod = \tokens -> case tokens of
+      (_:
+       Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just to,
+                  TAmountOfMoney.currency = c}:
+       _) -> Just . Token AmountOfMoney . withMax to $ currencyOnly c
+      _ -> Nothing
+  }
+
+ruleIntervalMin :: Rule
+ruleIntervalMin = Rule
+  { name = "over/above/at least/more than <amount-of-money>"
+  , pattern =
+    [ regex "peste|mai (mult|scump) de|cel pu[tț]in"
+    , Predicate isSimpleAmountOfMoney
+    ]
+  , prod = \tokens -> case tokens of
+      (_:
+       Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just to,
+                  TAmountOfMoney.currency = c}:
+       _) -> Just . Token AmountOfMoney . withMin to $ currencyOnly c
+      _ -> Nothing
+  }
+
 rules :: [Rule]
 rules =
   [ ruleUnitAmount
+  , ruleAmountDeUnit
   , ruleAed
   , ruleCent
   , ruleDollar
@@ -222,7 +347,13 @@
   , ruleKwd
   , ruleOtherPounds
   , rulePounds
-  , rulePrecisionAmountofmoney
+  , rulePrecisionAmountOfMoney
   , ruleRiyals
   , ruleRon
+  , ruleIntervalBetween
+  , ruleIntervalBetweenNumeral
+  , ruleIntervalDash
+  , ruleIntervalMax
+  , ruleIntervalMin
+  , ruleIntervalNumeralDash
   ]
diff --git a/Duckling/AmountOfMoney/RU/Rules.hs b/Duckling/AmountOfMoney/RU/Rules.hs
--- a/Duckling/AmountOfMoney/RU/Rules.hs
+++ b/Duckling/AmountOfMoney/RU/Rules.hs
@@ -176,7 +176,7 @@
     [ regex "между|от"
     , Predicate isPositive
     , regex "до|и"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -194,7 +194,7 @@
   { name = "between|from <amount-of-money> to|and <numeral>"
   , pattern =
     [ regex "между|от"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     , regex "до|и"
     , Predicate isNatural
     ]
@@ -214,9 +214,9 @@
   { name = "between|from <amount-of-money> to|and <amount-of-money>"
   , pattern =
     [ regex "между|от"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     , regex "до|и"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -236,7 +236,7 @@
   , pattern =
     [ Predicate isPositive
     , regex "-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token Numeral NumeralData{TNumeral.value = from}:
@@ -252,9 +252,9 @@
 ruleIntervalDash = Rule
   { name = "<amount-of-money> - <amount-of-money>"
   , pattern =
-    [ financeWith TAmountOfMoney.value isJust
+    [ Predicate isSimpleAmountOfMoney
     , regex "-"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just from,
@@ -272,7 +272,7 @@
   { name = "under/less/lower/no more than <amount-of-money>"
   , pattern =
     [ regex "под|((менее|меньше|ниже|не больше|не более)( чем)?)"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
@@ -287,7 +287,7 @@
   { name = "over/above/at least/more than <amount-of-money>"
   , pattern =
     [ regex "сверх|как минимум|((с?выше|больше|более)( чем)?)"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \tokens -> case tokens of
       (_:
diff --git a/Duckling/AmountOfMoney/Rules.hs b/Duckling/AmountOfMoney/Rules.hs
--- a/Duckling/AmountOfMoney/Rules.hs
+++ b/Duckling/AmountOfMoney/Rules.hs
@@ -38,6 +38,7 @@
   , ("bgn", BGN)
   , ("brl", BRL)
   , ("byn", BYN)
+  , ("cad", CAD)
   , ("¢", Cent)
   , ("c", Cent)
   , ("cny", CNY)
@@ -68,6 +69,7 @@
   , ("rs.", INR)
   , ("rupee", INR)
   , ("rupees", INR)
+  , ("jmd", JMD)
   , ("jod", JOD)
   , ("¥", JPY)
   , ("jpy", JPY)
@@ -79,6 +81,7 @@
   , ("myr", MYR)
   , ("rm", MYR)
   , ("nok", NOK)
+  , ("nzd", NZD)
   , ("£", Pound)
   , ("pt", PTS)
   , ("pta", PTS)
@@ -97,6 +100,7 @@
   , ("sgd", SGD)
   , ("shekel", ILS)
   , ("shekels", ILS)
+  , ("ttd", TTD)
   , ("usd", USD)
   , ("us$", USD)
   , ("vnd", VND)
@@ -106,7 +110,7 @@
 ruleCurrencies = Rule
   { name = "currencies"
   , pattern =
-    [ regex "(aed|aud|bgn|brl|byn|¢|c|cny|\\$|dinars?|dollars?|egp|(e|€)uro?s?|€|gbp|hrk|idr|ils|inr|iqd|jod|¥|jpy|krw|kwd|lbp|mad|myr|rm|nok|£|pta?s?|qar|₽|rs\\.?|riy?als?|ron|rub|rupees?|sar|sek|sgb|shekels?|us(d|\\$)|vnd|yen|yuan)"
+    [ regex "(aed|aud|bgn|brl|byn|¢|c|cad|cny|\\$|dinars?|dollars?|egp|(e|€)uro?s?|€|gbp|hrk|idr|ils|inr|iqd|jmd|jod|¥|jpy|krw|kwd|lbp|mad|myr|rm|nok|nzd|£|pta?s?|qar|₽|rs\\.?|riy?als?|ron|rub|rupees?|sar|sek|sgb|shekels?|ttd|us(d|\\$)|vnd|yen|yuan)"
     ]
   , prod = \tokens -> case tokens of
       (Token RegexMatch (GroupMatch (match:_)):_) -> do
diff --git a/Duckling/AmountOfMoney/Types.hs b/Duckling/AmountOfMoney/Types.hs
--- a/Duckling/AmountOfMoney/Types.hs
+++ b/Duckling/AmountOfMoney/Types.hs
@@ -41,6 +41,7 @@
   | BGN
   | BRL
   | BYN
+  | CAD
   | CNY
   | EGP
   | EUR
@@ -50,6 +51,7 @@
   | ILS
   | INR
   | IQD
+  | JMD
   | JOD
   | JPY
   | KRW
@@ -58,6 +60,7 @@
   | MAD
   | MYR
   | NOK
+  | NZD
   | PTS
   | QAR
   | RON
@@ -65,6 +68,7 @@
   | SAR
   | SEK
   | SGD
+  | TTD
   | USD
   | VND
   deriving (Eq, Generic, Hashable, Show, Ord, NFData)
@@ -83,6 +87,7 @@
   toJSON BGN     = "BGN"
   toJSON BRL     = "BRL"
   toJSON BYN     = "BYN"
+  toJSON CAD     = "CAD"
   toJSON CNY     = "CNY"
   toJSON EGP     = "EGP"
   toJSON EUR     = "EUR"
@@ -92,6 +97,7 @@
   toJSON ILS     = "ILS"
   toJSON IQD     = "IQD"
   toJSON INR     = "INR"
+  toJSON JMD     = "JMD"
   toJSON JOD     = "JOD"
   toJSON JPY     = "JPY"
   toJSON KRW     = "KRW"
@@ -100,6 +106,7 @@
   toJSON MAD     = "MAD"
   toJSON MYR     = "MYR"
   toJSON NOK     = "NOK"
+  toJSON NZD     = "NZD"
   toJSON PTS     = "PTS"
   toJSON QAR     = "QAR"
   toJSON RON     = "RON"
@@ -107,6 +114,7 @@
   toJSON SAR     = "SAR"
   toJSON SEK     = "SEK"
   toJSON SGD     = "SGD"
+  toJSON TTD     = "TTD"
   toJSON USD     = "USD"
   toJSON VND     = "VND"
 
diff --git a/Duckling/AmountOfMoney/ZH/Rules.hs b/Duckling/AmountOfMoney/ZH/Rules.hs
--- a/Duckling/AmountOfMoney/ZH/Rules.hs
+++ b/Duckling/AmountOfMoney/ZH/Rules.hs
@@ -185,7 +185,7 @@
   , pattern =
     [ Predicate isPositive
     , regex "-|~|到"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \case
       (Token Numeral NumeralData{TNumeral.value = from}:
@@ -201,9 +201,9 @@
 ruleIntervalDash = Rule
   { name = "<amount-of-money> - <amount-of-money>"
   , pattern =
-    [ financeWith TAmountOfMoney.value isJust
+    [ Predicate isSimpleAmountOfMoney
     , regex "-|~|到"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \case
       (Token AmountOfMoney AmountOfMoneyData{TAmountOfMoney.value = Just from,
@@ -221,7 +221,7 @@
   { name = "under/less/lower/no more than <amount-of-money> (最多|至少|最少)"
   , pattern =
     [ regex "(最多|至少|最少)"
-    , financeWith TAmountOfMoney.value isJust
+    , Predicate isSimpleAmountOfMoney
     ]
   , prod = \case
       (Token RegexMatch (GroupMatch (match:_)):
@@ -239,7 +239,7 @@
 ruleIntervalBound2 = Rule
   { name = "under/less/lower/no more than <amount-of-money> (以下|以上)"
   , pattern =
-    [ financeWith TAmountOfMoney.value isJust
+    [ Predicate isSimpleAmountOfMoney
     , regex "(以下|以上)"
     ]
   , prod = \case
diff --git a/Duckling/Dimensions/HI.hs b/Duckling/Dimensions/HI.hs
--- a/Duckling/Dimensions/HI.hs
+++ b/Duckling/Dimensions/HI.hs
@@ -14,6 +14,7 @@
 
 allDimensions :: [Some Dimension]
 allDimensions =
-  [ This Numeral
+  [ This Duration
+  , This Numeral
   , This Ordinal
   ]
diff --git a/Duckling/Dimensions/ZH.hs b/Duckling/Dimensions/ZH.hs
--- a/Duckling/Dimensions/ZH.hs
+++ b/Duckling/Dimensions/ZH.hs
@@ -18,6 +18,7 @@
   , This Duration
   , This Numeral
   , This Ordinal
+  , This Quantity
   , This Temperature
   , This Time
   ]
diff --git a/Duckling/Distance/EN/Corpus.hs b/Duckling/Distance/EN/Corpus.hs
--- a/Duckling/Distance/EN/Corpus.hs
+++ b/Duckling/Distance/EN/Corpus.hs
@@ -69,4 +69,9 @@
              , "over 5\""
              , "above 5 in"
              ]
+  , examples (between Millimetre (5, 6))
+             [ "between 5 and six millimeters"
+             , "between 5 and six millimetres"
+             , "5-6 mm"
+             ]
   ]
diff --git a/Duckling/Distance/EN/Rules.hs b/Duckling/Distance/EN/Rules.hs
--- a/Duckling/Distance/EN/Rules.hs
+++ b/Duckling/Distance/EN/Rules.hs
@@ -60,14 +60,18 @@
   }
 
 distances :: [(Text, String, TDistance.Unit)]
-distances = [ ("km", "k(ilo)?m?(eter)?s?", TDistance.Kilometre)
+distances = [ -- Imperial
+              ("miles", "mi(le(s)?)?", TDistance.Mile)
+            , ("yard", "y(ar)?ds?", TDistance.Yard)
             , ("feet", "('|f(oo|ee)?ts?)", TDistance.Foot)
             , ("inch", "(\"|''|in(ch(es)?)?)", TDistance.Inch)
-            , ("yard", "y(ar)?ds?", TDistance.Yard)
-            , ("meters", "meters?", TDistance.Metre)
-            , ("centimeters", "cm|centimeters?", TDistance.Centimetre)
-            , ("miles", "mi(le(s)?)?", TDistance.Mile)
-            , ("m (ambiguous miles or meters)", "m", TDistance.M)
+              -- Metric
+            , ("km", "k(ilo)?m?(et(er|re))?s?", TDistance.Kilometre)
+            , ("meters", "met(er|re)s?", TDistance.Metre)
+            , ("centimeters", "cm|centimet(er|re)s?", TDistance.Centimetre)
+            , ("millimeters", "mm|millimet(er|re)s?", TDistance.Millimetre)
+              -- Ambiguous
+            , ("m (miles or meters)", "m", TDistance.M)
             ]
 
 rulePrecision :: Rule
diff --git a/Duckling/Distance/RO/Corpus.hs b/Duckling/Distance/RO/Corpus.hs
--- a/Duckling/Distance/RO/Corpus.hs
+++ b/Duckling/Distance/RO/Corpus.hs
@@ -44,4 +44,7 @@
   , examples (simple Foot 10)
              [ "zece picioare"
              ]
+  , examples (simple Foot 20)
+             [ "20 de picioare"
+             ]
   ]
diff --git a/Duckling/Distance/RO/Rules.hs b/Duckling/Distance/RO/Rules.hs
--- a/Duckling/Distance/RO/Rules.hs
+++ b/Duckling/Distance/RO/Rules.hs
@@ -7,117 +7,87 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Distance.RO.Rules
-  ( rules ) where
+  ( rules
+  ) where
 
+import Data.HashMap.Strict (HashMap)
 import Data.String
+import Data.Text (Text)
 import Prelude
+import qualified Data.HashMap.Strict as HashMap
+import qualified Data.Text as Text
 
 import Duckling.Dimensions.Types
 import Duckling.Distance.Helpers
-import qualified Duckling.Distance.Types as TDistance
+import Duckling.Regex.Types
 import Duckling.Types
-
-ruleLatentDistKm :: Rule
-ruleLatentDistKm = Rule
-  { name = "<latent dist> km"
-  , pattern =
-    [ dimension Distance
-    , regex "(kilometr[iu]|km)"
-    ]
-  , prod = \tokens -> case tokens of
-      (Token Distance dd:_) ->
-        Just . Token Distance $ withUnit TDistance.Kilometre dd
-      _ -> Nothing
-  }
-
-ruleLatentDistPicioare :: Rule
-ruleLatentDistPicioare = Rule
-  { name = "<latent dist> picioare"
-  , pattern =
-    [ dimension Distance
-    , regex "(picio(are|r))"
-    ]
-  , prod = \tokens -> case tokens of
-      (Token Distance dd:_) ->
-        Just . Token Distance $ withUnit TDistance.Foot dd
-      _ -> Nothing
-  }
-
-ruleLatentDistInch :: Rule
-ruleLatentDistInch = Rule
-  { name = "<latent dist> inch"
-  , pattern =
-    [ dimension Distance
-    , regex "(inch|inci|inchi)"
-    ]
-  , prod = \tokens -> case tokens of
-      (Token Distance dd:_) ->
-        Just . Token Distance $ withUnit TDistance.Inch dd
-      _ -> Nothing
-  }
-
-ruleLatentDistYarzi :: Rule
-ruleLatentDistYarzi = Rule
-  { name = "<latent dist> yarzi"
-  , pattern =
-    [ dimension Distance
-    , regex "y(ar)?(zi|d)?"
-    ]
-  , prod = \tokens -> case tokens of
-      (Token Distance dd:_) ->
-        Just . Token Distance $ withUnit TDistance.Yard dd
-      _ -> Nothing
-  }
+import qualified Duckling.Distance.Types as TDistance
 
-ruleDistMeters :: Rule
-ruleDistMeters = Rule
-  { name = "<dist> meters"
-  , pattern =
-    [ dimension Distance
-    , regex "(metr[ui]|m)"
-    ]
-  , prod = \tokens -> case tokens of
-      (Token Distance dd:_) ->
-        Just . Token Distance $ withUnit TDistance.Metre dd
-      _ -> Nothing
-  }
+unitMap :: HashMap Text TDistance.Unit
+unitMap = HashMap.fromList
+  [ ( "cm", TDistance.Centimetre )
+  , ( "centimetri", TDistance.Centimetre )
+  , ( "centimetru", TDistance.Centimetre )
+  , ( "picior", TDistance.Foot )
+  , ( "picioare", TDistance.Foot )
+  , ( "inch", TDistance.Inch )
+  , ( "inchi", TDistance.Inch )
+  , ( "inci", TDistance.Inch )
+  , ( "km", TDistance.Kilometre )
+  , ( "kilometri", TDistance.Kilometre )
+  , ( "kilometru", TDistance.Kilometre )
+  , ( "m", TDistance.Metre )
+  , ( "metri", TDistance.Metre )
+  , ( "metru", TDistance.Metre )
+  , ( "mila", TDistance.Mile )
+  , ( "milă", TDistance.Mile )
+  , ( "mile", TDistance.Mile )
+  , ( "y", TDistance.Yard )
+  , ( "yar", TDistance.Yard )
+  , ( "yard", TDistance.Yard )
+  , ( "yarzi", TDistance.Yard )
+  , ( "yd", TDistance.Yard )
+  , ( "yzi", TDistance.Yard )
+  ]
 
-ruleDistCentimeters :: Rule
-ruleDistCentimeters = Rule
-  { name = "<dist> centimeters"
+ruleLatentDistUnit :: Rule
+ruleLatentDistUnit = Rule
+  { name = "<latent dist> foot/inch/yard/meter/kilometer/centimeter"
   , pattern =
     [ dimension Distance
-    , regex "(centimetr[iu]|cm)"
+    , regex "(inc(hi?|i)|(centi|kilo)?metr[iu]|mil[eaă]|[ck]?m|picio(are|r)|y(ar)?(zi|d)?)"
     ]
-  , prod = \tokens -> case tokens of
-      (Token Distance dd:_) ->
-        Just . Token Distance $ withUnit TDistance.Centimetre dd
+  , prod = \case
+      (Token Distance dd:
+       Token RegexMatch (GroupMatch (match:_)):
+       _) -> do
+         x <- HashMap.lookup (Text.toLower match) unitMap
+         Just . Token Distance $ withUnit x dd
       _ -> Nothing
   }
 
-ruleDistMiles :: Rule
-ruleDistMiles = Rule
-  { name = "<dist> miles"
+ruleLatentDistDeUnit :: Rule
+ruleLatentDistDeUnit = Rule
+  { name = "<latent dist> foot/inch/yard/meter/kilometer/centimeter"
   , pattern =
     [ dimension Distance
-    , regex "mil(e|a|ă)"
+    , regex "de (inc(hi?|i)|(centi|kilo)?metr[iu]|mil[eaă]|[ck]?m|picio(are|r)|y(ar)?(zi|d)?)"
     ]
-  , prod = \tokens -> case tokens of
-      (Token Distance dd:_) ->
-        Just . Token Distance $ withUnit TDistance.Mile dd
+  , prod = \case
+      (Token Distance dd:
+       Token RegexMatch (GroupMatch (match:_)):
+       _) -> do
+         x <- HashMap.lookup (Text.toLower match) unitMap
+         Just . Token Distance $ withUnit x dd
       _ -> Nothing
   }
 
 rules :: [Rule]
 rules =
-  [ ruleDistCentimeters
-  , ruleDistMeters
-  , ruleDistMiles
-  , ruleLatentDistInch
-  , ruleLatentDistKm
-  , ruleLatentDistPicioare
-  , ruleLatentDistYarzi
+  [ ruleLatentDistUnit
+  , ruleLatentDistDeUnit
   ]
diff --git a/Duckling/Distance/Types.hs b/Duckling/Distance/Types.hs
--- a/Duckling/Distance/Types.hs
+++ b/Duckling/Distance/Types.hs
@@ -27,10 +27,10 @@
 import Duckling.Resolve (Resolve(..))
 
 data Unit
-  = Foot
-  | Centimetre
-  | Kilometre
+  = Centimetre
+  | Foot
   | Inch
+  | Kilometre
   | M -- ambiguous between Mile and Metre
   | Metre
   | Mile
diff --git a/Duckling/Duration/EN/Corpus.hs b/Duckling/Duration/EN/Corpus.hs
--- a/Duckling/Duration/EN/Corpus.hs
+++ b/Duckling/Duration/EN/Corpus.hs
@@ -62,6 +62,26 @@
   , examples (DurationData 2 Year)
              [ "2 years"
              ]
+  , examples (DurationData 30 Minute)
+             [ "half an hour"
+             , "half hour"
+             , "1/2 hour"
+             , "1/2h"
+             , "1/2 h"
+             ]
+  , examples (DurationData 12 Hour)
+             [ "half a day"
+             , "half day"
+             , "1/2 day"
+             ]
+  , examples (DurationData 90 Minute)
+             [ "an hour and a half"
+             , "one hour and half"
+             ]
+  , examples (DurationData 45 Day)
+             [ "a month and a half"
+             , "one month and half"
+             ]
   , examples (DurationData 27 Month)
              [ "2 years and 3 months"
              , "2 years, 3 months"
diff --git a/Duckling/Duration/EN/Rules.hs b/Duckling/Duration/EN/Rules.hs
--- a/Duckling/Duration/EN/Rules.hs
+++ b/Duckling/Duration/EN/Rules.hs
@@ -40,11 +40,11 @@
   , prod = \_ -> Just . Token Duration $ duration TG.Minute 15
   }
 
-ruleDurationHalfAnHour :: Rule
-ruleDurationHalfAnHour = Rule
-  { name = "half an hour"
+ruleDurationHalfAnHourAbbrev :: Rule
+ruleDurationHalfAnHourAbbrev = Rule
+  { name = "half an hour (abbrev)."
   , pattern =
-    [ regex "(1/2\\s?h(our)?|half an? hour)"
+    [ regex "1/2\\s?h"
     ]
   , prod = \_ -> Just . Token Duration $ duration TG.Minute 30
   }
@@ -138,6 +138,31 @@
       _ -> Nothing
   }
 
+ruleDurationHalfATimeGrain :: Rule
+ruleDurationHalfATimeGrain = Rule
+  { name = "half a <time-grain>"
+  , pattern =
+    [ regex "(1/2|half)( an?)?"
+    , dimension TimeGrain
+    ]
+  , prod = \case
+      (_:Token TimeGrain grain:_) -> Token Duration <$> timesOneAndAHalf grain 0
+      _ -> Nothing
+  }
+
+ruleDurationOneGrainAndHalf :: Rule
+ruleDurationOneGrainAndHalf = Rule
+  { name = "a <unit-of-duration> and a half"
+  , pattern =
+    [ regex "an?|one"
+    , dimension TimeGrain
+    , regex "and (a )?half"
+    ]
+  , prod = \case
+      (_:Token TimeGrain grain:_) -> Token Duration <$> timesOneAndAHalf grain 1
+      _ -> Nothing
+  }
+
 ruleDurationPrecision :: Rule
 ruleDurationPrecision = Rule
   { name = "about|exactly <duration>"
@@ -171,13 +196,15 @@
 rules :: [Rule]
 rules =
   [ ruleDurationQuarterOfAnHour
-  , ruleDurationHalfAnHour
+  , ruleDurationHalfAnHourAbbrev
   , ruleDurationThreeQuartersOfAnHour
   , ruleDurationFortnight
   , ruleDurationNumeralMore
   , ruleDurationDotNumeralHours
   , ruleDurationAndHalfHour
   , ruleDurationA
+  , ruleDurationHalfATimeGrain
+  , ruleDurationOneGrainAndHalf
   , ruleDurationPrecision
   , ruleNumeralQuotes
   , ruleCompositeDuration
diff --git a/Duckling/Duration/HI/Corpus.hs b/Duckling/Duration/HI/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/Duration/HI/Corpus.hs
@@ -0,0 +1,49 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.Duration.HI.Corpus
+  ( corpus
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.Duration.Types
+import Duckling.Locale
+import Duckling.Resolve
+import Duckling.Testing.Types
+import Duckling.TimeGrain.Types (Grain(..))
+
+corpus :: Corpus
+corpus = (testContext {locale = makeLocale HI Nothing}, testOptions, allExamples)
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (DurationData 15 Minute)
+             [ "पंद्रह मिनट"
+             , "लगभग पंद्रह मिनट"
+             ]
+  , examples (DurationData 30 Minute)
+             [ "आधा घंटा"
+             ]
+  , examples (DurationData 1 Day)
+             [ "दिवस"
+             , "एक दिन"
+             ]
+  , examples (DurationData 14 Day)
+             [ "पखवाड़ा"
+             , "एक पखवाड़ा"
+             ]
+  , examples (DurationData 1 Year)
+             [ "एक साल"
+             , "केवल एक वर्ष"
+             , "लगभग एक साल"
+             ]
+  ]
diff --git a/Duckling/Duration/HI/Rules.hs b/Duckling/Duration/HI/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/Duration/HI/Rules.hs
@@ -0,0 +1,114 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.Duration.HI.Rules
+  ( rules
+  ) where
+
+import Control.Monad (join)
+import Data.String
+import Data.HashMap.Strict (HashMap)
+import Data.Text (Text)
+import Prelude
+import qualified Data.HashMap.Strict as HashMap
+import qualified Data.Text as Text
+
+import Duckling.Dimensions.Types
+import Duckling.Duration.Helpers
+import Duckling.Numeral.Helpers (parseInteger)
+import Duckling.Numeral.Types (NumeralData (..))
+import Duckling.Regex.Types
+import Duckling.Types
+import qualified Duckling.Numeral.Types as TNumeral
+import qualified Duckling.TimeGrain.Types as TG
+
+avadhiMap :: HashMap Text TG.Grain
+avadhiMap = HashMap.fromList
+  [ ("मिनट" , TG.Minute)
+  , ("घंटा" , TG.Hour)
+  , ("दिवस" , TG.Day)
+  , ("दिन"  , TG.Day)
+  , ("महीना", TG.Month)
+  , ("वर्ष" , TG.Year)
+  , ("साल"  , TG.Year)
+  ]
+
+ruleAadha :: Rule
+ruleAadha = Rule
+  { name = "half of a duration"
+  , pattern =
+    [ regex "आधा ((साल|वर्ष)|(महीना)|(दिन|दिवस)|(घंटा)|(मिनट))"
+    ]
+  , prod = \tokens -> case tokens of
+      (Token RegexMatch (GroupMatch (x:_)):_) -> do
+        grain <- HashMap.lookup (Text.toLower x) avadhiMap
+        Token Duration <$> timesOneAndAHalf grain 0
+      _ -> Nothing
+  }
+
+ruleDurationPandrahMinat :: Rule
+ruleDurationPandrahMinat = Rule
+  { name = "quarter of an hour"
+  , pattern =
+    [ regex "पंद्रह मिनट"
+    ]
+  , prod = \_ -> Just . Token Duration $ duration TG.Minute 15
+  }
+
+ruleDurationPakhwaada :: Rule
+ruleDurationPakhwaada = Rule
+  { name = "fortnight"
+  , pattern =
+    [ regex "((एक पखवाड़ा)|(पखवाड़ा))"
+    ]
+  , prod = \_ -> Just . Token Duration $ duration TG.Day 14
+  }
+
+ruleDurationDin :: Rule
+ruleDurationDin = Rule
+  { name = "a day"
+  , pattern =
+    [ regex "((एक दिन)|(एक दिवस)|(दिन|दिवस))"
+    ]
+  , prod = \_ -> Just . Token Duration $ duration TG.Day 1
+  }
+
+ruleDurationEkSaal :: Rule
+ruleDurationEkSaal = Rule
+  { name = "one year"
+  , pattern =
+    [ regex "एक (साल|वर्ष)"
+    ]
+  , prod = \_ -> Just . Token Duration $ duration TG.Year 1
+  }
+
+ruleDurationPreciseImprecise :: Rule
+ruleDurationPreciseImprecise = Rule
+  { name = "about|exactly <duration>"
+  , pattern =
+    [ regex "(लगभग|बिल्कुल|केवल)"
+    , dimension Duration
+    ]
+    , prod = \tokens -> case tokens of
+        (_:token:_) -> Just token
+        _ -> Nothing
+  }
+
+
+rules :: [Rule]
+rules =
+  [  ruleDurationPandrahMinat
+  ,  ruleDurationPakhwaada
+  ,  ruleDurationDin
+  ,  ruleAadha
+  ,  ruleDurationEkSaal
+  ,  ruleDurationPreciseImprecise
+  ]
diff --git a/Duckling/Duration/RO/Corpus.hs b/Duckling/Duration/RO/Corpus.hs
--- a/Duckling/Duration/RO/Corpus.hs
+++ b/Duckling/Duration/RO/Corpus.hs
@@ -38,6 +38,7 @@
   , examples (DurationData 45 Minute)
              [ "trei sferturi de oră"
              , "45min"
+             , "45 de minute"
              ]
   , examples (DurationData 12 Week)
              [ "doișpe saptamanile"
diff --git a/Duckling/Duration/RO/Rules.hs b/Duckling/Duration/RO/Rules.hs
--- a/Duckling/Duration/RO/Rules.hs
+++ b/Duckling/Duration/RO/Rules.hs
@@ -7,18 +7,22 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Duration.RO.Rules
-  ( rules ) where
+  ( rules
+  ) where
 
-import Prelude
 import Data.String
+import Prelude
 
 import Duckling.Dimensions.Types
 import Duckling.Duration.Helpers
-import qualified Duckling.TimeGrain.Types as TG
+import Duckling.Numeral.Helpers (numberWith)
 import Duckling.Types
+import qualified Duckling.Numeral.Types as TNumeral
+import qualified Duckling.TimeGrain.Types as TG
 
 ruleQuarterOfAnHour :: Rule
 ruleQuarterOfAnHour = Rule
@@ -54,7 +58,7 @@
     [ regex "o|un"
     , dimension TimeGrain
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (_:Token TimeGrain grain:_) -> Just . Token Duration $ duration grain 1
       _ -> Nothing
   }
@@ -66,11 +70,27 @@
     [ regex "(exact|aproximativ|(i|î)n jur de)"
     , dimension Duration
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (_:token:_) -> Just token
       _ -> Nothing
   }
 
+ruleIntegerDeUnitofduration :: Rule
+ruleIntegerDeUnitofduration = Rule
+  { name = "<integer> <unit-of-duration>"
+  , pattern =
+    [ numberWith TNumeral.value (>= 20)
+    , regex "de"
+    , dimension TimeGrain
+    ]
+  , prod = \case
+      (Token Numeral TNumeral.NumeralData{TNumeral.value = v}:
+       _:
+       Token TimeGrain grain:
+       _) -> Just . Token Duration . duration grain $ floor v
+      _ -> Nothing
+  }
+
 rules :: [Rule]
 rules =
   [ ruleExactInJurDeDuration
@@ -78,4 +98,5 @@
   , ruleOUnitofduration
   , ruleQuarterOfAnHour
   , ruleTreiSferturiDeOra
+  , ruleIntegerDeUnitofduration
   ]
diff --git a/Duckling/Locale.hs b/Duckling/Locale.hs
--- a/Duckling/Locale.hs
+++ b/Duckling/Locale.hs
@@ -13,7 +13,7 @@
 module Duckling.Locale
   ( Lang(..)
   , Locale(..)
-  , Region(..)
+  , Region(AU,BE,BZ,CA,CN,GB,HK,IE,IN,JM,MO,NZ,PH,TT,TW,US,ZA)
   , allLocales
   , makeLocale
   ) where
@@ -28,6 +28,9 @@
 import qualified Data.HashSet as HashSet
 import qualified TextShow as TS
 
+import Duckling.Region hiding (NL)
+import qualified Duckling.Region as R (Region(NL))
+
 -- | ISO 639-1 Language.
 -- See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
 data Lang
@@ -70,30 +73,6 @@
 instance TextShow Lang where
   showb = TS.fromString . show
 
--- | ISO 3166-1 alpha-2 Country code (includes regions and territories).
--- See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
-data Region
-  = AU
-  | BZ
-  | CA
-  | CN
-  | GB
-  | HK
-  | IE
-  | IN
-  | JM
-  | MO
-  | NZ
-  | PH
-  | TT
-  | TW
-  | US
-  | ZA
-  deriving (Bounded, Enum, Eq, Generic, Hashable, Ord, Read, Show)
-
-instance TextShow Region where
-  showb = TS.fromString . show
-
 data Locale = Locale Lang (Maybe Region)
   deriving (Eq, Generic, Hashable, Ord)
 
@@ -115,5 +94,6 @@
 allLocales :: HashMap Lang (HashSet Region)
 allLocales = HashMap.fromList
   [ (EN, HashSet.fromList [AU, BZ, CA, GB, IN, IE, JM, NZ, PH, ZA, TT, US])
+  , (NL, HashSet.fromList [BE, R.NL])
   , (ZH, HashSet.fromList [CN, HK, MO, TW])
   ]
diff --git a/Duckling/Numeral/AR/Corpus.hs b/Duckling/Numeral/AR/Corpus.hs
--- a/Duckling/Numeral/AR/Corpus.hs
+++ b/Duckling/Numeral/AR/Corpus.hs
@@ -140,6 +140,11 @@
              [ "0.77"
              , ".77"
              ]
+  , examples (NumeralValue 2000)
+             [ "2000"
+             , "الفان"
+             , "الفين"
+             ]
   , examples (NumeralValue 100000)
              [ "100000"
              , "100 الف"
@@ -148,9 +153,20 @@
              [ "10000"
              , "10 آلاف"
              ]
+  , examples (NumeralValue 1000000)
+             [ "1000000"
+             , "مليون"
+             ]
+  , examples (NumeralValue 2000000)
+             [ "2000000"
+             , "2 مليون"
+             , "مليونان"
+             , "مليونين"
+             ]
   , examples (NumeralValue 3000000)
              [ "3 ملايين"
              , "3000000"
+             , "3 مليون"
              ]
   , examples (NumeralValue (-1200000))
              [ "-1200000"
diff --git a/Duckling/Numeral/AR/Rules.hs b/Duckling/Numeral/AR/Rules.hs
--- a/Duckling/Numeral/AR/Rules.hs
+++ b/Duckling/Numeral/AR/Rules.hs
@@ -173,7 +173,7 @@
 rulePowersOfTen = Rule
   { name = "powers of tens"
   , pattern =
-    [ regex "(ما?[ئي][ةه]|مئات|[أا]لف|ال??|[آا]لاف|ملايين)"
+    [ regex "(ما?[ئي][ةه]|مئت(ان|ين)|مئات|[أا]لف(ان|ين)?|[آا]لاف|ملايين|مليون(ان|ين)?)"
     ]
   , prod = \tokens -> case tokens of
       (Token RegexMatch (GroupMatch (match:_)):_) -> case Text.toLower match of
@@ -185,18 +185,28 @@
           double 1e2 >>= withGrain 2 >>= withMultipliable
         "مائه" ->
           double 1e2 >>= withGrain 2 >>= withMultipliable
+        "مئتين" ->
+          double 2e2 >>= withGrain 2
+        "مئتان" ->
+          double 2e2 >>= withGrain 2
         "مئات" ->
           double 1e2 >>= withGrain 2 >>= withMultipliable
         "ألف" -> double 1e3 >>= withGrain 3 >>= withMultipliable
         "الف" -> double 1e3 >>= withGrain 3 >>= withMultipliable
+        "الفين" -> double 2e3 >>= withGrain 3
+        "الفان" -> double 2e3 >>= withGrain 3
         "الاف" ->
           double 1e3 >>= withGrain 3 >>= withMultipliable
         "آلاف" ->
           double 1e3 >>= withGrain 3 >>= withMultipliable
-        "ملايي" ->
-          double 1e6 >>= withGrain 6 >>= withMultipliable
         "ملايين" ->
           double 1e6 >>= withGrain 6 >>= withMultipliable
+        "مليون" ->
+          double 1e6 >>= withGrain 6 >>= withMultipliable
+        "مليونين" ->
+          double 2e6 >>= withGrain 6
+        "مليونان" ->
+          double 2e6 >>= withGrain 6
         _ -> Nothing
       _ -> Nothing
   }
diff --git a/Duckling/Numeral/RO/Corpus.hs b/Duckling/Numeral/RO/Corpus.hs
--- a/Duckling/Numeral/RO/Corpus.hs
+++ b/Duckling/Numeral/RO/Corpus.hs
@@ -9,10 +9,11 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Numeral.RO.Corpus
-  ( corpus ) where
+  ( corpus
+  ) where
 
-import Prelude
 import Data.String
+import Prelude
 
 import Duckling.Locale
 import Duckling.Numeral.Types
diff --git a/Duckling/Numeral/RO/Rules.hs b/Duckling/Numeral/RO/Rules.hs
--- a/Duckling/Numeral/RO/Rules.hs
+++ b/Duckling/Numeral/RO/Rules.hs
@@ -40,20 +40,6 @@
       _ -> Nothing
   }
 
-ruleSpecialCompositionForMissingHundredsLikeInOneTwentyTwo :: Rule
-ruleSpecialCompositionForMissingHundredsLikeInOneTwentyTwo = Rule
-  { name = "special composition for missing hundreds like in one twenty two"
-  , pattern =
-    [ numberBetween 1 10
-    , numberBetween 11 100
-    ]
-  , prod = \tokens -> case tokens of
-      (Token Numeral NumeralData{TNumeral.value = hundreds}:
-       Token Numeral NumeralData{TNumeral.value = rest}:
-       _) -> double $ hundreds * 100 + rest
-      _ -> Nothing
-  }
-
 ruleDecimalWithThousandsSeparator :: Rule
 ruleDecimalWithThousandsSeparator = Rule
   { name = "decimal with thousands separator"
@@ -297,5 +283,4 @@
   , ruleNumeralsPrefixWithOrMinus
   , ruleNumeralsSuffixesWithNegativ
   , rulePowersOfTen
-  , ruleSpecialCompositionForMissingHundredsLikeInOneTwentyTwo
   ]
diff --git a/Duckling/Quantity/RO/Corpus.hs b/Duckling/Quantity/RO/Corpus.hs
--- a/Duckling/Quantity/RO/Corpus.hs
+++ b/Duckling/Quantity/RO/Corpus.hs
@@ -9,10 +9,11 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Quantity.RO.Corpus
-  ( corpus ) where
+  ( corpus
+  ) where
 
-import Prelude
 import Data.String
+import Prelude
 
 import Duckling.Locale
 import Duckling.Quantity.Types
@@ -32,5 +33,9 @@
              ]
   , examples (simple Pound 500 (Just "zahăr"))
              [ "cinci sute livre de zahăr"
+             , "cinci sute de livre de zahăr"
+             ]
+  , examples (simple Pound 21 (Just "mamaliga"))
+             [ "douăzeci și unu de livre de mamaliga"
              ]
   ]
diff --git a/Duckling/Quantity/RO/Rules.hs b/Duckling/Quantity/RO/Rules.hs
--- a/Duckling/Quantity/RO/Rules.hs
+++ b/Duckling/Quantity/RO/Rules.hs
@@ -7,30 +7,33 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Quantity.RO.Rules
-  ( rules ) where
+  ( rules
+  ) where
 
-import Prelude
 import Data.String
+import Prelude
 
 import Duckling.Dimensions.Types
-import Duckling.Numeral.Types (NumeralData (..))
-import qualified Duckling.Numeral.Types as TNumeral
+import Duckling.Numeral.Helpers (isPositive)
+import Duckling.Numeral.Types (NumeralData(..))
 import Duckling.Quantity.Helpers
-import qualified Duckling.Quantity.Types as TQuantity
 import Duckling.Regex.Types
 import Duckling.Types
+import qualified Duckling.Numeral.Types as TNumeral
+import qualified Duckling.Quantity.Types as TQuantity
 
 ruleNumeralUnits :: Rule
 ruleNumeralUnits = Rule
   { name = "<number> <units>"
   , pattern =
-    [ dimension Numeral
-    , regex "livr(a|e|ă)"
+    [ Predicate isPositive
+    , regex "(de )?livr(a|e|ă)"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Numeral NumeralData {TNumeral.value = v}:_) ->
         Just . Token Quantity $ quantity TQuantity.Pound v
       _ -> Nothing
@@ -41,12 +44,12 @@
   { name = "<quantity> of product"
   , pattern =
     [ dimension Quantity
-    , regex "de (carne|can(a|ă)|zah(a|ă)r)"
+    , regex "de (carne|can[aă]|zah[aă]r|mamaliga)"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Quantity qd:
-       Token RegexMatch (GroupMatch (match:_)):
-       _) -> Just . Token Quantity $ withProduct match qd
+       Token RegexMatch (GroupMatch (product:_)):
+       _) -> Just . Token Quantity $ withProduct product qd
       _ -> Nothing
   }
 
diff --git a/Duckling/Quantity/ZH/Corpus.hs b/Duckling/Quantity/ZH/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/Quantity/ZH/Corpus.hs
@@ -0,0 +1,64 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.Quantity.ZH.Corpus
+  ( corpus
+  ) where
+
+import Data.String
+import Prelude
+
+import Duckling.Locale
+import Duckling.Quantity.Types
+import Duckling.Resolve
+import Duckling.Testing.Types
+
+corpus :: Corpus
+corpus = (testContext {locale = makeLocale ZH Nothing},
+  testOptions, allExamples)
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (simple Gram 2 Nothing)
+             [ "2克"
+             , "二克"
+             , "两克"
+             , "2g"
+             , "2.0g"
+             ]
+  , examples (simple Gram 1500 Nothing)
+             [ "3斤"
+             , "三斤"
+             , "1.5公斤"
+             , "1.5千克"
+             , "1.5kg"
+             , "1500g"
+             ]
+  , examples (simple Gram 0.035 Nothing)
+             [ "35毫克"
+             , "三十五毫克"
+             , "35mg"
+             ]
+  , examples (simple Gram 1750 Nothing)
+             [ "三斤半"
+             , "3斤半"
+             , "3斤5两"
+             , "1.75千克"
+             ]
+  , examples (simple Gram 475 Nothing)
+             [ "9两半"
+             , "九兩半"
+             ]
+  , examples (simple Gram 3400 Nothing)
+             [ "六斤八两"
+             , "六斤8兩"
+             , "3.4公斤"
+             ]
+  ]
diff --git a/Duckling/Quantity/ZH/Rules.hs b/Duckling/Quantity/ZH/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/Quantity/ZH/Rules.hs
@@ -0,0 +1,122 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.Quantity.ZH.Rules
+  ( rules
+  ) where
+
+import Data.HashMap.Strict (HashMap)
+import Data.String
+import Data.Text (Text)
+import Prelude
+import qualified Data.HashMap.Strict as HashMap
+import qualified Data.Text as Text
+
+import Duckling.Dimensions.Types
+import Duckling.Numeral.Helpers
+import Duckling.Quantity.Helpers
+import Duckling.Regex.Types
+import Duckling.Types
+import qualified Duckling.Numeral.Types as TNumeral
+import qualified Duckling.Quantity.Types as TQuantity
+
+quantities :: [(Text, String, TQuantity.Unit)]
+quantities =
+  [ ("<quantity> grams", "(千克|公斤|斤|两|兩|克|毫克|kg|g|mg)", TQuantity.Gram)
+  ]
+
+opsMap :: HashMap Text (Double -> Double)
+opsMap = HashMap.fromList
+  [ ( "千克" , (* 1000))
+  , ( "公斤",  (* 1000))
+  , ( "kg",   (* 1000))
+  , ( "斤",    (* 500))
+  , ( "两",    (* 50))
+  , ( "兩",    (* 50))
+  , ( "毫克",  (/ 1000))
+  , ( "mg",   (/ 1000))
+  ]
+
+ruleNumeralQuantities :: [Rule]
+ruleNumeralQuantities = map go quantities
+  where
+    getValue :: Text -> Double -> Double
+    getValue match = HashMap.lookupDefault id (Text.toLower match) opsMap
+
+    go :: (Text, String, TQuantity.Unit) -> Rule
+    go (name, regexPattern, u) = Rule
+      { name = name
+      , pattern =
+        [ Predicate isPositive
+        , regex regexPattern
+        ]
+      , prod = \case
+        (Token Numeral nd:
+         Token RegexMatch (GroupMatch (match:_)):
+         _) -> Just . Token Quantity $ quantity u value
+          where value = getValue match $ TNumeral.value nd
+        _ -> Nothing
+      }
+
+ruleCattyTael :: Rule
+ruleCattyTael = Rule
+  { name = "<quantity> catty <quantity> tael"
+  , pattern =
+    [ Predicate isPositive
+    , regex "斤"
+    , numberBetween 1 10
+    , regex "两|兩"
+    ]
+  , prod = \case
+    (Token Numeral TNumeral.NumeralData{TNumeral.value = x}:
+     Token RegexMatch (GroupMatch _):
+     Token Numeral TNumeral.NumeralData{TNumeral.value = y}:
+     Token RegexMatch (GroupMatch _):
+     _) -> Just . Token Quantity $ quantity TQuantity.Gram (x * 500 + y * 50)
+    _ -> Nothing
+  }
+
+ruleCattyHalf :: Rule
+ruleCattyHalf = Rule
+  { name = "<quantity> catty half"
+  , pattern =
+    [ Predicate isPositive
+    , regex "斤半"
+    ]
+  , prod = \case
+    (Token Numeral TNumeral.NumeralData{TNumeral.value = x}:
+     Token RegexMatch (GroupMatch _):
+     _) -> Just . Token Quantity $ quantity TQuantity.Gram (x * 500 + 250)
+    _ -> Nothing
+  }
+
+ruleTaelHalf :: Rule
+ruleTaelHalf = Rule
+  { name = "<quantity> tael half"
+  , pattern =
+    [ Predicate isPositive
+    , regex "(两|兩)半"
+    ]
+  , prod = \case
+    (Token Numeral TNumeral.NumeralData{TNumeral.value = x}:
+     Token RegexMatch (GroupMatch _):
+     _) -> Just . Token Quantity $ quantity TQuantity.Gram (x * 50 + 25)
+    _ -> Nothing
+  }
+
+rules :: [Rule]
+rules =
+  [ ruleCattyTael
+  , ruleCattyHalf
+  , ruleTaelHalf
+  ]
+  ++ ruleNumeralQuantities
diff --git a/Duckling/Ranking/Classifiers/DA_XX.hs b/Duckling/Ranking/Classifiers/DA_XX.hs
--- a/Duckling/Ranking/Classifiers/DA_XX.hs
+++ b/Duckling/Ranking/Classifiers/DA_XX.hs
@@ -42,10 +42,10 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("integer (numeric)",
         Classifier{okData =
-                     ClassData{prior = -0.7974433001619848, unseen = -4.962844630259907,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 141},
+                     ClassData{prior = -0.8013607652001781, unseen = -4.955827057601261,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 140},
                    koData =
-                     ClassData{prior = -0.5987087137267001, unseen = -5.159055299214529,
+                     ClassData{prior = -0.5955087109960292, unseen = -5.159055299214529,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 172}}),
        ("the day before yesterday",
         Classifier{okData =
@@ -121,15 +121,15 @@
                                n = 16}}),
        ("absorption of , after named day",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.1354942159291497,
+                     ClassData{prior = 0.0, unseen = -3.044522437723423,
                                likelihoods =
                                  HashMap.fromList
-                                   [("Wednesday", -2.3978952727983707),
-                                    ("Saturday", -2.3978952727983707),
-                                    ("Monday", -1.7047480922384253),
-                                    ("Friday", -1.9924301646902063), ("day", -0.8938178760220964),
-                                    ("Sunday", -2.3978952727983707)],
-                               n = 8},
+                                   [("Wednesday", -2.3025850929940455),
+                                    ("Saturday", -2.3025850929940455),
+                                    ("Monday", -1.8971199848858813),
+                                    ("Friday", -1.8971199848858813), ("day", -0.916290731874155),
+                                    ("Sunday", -2.3025850929940455)],
+                               n = 7},
                    koData =
                      ClassData{prior = -infinity, unseen = -1.9459101490553135,
                                likelihoods = HashMap.fromList [], n = 0}}),
@@ -287,141 +287,140 @@
                                n = 2}}),
        ("intersect",
         Classifier{okData =
-                     ClassData{prior = -0.44236966504361536,
-                               unseen = -5.849324779946859,
+                     ClassData{prior = -0.4402080565520373, unseen = -5.84354441703136,
                                likelihoods =
                                  HashMap.fromList
                                    [("<datetime> - <datetime> (interval)on <date>",
-                                     -4.054679305829669),
+                                     -4.048882188145344),
                                     ("Wednesday<named-month> <day-of-month> (non ordinal)",
-                                     -5.153291594497779),
+                                     -5.147494476813453),
                                     ("<time-of-day> - <time-of-day> (interval)on <date>",
-                                     -4.054679305829669),
-                                    ("hourday", -5.153291594497779),
-                                    ("dayhour", -2.901999795891284),
-                                    ("daymonth", -3.361532125269724),
-                                    ("monthyear", -3.073850052817943),
-                                    ("Mondayon <date>", -5.153291594497779),
-                                    ("intersecthh:mm", -5.153291594497779),
-                                    ("Wednesdaynext <cycle>", -5.153291594497779),
-                                    ("Marchyear", -4.747826486389615),
+                                     -4.048882188145344),
+                                    ("hourday", -5.147494476813453),
+                                    ("dayhour", -2.896202678206958),
+                                    ("daymonth", -3.355735007585398),
+                                    ("monthyear", -3.068052935133617),
+                                    ("Mondayon <date>", -5.147494476813453),
+                                    ("intersecthh:mm", -5.147494476813453),
+                                    ("Wednesdaynext <cycle>", -5.147494476813453),
+                                    ("Marchyear", -4.742029368705289),
                                     ("intersect by \"of\", \"from\", \"'s\"year",
-                                     -4.747826486389615),
-                                    ("Mondayintersect", -5.153291594497779),
-                                    ("last <day-of-week> of <time>year", -4.747826486389615),
-                                    ("todayat <time-of-day>", -4.747826486389615),
-                                    ("Thursday<time> timezone", -3.900528626002411),
-                                    ("dayday", -3.073850052817943),
-                                    ("dd/mmat <time-of-day>", -4.237000862623624),
-                                    ("the <day-of-month> (ordinal)February", -4.747826486389615),
-                                    ("intersect by \",\"hh:mm", -4.237000862623624),
-                                    ("Mondaythe <day-of-month> (non ordinal)", -5.153291594497779),
+                                     -4.742029368705289),
+                                    ("Mondayintersect", -5.147494476813453),
+                                    ("last <day-of-week> of <time>year", -4.742029368705289),
+                                    ("todayat <time-of-day>", -4.742029368705289),
+                                    ("Thursday<time> timezone", -3.894731508318085),
+                                    ("dayday", -3.132591456271188),
+                                    ("dd/mmat <time-of-day>", -4.231203744939298),
+                                    ("the <day-of-month> (ordinal)February", -4.742029368705289),
+                                    ("intersect by \",\"hh:mm", -4.231203744939298),
+                                    ("Mondaythe <day-of-month> (non ordinal)", -5.147494476813453),
                                     ("Thursdaybetween <time-of-day> and <time-of-day> (interval)",
-                                     -5.153291594497779),
-                                    ("dayyear", -3.2814894175961875),
+                                     -5.147494476813453),
+                                    ("dayyear", -3.275692299911862),
                                     ("Thursdaybetween <datetime> and <datetime> (interval)",
-                                     -5.153291594497779),
-                                    ("Thursdayat <time-of-day>", -4.237000862623624),
-                                    ("tomorrow<time-of-day> sharp", -4.747826486389615),
+                                     -5.147494476813453),
+                                    ("Thursdayat <time-of-day>", -4.231203744939298),
+                                    ("tomorrow<time-of-day> sharp", -4.742029368705289),
                                     ("<day-of-month>(ordinal) <named-month>year",
-                                     -4.747826486389615),
+                                     -4.742029368705289),
                                     ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
-                                     -4.054679305829669),
+                                     -4.231203744939298),
                                     ("Thursdayfrom <datetime> - <datetime> (interval)",
-                                     -4.747826486389615),
+                                     -4.742029368705289),
                                     ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
-                                     -4.747826486389615),
-                                    ("tomorrowuntil <time-of-day>", -4.747826486389615),
+                                     -4.742029368705289),
+                                    ("tomorrowuntil <time-of-day>", -4.742029368705289),
                                     ("absorption of , after named day<day-of-month> (non ordinal) <named-month>",
-                                     -4.460144413937834),
-                                    ("the <day-of-month> (ordinal)March", -4.237000862623624),
-                                    ("after <time-of-day>at <time-of-day>", -4.747826486389615),
+                                     -4.454347296253507),
+                                    ("the <day-of-month> (ordinal)March", -4.231203744939298),
+                                    ("after <time-of-day>at <time-of-day>", -4.742029368705289),
                                     ("intersect by \",\"<day-of-month> (non ordinal) <named-month>",
-                                     -4.747826486389615),
-                                    ("Mondaythe <day-of-month> (ordinal)", -5.153291594497779),
-                                    ("tomorrowafter <time-of-day>", -4.747826486389615),
+                                     -4.742029368705289),
+                                    ("Mondaythe <day-of-month> (ordinal)", -5.147494476813453),
+                                    ("tomorrowafter <time-of-day>", -4.742029368705289),
                                     ("from <time-of-day> - <time-of-day> (interval)on <date>",
-                                     -4.237000862623624),
+                                     -4.231203744939298),
                                     ("Sunday<day-of-month> (non ordinal) <named-month>",
-                                     -5.153291594497779),
-                                    ("dayminute", -2.588342237036242),
-                                    ("Tuesdaythis <time>", -4.460144413937834),
+                                     -5.147494476813453),
+                                    ("dayminute", -2.5825451193519164),
+                                    ("Tuesdaythis <time>", -4.454347296253507),
                                     ("from <datetime> - <datetime> (interval)on <date>",
-                                     -4.460144413937834),
-                                    ("<ordinal> <cycle> of <time>year", -4.747826486389615),
-                                    ("minuteday", -2.550601909053395),
+                                     -4.454347296253507),
+                                    ("<ordinal> <cycle> of <time>year", -4.742029368705289),
+                                    ("minuteday", -2.5448047913690695),
                                     ("absorption of , after named dayintersect",
-                                     -5.153291594497779),
-                                    ("Octoberyear", -3.543853682063679),
-                                    ("yearhh:mm", -5.153291594497779),
+                                     -5.147494476813453),
+                                    ("Octoberyear", -3.5380565643793527),
+                                    ("yearhh:mm", -5.147494476813453),
                                     ("absorption of , after named dayintersect by \",\"",
-                                     -4.747826486389615),
-                                    ("dd/mmyear", -4.747826486389615),
-                                    ("Septemberyear", -4.237000862623624),
-                                    ("at <time-of-day>on <date>", -5.153291594497779),
+                                     -4.742029368705289),
+                                    ("dd/mmyear", -4.742029368705289),
+                                    ("Septemberyear", -4.231203744939298),
+                                    ("at <time-of-day>on <date>", -5.147494476813453),
                                     ("between <time-of-day> and <time-of-day> (interval)on <date>",
-                                     -5.153291594497779),
+                                     -5.147494476813453),
                                     ("between <datetime> and <datetime> (interval)on <date>",
-                                     -5.153291594497779),
-                                    ("dayweek", -4.054679305829669),
-                                    ("weekyear", -4.237000862623624),
-                                    ("hh:mmtomorrow", -4.460144413937834),
-                                    ("Wednesdaythis <time>", -4.237000862623624),
-                                    ("tomorrowat <time-of-day>", -3.900528626002411),
-                                    ("at <time-of-day>tomorrow", -4.747826486389615),
-                                    ("intersectFebruary", -5.153291594497779),
-                                    ("last <cycle> of <time>year", -4.237000862623624),
-                                    ("Mondaythis <time>", -5.153291594497779),
+                                     -5.147494476813453),
+                                    ("dayweek", -4.048882188145344),
+                                    ("weekyear", -4.231203744939298),
+                                    ("hh:mmtomorrow", -4.454347296253507),
+                                    ("Wednesdaythis <time>", -4.231203744939298),
+                                    ("tomorrowat <time-of-day>", -3.894731508318085),
+                                    ("at <time-of-day>tomorrow", -4.742029368705289),
+                                    ("intersectFebruary", -5.147494476813453),
+                                    ("last <cycle> of <time>year", -4.231203744939298),
+                                    ("Mondaythis <time>", -5.147494476813453),
                                     ("<day-of-month> (non ordinal) <named-month>year",
-                                     -4.747826486389615),
-                                    ("yearminute", -5.153291594497779)],
-                               n = 133},
+                                     -4.742029368705289),
+                                    ("yearminute", -5.147494476813453)],
+                               n = 132},
                    koData =
-                     ClassData{prior = -1.0286537000611993, unseen = -5.43372200355424,
+                     ClassData{prior = -1.032550537990017, unseen = -5.424950017481403,
                                likelihoods =
                                  HashMap.fromList
-                                   [("dayhour", -3.126760535960395),
-                                    ("daymonth", -2.133508762950112),
-                                    ("monthday", -3.8199077165203406),
-                                    ("monthyear", -3.8199077165203406),
-                                    ("Marchyear", -4.04305126783455),
+                                   [("dayhour", -3.1179499062782403),
+                                    ("daymonth", -2.1624384612508036),
+                                    ("monthday", -3.8110970868381857),
+                                    ("monthyear", -3.8110970868381857),
+                                    ("Marchyear", -4.034240638152395),
                                     ("intersect by \"of\", \"from\", \"'s\"year",
-                                     -3.4834354798991276),
-                                    ("Sundaythis <time>", -3.8199077165203406),
-                                    ("absorption of , after named dayJuly", -4.330733340286331),
-                                    ("dd/mmat <time-of-day>", -3.8199077165203406),
-                                    ("hourhour", -3.4834354798991276),
+                                     -3.4746248502169728),
+                                    ("Sundaythis <time>", -3.8110970868381857),
+                                    ("absorption of , after named dayJuly", -4.321922710604176),
+                                    ("dd/mmat <time-of-day>", -3.8110970868381857),
+                                    ("hourhour", -3.4746248502169728),
                                     ("Thursdaybetween <time-of-day> and <time-of-day> (interval)",
-                                     -4.736198448394496),
-                                    ("dayyear", -3.349904087274605),
+                                     -4.727387818712341),
+                                    ("dayyear", -3.34109345759245),
                                     ("Thursdaybetween <datetime> and <datetime> (interval)",
-                                     -4.736198448394496),
-                                    ("Thursdayat <time-of-day>", -3.2321210516182215),
-                                    ("Thursdayhh:mm", -4.330733340286331),
-                                    ("WednesdayFebruary", -4.736198448394496),
+                                     -4.727387818712341),
+                                    ("Thursdayat <time-of-day>", -3.2233104219360666),
+                                    ("Thursdayhh:mm", -4.321922710604176),
+                                    ("WednesdayFebruary", -4.727387818712341),
                                     ("Thursdayfrom <datetime> - <datetime> (interval)",
-                                     -4.330733340286331),
+                                     -4.321922710604176),
                                     ("in|during the <part-of-day>until <time-of-day>",
-                                     -4.330733340286331),
+                                     -4.321922710604176),
                                     ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
-                                     -4.736198448394496),
-                                    ("Aprilyear", -4.736198448394496),
+                                     -4.727387818712341),
+                                    ("Aprilyear", -4.727387818712341),
                                     ("<named-month> <day-of-month> (non ordinal)August",
-                                     -3.8199077165203406),
-                                    ("until <time-of-day>on <date>", -4.736198448394496),
+                                     -3.8110970868381857),
+                                    ("until <time-of-day>on <date>", -4.727387818712341),
                                     ("August<day-of-month> (non ordinal) <named-month>",
-                                     -3.8199077165203406),
-                                    ("dayminute", -3.0314503561560704),
-                                    ("Tuesdaythis <time>", -3.8199077165203406),
-                                    ("minuteday", -3.2321210516182215),
-                                    ("hh:mmon <date>", -3.349904087274605),
-                                    ("Wednesdaythis <time>", -3.4834354798991276),
-                                    ("absorption of , after named dayFebruary", -4.04305126783455),
-                                    ("this <part-of-day>until <time-of-day>", -4.330733340286331),
-                                    ("tomorrownoon", -4.736198448394496),
-                                    ("this <time>until <time-of-day>", -4.330733340286331),
-                                    ("Mondaythis <time>", -4.330733340286331)],
-                               n = 74}}),
+                                     -3.8110970868381857),
+                                    ("dayminute", -3.0226397264739155),
+                                    ("Tuesdaythis <time>", -3.8110970868381857),
+                                    ("minuteday", -3.2233104219360666),
+                                    ("hh:mmon <date>", -3.34109345759245),
+                                    ("Wednesdaythis <time>", -3.4746248502169728),
+                                    ("absorption of , after named dayFebruary", -4.321922710604176),
+                                    ("this <part-of-day>until <time-of-day>", -4.321922710604176),
+                                    ("tomorrownoon", -4.727387818712341),
+                                    ("this <time>until <time-of-day>", -4.321922710604176),
+                                    ("Mondaythis <time>", -4.321922710604176)],
+                               n = 73}}),
        ("<ordinal> <cycle> of <time>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -2.890371757896165,
@@ -548,8 +547,8 @@
                                n = 23}}),
        ("Monday",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.639057329615259,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
@@ -852,8 +851,8 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("February",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.5649493574615367,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
@@ -1037,58 +1036,57 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("intersect by \",\"",
         Classifier{okData =
-                     ClassData{prior = -0.1590646946296874, unseen = -4.51085950651685,
+                     ClassData{prior = -0.13353139262452263, unseen = -4.48863636973214,
                                likelihoods =
                                  HashMap.fromList
                                    [("Wednesday<named-month> <day-of-month> (non ordinal)",
-                                     -3.8066624897703196),
+                                     -3.784189633918261),
                                     ("<named-month> <day-of-month> (non ordinal)Friday",
-                                     -3.8066624897703196),
+                                     -3.784189633918261),
                                     ("Friday<named-month> <day-of-month> (non ordinal)",
-                                     -3.4011973816621555),
-                                    ("at <time-of-day>Saturday", -3.8066624897703196),
-                                    ("intersect by \",\"year", -3.8066624897703196),
-                                    ("hh:mmintersect by \",\"", -3.8066624897703196),
-                                    ("dayday", -2.1019143975318944),
-                                    ("dayyear", -2.890371757896165),
+                                     -3.378724525810097),
+                                    ("at <time-of-day>Saturday", -3.784189633918261),
+                                    ("intersect by \",\"year", -3.784189633918261),
+                                    ("hh:mmintersect by \",\"", -3.784189633918261),
+                                    ("dayday", -2.174751721484161), ("dayyear", -2.867898902044106),
                                     ("Saturday<day-of-month> (non ordinal) <named-month>",
-                                     -3.8066624897703196),
+                                     -3.784189633918261),
                                     ("<named-month> <day-of-month> (non ordinal)intersect",
-                                     -3.8066624897703196),
+                                     -3.784189633918261),
                                     ("intersect by \",\"<day-of-month> (non ordinal) <named-month>",
-                                     -3.4011973816621555),
-                                    ("Fridayintersect", -3.8066624897703196),
-                                    ("hh:mmintersect", -3.8066624897703196),
-                                    ("intersect by \",\"intersect", -3.8066624897703196),
-                                    ("hh:mmSaturday", -3.8066624897703196),
-                                    ("at <time-of-day>intersect", -3.8066624897703196),
+                                     -3.378724525810097),
+                                    ("Fridayintersect", -3.784189633918261),
+                                    ("hh:mmintersect", -3.784189633918261),
+                                    ("intersect by \",\"intersect", -3.784189633918261),
+                                    ("hh:mmSaturday", -3.784189633918261),
+                                    ("at <time-of-day>intersect", -3.784189633918261),
                                     ("Sunday<day-of-month> (non ordinal) <named-month>",
-                                     -3.8066624897703196),
-                                    ("dayminute", -2.70805020110221),
-                                    ("intersectyear", -3.8066624897703196),
-                                    ("minuteday", -2.1019143975318944),
-                                    ("hh:mmabsorption of , after named day", -3.8066624897703196),
-                                    ("at <time-of-day>intersect by \",\"", -3.8066624897703196),
+                                     -3.784189633918261),
+                                    ("dayminute", -2.6855773452501515),
+                                    ("intersectyear", -3.784189633918261),
+                                    ("minuteday", -2.0794415416798357),
+                                    ("hh:mmabsorption of , after named day", -3.784189633918261),
+                                    ("at <time-of-day>intersect by \",\"", -3.784189633918261),
                                     ("at <time-of-day>absorption of , after named day",
-                                     -3.8066624897703196),
-                                    ("intersectintersect", -3.8066624897703196),
-                                    ("Fridayintersect by \",\"", -3.4011973816621555),
+                                     -3.784189633918261),
+                                    ("intersectintersect", -3.784189633918261),
+                                    ("Fridayintersect by \",\"", -3.378724525810097),
                                     ("Monday<named-month> <day-of-month> (non ordinal)",
-                                     -3.4011973816621555),
+                                     -3.784189633918261),
                                     ("Monday<day-of-month> (non ordinal) <named-month>",
-                                     -3.8066624897703196),
+                                     -3.784189633918261),
                                     ("<named-month> <day-of-month> (non ordinal)year",
-                                     -3.4011973816621555)],
-                               n = 29},
+                                     -3.378724525810097)],
+                               n = 28},
                    koData =
-                     ClassData{prior = -1.916922612182061, unseen = -3.7612001156935624,
+                     ClassData{prior = -2.0794415416798357, unseen = -3.713572066704308,
                                likelihoods =
                                  HashMap.fromList
-                                   [("daymonth", -1.9459101490553135),
-                                    ("FridayJuly", -2.639057329615259),
-                                    ("WednesdayFebruary", -3.044522437723423),
-                                    ("MondayFebruary", -2.639057329615259)],
-                               n = 5}}),
+                                   [("daymonth", -2.0794415416798357),
+                                    ("FridayJuly", -2.5902671654458267),
+                                    ("WednesdayFebruary", -2.995732273553991),
+                                    ("MondayFebruary", -2.995732273553991)],
+                               n = 4}}),
        ("hh:mm",
         Classifier{okData =
                      ClassData{prior = -1.7094433359300068e-2,
@@ -1449,17 +1447,17 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<named-month> <day-of-month> (non ordinal)",
         Classifier{okData =
-                     ClassData{prior = -0.4418327522790392,
-                               unseen = -3.1780538303479458,
+                     ClassData{prior = -0.48550781578170077,
+                               unseen = -3.0910424533583156,
                                likelihoods =
                                  HashMap.fromList
-                                   [("Aprilinteger (numeric)", -2.4423470353692043),
-                                    ("month", -0.832909122935104),
-                                    ("Februaryinteger (numeric)", -1.3437347467010947),
-                                    ("Julyinteger (numeric)", -1.749199854809259)],
-                               n = 9},
+                                   [("Aprilinteger (numeric)", -2.3513752571634776),
+                                    ("month", -0.8472978603872037),
+                                    ("Februaryinteger (numeric)", -1.4350845252893227),
+                                    ("Julyinteger (numeric)", -1.6582280766035324)],
+                               n = 8},
                    koData =
-                     ClassData{prior = -1.0296194171811581, unseen = -2.772588722239781,
+                     ClassData{prior = -0.9555114450274363, unseen = -2.772588722239781,
                                likelihoods =
                                  HashMap.fromList
                                    [("Augustinteger (numeric)", -1.0986122886681098),
diff --git a/Duckling/Ranking/Classifiers/DE_XX.hs b/Duckling/Ranking/Classifiers/DE_XX.hs
--- a/Duckling/Ranking/Classifiers/DE_XX.hs
+++ b/Duckling/Ranking/Classifiers/DE_XX.hs
@@ -86,86 +86,85 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<time> <part-of-day>",
         Classifier{okData =
-                     ClassData{prior = -0.11778303565638351,
-                               unseen = -5.723585101952381,
+                     ClassData{prior = -0.12044615307586722,
+                               unseen = -5.700443573390687,
                                likelihoods =
                                  HashMap.fromList
-                                   [("<time-of-day>  o'clockmorning", -4.621699487939302),
-                                    ("until <time-of-day>afternoon", -5.0271645960474665),
-                                    ("dayhour", -3.322416503809041),
-                                    ("todayevening", -4.621699487939302),
+                                   [("<time-of-day>  o'clockmorning", -4.598481197837295),
+                                    ("until <time-of-day>afternoon", -5.003946305945459),
+                                    ("dayhour", -3.299198213707034),
+                                    ("todayevening", -4.598481197837295),
                                     ("half <integer> (german style hour-of-day)afternoon",
-                                     -5.0271645960474665),
-                                    ("<time-of-day>  o'clockafter lunch", -4.334017415487521),
-                                    ("intersect by ','evening", -3.5230871992711923),
-                                    ("<time-of-day>  o'clockon <date>", -3.9285523073793565),
-                                    ("intersectevening", -1.9591116609138493),
-                                    ("time-of-day (latent)on <date>", -4.334017415487521),
-                                    ("about <time-of-day>on <date>", -4.621699487939302),
+                                     -5.003946305945459),
+                                    ("<time-of-day>  o'clockafter lunch", -4.310799125385514),
+                                    ("intersect by ','evening", -3.499868909169185),
+                                    ("<time-of-day>  o'clockon <date>", -3.9053340172773496),
+                                    ("intersectevening", -1.935893370811842),
+                                    ("time-of-day (latent)on <date>", -4.310799125385514),
+                                    ("about <time-of-day>on <date>", -4.598481197837295),
                                     ("<hour-of-day> <integer> (as relative minutes)in|during the <part-of-day>",
-                                     -4.621699487939302),
-                                    ("hourhour", -1.1985231995583712),
+                                     -4.598481197837295),
+                                    ("hourhour", -1.2084571167732645),
                                     ("<time-of-day>  o'clockin|during the <part-of-day>",
-                                     -3.9285523073793565),
-                                    ("Donnerstagmorning", -5.0271645960474665),
-                                    ("<time-of-day>  o'clockafternoon", -4.334017415487521),
+                                     -3.9053340172773496),
+                                    ("Donnerstagmorning", -5.003946305945459),
+                                    ("<time-of-day>  o'clockafternoon", -4.310799125385514),
                                     ("half <integer> (german style hour-of-day)after lunch",
-                                     -5.0271645960474665),
-                                    ("until <time-of-day>morning", -4.621699487939302),
-                                    ("minutehour", -2.3881072664322076),
+                                     -5.003946305945459),
+                                    ("until <time-of-day>morning", -5.003946305945459),
+                                    ("minutehour", -2.3648889763302003),
                                     ("at <time-of-day>in|during the <part-of-day>",
-                                     -4.110873864173311),
+                                     -4.087655574071304),
                                     ("<hour-of-day> <integer> (as relative minutes)after lunch",
-                                     -5.0271645960474665),
-                                    ("<time-of-day> am|pmmorning", -4.621699487939302),
-                                    ("tomorrowevening", -5.0271645960474665),
-                                    ("time-of-day (latent)morning", -5.0271645960474665),
-                                    ("hh:mmmorning", -5.0271645960474665),
+                                     -5.003946305945459),
+                                    ("tomorrowevening", -5.003946305945459),
+                                    ("time-of-day (latent)morning", -5.003946305945459),
+                                    ("hh:mmmorning", -5.003946305945459),
                                     ("half <integer> (german style hour-of-day)in|during the <part-of-day>",
-                                     -4.621699487939302),
-                                    ("until <time-of-day>on <date>", -5.0271645960474665),
+                                     -4.598481197837295),
+                                    ("until <time-of-day>on <date>", -5.003946305945459),
                                     ("<day-of-month>(ordinal) <named-month>morning",
-                                     -5.0271645960474665),
-                                    ("<time-of-day>  o'clockevening", -5.0271645960474665),
-                                    ("hh:mmon <date>", -4.110873864173311),
+                                     -5.003946305945459),
+                                    ("<time-of-day>  o'clockevening", -5.003946305945459),
+                                    ("hh:mmon <date>", -4.087655574071304),
                                     ("<hour-of-day> <integer> (as relative minutes)afternoon",
-                                     -5.0271645960474665),
-                                    ("tomorrowlunch", -4.621699487939302),
-                                    ("until <time-of-day>after lunch", -5.0271645960474665),
-                                    ("Montagmorning", -5.0271645960474665),
-                                    ("at <time-of-day>on <date>", -4.110873864173311),
-                                    ("yesterdayevening", -5.0271645960474665),
-                                    ("intersectmorning", -5.0271645960474665),
-                                    ("hh:mmin|during the <part-of-day>", -4.110873864173311),
+                                     -5.003946305945459),
+                                    ("tomorrowlunch", -4.598481197837295),
+                                    ("until <time-of-day>after lunch", -5.003946305945459),
+                                    ("Montagmorning", -5.003946305945459),
+                                    ("at <time-of-day>on <date>", -4.087655574071304),
+                                    ("yesterdayevening", -5.003946305945459),
+                                    ("intersectmorning", -5.003946305945459),
+                                    ("hh:mmin|during the <part-of-day>", -4.087655574071304),
                                     ("time-of-day (latent)in|during the <part-of-day>",
-                                     -4.334017415487521),
+                                     -4.310799125385514),
                                     ("<hour-of-day> <integer> (as relative minutes)on <date>",
-                                     -4.621699487939302),
+                                     -4.598481197837295),
                                     ("about <time-of-day>in|during the <part-of-day>",
-                                     -4.621699487939302),
+                                     -4.598481197837295),
                                     ("half <integer> (german style hour-of-day)on <date>",
-                                     -4.621699487939302),
-                                    ("at <time-of-day>morning", -5.0271645960474665),
+                                     -4.598481197837295),
+                                    ("at <time-of-day>morning", -5.003946305945459),
                                     ("until <time-of-day>in|during the <part-of-day>",
-                                     -5.0271645960474665)],
-                               n = 128},
+                                     -5.003946305945459)],
+                               n = 125},
                    koData =
-                     ClassData{prior = -2.1972245773362196, unseen = -4.406719247264253,
+                     ClassData{prior = -2.176171168138387, unseen = -4.394449154672439,
                                likelihoods =
                                  HashMap.fromList
-                                   [("yearhour", -3.295836866004329),
-                                    ("year (latent)on <date>", -3.7013019741124937),
-                                    ("<time-of-day>  o'clockafter lunch", -3.7013019741124937),
-                                    ("intersectevening", -3.0081547935525483),
-                                    ("monthhour", -3.7013019741124937),
-                                    ("time-of-day (latent)on <date>", -2.7850112422383386),
-                                    ("hourhour", -1.7553918250571803),
-                                    ("Februarmorning", -3.7013019741124937),
-                                    ("<time-of-day>  o'clockafternoon", -3.7013019741124937),
+                                   [("yearhour", -3.283414346005772),
+                                    ("year (latent)on <date>", -3.6888794541139363),
+                                    ("<time-of-day>  o'clockafter lunch", -3.6888794541139363),
+                                    ("intersectevening", -2.995732273553991),
+                                    ("monthhour", -3.6888794541139363),
+                                    ("time-of-day (latent)on <date>", -2.772588722239781),
+                                    ("hourhour", -1.742969305058623),
+                                    ("Februarmorning", -3.6888794541139363),
+                                    ("<time-of-day>  o'clockafternoon", -3.6888794541139363),
                                     ("year (latent)in|during the <part-of-day>",
-                                     -3.7013019741124937),
+                                     -3.6888794541139363),
                                     ("time-of-day (latent)in|during the <part-of-day>",
-                                     -2.7850112422383386)],
+                                     -2.772588722239781)],
                                n = 16}}),
        ("today",
         Classifier{okData =
@@ -184,31 +183,30 @@
                                likelihoods = HashMap.fromList [("", 0.0)], n = 12}}),
        ("at <time-of-day>",
         Classifier{okData =
-                     ClassData{prior = -0.2113090936672069, unseen = -4.382026634673881,
+                     ClassData{prior = -0.137201121513485, unseen = -4.3694478524670215,
                                likelihoods =
                                  HashMap.fromList
-                                   [("<time-of-day>  o'clock", -2.0668627594729756),
+                                   [("<time-of-day>  o'clock", -2.0541237336955462),
                                     ("half <integer> (german style hour-of-day)",
-                                     -3.676300671907076),
-                                    ("about <time-of-day>", -2.760009940032921),
-                                    ("time-of-day (latent)", -1.7303905228517629),
+                                     -3.6635616461296463),
+                                    ("about <time-of-day>", -2.7472709142554916),
+                                    ("time-of-day (latent)", -1.717651497074333),
                                     ("relative minutes after|past <integer> (hour-of-day)",
-                                     -3.676300671907076),
-                                    ("hh:mm", -2.760009940032921),
+                                     -3.6635616461296463),
+                                    ("hh:mm", -2.7472709142554916),
                                     ("quarter after|past <integer> (hour-of-day)",
-                                     -3.676300671907076),
-                                    ("hour", -1.0736109864626924), ("minute", -2.172223275130802),
+                                     -3.6635616461296463),
+                                    ("hour", -1.0608719606852628), ("minute", -2.159484249353372),
                                     ("<hour-of-day> <integer> (as relative minutes)",
-                                     -3.676300671907076)],
+                                     -3.6635616461296463)],
                                n = 34},
                    koData =
-                     ClassData{prior = -1.6582280766035324, unseen = -3.332204510175204,
+                     ClassData{prior = -2.0541237336955462, unseen = -3.044522437723423,
                                likelihoods =
                                  HashMap.fromList
-                                   [("time-of-day (latent)", -1.5040773967762742),
-                                    ("<time-of-day> am|pm", -1.9095425048844386),
-                                    ("hour", -1.349926716949016), ("minute", -2.1972245773362196)],
-                               n = 8}}),
+                                   [("time-of-day (latent)", -1.2039728043259361),
+                                    ("hour", -1.2039728043259361)],
+                               n = 5}}),
        ("Neujahr",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -1.3862943611198906,
@@ -405,287 +403,263 @@
                                n = 1}}),
        ("intersect",
         Classifier{okData =
-                     ClassData{prior = -0.26452876747706405,
-                               unseen = -6.926577033222725,
+                     ClassData{prior = -0.1745489670397881, unseen = -6.88653164253051,
                                likelihoods =
                                  HashMap.fromList
-                                   [("Samstag<time-of-day>  o'clock", -6.2324480165505225),
-                                    ("hourday", -4.979685048055154),
-                                    ("<datetime> - <datetime> (interval)year", -4.979685048055154),
-                                    ("dayhour", -2.568886370420876),
-                                    ("daymonth", -3.1879255788270995),
+                                   [("Samstag<time-of-day>  o'clock", -6.192362489474872),
+                                    ("hourday", -4.939599520979504),
+                                    ("<datetime> - <datetime> (interval)year", -4.939599520979504),
+                                    ("dayhour", -2.5288008433452256),
+                                    ("daymonth", -3.147840051751449),
                                     ("<day-of-month>(ordinal) <named-month> year<time-of-day>  o'clock",
-                                     -6.2324480165505225),
-                                    ("monthyear", -4.527699924312097),
-                                    ("yearhour", -6.2324480165505225),
-                                    ("Juliintersect", -6.2324480165505225),
-                                    ("intersect<time-of-day>  o'clock", -4.092381853054252),
-                                    ("after lunchat <time-of-day>", -6.2324480165505225),
+                                     -6.192362489474872),
+                                    ("monthyear", -4.487614397236447),
+                                    ("yearhour", -6.192362489474872),
+                                    ("Juliintersect", -6.192362489474872),
+                                    ("intersect<time-of-day>  o'clock", -4.052296325978602),
+                                    ("after lunchat <time-of-day>", -6.192362489474872),
                                     ("absorption of , after named daymm/dd/yyyy",
-                                     -6.2324480165505225),
-                                    ("intersectJuli", -5.539300835990577),
-                                    ("<day-of-month> (ordinal)Dienstag", -6.2324480165505225),
-                                    ("intersect by 'of', 'from', 'syear", -5.826982908442359),
-                                    ("<time-of-day> am|pmintersect", -5.133835727882413),
-                                    ("<day-of-month> (ordinal)September", -5.826982908442359),
-                                    ("intersect<time> <part-of-day>", -4.153006474870687),
-                                    ("<time-of-day>  o'clockafter lunch", -5.539300835990577),
-                                    ("<day-of-month> (ordinal)Mittwoch", -6.2324480165505225),
-                                    ("Montagthis <cycle>", -6.2324480165505225),
+                                     -6.192362489474872),
+                                    ("intersectJuli", -5.499215308914927),
+                                    ("<day-of-month> (ordinal)Dienstag", -6.192362489474872),
+                                    ("intersect by 'of', 'from', 'syear", -5.786897381366708),
+                                    ("<day-of-month> (ordinal)September", -5.786897381366708),
+                                    ("intersect<time> <part-of-day>", -4.112920947795036),
+                                    ("<time-of-day>  o'clockafter lunch", -5.499215308914927),
+                                    ("<day-of-month> (ordinal)Mittwoch", -6.192362489474872),
+                                    ("Montagthis <cycle>", -6.192362489474872),
                                     ("<time> <part-of-day><time-of-day>  o'clock",
-                                     -6.2324480165505225),
-                                    ("Oktoberyear", -5.133835727882413),
-                                    ("today<time-of-day>  o'clock", -6.2324480165505225),
-                                    ("<time-of-day>  o'clockon <date>", -5.826982908442359),
-                                    ("<time-of-day> am|pmintersect by ','", -5.539300835990577),
-                                    ("intersect by ','year", -5.133835727882413),
-                                    ("on <date><time-of-day>  o'clock", -6.2324480165505225),
-                                    ("exactly <time-of-day>tomorrow", -5.826982908442359),
-                                    ("mm/dd<time-of-day>  o'clock", -6.2324480165505225),
-                                    ("monthhour", -5.826982908442359),
+                                     -6.192362489474872),
+                                    ("Oktoberyear", -5.093750200806762),
+                                    ("today<time-of-day>  o'clock", -6.192362489474872),
+                                    ("<time-of-day>  o'clockon <date>", -5.786897381366708),
+                                    ("intersect by ','year", -5.093750200806762),
+                                    ("on <date><time-of-day>  o'clock", -6.192362489474872),
+                                    ("exactly <time-of-day>tomorrow", -5.786897381366708),
+                                    ("mm/dd<time-of-day>  o'clock", -6.192362489474872),
+                                    ("monthhour", -5.786897381366708),
                                     ("on <date>between <datetime> and <datetime> (interval)",
-                                     -6.2324480165505225),
-                                    ("last <day-of-week> of <time>year", -6.2324480165505225),
-                                    ("hourmonth", -5.826982908442359),
-                                    ("todayat <time-of-day>", -5.539300835990577),
-                                    ("mm/ddabout <time-of-day>", -5.826982908442359),
+                                     -6.192362489474872),
+                                    ("last <day-of-week> of <time>year", -6.192362489474872),
+                                    ("hourmonth", -5.786897381366708),
+                                    ("todayat <time-of-day>", -5.499215308914927),
+                                    ("mm/ddabout <time-of-day>", -5.786897381366708),
                                     ("Donnerstagfrom <datetime> - <datetime> (interval)",
-                                     -5.826982908442359),
+                                     -5.786897381366708),
                                     ("on <date>between <time-of-day> and <time-of-day> (interval)",
-                                     -6.2324480165505225),
-                                    ("on <date>at <time-of-day>", -5.826982908442359),
-                                    ("dayday", -3.054394186202577),
-                                    ("<time> <part-of-day>at <time-of-day>", -5.826982908442359),
-                                    ("<time-of-day> am|pmabsorption of , after named day",
-                                     -6.2324480165505225),
-                                    ("about <time-of-day>on <date>", -6.2324480165505225),
+                                     -6.192362489474872),
+                                    ("on <date>at <time-of-day>", -5.786897381366708),
+                                    ("dayday", -3.0143086591269266),
+                                    ("<time> <part-of-day>at <time-of-day>", -5.786897381366708),
+                                    ("about <time-of-day>on <date>", -6.192362489474872),
                                     ("<hour-of-day> <integer> (as relative minutes)in|during the <part-of-day>",
-                                     -5.826982908442359),
-                                    ("<day-of-month> (ordinal)intersect", -5.133835727882413),
-                                    ("hourhour", -3.7067193722422673),
-                                    ("hh:mmintersect by ','", -4.979685048055154),
+                                     -5.786897381366708),
+                                    ("<day-of-month> (ordinal)intersect", -5.093750200806762),
+                                    ("hourhour", -3.6666338451666167),
+                                    ("hh:mmintersect by ','", -4.939599520979504),
                                     ("Donnerstagfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.539300835990577),
-                                    ("Dienstagthis <cycle>", -6.2324480165505225),
-                                    ("<part-of-day> of <time>Februar", -5.826982908442359),
-                                    ("dayyear", -3.3146772844662435),
-                                    ("Mittwochthis <cycle>", -6.2324480165505225),
+                                     -5.499215308914927),
+                                    ("Dienstagthis <cycle>", -6.192362489474872),
+                                    ("<part-of-day> of <time>Februar", -5.786897381366708),
+                                    ("dayyear", -3.274591757390593),
+                                    ("Mittwochthis <cycle>", -6.192362489474872),
                                     ("<time-of-day>  o'clockin|during the <part-of-day>",
-                                     -5.133835727882413),
-                                    ("tomorrow<time-of-day>  o'clock", -6.2324480165505225),
-                                    ("<time-of-day>  o'clocktomorrow", -5.539300835990577),
+                                     -5.093750200806762),
+                                    ("tomorrow<time-of-day>  o'clock", -6.192362489474872),
+                                    ("<time-of-day>  o'clocktomorrow", -5.499215308914927),
                                     ("<day-of-month>(ordinal) <named-month>year",
-                                     -5.826982908442359),
+                                     -5.786897381366708),
                                     ("half <integer> (german style hour-of-day)after lunch",
-                                     -6.2324480165505225),
+                                     -6.192362489474872),
                                     ("absorption of , after named day<day-of-month>(ordinal) <named-month>",
-                                     -4.979685048055154),
-                                    ("hourminute", -5.539300835990577),
-                                    ("the <day-of-month> (ordinal)Juli", -6.2324480165505225),
+                                     -4.939599520979504),
+                                    ("hourminute", -5.499215308914927),
+                                    ("the <day-of-month> (ordinal)Juli", -6.192362489474872),
                                     ("on <date><day-of-month>(ordinal) <named-month>",
-                                     -5.826982908442359),
-                                    ("minutemonth", -3.558299367123994),
-                                    ("minutehour", -3.9811562179440276),
+                                     -5.786897381366708),
+                                    ("minutemonth", -3.6666338451666167),
+                                    ("minutehour", -3.941070690868377),
                                     ("at <time-of-day>in|during the <part-of-day>",
-                                     -5.316157284676367),
+                                     -5.276071757600717),
                                     ("absorption of , after named day<day-of-month>(ordinal) <named-month> year",
-                                     -5.826982908442359),
+                                     -5.786897381366708),
                                     ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
-                                     -5.133835727882413),
+                                     -5.093750200806762),
                                     ("<day-of-month>(ordinal) <named-month> year<time> <part-of-day>",
-                                     -6.2324480165505225),
+                                     -6.192362489474872),
                                     ("<hour-of-day> <integer> (as relative minutes)after lunch",
-                                     -6.2324480165505225),
-                                    ("Donnerstag<time> timezone", -5.826982908442359),
-                                    ("Samstagat <time-of-day>", -5.826982908442359),
-                                    ("<time-of-day> am|pmSamstag", -6.2324480165505225),
+                                     -6.192362489474872),
+                                    ("Donnerstag<time> timezone", -5.786897381366708),
+                                    ("Samstagat <time-of-day>", -5.786897381366708),
                                     ("intersect<day-of-month>(ordinal) <named-month>",
-                                     -4.846153655430633),
+                                     -4.939599520979504),
                                     ("this <part-of-day><time-of-day>  o'clock",
-                                     -6.2324480165505225),
+                                     -6.192362489474872),
                                     ("<day-of-month>(ordinal) <named-month>intersect",
-                                     -6.2324480165505225),
-                                    ("hh:mmintersect", -3.790100981181318),
-                                    ("Donnerstaghh:mm", -6.2324480165505225),
-                                    ("Weihnachtenyear", -6.2324480165505225),
-                                    ("<day-of-month> (ordinal)Juli", -5.539300835990577),
-                                    ("intersect by ','intersect", -4.979685048055154),
-                                    ("intersect by 'of', 'from', 'sJuli", -6.2324480165505225),
+                                     -6.192362489474872),
+                                    ("hh:mmintersect", -3.7500154541056676),
+                                    ("Donnerstaghh:mm", -6.192362489474872),
+                                    ("Weihnachtenyear", -6.192362489474872),
+                                    ("<day-of-month> (ordinal)Juli", -5.499215308914927),
+                                    ("intersect by ','intersect", -4.939599520979504),
+                                    ("intersect by 'of', 'from', 'sJuli", -6.192362489474872),
                                     ("half <integer> (german style hour-of-day)in|during the <part-of-day>",
-                                     -5.826982908442359),
+                                     -5.786897381366708),
                                     ("from <datetime> - <datetime> (interval)year",
-                                     -5.539300835990577),
-                                    ("at <time-of-day>intersect", -4.440688547322468),
+                                     -5.499215308914927),
+                                    ("at <time-of-day>intersect", -4.400603020246817),
                                     ("on <date>from <time-of-day> - <time-of-day> (interval)",
-                                     -5.826982908442359),
+                                     -5.786897381366708),
                                     ("<time> <part-of-day>from <time-of-day> - <time-of-day> (interval)",
-                                     -6.2324480165505225),
+                                     -6.192362489474872),
                                     ("absorption of , after named day<day-of-month> (ordinal)",
-                                     -4.979685048055154),
+                                     -4.939599520979504),
                                     ("Donnerstagbetween <time-of-day> and <time-of-day> (interval)",
-                                     -6.2324480165505225),
-                                    ("dayminute", -3.9811562179440276),
+                                     -6.192362489474872),
+                                    ("dayminute", -3.941070690868377),
                                     ("on <date>from <datetime> - <datetime> (interval)",
-                                     -6.2324480165505225),
-                                    ("Mittwochnext <cycle>", -6.2324480165505225),
+                                     -6.192362489474872),
+                                    ("Mittwochnext <cycle>", -6.192362489474872),
                                     ("Donnerstagbetween <datetime> and <datetime> (interval)",
-                                     -6.2324480165505225),
+                                     -6.192362489474872),
                                     ("<time> <part-of-day>from <datetime> - <datetime> (interval)",
-                                     -6.2324480165505225),
-                                    ("intersectyear", -4.440688547322468),
-                                    ("on <date>intersect", -5.826982908442359),
-                                    ("on <date><day-of-month> (ordinal)", -5.826982908442359),
-                                    ("intersectSeptember", -3.4916079926253216),
-                                    ("<ordinal> <cycle> of <time>year", -6.2324480165505225),
-                                    ("minuteday", -2.252766362648562),
+                                     -6.192362489474872),
+                                    ("intersectyear", -4.400603020246817),
+                                    ("on <date>intersect", -5.786897381366708),
+                                    ("on <date><day-of-month> (ordinal)", -5.786897381366708),
+                                    ("intersectSeptember", -3.5533051598596135),
+                                    ("<ordinal> <cycle> of <time>year", -6.192362489474872),
+                                    ("minuteday", -2.3422148877648135),
                                     ("absorption of , after named dayintersect",
-                                     -3.8345527437521523),
-                                    ("intersect by ','September", -4.728370619774249),
-                                    ("year<time-of-day>  o'clock", -6.2324480165505225),
-                                    ("Juliyear", -5.826982908442359),
-                                    ("at <time-of-day>intersect by ','", -5.539300835990577),
-                                    ("hh:mmabsorption of , after named day", -5.826982908442359),
-                                    ("intersect by ','<time> <part-of-day>", -5.316157284676367),
-                                    ("hh:mmon <date>", -3.790100981181318),
+                                     -3.7944672166765017),
+                                    ("intersect by ','September", -4.8060681283549815),
+                                    ("year<time-of-day>  o'clock", -6.192362489474872),
+                                    ("Juliyear", -5.786897381366708),
+                                    ("at <time-of-day>intersect by ','", -5.499215308914927),
+                                    ("hh:mmabsorption of , after named day", -5.786897381366708),
+                                    ("intersect by ','<time> <part-of-day>", -5.276071757600717),
+                                    ("hh:mmon <date>", -3.7500154541056676),
                                     ("at <time-of-day>absorption of , after named day",
-                                     -6.2324480165505225),
-                                    ("until <time-of-day>after lunch", -6.2324480165505225),
-                                    ("mm/ddyear", -5.826982908442359),
-                                    ("intersect by ','<time-of-day>  o'clock", -5.316157284676367),
-                                    ("intersect<day-of-month> (ordinal)", -4.846153655430633),
-                                    ("absorption of , after named daymm/dd", -6.2324480165505225),
-                                    ("on <date>September", -5.316157284676367),
-                                    ("Septemberyear", -5.826982908442359),
+                                     -6.192362489474872),
+                                    ("until <time-of-day>after lunch", -6.192362489474872),
+                                    ("mm/ddyear", -5.786897381366708),
+                                    ("intersect by ','<time-of-day>  o'clock", -5.276071757600717),
+                                    ("intersect<day-of-month> (ordinal)", -4.939599520979504),
+                                    ("absorption of , after named daymm/dd", -6.192362489474872),
+                                    ("on <date>September", -5.276071757600717),
+                                    ("Septemberyear", -5.786897381366708),
                                     ("<day-of-month> (ordinal)intersect by 'of', 'from', 's",
-                                     -5.539300835990577),
-                                    ("at <time-of-day>on <date>", -4.360645839648932),
-                                    ("intersectintersect", -4.092381853054252),
-                                    ("<day-of-month> (ordinal)Februar", -5.133835727882413),
-                                    ("dayweek", -5.133835727882413),
-                                    ("intersect by ','Juli", -5.539300835990577),
+                                     -5.499215308914927),
+                                    ("at <time-of-day>on <date>", -4.3205603125732805),
+                                    ("intersectintersect", -4.112920947795036),
+                                    ("<day-of-month> (ordinal)Februar", -5.093750200806762),
+                                    ("dayweek", -5.093750200806762),
+                                    ("intersect by ','Juli", -5.499215308914927),
                                     ("absorption of , after named daythe <day-of-month> (ordinal)",
-                                     -6.2324480165505225),
-                                    ("weekyear", -5.826982908442359),
-                                    ("hh:mmin|during the <part-of-day>", -5.316157284676367),
-                                    ("Marzyear", -6.2324480165505225),
-                                    ("tomorrowat <time-of-day>", -5.826982908442359),
+                                     -6.192362489474872),
+                                    ("weekyear", -5.786897381366708),
+                                    ("hh:mmin|during the <part-of-day>", -5.276071757600717),
+                                    ("Marzyear", -6.192362489474872),
+                                    ("tomorrowat <time-of-day>", -5.786897381366708),
                                     ("<hour-of-day> <integer> (as relative minutes)on <date>",
-                                     -6.2324480165505225),
+                                     -6.192362489474872),
                                     ("Donnerstag<time-of-day> - <time-of-day> (interval)",
-                                     -6.2324480165505225),
+                                     -6.192362489474872),
                                     ("Donnerstag<datetime> - <datetime> (interval)",
-                                     -6.2324480165505225),
-                                    ("Sonntaglast <cycle>", -6.2324480165505225),
-                                    ("at <time-of-day>tomorrow", -6.2324480165505225),
+                                     -6.192362489474872),
+                                    ("Sonntaglast <cycle>", -6.192362489474872),
+                                    ("at <time-of-day>tomorrow", -6.192362489474872),
                                     ("about <time-of-day>in|during the <part-of-day>",
-                                     -5.826982908442359),
+                                     -5.786897381366708),
                                     ("half <integer> (german style hour-of-day)on <date>",
-                                     -6.2324480165505225),
-                                    ("this <part-of-day>at <time-of-day>", -5.826982908442359),
-                                    ("<datetime> - <datetime> (interval)Juli", -5.826982908442359),
+                                     -6.192362489474872),
+                                    ("this <part-of-day>at <time-of-day>", -5.786897381366708),
+                                    ("<datetime> - <datetime> (interval)Juli", -5.786897381366708),
                                     ("after lunch<hour-of-day> <integer> (as relative minutes)",
-                                     -5.826982908442359),
-                                    ("<day-of-month> (ordinal)Marz", -6.2324480165505225),
-                                    ("last <cycle> of <time>year", -5.826982908442359),
+                                     -5.786897381366708),
+                                    ("<day-of-month> (ordinal)Marz", -6.192362489474872),
+                                    ("last <cycle> of <time>year", -5.786897381366708),
                                     ("<named-month> <day-of-month> (non ordinal)year",
-                                     -6.2324480165505225),
+                                     -6.192362489474872),
                                     ("<day-of-month> (non ordinal) <named-month>year",
-                                     -6.2324480165505225)],
-                               n = 426},
+                                     -6.192362489474872)],
+                               n = 409},
                    koData =
-                     ClassData{prior = -1.4591557093847622, unseen = -6.052089168924417,
+                     ClassData{prior = -1.8315552963929982, unseen = -5.75890177387728,
                                likelihoods =
                                  HashMap.fromList
                                    [("Juli<day-of-month> (non ordinal) <named-month>",
-                                     -5.356586274672012),
+                                     -5.062595033026967),
                                     ("absorption of , after named daythe <day-of-month> (non ordinal)",
-                                     -5.356586274672012),
-                                    ("<datetime> - <datetime> (interval)year", -5.356586274672012),
-                                    ("dayhour", -4.663439094112067),
+                                     -5.062595033026967),
+                                    ("<datetime> - <datetime> (interval)year", -5.062595033026967),
+                                    ("dayhour", -4.3694478524670215),
                                     ("<named-month> <day-of-month> (non ordinal)Juli",
-                                     -5.356586274672012),
-                                    ("daymonth", -3.484784097770421),
-                                    ("monthday", -4.951121166563848),
-                                    ("monthyear", -5.356586274672012),
-                                    ("yearhour", -5.356586274672012),
-                                    ("after lunchat <time-of-day>", -4.951121166563848),
-                                    ("mm/dduntil <time-of-day>", -4.951121166563848),
-                                    ("until <time-of-day>year", -4.951121166563848),
-                                    ("<day-of-month> (ordinal)Dienstag", -4.951121166563848),
-                                    ("absorption of , after named dayFebruar", -4.257973986003902),
-                                    ("on <date>Februar", -5.356586274672012),
-                                    ("intersect by 'of', 'from', 'syear", -4.663439094112067),
-                                    ("<time-of-day> am|pmintersect", -3.651838182433587),
-                                    ("intersect<time> <part-of-day>", -5.356586274672012),
-                                    ("<time-of-day>  o'clockafter lunch", -5.356586274672012),
-                                    ("<day-of-month> (ordinal)Mittwoch", -5.356586274672012),
-                                    ("after lunch<time-of-day>  o'clock", -5.356586274672012),
-                                    ("absorption of , after named dayhh:mm", -5.356586274672012),
-                                    ("<time-of-day> am|pmintersect by ','", -4.103823306176644),
+                                     -5.062595033026967),
+                                    ("daymonth", -3.1907928561253756),
+                                    ("monthday", -4.657129924918802),
+                                    ("monthyear", -5.062595033026967),
+                                    ("yearhour", -5.062595033026967),
+                                    ("after lunchat <time-of-day>", -4.657129924918802),
+                                    ("mm/dduntil <time-of-day>", -4.657129924918802),
+                                    ("until <time-of-day>year", -4.657129924918802),
+                                    ("<day-of-month> (ordinal)Dienstag", -4.657129924918802),
+                                    ("absorption of , after named dayFebruar", -3.963982744358857),
+                                    ("on <date>Februar", -5.062595033026967),
+                                    ("intersect by 'of', 'from', 'syear", -4.3694478524670215),
+                                    ("intersect<time> <part-of-day>", -5.062595033026967),
+                                    ("<time-of-day>  o'clockafter lunch", -5.062595033026967),
+                                    ("<day-of-month> (ordinal)Mittwoch", -5.062595033026967),
+                                    ("after lunch<time-of-day>  o'clock", -5.062595033026967),
+                                    ("absorption of , after named dayhh:mm", -5.062595033026967),
                                     ("<time-of-day>  o'clock<time> <part-of-day>",
-                                     -4.440295542797857),
-                                    ("<time-of-day> am|pmFreitag", -4.951121166563848),
-                                    ("mm/ddhh:mm", -4.440295542797857),
-                                    ("monthhour", -5.356586274672012),
+                                     -4.146304301152812),
+                                    ("mm/ddhh:mm", -4.146304301152812),
+                                    ("monthhour", -5.062595033026967),
                                     ("on <date>between <datetime> and <datetime> (interval)",
-                                     -5.356586274672012),
-                                    ("todayat <time-of-day>", -5.356586274672012),
+                                     -5.062595033026967),
+                                    ("todayat <time-of-day>", -5.062595033026967),
                                     ("Donnerstagfrom <datetime> - <datetime> (interval)",
-                                     -4.951121166563848),
+                                     -4.657129924918802),
                                     ("on <date>between <time-of-day> and <time-of-day> (interval)",
-                                     -5.356586274672012),
-                                    ("dayday", -3.970291913552122),
-                                    ("<time-of-day> am|pmabsorption of , after named day",
-                                     -4.951121166563848),
-                                    ("hourhour", -3.8525088778957386),
+                                     -5.062595033026967),
+                                    ("dayday", -3.676300671907076),
+                                    ("hourhour", -3.5585176362506927),
                                     ("Donnerstagfrom <time-of-day> - <time-of-day> (interval)",
-                                     -4.663439094112067),
-                                    ("Donnerstagafter <time-of-day>", -5.356586274672012),
-                                    ("dayyear", -3.2771447329921766),
-                                    ("minutemonth", -3.484784097770421),
-                                    ("Aprilyear", -5.356586274672012),
-                                    ("Dienstagafter <time-of-day>", -5.356586274672012),
-                                    ("intersect<day-of-month>(ordinal) <named-month>",
-                                     -4.663439094112067),
-                                    ("Donnerstaghh:mm", -4.951121166563848),
-                                    ("<day-of-month> (ordinal)Juli", -4.951121166563848),
-                                    ("<day-of-month> (ordinal)hh:mm", -4.440295542797857),
+                                     -4.3694478524670215),
+                                    ("Donnerstagafter <time-of-day>", -5.062595033026967),
+                                    ("dayyear", -2.9831534913471307),
+                                    ("Aprilyear", -5.062595033026967),
+                                    ("Dienstagafter <time-of-day>", -5.062595033026967),
+                                    ("Donnerstaghh:mm", -4.657129924918802),
+                                    ("<day-of-month> (ordinal)Juli", -4.657129924918802),
+                                    ("<day-of-month> (ordinal)hh:mm", -4.146304301152812),
                                     ("<named-month> <day-of-month> (non ordinal)August",
-                                     -5.356586274672012),
+                                     -5.062595033026967),
                                     ("August<day-of-month> (non ordinal) <named-month>",
-                                     -5.356586274672012),
-                                    ("at <time-of-day>intersect", -4.257973986003902),
+                                     -5.062595033026967),
                                     ("on <date>from <time-of-day> - <time-of-day> (interval)",
-                                     -4.951121166563848),
+                                     -4.657129924918802),
                                     ("Donnerstagbetween <time-of-day> and <time-of-day> (interval)",
-                                     -5.356586274672012),
-                                    ("dayminute", -2.6824376252454836),
+                                     -5.062595033026967),
+                                    ("dayminute", -2.388446383600438),
                                     ("on <date>from <datetime> - <datetime> (interval)",
-                                     -5.356586274672012),
+                                     -5.062595033026967),
                                     ("Donnerstagbetween <datetime> and <datetime> (interval)",
-                                     -5.356586274672012),
-                                    ("until <time-of-day>Juli", -5.356586274672012),
-                                    ("intersectSeptember", -3.747148362237912),
-                                    ("minuteday", -2.3608540011180215),
-                                    ("intersect by ','September", -4.663439094112067),
-                                    ("at <time-of-day>intersect by ','", -4.663439094112067),
-                                    ("at <time-of-day>Freitag", -5.356586274672012),
-                                    ("at <time-of-day>absorption of , after named day",
-                                     -5.356586274672012),
-                                    ("year<time> <part-of-day>", -5.356586274672012),
-                                    ("mm/ddyear", -3.8525088778957386),
-                                    ("intersect<day-of-month> (ordinal)", -4.663439094112067),
+                                     -5.062595033026967),
+                                    ("until <time-of-day>Juli", -5.062595033026967),
+                                    ("year<time> <part-of-day>", -5.062595033026967),
+                                    ("mm/ddyear", -3.5585176362506927),
                                     ("<day-of-month> (ordinal)intersect by 'of', 'from', 's",
-                                     -4.951121166563848),
-                                    ("intersectintersect", -4.663439094112067),
-                                    ("Donnerstag<part-of-day> of <time>", -5.356586274672012),
-                                    ("<day-of-month> (ordinal)April", -5.356586274672012),
+                                     -4.657129924918802),
+                                    ("Donnerstag<part-of-day> of <time>", -5.062595033026967),
+                                    ("<day-of-month> (ordinal)April", -5.062595033026967),
                                     ("Donnerstag<time-of-day> - <time-of-day> (interval)",
-                                     -5.356586274672012),
-                                    ("after <time-of-day>year", -5.356586274672012),
-                                    ("on <date>after <time-of-day>", -5.356586274672012),
-                                    ("tomorrownoon", -5.356586274672012)],
-                               n = 129}}),
+                                     -5.062595033026967),
+                                    ("after <time-of-day>year", -5.062595033026967),
+                                    ("on <date>after <time-of-day>", -5.062595033026967),
+                                    ("tomorrownoon", -5.062595033026967)],
+                               n = 78}}),
        ("<ordinal> <cycle> of <time>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -2.4849066497880004,
@@ -1115,26 +1089,24 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("about <time-of-day>",
         Classifier{okData =
-                     ClassData{prior = -0.13353139262452263,
-                               unseen = -3.4965075614664802,
+                     ClassData{prior = -6.899287148695143e-2,
+                               unseen = -3.4657359027997265,
                                likelihoods =
                                  HashMap.fromList
-                                   [("<time-of-day>  o'clock", -1.3862943611198906),
-                                    ("time-of-day (latent)", -1.3862943611198906),
-                                    ("hour", -0.7576857016975165)],
+                                   [("<time-of-day>  o'clock", -1.3545456628053103),
+                                    ("time-of-day (latent)", -1.3545456628053103),
+                                    ("hour", -0.7259370033829361)],
                                n = 14},
                    koData =
-                     ClassData{prior = -2.0794415416798357,
-                               unseen = -2.1972245773362196,
+                     ClassData{prior = -2.70805020110221, unseen = -1.791759469228055,
                                likelihoods =
                                  HashMap.fromList
-                                   [("time-of-day (latent)", -1.3862943611198906),
-                                    ("<time-of-day> am|pm", -1.3862943611198906),
-                                    ("hour", -0.9808292530117262)],
-                               n = 2}}),
+                                   [("time-of-day (latent)", -0.916290731874155),
+                                    ("hour", -0.916290731874155)],
+                               n = 1}}),
        ("time-of-day (latent)",
         Classifier{okData =
-                     ClassData{prior = -0.39890770756200533,
+                     ClassData{prior = -0.3856624808119846,
                                unseen = -3.9889840465642745,
                                likelihoods =
                                  HashMap.fromList
@@ -1142,12 +1114,12 @@
                                     ("integer (0..19)", -2.3608540011180215)],
                                n = 51},
                    koData =
-                     ClassData{prior = -1.1118575154181303, unseen = -3.332204510175204,
+                     ClassData{prior = -1.1394342831883648, unseen = -3.295836866004329,
                                likelihoods =
                                  HashMap.fromList
-                                   [("integer (numeric)", -0.11778303565638351),
-                                    ("integer (0..19)", -2.1972245773362196)],
-                               n = 25}}),
+                                   [("integer (numeric)", -0.12260232209233239),
+                                    ("integer (0..19)", -2.159484249353372)],
+                               n = 24}}),
        ("year",
         Classifier{okData =
                      ClassData{prior = -8.338160893905101e-2,
@@ -1234,32 +1206,6 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time-of-day> am|pm",
-        Classifier{okData =
-                     ClassData{prior = -1.845826690498331, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -2.0794415416798357),
-                                    ("hh:mm", -2.0794415416798357),
-                                    ("until <time-of-day>", -2.0794415416798357),
-                                    ("hour", -1.6739764335716716), ("minute", -2.0794415416798357)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -0.17185025692665928,
-                               unseen = -3.7612001156935624,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("at <time-of-day>", -2.3513752571634776),
-                                    ("<time-of-day>  o'clock", -2.3513752571634776),
-                                    ("half <integer> (german style hour-of-day)",
-                                     -3.044522437723423),
-                                    ("about <time-of-day>", -3.044522437723423),
-                                    ("time-of-day (latent)", -2.128231705849268),
-                                    ("hh:mm", -2.3513752571634776), ("hour", -1.4350845252893227),
-                                    ("minute", -1.6582280766035324),
-                                    ("<hour-of-day> <integer> (as relative minutes)",
-                                     -3.044522437723423)],
-                               n = 16}}),
        ("<duration> after <time>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -2.0794415416798357,
@@ -1358,62 +1304,58 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("intersect by ','",
         Classifier{okData =
-                     ClassData{prior = -0.2531958963806117,
-                               unseen = -5.0106352940962555,
+                     ClassData{prior = -0.13353139262452263,
+                               unseen = -4.969813299576001,
                                likelihoods =
                                  HashMap.fromList
                                    [("Freitag<day-of-month>(ordinal) <named-month> year",
-                                     -3.9053340172773496),
-                                    ("dayhour", -2.8067217286092396),
-                                    ("Freitagintersect", -2.0082140323914683),
+                                     -3.8642323415917974),
+                                    ("dayhour", -2.765620052923688),
+                                    ("Freitagintersect", -1.967112356705916),
                                     ("Samstag<day-of-month>(ordinal) <named-month>",
-                                     -4.310799125385514),
-                                    ("Freitagmm/dd/yyyy", -3.9053340172773496),
-                                    ("Freitagmm/dd", -3.9053340172773496),
-                                    ("dayday", -1.3403846598158127),
-                                    ("Samstagintersect", -4.310799125385514),
-                                    ("dayyear", -4.310799125385514),
+                                     -4.269697449699962),
+                                    ("Freitagmm/dd/yyyy", -3.8642323415917974),
+                                    ("Freitagmm/dd", -3.8642323415917974),
+                                    ("dayday", -1.2992829841302609),
+                                    ("Samstagintersect", -4.269697449699962),
+                                    ("dayyear", -4.269697449699962),
                                     ("Freitag<day-of-month>(ordinal) <named-month>",
-                                     -3.6176519448255684),
-                                    ("Freitagthe <day-of-month> (ordinal)", -4.310799125385514),
+                                     -3.5765502691400166),
+                                    ("Freitagthe <day-of-month> (ordinal)", -4.269697449699962),
                                     ("on <date><day-of-month>(ordinal) <named-month>",
-                                     -3.9053340172773496),
+                                     -3.8642323415917974),
                                     ("intersect<day-of-month>(ordinal) <named-month>",
-                                     -3.3945083935113587),
-                                    ("Freitag<day-of-month> (ordinal)", -3.6176519448255684),
-                                    ("on <date>intersect", -3.9053340172773496),
-                                    ("on <date><day-of-month> (ordinal)", -3.9053340172773496),
-                                    ("minuteday", -2.4389969484839225),
+                                     -3.5765502691400166),
+                                    ("Freitag<day-of-month> (ordinal)", -3.5765502691400166),
+                                    ("on <date>intersect", -3.8642323415917974),
+                                    ("on <date><day-of-month> (ordinal)", -3.8642323415917974),
+                                    ("minuteday", -2.6602595372658615),
                                     ("Montag<named-month> <day-of-month> (non ordinal)",
-                                     -3.6176519448255684),
+                                     -3.5765502691400166),
                                     ("Sonntag<named-month> <day-of-month> (non ordinal)",
-                                     -4.310799125385514),
-                                    ("intersect<day-of-month> (ordinal)", -3.3945083935113587),
-                                    ("intersectintersect", -3.3945083935113587),
-                                    ("Samstag<day-of-month> (ordinal)", -4.310799125385514),
+                                     -4.269697449699962),
+                                    ("intersect<day-of-month> (ordinal)", -3.5765502691400166),
+                                    ("intersectintersect", -3.5765502691400166),
+                                    ("Samstag<day-of-month> (ordinal)", -4.269697449699962),
                                     ("Mittwoch<named-month> <day-of-month> (non ordinal)",
-                                     -4.310799125385514),
+                                     -4.269697449699962),
                                     ("<named-month> <day-of-month> (non ordinal)year",
-                                     -4.310799125385514)],
-                               n = 59},
+                                     -4.269697449699962)],
+                               n = 56},
                    koData =
-                     ClassData{prior = -1.497519996230115, unseen = -4.189654742026425,
+                     ClassData{prior = -2.0794415416798357, unseen = -3.871201010907891,
                                likelihoods =
                                  HashMap.fromList
-                                   [("daymonth", -2.382627800667582),
-                                    ("dayday", -3.481240089335692),
-                                    ("SonntagFebruar", -3.481240089335692),
-                                    ("MontagFebruar", -2.7880929087757464),
-                                    ("Freitagthe <day-of-month> (non ordinal)", -3.481240089335692),
-                                    ("intersect<day-of-month>(ordinal) <named-month>",
-                                     -2.7880929087757464),
-                                    ("dayminute", -3.0757749812275272),
-                                    ("MittwochFebruar", -3.481240089335692),
-                                    ("minuteday", -1.8718021769015913),
-                                    ("Freitaghh:mm", -3.0757749812275272),
-                                    ("intersect<day-of-month> (ordinal)", -2.7880929087757464),
-                                    ("intersectintersect", -2.7880929087757464)],
-                               n = 17}}),
+                                   [("daymonth", -2.0583881324820035),
+                                    ("dayday", -3.1570004211501135),
+                                    ("SonntagFebruar", -3.1570004211501135),
+                                    ("MontagFebruar", -2.463853240590168),
+                                    ("Freitagthe <day-of-month> (non ordinal)",
+                                     -3.1570004211501135),
+                                    ("dayminute", -2.751535313041949),
+                                    ("MittwochFebruar", -3.1570004211501135),
+                                    ("Freitaghh:mm", -2.751535313041949)],
+                               n = 8}}),
        ("second (grain)",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -1.9459101490553135,
@@ -1547,31 +1489,31 @@
                                likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
        ("until <time-of-day>",
         Classifier{okData =
-                     ClassData{prior = -0.5108256237659907, unseen = -4.0943445622221,
+                     ClassData{prior = -0.5520685823000397, unseen = -4.007333185232471,
                                likelihoods =
                                  HashMap.fromList
-                                   [("<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},
+                                   [("<time> <part-of-day>", -2.1972245773362196),
+                                    ("<time-of-day>  o'clock", -2.1972245773362196),
+                                    ("intersect", -3.295836866004329),
+                                    ("time-of-day (latent)", -2.043073897508961),
+                                    ("EOM|End of month", -3.295836866004329),
+                                    ("hour", -1.0445450673978338), ("month", -3.295836866004329),
+                                    ("midnight|EOD|end of day", -3.295836866004329)],
+                               n = 19},
                    koData =
-                     ClassData{prior = -0.916290731874155, unseen = -3.828641396489095,
+                     ClassData{prior = -0.8574502318512216,
+                               unseen = -3.8066624897703196,
                                likelihoods =
                                  HashMap.fromList
-                                   [("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),
+                                   [("mm/dd", -2.6855773452501515),
+                                    ("intersect", -2.3978952727983707),
+                                    ("mm/dd/yyyy", -2.6855773452501515),
+                                    ("<day-of-month>(ordinal) <named-month>", -3.0910424533583156),
+                                    ("day", -1.3862943611198906), ("hh:mm", -2.174751721484161),
+                                    ("<day-of-month> (ordinal)", -3.0910424533583156),
                                     ("<day-of-month> (non ordinal) <named-month>",
-                                     -3.1135153092103742),
-                                    ("minute", -2.1972245773362196)],
+                                     -3.0910424533583156),
+                                    ("minute", -2.174751721484161)],
                                n = 14}}),
        ("<integer> and an half hours",
         Classifier{okData =
diff --git a/Duckling/Ranking/Classifiers/EN_CA.hs b/Duckling/Ranking/Classifiers/EN_CA.hs
--- a/Duckling/Ranking/Classifiers/EN_CA.hs
+++ b/Duckling/Ranking/Classifiers/EN_CA.hs
@@ -60,2989 +60,3206 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("Thursday",
         Classifier{okData =
-                     ClassData{prior = -9.53101798043249e-2,
-                               unseen = -3.4657359027997265,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 30},
-                   koData =
-                     ClassData{prior = -2.3978952727983707,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("integer (numeric)",
-        Classifier{okData =
-                     ClassData{prior = -0.6142532380902823, unseen = -5.676753802268282,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 290},
-                   koData =
-                     ClassData{prior = -0.7788026251384392,
-                               unseen = -5.5134287461649825,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 246}}),
-       ("<duration> hence|ago",
-        Classifier{okData =
-                     ClassData{prior = -5.406722127027582e-2,
-                               unseen = -3.784189633918261,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.563975538357343), ("day", -1.8152899666382492),
-                                    ("year", -2.662587827025453),
-                                    ("<integer> <unit-of-duration>", -1.0531499145913523),
-                                    ("a <unit-of-duration>", -2.662587827025453),
-                                    ("month", -2.662587827025453),
-                                    ("fortnight", -2.662587827025453)],
-                               n = 18},
-                   koData =
-                     ClassData{prior = -2.9444389791664407,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("year", -1.5040773967762742),
-                                    ("<integer> <unit-of-duration>", -1.5040773967762742)],
-                               n = 1}}),
-       ("noon|midnight|EOD|end of day",
-        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}}),
-       ("quarter to|till|before <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("noon|midnight|EOD|end of day", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Father's Day",
-        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}}),
-       ("<cycle> after|before <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)tomorrow", -1.6739764335716716),
-                                    ("dayday", -1.1631508098056809),
-                                    ("day (grain)yesterday", -1.6739764335716716)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -1.6739764335716716),
-                                    ("year (grain)Christmas", -2.0794415416798357),
-                                    ("dayday", -2.0794415416798357),
-                                    ("day (grain)intersect", -1.6739764335716716),
-                                    ("day (grain)Easter Sunday", -2.0794415416798357),
-                                    ("yearday", -2.0794415416798357)],
-                               n = 4}}),
-       ("Easter Monday",
-        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}}),
-       ("Navaratri",
-        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}}),
-       ("Martin Luther King's Day",
-        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}}),
-       ("integer (20..90)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Shemini Atzeret",
-        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}}),
-       ("Ramadan",
-        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}}),
-       ("Lazarus Saturday",
-        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}}),
-       ("intersect 2 numbers",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("compose by multiplicationinteger (0..19)",
-                                     -0.2231435513142097)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("powers of tensinteger (0..19)", -0.2231435513142097)],
-                               n = 3}}),
-       ("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,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.8109302162163288),
-                                    ("integer (numeric)time-of-day (latent)", -1.0986122886681098),
-                                    ("integer (20..90)time-of-day (latent)", -1.5040773967762742)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Yom HaShoah",
-        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-month> (ordinal or number) <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -1.3862943611198906, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)December", -2.1400661634962708),
-                                    ("ordinal (digits)February", -2.1400661634962708),
-                                    ("integer (numeric)April", -2.1400661634962708),
-                                    ("month", -1.4469189829363254)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -3.4011973816621555,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)October", -2.6741486494265287),
-                                    ("ordinal (digits)July", -2.6741486494265287),
-                                    ("integer (numeric)September", -2.268683541318364),
-                                    ("ordinal (digits)August", -2.6741486494265287),
-                                    ("integer (numeric)August", -2.6741486494265287),
-                                    ("ordinal (digits)April", -2.6741486494265287),
-                                    ("month", -1.0647107369924282),
-                                    ("integer (numeric)July", -2.268683541318364)],
-                               n = 9}}),
-       ("<time> <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -9.237332013101517e-2,
-                               unseen = -4.48863636973214,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("dayhour", -1.4816045409242156),
-                                    ("Mondayearly morning", -3.378724525810097),
-                                    ("time-of-day (latent)tonight", -3.378724525810097),
-                                    ("hourhour", -2.3978952727983707),
-                                    ("<time-of-day> o'clockin|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("todaypart of days", -3.784189633918261),
-                                    ("minutehour", -2.6855773452501515),
-                                    ("at <time-of-day>in|during the <part-of-day>",
-                                     -3.378724525810097),
-                                    ("time-of-day (latent)this <part-of-day>", -3.784189633918261),
-                                    ("Mondayin|during the <part-of-day>", -3.784189633918261),
-                                    ("intersectpart of days", -3.784189633918261),
-                                    ("intersectin|during the <part-of-day>", -3.784189633918261),
-                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("tomorrowpart of days", -2.3978952727983707),
-                                    ("hh:mmin|during the <part-of-day>", -3.0910424533583156),
-                                    ("time-of-day (latent)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("hhmm (latent)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("yesterdaypart of days", -3.378724525810097),
-                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("Mondaypart of days", -3.784189633918261)],
-                               n = 31},
-                   koData =
-                     ClassData{prior = -2.4277482359480516,
-                               unseen = -3.4965075614664802,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("yearhour", -2.772588722239781),
-                                    ("monthhour", -2.772588722239781),
-                                    ("hourhour", -2.772588722239781),
-                                    ("year (latent)in|during the <part-of-day>",
-                                     -2.772588722239781),
-                                    ("Februaryin|during the <part-of-day>", -2.772588722239781),
-                                    ("time-of-day (latent)in|during the <part-of-day>",
-                                     -2.772588722239781)],
-                               n = 3}}),
-       ("today",
-        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}}),
-       ("mm/dd",
-        Classifier{okData =
-                     ClassData{prior = -1.2729656758128873,
-                               unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
-                   koData =
-                     ClassData{prior = -0.3285040669720361, unseen = -2.995732273553991,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 18}}),
-       ("at <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -8.961215868968717e-2,
-                               unseen = -4.948759890378168,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<time> timezone", -3.8430301339411947),
-                                    ("noon|midnight|EOD|end of day", -3.8430301339411947),
-                                    ("integer after|past <hour-of-day>", -3.8430301339411947),
-                                    ("half after|past <hour-of-day>", -4.248495242049359),
-                                    ("time-of-day (latent)", -1.6835458845878222),
-                                    ("hhmm (latent)", -3.5553480614894135),
-                                    ("<time-of-day> am|pm", -1.8061482066801546),
-                                    ("hh:mm", -3.332204510175204),
-                                    ("about|exactly <time-of-day>", -3.8430301339411947),
-                                    ("hour", -1.0704414117014134),
-                                    ("<time-of-day> sharp|exactly", -4.248495242049359),
-                                    ("minute", -2.05127066471314)],
-                               n = 64},
-                   koData =
-                     ClassData{prior = -2.456735772821304, unseen = -3.2188758248682006,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -1.2321436812926323),
-                                    ("hour", -1.2321436812926323)],
-                               n = 6}}),
-       ("December",
-        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}}),
-       ("absorption of , after named day",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("on <date>", -2.1972245773362196),
-                                    ("Wednesday", -2.6026896854443837),
-                                    ("Saturday", -2.6026896854443837),
-                                    ("Monday", -2.1972245773362196),
-                                    ("Friday", -1.9095425048844386), ("day", -0.8979415932059586),
-                                    ("Sunday", -2.6026896854443837)],
-                               n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("September",
-        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}}),
-       ("tonight",
-        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}}),
-       ("last|past|next <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -4.2626798770413155,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.456735772821304), ("second", -2.639057329615259),
-                                    ("day", -2.3025850929940455), ("year", -2.639057329615259),
-                                    ("<integer> <unit-of-duration>", -0.7827593392496325),
-                                    ("hour", -2.639057329615259), ("month", -2.639057329615259),
-                                    ("minute", -2.639057329615259)],
-                               n = 31},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("the ides of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("on <date>",
-        Classifier{okData =
-                     ClassData{prior = -0.13353139262452263,
-                               unseen = -4.204692619390966,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Thursday", -1.4816045409242156),
-                                    ("mm/dd", -3.4965075614664802),
-                                    ("absorption of , after named day", -3.0910424533583156),
-                                    ("intersect", -3.0910424533583156),
-                                    ("Saturday", -2.803360380906535),
-                                    ("Friday", -3.4965075614664802), ("day", -0.8574502318512216),
-                                    ("the <day-of-month> (ordinal)", -3.0910424533583156),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -2.803360380906535),
-                                    ("hour", -3.4965075614664802)],
-                               n = 28},
-                   koData =
-                     ClassData{prior = -2.0794415416798357,
-                               unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersect", -1.791759469228055), ("day", -1.2809338454620642),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -1.791759469228055)],
-                               n = 4}}),
-       ("integer (0..19)",
-        Classifier{okData =
-                     ClassData{prior = -0.11122563511022437,
-                               unseen = -3.970291913552122,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 51},
-                   koData =
-                     ClassData{prior = -2.2512917986064953,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
-       ("between <time-of-day> and <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -0.7884573603642702),
-                                    ("hh:mmhh:mm", -0.7884573603642702)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -0.7884573603642702),
-                                    ("minutehour", -0.7884573603642702)],
-                               n = 9}}),
-       ("Halloween",
-        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}}),
-       ("Passover",
-        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}}),
-       ("from <month> dd-dd (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Julyinteger (numeric)integer (numeric)", -1.6094379124341003),
-                                    ("Augustordinal (digits)integer (numeric)",
-                                     -1.6094379124341003),
-                                    ("month", -0.916290731874155),
-                                    ("Augustordinal (digits)ordinal (digits)",
-                                     -1.6094379124341003)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("October",
-        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}}),
-       ("from|since|after <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -1.5950491749820006, unseen = -4.04305126783455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("July", -3.332204510175204),
-                                    ("time-of-day (latent)", -2.4159137783010487),
-                                    ("<time-of-day> am|pm", -2.4159137783010487),
-                                    ("hh:mm", -2.4159137783010487), ("hour", -1.8281271133989299),
-                                    ("month", -2.9267394020670396), ("minute", -2.4159137783010487),
-                                    ("August", -3.332204510175204)],
-                               n = 14},
-                   koData =
-                     ClassData{prior = -0.22677331936478848,
-                               unseen = -4.9344739331306915,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> to|till|before <hour-of-day>", -3.828641396489095),
-                                    ("week", -4.23410650459726),
-                                    ("<day-of-month> (ordinal or number) <named-month>",
-                                     -4.23410650459726),
-                                    ("today", -4.23410650459726), ("intersect", -2.362304327695668),
-                                    ("second", -4.23410650459726), ("now", -3.5409593240373143),
-                                    ("tomorrow", -3.828641396489095),
-                                    ("this|last|next <cycle>", -4.23410650459726),
-                                    ("day", -1.8827312474337816),
-                                    ("time-of-day (latent)", -4.23410650459726),
-                                    ("<time-of-day> am|pm", -3.828641396489095),
-                                    ("nograin", -3.5409593240373143),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)",
-                                     -4.23410650459726),
-                                    ("Easter Sunday", -4.23410650459726),
-                                    ("Christmas", -3.5409593240373143),
-                                    ("hour", -2.981343536101891), ("month", -4.23410650459726),
-                                    ("<datetime> - <datetime> (interval)", -2.847812143477369),
-                                    ("<time-of-day> - <time-of-day> (interval)",
-                                     -2.5293584123588344),
-                                    ("<named-month> <day-of-month> (non ordinal)",
-                                     -3.828641396489095),
-                                    ("minute", -1.749199854809259),
-                                    ("right now", -4.23410650459726),
-                                    ("<month> dd-dd (interval)", -3.5409593240373143),
-                                    ("dd-dd <month> (interval)", -3.828641396489095)],
-                               n = 55}}),
-       ("month (grain)",
-        Classifier{okData =
-                     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}}),
-       ("<integer> more <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)minute (grain)", -0.6931471805599453),
-                                    ("minute", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time-of-day> o'clock",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("in|within|after <duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.11000089521432846,
-                               unseen = -4.6443908991413725,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -3.248434627109745),
-                                    ("<integer> more <unit-of-duration>", -3.9415818076696905),
-                                    ("three-quarters of an hour", -3.0252910757955354),
-                                    ("<integer> + '\"", -3.248434627109745),
-                                    ("number.number hours", -3.9415818076696905),
-                                    ("second", -3.536116699561526), ("day", -3.248434627109745),
-                                    ("half an hour", -3.0252910757955354),
-                                    ("year", -3.9415818076696905),
-                                    ("<integer> <unit-of-duration>", -1.5902065505062128),
-                                    ("a <unit-of-duration>", -3.0252910757955354),
-                                    ("quarter of an hour", -3.0252910757955354),
-                                    ("hour", -2.5552874465498),
-                                    ("about|exactly <duration>", -3.9415818076696905),
-                                    ("<integer> and an half hour", -3.9415818076696905),
-                                    ("minute", -1.3025244780544318)],
-                               n = 43},
-                   koData =
-                     ClassData{prior = -2.2617630984737906, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("quarter", -2.1972245773362196), ("year", -1.9095425048844386),
-                                    ("<integer> <unit-of-duration>", -1.9095425048844386),
-                                    ("a <unit-of-duration>", -2.1972245773362196)],
-                               n = 5}}),
-       ("January",
-        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}}),
-       ("three-quarters of an hour",
-        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}}),
-       ("Mattu Pongal",
-        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}}),
-       ("Wednesday",
-        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}}),
-       ("half after|past <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<integer> + '\"",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("half <integer> (UK style hour-of-day)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Family Day",
-        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}}),
-       ("July",
-        Classifier{okData =
-                     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}}),
-       ("hour (grain)",
-        Classifier{okData =
-                     ClassData{prior = -0.8209805520698302,
-                               unseen = -2.5649493574615367,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},
-                   koData =
-                     ClassData{prior = -0.579818495252942, unseen = -2.772588722239781,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 14}}),
-       ("Shavuot",
-        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}}),
-       ("Vimy Ridge Day",
-        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> <duration> hence|ago",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayyear", -0.6931471805599453),
-                                    ("Diwali<integer> <unit-of-duration>", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<ordinal> quarter",
-        Classifier{okData =
-                     ClassData{prior = -0.4700036292457356, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -1.1786549963416462),
-                                    ("ordinals (first..twentieth,thirtieth,...)quarter (grain)",
-                                     -1.466337068793427),
-                                    ("quarter", -0.7731898882334817)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -0.9808292530117262,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.8109302162163288),
-                                    ("quarter", -0.8109302162163288)],
-                               n = 3}}),
-       ("Boss's Day",
-        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}}),
-       ("Orthodox Easter Sunday",
-        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}}),
-       ("one twenty two",
-        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}}),
-       ("intersect",
-        Classifier{okData =
-                     ClassData{prior = -0.44339892331178415,
-                               unseen = -6.7464121285733745,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Navaratriyear (latent)", -6.052089168924417),
-                                    ("Father's Dayyear (latent)", -6.052089168924417),
-                                    ("Ramadanyear (latent)", -6.052089168924417),
-                                    ("<datetime> - <datetime> (interval)on <date>",
-                                     -4.799326200429049),
-                                    ("Bhai Doojyear (latent)", -6.052089168924417),
-                                    ("<time-of-day> - <time-of-day> (interval)on <date>",
-                                     -4.799326200429049),
-                                    ("hourday", -4.347341076685992),
-                                    ("dayhour", -3.134318436840138),
-                                    ("Martin Luther King's Dayyear (latent)", -5.646624060816253),
-                                    ("Shemini Atzeretyear (latent)", -6.052089168924417),
-                                    ("daymonth", -5.358941988364472),
-                                    ("monthday", -5.646624060816253),
-                                    ("monthyear", -4.442651256490317),
-                                    ("Yom Ha'atzmautyear (latent)", -6.052089168924417),
-                                    ("Vijayadashamiyear (latent)", -6.052089168924417),
-                                    ("Thanksgiving Dayyear (latent)", -4.953476880256307),
-                                    ("Thai Pongalyear (latent)", -5.358941988364472),
-                                    ("Thiru Onamyear (latent)", -5.358941988364472),
-                                    ("Tuesdaythe <day-of-month> (ordinal)", -6.052089168924417),
-                                    ("from <datetime> - <datetime> (interval)July",
-                                     -6.052089168924417),
-                                    ("houryear", -5.358941988364472),
-                                    ("this|next <day-of-week>hh(:mm) - <time-of-day> am|pm",
-                                     -6.052089168924417),
-                                    ("Christmas<time-of-day> am|pm", -6.052089168924417),
-                                    ("last <day-of-week> of <time>year (latent)",
-                                     -6.052089168924417),
-                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -5.358941988364472),
-                                    ("<time-of-day> am|pmintersect", -4.799326200429049),
-                                    ("Family Dayyear (latent)", -5.135798437050262),
-                                    ("Octoberyear (latent)", -4.799326200429049),
-                                    ("intersect<time-of-day> am|pm", -6.052089168924417),
-                                    ("Mattu Pongalyear (latent)", -6.052089168924417),
-                                    ("Shavuotyear (latent)", -6.052089168924417),
-                                    ("Dhanterasin <named-month>|year", -6.052089168924417),
-                                    ("at <time-of-day>in|within|after <duration>",
-                                     -6.052089168924417),
-                                    ("Thursdayhh(:mm) - <time-of-day> am|pm", -6.052089168924417),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -5.646624060816253),
-                                    ("Marchyear (latent)", -6.052089168924417),
-                                    ("Sukkotyear (latent)", -5.646624060816253),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -6.052089168924417),
-                                    ("Clean Mondayyear (latent)", -5.646624060816253),
-                                    ("monthhour", -5.646624060816253),
-                                    ("todayat <time-of-day>", -6.052089168924417),
-                                    ("Thursday<time> timezone", -4.347341076685992),
-                                    ("this <time>hh(:mm) - <time-of-day> am|pm",
-                                     -6.052089168924417),
-                                    ("Palm SundaySunday", -5.646624060816253),
-                                    ("dayday", -3.8548645915881976),
-                                    ("<time> <part-of-day>at <time-of-day>", -6.052089168924417),
-                                    ("mm/ddat <time-of-day>", -6.052089168924417),
-                                    ("tonightat <time-of-day>", -6.052089168924417),
-                                    ("<time-of-day> am|pmabsorption of , after named day",
-                                     -5.358941988364472),
-                                    ("today<time-of-day> am|pm", -6.052089168924417),
-                                    ("Februarythe <day-of-month> (ordinal)", -5.646624060816253),
-                                    ("at <time-of-day><time> <part-of-day>", -6.052089168924417),
-                                    ("mm/dd<time-of-day> am|pm", -6.052089168924417),
-                                    ("hourhour", -4.799326200429049),
-                                    ("<time-of-day> am|pmon <date>", -4.037186148382152),
-                                    ("National Patriots' Dayyear (latent)", -5.358941988364472),
-                                    ("Wednesdaythis|last|next <cycle>", -6.052089168924417),
-                                    ("Lentyear (latent)", -6.052089168924417),
-                                    ("intersect<named-month> <day-of-month> (non ordinal)",
-                                     -4.548011772148143),
-                                    ("Boghiyear (latent)", -6.052089168924417),
-                                    ("dayyear", -1.9330519941119446),
-                                    ("<time-of-day> o'clockin|during the <part-of-day>",
-                                     -6.052089168924417),
-                                    ("Thursdayat <time-of-day>", -5.646624060816253),
-                                    ("Islamic New Yearyear (latent)", -5.646624060816253),
-                                    ("Laylat al-Qadryear (latent)", -5.135798437050262),
-                                    ("Chhathin <named-month>|year", -6.052089168924417),
-                                    ("Vasant Panchamiin <named-month>|year", -6.052089168924417),
-                                    ("Diwaliin <named-month>|year", -6.052089168924417),
-                                    ("Discovery Dayyear (latent)", -5.646624060816253),
-                                    ("Shrove Tuesdayyear (latent)", -6.052089168924417),
-                                    ("<time-of-day> am|pmtomorrow", -5.358941988364472),
-                                    ("Yom Kippuryear (latent)", -6.052089168924417),
-                                    ("<part-of-day> of <time>year (latent)", -6.052089168924417),
-                                    ("minutehour", -5.135798437050262),
-                                    ("Kaanum Pongalyear (latent)", -5.646624060816253),
-                                    ("Maha Saptamiyear (latent)", -6.052089168924417),
-                                    ("at <time-of-day>in|during the <part-of-day>",
-                                     -5.646624060816253),
-                                    ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
-                                     -4.347341076685992),
-                                    ("for <duration> from <time>December", -6.052089168924417),
-                                    ("tomorrow<time-of-day> sharp|exactly", -6.052089168924417),
-                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
-                                     -5.135798437050262),
-                                    ("on <date><named-month> <day-of-month> (non ordinal)",
-                                     -5.646624060816253),
-                                    ("Pentecostyear (latent)", -6.052089168924417),
-                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.135798437050262),
-                                    ("Eid al-Fitryear (latent)", -6.052089168924417),
-                                    ("Mondayin|during the <part-of-day>", -6.052089168924417),
-                                    ("Raksha Bandhanyear (latent)", -6.052089168924417),
-                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.646624060816253),
-                                    ("Navaratriin <named-month>|year", -6.052089168924417),
-                                    ("Ashurayear (latent)", -6.052089168924417),
-                                    ("Chinese New Yearyear (latent)", -6.052089168924417),
-                                    ("Sundayyear (latent)", -6.052089168924417),
-                                    ("Lag BaOmeryear (latent)", -6.052089168924417),
-                                    ("last weekend of <named-month>year (latent)",
-                                     -6.052089168924417),
-                                    ("Eid al-Adhayear (latent)", -5.135798437050262),
-                                    ("intersectin|during the <part-of-day>", -6.052089168924417),
-                                    ("Christmasat <time-of-day>", -6.052089168924417),
-                                    ("Passoveryear (latent)", -6.052089168924417),
-                                    ("Lazarus Saturdayyear (latent)", -6.052089168924417),
-                                    ("<day-of-month> (ordinal or number) <named-month>year (latent)",
-                                     -6.052089168924417),
-                                    ("Yom HaShoahyear (latent)", -5.646624060816253),
-                                    ("Thursday<datetime> - <datetime> (interval)",
-                                     -5.135798437050262),
-                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
-                                     -6.052089168924417),
-                                    ("Thai Pongalin <named-month>|year", -6.052089168924417),
-                                    ("Septemberyear (latent)", -5.646624060816253),
-                                    ("mm/ddyear (latent)", -6.052089168924417),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -4.799326200429049),
-                                    ("Halloweenyear (latent)", -6.052089168924417),
-                                    ("from <time-of-day> - <time-of-day> (interval)on <date>",
-                                     -5.358941988364472),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
-                                     -5.135798437050262),
-                                    ("at <time-of-day>intersect", -5.646624060816253),
-                                    ("Rosh Hashanahyear (latent)", -6.052089168924417),
-                                    ("Dhanterasyear (latent)", -6.052089168924417),
-                                    ("Tu BiShvatyear (latent)", -6.052089168924417),
-                                    ("Holiyear (latent)", -5.358941988364472),
-                                    ("<time-of-day> - <time-of-day> (interval)tomorrow",
-                                     -6.052089168924417),
-                                    ("Holika Dahanyear (latent)", -5.358941988364472),
-                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -6.052089168924417),
-                                    ("dayminute", -3.4130318393091583),
-                                    ("Mawlidyear (latent)", -6.052089168924417),
-                                    ("from <datetime> - <datetime> (interval)on <date>",
-                                     -5.646624060816253),
-                                    ("<datetime> - <datetime> (interval)tomorrow",
-                                     -6.052089168924417),
-                                    ("Jumu'atul-Widayear (latent)", -5.135798437050262),
-                                    ("absorption of , after named dayintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -6.052089168924417),
-                                    ("minuteday", -2.414503009198031),
-                                    ("absorption of , after named dayintersect",
-                                     -6.052089168924417),
-                                    ("intersectyear (latent)", -6.052089168924417),
-                                    ("Orthodox Easter Sundayyear (latent)", -6.052089168924417),
-                                    ("<ordinal> <cycle> of <time>year (latent)",
-                                     -6.052089168924417),
-                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -6.052089168924417),
-                                    ("Boss's Dayyear (latent)", -5.646624060816253),
-                                    ("Tisha B'Avyear (latent)", -6.052089168924417),
-                                    ("Isra and Mi'rajyear (latent)", -5.135798437050262),
-                                    ("at <time-of-day>absorption of , after named day",
-                                     -6.052089168924417),
-                                    ("Christmasyear (latent)", -5.646624060816253),
-                                    ("Naraka Chaturdashiyear (latent)", -5.646624060816253),
-                                    ("at <time-of-day>on <date>", -4.953476880256307),
-                                    ("between <time-of-day> and <time-of-day> (interval)on <date>",
-                                     -4.442651256490317),
-                                    ("dayweek", -6.052089168924417),
-                                    ("Easter Sundayyear (latent)", -5.358941988364472),
-                                    ("Thursday<time-of-day> am|pm", -6.052089168924417),
-                                    ("Labour Dayyear (latent)", -6.052089168924417),
-                                    ("weekyear", -5.646624060816253),
-                                    ("hh:mmin|during the <part-of-day>", -5.358941988364472),
-                                    ("<cycle> after|before <time><time-of-day> am|pm",
-                                     -5.646624060816253),
-                                    ("Hanukkahyear (latent)", -6.052089168924417),
-                                    ("February<time> <part-of-day>", -6.052089168924417),
-                                    ("Tuesdayin <named-month>|year", -6.052089168924417),
-                                    ("Great Lentyear (latent)", -6.052089168924417),
-                                    ("tomorrowat <time-of-day>", -5.358941988364472),
-                                    ("between <time> and <time>on <date>", -4.442651256490317),
-                                    ("Thursdayfrom|since|after <time-of-day>", -5.358941988364472),
-                                    ("last <cycle> of <time>year (latent)", -5.358941988364472),
-                                    ("at <time-of-day>tomorrow", -5.646624060816253),
-                                    ("tomorrow<time-of-day> am|pm", -6.052089168924417),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -6.052089168924417),
-                                    ("Diwaliyear (latent)", -6.052089168924417),
-                                    ("Black Fridayyear (latent)", -5.646624060816253),
-                                    ("in|during the <part-of-day>at <time-of-day>",
-                                     -6.052089168924417),
-                                    ("Chhathyear (latent)", -5.646624060816253),
-                                    ("Vasant Panchamiyear (latent)", -6.052089168924417),
-                                    ("Palm Sundayintersect", -6.052089168924417),
-                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
-                                     -6.052089168924417),
-                                    ("Februaryintersect", -6.052089168924417),
-                                    ("Mother's Dayyear (latent)", -6.052089168924417),
-                                    ("Simchat Torahyear (latent)", -6.052089168924417),
-                                    ("Victoria Dayyear (latent)", -5.646624060816253)],
-                               n = 319},
-                   koData =
-                     ClassData{prior = -1.0268064758045434, unseen = -6.343880434126331,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<time-of-day> - <time-of-day> (interval)on <date>",
-                                     -5.648974238161206),
-                                    ("hourday", -5.648974238161206),
-                                    ("<named-month> <day-of-month> (non ordinal)July",
-                                     -5.648974238161206),
-                                    ("dayhour", -3.2066272027920015),
-                                    ("daymonth", -3.56953269648137),
-                                    ("monthday", -5.243509130053042),
-                                    ("monthyear", -4.396211269665838),
-                                    ("<time-of-day> am|pmyear (latent)", -5.243509130053042),
-                                    ("Thai Pongalyear (latent)", -4.955827057601261),
-                                    ("intersecthh:mm", -5.648974238161206),
-                                    ("from <datetime> - <datetime> (interval)July",
-                                     -5.648974238161206),
-                                    ("houryear", -4.732683506287051),
-                                    ("from <time-of-day> - <time-of-day> (interval)July",
-                                     -5.648974238161206),
-                                    ("until <time-of-day><time-of-day> am|pm", -5.648974238161206),
-                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -4.955827057601261),
-                                    ("<time-of-day> am|pmintersect", -4.396211269665838),
-                                    ("Octoberyear (latent)", -5.648974238161206),
-                                    ("from|since|after <time-of-day>year (latent)",
-                                     -4.396211269665838),
-                                    ("from|since|after <time-of-day>on <date>", -4.732683506287051),
-                                    ("July<day-of-month> (ordinal or number) <named-month>",
-                                     -5.648974238161206),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -4.396211269665838),
-                                    ("about|exactly <time-of-day>year (latent)",
-                                     -5.648974238161206),
-                                    ("absorption of , after named dayJuly", -5.243509130053042),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -4.732683506287051),
-                                    ("Clean Mondayyear (latent)", -5.648974238161206),
-                                    ("monthhour", -5.648974238161206),
-                                    ("hourmonth", -4.955827057601261),
-                                    ("todayat <time-of-day>", -5.648974238161206),
-                                    ("from|since|after <time-of-day>July", -5.648974238161206),
-                                    ("Mondayyear (latent)", -4.955827057601261),
-                                    ("dayday", -5.243509130053042),
-                                    ("mm/ddat <time-of-day>", -5.243509130053042),
-                                    ("<time-of-day> am|pmon <date>", -4.396211269665838),
-                                    ("dayyear", -2.678559772591505),
-                                    ("Thursdaymm/dd", -5.648974238161206),
-                                    ("New Year's Dayyear (latent)", -5.243509130053042),
-                                    ("Thursdayat <time-of-day>", -4.396211269665838),
-                                    ("<integer> to|till|before <hour-of-day>September",
-                                     -5.648974238161206),
-                                    ("Aprilyear (latent)", -5.648974238161206),
-                                    ("monthminute", -5.648974238161206),
-                                    ("<time-of-day> am|pmtomorrow", -5.648974238161206),
-                                    ("Thursdayhh:mm", -4.732683506287051),
-                                    ("August<day-of-month> (ordinal or number) <named-month>",
-                                     -5.648974238161206),
-                                    ("minutemonth", -3.857214768933151),
-                                    ("Sundayfrom|since|after <time-of-day>", -5.648974238161206),
-                                    ("week-endin <named-month>|year", -5.648974238161206),
-                                    ("Augustyear (latent)", -5.243509130053042),
-                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
-                                     -5.243509130053042),
-                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.243509130053042),
-                                    ("mm/dd<time-of-day> - <time-of-day> (interval)",
-                                     -5.243509130053042),
-                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.648974238161206),
-                                    ("Sundayyear (latent)", -4.955827057601261),
-                                    ("Christmasat <time-of-day>", -5.648974238161206),
-                                    ("<duration> after|before|from <time>December",
-                                     -5.648974238161206),
-                                    ("yesterday<time-of-day> am|pm", -5.648974238161206),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
-                                     -4.732683506287051),
-                                    ("mm/ddyear (latent)", -5.648974238161206),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -5.243509130053042),
-                                    ("<named-month> <day-of-month> (non ordinal)August",
-                                     -5.648974238161206),
-                                    ("until <time-of-day>on <date>", -4.955827057601261),
-                                    ("at <time-of-day>intersect", -5.243509130053042),
-                                    ("hh:mmyear (latent)", -4.550361949493096),
-                                    ("Holiyear (latent)", -5.648974238161206),
-                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -5.648974238161206),
-                                    ("dayminute", -3.164067588373206),
-                                    ("intersectSeptember", -4.144896841384932),
-                                    ("minuteday", -2.580921303027589),
-                                    ("absorption of , after named dayintersect",
-                                     -5.648974238161206),
-                                    ("Februaryin|during the <part-of-day>", -5.648974238161206),
-                                    ("hh:mmon <date>", -3.634071217618941),
-                                    ("Saturdayyear (latent)", -5.648974238161206),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -5.648974238161206),
-                                    ("absorption of , after named daySeptember",
-                                     -4.732683506287051),
-                                    ("Naraka Chaturdashiyear (latent)", -5.648974238161206),
-                                    ("on <date>September", -5.243509130053042),
-                                    ("at <time-of-day>on <date>", -5.243509130053042),
-                                    ("in <named-month>|yearyear (latent)", -5.648974238161206),
-                                    ("dayweek", -5.648974238161206),
-                                    ("Easter Sundayyear (latent)", -5.243509130053042),
-                                    ("Thursday<time-of-day> am|pm", -5.243509130053042),
-                                    ("absorption of , after named dayFebruary", -4.732683506287051),
-                                    ("July<integer> to|till|before <hour-of-day>",
-                                     -5.648974238161206),
-                                    ("tomorrowat <time-of-day>", -5.648974238161206),
-                                    ("<integer> to|till|before <hour-of-day>July",
-                                     -5.648974238161206),
-                                    ("Thursdayfrom|since|after <time-of-day>", -4.039536325727106),
-                                    ("tomorrow<time-of-day> am|pm", -5.648974238161206),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -4.955827057601261),
-                                    ("Diwaliyear (latent)", -5.243509130053042),
-                                    ("Tuesdayfrom|since|after <time-of-day>", -5.648974238161206),
-                                    ("Fridayyear (latent)", -5.243509130053042),
-                                    ("minuteyear", -4.396211269665838)],
-                               n = 178}}),
-       ("one eleven",
-        Classifier{okData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},
-                   koData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("after lunch/work/school",
-        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}}),
-       ("early morning",
-        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}}),
-       ("in <number> (implicit minutes)",
-        Classifier{okData =
-                     ClassData{prior = -1.2039728043259361,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.3184537311185346),
-                                    ("integer (0..19)", -1.2992829841302609)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.35667494393873245,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.19105523676270922),
-                                    ("integer (0..19)", -1.749199854809259)],
-                               n = 21}}),
-       ("<ordinal> <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -1.791759469228055),
-                                    ("ordinal (digits)quarter (grain)year (latent)",
-                                     -2.1972245773362196),
-                                    ("quarteryear", -2.1972245773362196),
-                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)October",
-                                     -2.1972245773362196),
-                                    ("ordinal (digits)day (grain)this|last|next <cycle>",
-                                     -2.1972245773362196),
-                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
-                                     -2.1972245773362196),
-                                    ("weekmonth", -1.791759469228055),
-                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
-                                     -2.1972245773362196)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("year (grain)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.332204510175204,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 26},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("from <datetime> - <datetime> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -1.0116009116784799,
-                               unseen = -3.6375861597263857,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -2.001480000210124),
-                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal)",
-                                     -2.917770732084279),
-                                    ("hh:mmhh:mm", -2.001480000210124),
-                                    ("dayday", -2.512305623976115),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)<day-of-month> (ordinal)",
-                                     -2.917770732084279),
-                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.917770732084279),
-                                    ("hourhour", -2.512305623976115),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.917770732084279)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -0.45198512374305727,
-                               unseen = -3.912023005428146,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hourday", -3.1986731175506815),
-                                    ("dayhour", -2.793208009442517),
-                                    ("<day-of-month> (ordinal)time-of-day (latent)",
-                                     -3.1986731175506815),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -3.1986731175506815),
-                                    ("hh:mmtime-of-day (latent)", -2.2823823856765264),
-                                    ("minuteminute", -2.793208009442517),
-                                    ("time-of-day (latent)time-of-day (latent)",
-                                     -2.793208009442517),
-                                    ("dayday", -3.1986731175506815),
-                                    ("hourhour", -2.505525936990736),
-                                    ("dayyear", -3.1986731175506815),
-                                    ("minutehour", -2.2823823856765264),
-                                    ("hh:mmintersect", -2.793208009442517),
-                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal or number) <named-month>",
-                                     -3.1986731175506815),
-                                    ("time-of-day (latent)<time-of-day> am|pm",
-                                     -3.1986731175506815),
-                                    ("time-of-day (latent)<day-of-month> (ordinal or number) <named-month>",
-                                     -3.1986731175506815),
-                                    ("<named-month> <day-of-month> (non ordinal)time-of-day (latent)",
-                                     -3.1986731175506815)],
-                               n = 14}}),
-       ("Saturday",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.9459101490553135,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("the <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week (grain)<named-month>|<named-day> <day-of-month> (ordinal)",
-                                     -1.7346010553881064),
-                                    ("weekmonth", -1.7346010553881064),
-                                    ("week (grain)October", -1.7346010553881064),
-                                    ("week (grain)<named-month> <day-of-month> (non ordinal)",
-                                     -1.7346010553881064),
-                                    ("weekday", -1.2237754316221157)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("number.number hours",
-        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}}),
-       ("from <time-of-day> - <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.4339872044851463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -1.6094379124341003),
-                                    ("hh:mmhh:mm", -1.6094379124341003),
-                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
-                                    ("hourhour", -2.3025850929940455),
-                                    ("hourminute", -2.3025850929940455),
-                                    ("time-of-day (latent)<time-of-day> sharp|exactly",
-                                     -2.70805020110221),
-                                    ("time-of-day (latent)hh:mm", -2.70805020110221),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.4339872044851463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -1.6094379124341003),
-                                    ("time-of-day (latent)time-of-day (latent)",
-                                     -2.0149030205422647),
-                                    ("hourhour", -1.791759469228055),
-                                    ("minutehour", -1.6094379124341003),
-                                    ("time-of-day (latent)<time-of-day> am|pm", -2.70805020110221)],
-                               n = 9}}),
-       ("integer 21..99",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)integer (numeric)", -0.6931471805599453),
-                                    ("integer (20..90)integer (0..19)", -0.6931471805599453)],
-                               n = 4}}),
-       ("Tisha B'Av",
-        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}}),
-       ("yyyy-mm-dd",
-        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}}),
-       ("year (latent)",
-        Classifier{okData =
-                     ClassData{prior = -0.14892327639210656,
-                               unseen = -4.955827057601261,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -4.348511193973878e-2),
-                                    ("intersect 2 numbers", -3.5624655292582776)],
-                               n = 137},
-                   koData =
-                     ClassData{prior = -1.9778617488619157, unseen = -3.295836866004329,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -1.3121863889661687),
-                                    ("negative numbers", -0.6190392084062235),
-                                    ("compose by multiplication", -1.8718021769015913)],
-                               n = 22}}),
-       ("mm/dd/yyyy",
-        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}}),
-       ("Civic Holiday",
-        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}}),
-       ("Memorial Day",
-        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}}),
-       ("Monday",
-        Classifier{okData =
-                     ClassData{prior = -0.3483066942682157, unseen = -2.639057329615259,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
-                   koData =
-                     ClassData{prior = -1.2237754316221157,
-                               unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
-       ("yesterday",
-        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}}),
-       ("<ordinal> quarter <year>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)year (latent)",
-                                     -0.6931471805599453),
-                                    ("quarteryear", -0.6931471805599453)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hh:mm:ss",
-        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}}),
-       ("Hanukkah",
-        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>",
-        Classifier{okData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("at <time-of-day>integer (20..90)", -1.3862943611198906),
-                                    ("hour", -0.9808292530117262),
-                                    ("at <time-of-day>integer (numeric)", -1.3862943611198906)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("about|exactly <time-of-day>integer (numeric)",
-                                     -1.0986122886681098),
-                                    ("hour", -1.0986122886681098)],
-                               n = 1}}),
-       ("Labour Day",
-        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}}),
-       ("nth <time> of <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.4700036292457356, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -0.9808292530117262),
-                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
-                                     -2.0794415416798357),
-                                    ("ordinals (first..twentieth,thirtieth,...)Wednesdayintersect",
-                                     -1.6739764335716716),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayOctober",
-                                     -1.6739764335716716)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -0.9808292530117262,
-                               unseen = -2.5649493574615367,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -1.0986122886681098),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdaySeptember",
-                                     -1.791759469228055),
-                                    ("ordinals (first..twentieth,thirtieth,...)WednesdayOctober",
-                                     -1.3862943611198906)],
-                               n = 3}}),
-       ("Valentine's Day",
-        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}}),
-       ("April",
-        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}}),
-       ("Maha Saptami",
-        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}}),
-       ("Discovery Day",
-        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}}),
-       ("end of month",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("week (grain)",
-        Classifier{okData =
-                     ClassData{prior = -4.0821994520255166e-2,
-                               unseen = -4.304065093204169,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 72},
-                   koData =
-                     ClassData{prior = -3.2188758248682006,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("<part-of-day> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.0910424533583156,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("part of daysintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -2.3513752571634776),
-                                    ("part of daysintersect", -2.3513752571634776),
-                                    ("hourday", -0.9650808960435872),
-                                    ("part of daysthe <day-of-month> (ordinal)",
-                                     -2.3513752571634776),
-                                    ("part of daysthe <day-of-month> (number)",
-                                     -2.3513752571634776),
-                                    ("part of daysthis <time>", -2.3513752571634776),
-                                    ("part of daysChristmas", -1.9459101490553135)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("six thirty six a.m.",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -1.252762968495368),
-                                    ("one twenty two", -0.8472978603872037),
-                                    ("one eleven", -1.252762968495368)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Shrove Tuesday",
-        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}}),
-       ("now",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.9459101490553135,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("<day-of-month> (ordinal or number) of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -0.13353139262452263,
-                               unseen = -3.0910424533583156,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)July", -2.3513752571634776),
-                                    ("ordinals (first..twentieth,thirtieth,...)March",
-                                     -2.3513752571634776),
-                                    ("ordinal (digits)February", -2.3513752571634776),
-                                    ("integer (numeric)February", -1.9459101490553135),
-                                    ("month", -0.9650808960435872),
-                                    ("ordinal (digits)March", -2.3513752571634776),
-                                    ("integer (numeric)July", -2.3513752571634776)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -2.0794415416798357,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)February", -1.5040773967762742),
-                                    ("month", -1.5040773967762742)],
-                               n = 1}}),
-       ("this <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.6931471805599453),
-                                    ("part of days", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Kaanum Pongal",
-        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}}),
-       ("Yom Kippur",
-        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}}),
-       ("The Twelfth",
-        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}}),
-       ("powers of tens",
-        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}}),
-       ("Friday",
-        Classifier{okData =
-                     ClassData{prior = -0.3677247801253174,
-                               unseen = -2.3978952727983707,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},
-                   koData =
-                     ClassData{prior = -1.1786549963416462, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("in|during the <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -8.701137698962981e-2,
-                               unseen = -3.258096538021482,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("early morning", -2.5257286443082556),
-                                    ("hour", -0.7339691750802004),
-                                    ("part of days", -0.8209805520698302)],
-                               n = 11},
-                   koData =
-                     ClassData{prior = -2.4849066497880004, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.916290731874155),
-                                    ("part of days", -0.916290731874155)],
-                               n = 1}}),
-       ("tomorrow",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 17},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hh(:mm) - <time-of-day> am|pm",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.70805020110221,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Groundhog Day",
-        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}}),
-       ("this|last|next <cycle>",
-        Classifier{okData =
-                     ClassData{prior = -7.503518594291408e-2,
-                               unseen = -5.10594547390058,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.1295745142720766),
-                                    ("month (grain)", -2.797281334830153),
-                                    ("year (grain)", -2.5349170703626616),
-                                    ("week (grain)", -1.1295745142720766),
-                                    ("quarter", -3.4904285153900982), ("year", -2.5349170703626616),
-                                    ("month", -2.797281334830153),
-                                    ("quarter (grain)", -3.4904285153900982)],
-                               n = 77},
-                   koData =
-                     ClassData{prior = -2.627081138568543, unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("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,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Simchat Torah",
-        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}}),
-       ("Victoria Day",
-        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}}),
-       ("New Year's Eve",
-        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}}),
-       ("the <ordinal> <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)year (latent)",
-                                     -0.6931471805599453),
-                                    ("quarteryear", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Raksha Bandhan",
-        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}}),
-       ("Ashura",
-        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}}),
-       ("Palm Sunday",
-        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}}),
-       ("Eid al-Adha",
-        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}}),
-       ("by <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.70805020110221,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("noon|midnight|EOD|end of day", -1.9459101490553135),
-                                    ("time-of-day (latent)", -1.9459101490553135),
-                                    ("<time-of-day> am|pm", -1.9459101490553135),
-                                    ("hh:mm", -1.9459101490553135), ("hour", -1.540445040947149),
-                                    ("minute", -1.540445040947149)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("half an hour",
-        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}}),
-       ("the <day-of-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinals (first..twentieth,thirtieth,...)",
-                                     -1.7047480922384253),
-                                    ("ordinal (digits)", -0.2006706954621511)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -1.3862943611198906, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinals (first..twentieth,thirtieth,...)",
-                                     -0.916290731874155),
-                                    ("ordinal (digits)", -0.5108256237659907)],
-                               n = 3}}),
-       ("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,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Lag BaOmer",
-        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}}),
-       ("fractional number",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 17}}),
-       ("Sunday",
-        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}}),
-       ("Chinese New Year",
-        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}}),
-       ("February",
-        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}}),
-       ("minute (grain)",
-        Classifier{okData =
-                     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}}),
-       ("last|this|next <season>",
-        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}}),
-       ("the <ordinal> quarter",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
-                                    ("quarter", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
-                                    ("quarter", -0.6931471805599453)],
-                               n = 1}}),
-       ("time-of-day (latent)",
-        Classifier{okData =
-                     ClassData{prior = -0.5699145401359973, unseen = -4.290459441148391,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.11778303565638351),
-                                    ("integer (0..19)", -2.330755969960742)],
-                               n = 69},
-                   koData =
-                     ClassData{prior = -0.8337291311811348, unseen = -4.04305126783455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -9.352605801082348e-2),
-                                    ("integer (0..19)", -2.9267394020670396),
-                                    ("integer 21..99", -3.332204510175204)],
-                               n = 53}}),
-       ("beginning of year",
-        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}}),
-       ("last <day-of-week> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -0.916290731874155),
-                                    ("SundayMarch", -1.6094379124341003),
-                                    ("MondayMarch", -1.6094379124341003),
-                                    ("Sundayintersect", -1.6094379124341003)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<integer> <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.13858616328614667,
-                               unseen = -5.147494476813453,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.5026062268874014),
-                                    ("integer (0..19)year (grain)", -3.062222014822824),
-                                    ("integer (numeric)day (grain)", -2.743768283704289),
-                                    ("integer (0..19)second (grain) ", -3.7553691953827695),
-                                    ("integer (0..19)hour (grain)", -3.062222014822824),
-                                    ("second", -3.349904087274605),
-                                    ("integer (numeric)second (grain) ", -4.04305126783455),
-                                    ("integer (numeric)year (grain)", -3.349904087274605),
-                                    ("day", -2.4336133554004498), ("year", -2.576714199041123),
-                                    ("integer (numeric)week (grain)", -3.062222014822824),
-                                    ("integer (0..19)month (grain)", -3.5322256440685593),
-                                    ("hour", -2.6567569067146595), ("month", -3.1957534074473464),
-                                    ("integer (numeric)minute (grain)", -3.1957534074473464),
-                                    ("integer (0..19)minute (grain)", -3.062222014822824),
-                                    ("integer (numeric)month (grain)", -4.04305126783455),
-                                    ("minute", -2.5026062268874014),
-                                    ("integer (numeric)hour (grain)", -3.5322256440685593),
-                                    ("integer (0..19)day (grain)", -3.5322256440685593),
-                                    ("integer (0..19)week (grain)", -3.1957534074473464)],
-                               n = 74},
-                   koData =
-                     ClassData{prior = -2.044755983691946, unseen = -3.828641396489095,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("quarter", -3.1135153092103742), ("hour", -1.4087672169719492),
-                                    ("integer (numeric)hour (grain)", -1.4087672169719492),
-                                    ("integer (0..19)quarter (grain)", -3.1135153092103742)],
-                               n = 11}}),
-       ("hhmm (latent)",
-        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}}),
-       ("<time-of-day> am|pm",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809, unseen = -5.342334251964811,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer after|past <hour-of-day>", -3.951243718581427),
-                                    ("at <time-of-day>", -2.202043863772168),
-                                    ("from|since|after <time-of-day>", -3.7281001672672174),
-                                    ("<time-of-day> o'clock", -4.238925791033208),
-                                    ("half after|past <hour-of-day>", -4.238925791033208),
-                                    ("time-of-day (latent)", -1.7266201670570935),
-                                    ("hhmm (latent)", -4.6443908991413725),
-                                    ("hh:mm", -2.293015641977895),
-                                    ("quarter after|past <hour-of-day>", -4.6443908991413725),
-                                    ("about|exactly <time-of-day>", -4.6443908991413725),
-                                    ("until <time-of-day>", -3.951243718581427),
-                                    ("hour", -1.2104036946562264),
-                                    ("<time-of-day> sharp|exactly", -4.6443908991413725),
-                                    ("minute", -1.754019141245208)],
-                               n = 96},
-                   koData =
-                     ClassData{prior = -1.3862943611198906, unseen = -4.394449154672439,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> to|till|before <hour-of-day>", -3.283414346005772),
-                                    ("from|since|after <time-of-day>", -3.283414346005772),
-                                    ("<hour-of-day> <integer>", -3.6888794541139363),
-                                    ("time-of-day (latent)", -1.0498221244986778),
-                                    ("hour", -1.0147308046874075), ("minute", -2.772588722239781)],
-                               n = 32}}),
-       ("Yom Ha'atzmaut",
-        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}}),
-       ("from <day-of-month> (ordinal or number) to <day-of-month> (ordinal or number) <named-month> (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)ordinal (digits)July", -1.252762968495368),
-                                    ("integer (numeric)integer (numeric)July", -1.252762968495368),
-                                    ("month", -0.8472978603872037)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Thiru Onam",
-        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}}),
-       ("Thai Pongal",
-        Classifier{okData =
-                     ClassData{prior = -0.5596157879354228, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
-                   koData =
-                     ClassData{prior = -0.8472978603872037,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Vijayadashami",
-        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}}),
-       ("Thanksgiving Day",
-        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}}),
-       ("part of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("a <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.5306282510621704,
-                               unseen = -3.5553480614894135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.1400661634962708),
-                                    ("year (grain)", -2.4277482359480516),
-                                    ("second", -2.833213344056216),
-                                    ("week (grain)", -2.1400661634962708),
-                                    ("day", -2.1400661634962708),
-                                    ("minute (grain)", -2.833213344056216),
-                                    ("year", -2.4277482359480516),
-                                    ("second (grain) ", -2.833213344056216),
-                                    ("minute", -2.833213344056216),
-                                    ("day (grain)", -2.1400661634962708)],
-                               n = 10},
-                   koData =
-                     ClassData{prior = -0.8873031950009028, unseen = -3.367295829986474,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour (grain)", -1.7227665977411035),
-                                    ("quarter", -1.9459101490553135), ("hour", -1.7227665977411035),
-                                    ("quarter (grain)", -1.9459101490553135)],
-                               n = 7}}),
-       ("at the beginning|end of <year>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("year (latent)", -0.6931471805599453),
-                                    ("year", -0.6931471805599453)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Dhanteras",
-        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}}),
-       ("Tu BiShvat",
-        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}}),
-       ("Whit Monday",
-        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}}),
-       ("hh:mm",
-        Classifier{okData =
-                     ClassData{prior = -5.6352936551131744e-2,
-                               unseen = -4.2626798770413155,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 69},
-                   koData =
-                     ClassData{prior = -2.9041650800285006, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("Holi",
-        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}}),
-       ("Rosh Hashanah",
-        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}}),
-       ("Holika Dahan",
-        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}}),
-       ("quarter of an hour",
-        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}}),
-       ("second (grain) ",
-        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}}),
-       ("ordinals (first..twentieth,thirtieth,...)",
-        Classifier{okData =
-                     ClassData{prior = -0.1941560144409575, unseen = -2.772588722239781,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 14},
-                   koData =
-                     ClassData{prior = -1.7346010553881064,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Mawlid",
-        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}}),
-       ("Jumu'atul-Wida",
-        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}}),
-       ("quarter after|past <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("the <cycle> after|before <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)tomorrow", -1.252762968495368),
-                                    ("dayday", -0.8472978603872037),
-                                    ("day (grain)yesterday", -1.252762968495368)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("about|exactly <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -3.6109179126442243,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.791759469228055),
-                                    ("hh(:mm) - <time-of-day> am|pm", -2.890371757896165),
-                                    ("this|last|next <cycle>", -1.791759469228055),
-                                    ("day", -2.4849066497880004),
-                                    ("time-of-day (latent)", -2.890371757896165),
-                                    ("hhmm (latent)", -2.4849066497880004),
-                                    ("<time-of-day> am|pm", -2.890371757896165),
-                                    ("hour", -2.1972245773362196),
-                                    ("next <time>", -2.890371757896165),
-                                    ("this|next <day-of-week>", -2.890371757896165),
-                                    ("minute", -2.4849066497880004)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -1.9459101490553135, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("mm/dd", -2.0794415416798357), ("day", -2.0794415416798357),
-                                    ("time-of-day (latent)", -2.0794415416798357),
-                                    ("hour", -2.0794415416798357)],
-                               n = 2}}),
-       ("Sukkot",
-        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> in <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("monthyear", -1.2992829841302609),
-                                    ("Marcha <unit-of-duration>", -1.7047480922384253),
-                                    ("March<integer> <unit-of-duration>", -1.7047480922384253),
-                                    ("Vijayadashami<integer> <unit-of-duration>",
-                                     -1.7047480922384253),
-                                    ("dayyear", -1.7047480922384253)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("World Vegan Day",
-        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}}),
-       ("intersect by \",\", \"of\", \"from\", \"'s\"",
-        Classifier{okData =
-                     ClassData{prior = -0.46262352194811296,
-                               unseen = -5.099866427824199,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Wednesday<named-month> <day-of-month> (non ordinal)",
-                                     -4.400603020246817),
-                                    ("dayhour", -3.147840051751449),
-                                    ("daymonth", -3.147840051751449),
-                                    ("<named-month> <day-of-month> (non ordinal)Friday",
-                                     -4.400603020246817),
-                                    ("Friday<named-month> <day-of-month> (non ordinal)",
-                                     -3.7074558396868715),
-                                    ("Wednesdayintersect", -4.400603020246817),
-                                    ("Black Fridaythis|last|next <cycle>", -4.400603020246817),
-                                    ("Labour Daythis|last|next <cycle>", -4.400603020246817),
-                                    ("<part-of-day> of <time>February", -4.400603020246817),
-                                    ("Saturday<time-of-day> am|pm", -4.400603020246817),
-                                    ("Martin Luther King's Daythis|last|next <cycle>",
-                                     -3.9951379121386528),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -4.400603020246817),
-                                    ("on <date><time-of-day> am|pm", -4.400603020246817),
-                                    ("hourmonth", -4.400603020246817),
-                                    ("dayday", -2.5288008433452256),
-                                    ("the <day-of-month> (ordinal)February", -3.9951379121386528),
-                                    ("WednesdayOctober", -4.400603020246817),
-                                    ("Wednesdaythis|last|next <cycle>", -3.9951379121386528),
-                                    ("intersect<named-month> <day-of-month> (non ordinal)",
-                                     -3.484312288372662),
-                                    ("dayyear", -2.791165107812717),
-                                    ("Saturday<named-month> <day-of-month> (non ordinal)",
-                                     -4.400603020246817),
-                                    ("Thursdayhh:mm", -3.9951379121386528),
-                                    ("Thanksgiving Daythis|last|next <cycle>", -4.400603020246817),
-                                    ("on <date><named-month> <day-of-month> (non ordinal)",
-                                     -3.9951379121386528),
-                                    ("TuesdayOctober", -4.400603020246817),
-                                    ("the <day-of-month> (ordinal)March", -4.400603020246817),
-                                    ("Mondaythis|last|next <cycle>", -4.400603020246817),
-                                    ("Fridayintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -4.400603020246817),
-                                    ("Fridayintersect", -4.400603020246817),
-                                    ("Thursday<datetime> - <datetime> (interval)",
-                                     -3.7074558396868715),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -3.484312288372662),
-                                    ("Tuesdaythis|last|next <cycle>", -4.400603020246817),
-                                    ("Sunday<named-month> <day-of-month> (non ordinal)",
-                                     -4.400603020246817),
-                                    ("dayminute", -3.0143086591269266),
-                                    ("minuteday", -3.484312288372662),
-                                    ("this|last|next <cycle>Sunday", -4.400603020246817),
-                                    ("intersectyear (latent)", -4.400603020246817),
-                                    ("Sundaythis|last|next <cycle>", -4.400603020246817),
-                                    ("weekday", -4.400603020246817),
-                                    ("dayweek", -3.3019907315787074),
-                                    ("Thursday<time-of-day> am|pm", -4.400603020246817),
-                                    ("Monday<named-month> <day-of-month> (non ordinal)",
-                                     -3.9951379121386528),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -3.9951379121386528)],
-                               n = 51},
-                   koData =
-                     ClassData{prior = -0.9932517730102834, unseen = -4.804021044733257,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week-endJuly", -4.102643365036796),
-                                    ("week-endOctober", -3.4094961844768505),
-                                    ("daymonth", -1.9054187877005764),
-                                    ("TuesdaySeptember", -4.102643365036796),
-                                    ("Wednesdayintersect", -4.102643365036796),
-                                    ("hourmonth", -3.004031076368686),
-                                    ("Fridaythis|last|next <cycle>", -4.102643365036796),
-                                    ("SundayFebruary", -4.102643365036796),
-                                    ("WednesdayOctober", -4.102643365036796),
-                                    ("week-endintersect", -4.102643365036796),
-                                    ("dayyear", -4.102643365036796),
-                                    ("FridayJuly", -3.6971782569286313),
-                                    ("FridaySeptember", -4.102643365036796),
-                                    ("WednesdayFebruary", -4.102643365036796),
-                                    ("minutemonth", -3.186352633162641),
-                                    ("SundayMarch", -4.102643365036796),
-                                    ("MondayFebruary", -3.6971782569286313),
-                                    ("Fridayintersect", -4.102643365036796),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -3.6971782569286313),
-                                    ("dayminute", -3.4094961844768505),
-                                    ("SaturdaySeptember", -4.102643365036796),
-                                    ("intersectSeptember", -3.186352633162641),
-                                    ("MondayMarch", -4.102643365036796),
-                                    ("on <date>September", -3.6971782569286313),
-                                    ("Tuesdayintersect", -4.102643365036796),
-                                    ("Sundayintersect", -4.102643365036796)],
-                               n = 30}}),
-       ("last <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.5306282510621704,
-                               unseen = -3.4965075614664802,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Father's Day", -2.772588722239781),
-                                    ("Martin Luther King's Day", -2.772588722239781),
-                                    ("Mother's Day", -2.772588722239781),
-                                    ("day", -1.1631508098056809), ("Sunday", -2.772588722239781),
-                                    ("Chinese New Year", -2.367123614131617),
-                                    ("Thanksgiving Day", -2.772588722239781),
-                                    ("Easter Sunday", -2.772588722239781),
-                                    ("hour", -2.772588722239781), ("Tuesday", -2.772588722239781),
-                                    ("week-end", -2.772588722239781)],
-                               n = 10},
-                   koData =
-                     ClassData{prior = -0.8873031950009028, unseen = -3.295836866004329,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Monday", -2.5649493574615367), ("day", -2.159484249353372),
-                                    ("Sunday", -2.5649493574615367), ("hour", -1.466337068793427),
-                                    ("week-end", -1.466337068793427)],
-                               n = 7}}),
-       ("March",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.044522437723423,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 19},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<named-month>|<named-day> <day-of-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.2231435513142097, unseen = -3.258096538021482,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Octoberordinal (digits)", -2.120263536200091),
-                                    ("Thursdayordinal (digits)", -2.5257286443082556),
-                                    ("day", -2.120263536200091),
-                                    ("Augustordinal (digits)", -2.5257286443082556),
-                                    ("Marchordinals (first..twentieth,thirtieth,...)",
-                                     -2.120263536200091),
-                                    ("Tuesdayordinal (digits)", -2.5257286443082556),
-                                    ("month", -1.2729656758128873),
-                                    ("Marchordinal (digits)", -2.5257286443082556)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -1.6094379124341003, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("from|since|after <time-of-day>ordinal (digits)",
-                                     -1.8718021769015913),
-                                    ("Augustordinal (digits)", -1.8718021769015913),
-                                    ("month", -1.466337068793427)],
-                               n = 2}}),
-       ("Clean Monday",
-        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-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [("ordinal (digits)", 0.0)], n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Easter Sunday",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
-       ("Christmas",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("until <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -0.9808292530117262, unseen = -3.044522437723423,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -2.3025850929940455),
-                                    ("<time-of-day> am|pm", -1.6094379124341003),
-                                    ("hh:mm", -1.8971199848858813), ("hour", -1.8971199848858813),
-                                    ("minute", -1.3862943611198906)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -0.4700036292457356, unseen = -3.367295829986474,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersect", -1.7227665977411035),
-                                    ("yesterday", -2.2335922215070942),
-                                    ("day", -2.2335922215070942), ("hh:mm", -1.7227665977411035),
-                                    ("hour", -2.639057329615259), ("minute", -1.252762968495368)],
-                               n = 10}}),
-       ("mm.dd.yyyy",
-        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}}),
-       ("Isra and Mi'raj",
-        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}}),
-       ("<duration> after|before|from <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.3184537311185346,
-                               unseen = -3.5263605246161616,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("a <unit-of-duration>now", -2.803360380906535),
-                                    ("a <unit-of-duration>Christmas", -2.803360380906535),
-                                    ("dayday", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>today", -2.803360380906535),
-                                    ("daysecond", -2.803360380906535),
-                                    ("a <unit-of-duration>right now", -2.803360380906535),
-                                    ("minutenograin", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>Christmas", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>Easter Sunday",
-                                     -2.803360380906535),
-                                    ("secondnograin", -2.803360380906535),
-                                    ("yearday", -2.1102132003465894),
-                                    ("daynograin", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>now", -2.3978952727983707)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -1.2992829841302609,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -2.4423470353692043),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal)",
-                                     -2.4423470353692043),
-                                    ("dayday", -2.03688192726104),
-                                    ("<integer> <unit-of-duration>time-of-day (latent)",
-                                     -2.4423470353692043),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
-                                     -2.4423470353692043)],
-                               n = 3}}),
-       ("<day-of-month> (ordinal or number) of <month>",
-        Classifier{okData =
-                     ClassData{prior = -8.004270767353637e-2,
-                               unseen = -3.5263605246161616,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)July", -2.803360380906535),
-                                    ("ordinals (first..twentieth,thirtieth,...)March",
-                                     -2.803360380906535),
-                                    ("ordinal (digits)this|last|next <cycle>", -2.1102132003465894),
-                                    ("integer (numeric)this|last|next <cycle>",
-                                     -2.3978952727983707),
-                                    ("ordinal (digits)February", -2.803360380906535),
-                                    ("integer (numeric)February", -2.3978952727983707),
-                                    ("month", -0.9315582040049435),
-                                    ("ordinal (digits)March", -2.803360380906535),
-                                    ("integer (numeric)July", -2.803360380906535)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -2.5649493574615367,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)February", -1.7047480922384253),
-                                    ("month", -1.7047480922384253)],
-                               n = 1}}),
-       ("decimal number",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Labour Day weekend",
-        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}}),
-       ("Naraka Chaturdashi",
-        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}}),
-       ("beginning of month",
-        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}}),
-       ("next <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.6888794541139363,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Martin Luther King's Day", -2.9704144655697013),
-                                    ("Halloween", -2.9704144655697013),
-                                    ("Wednesday", -2.9704144655697013),
-                                    ("Boss's Day", -2.9704144655697013),
-                                    ("Memorial Day", -2.9704144655697013),
-                                    ("Monday", -2.9704144655697013),
-                                    ("Discovery Day", -2.9704144655697013),
-                                    ("Mother's Day", -2.9704144655697013),
-                                    ("day", -1.0986122886681098),
-                                    ("Thanksgiving Day", -2.9704144655697013),
-                                    ("March", -2.9704144655697013), ("month", -2.9704144655697013),
-                                    ("Tuesday", -2.277267285009756)],
-                               n = 13},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.639057329615259,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time-of-day> sharp|exactly",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("at <time-of-day>", -2.1400661634962708),
-                                    ("time-of-day (latent)", -2.1400661634962708),
-                                    ("hhmm (latent)", -2.1400661634962708),
-                                    ("<time-of-day> am|pm", -2.1400661634962708),
-                                    ("hh:mm", -2.1400661634962708), ("hour", -1.7346010553881064),
-                                    ("minute", -1.4469189829363254)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("in <named-month>|year",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -2.4423470353692043),
-                                    ("year (latent)", -1.0560526742493137),
-                                    ("year", -1.0560526742493137), ("March", -2.4423470353692043),
-                                    ("month", -2.03688192726104)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -1.2992829841302609),
-                                    ("year (latent)", -1.7047480922384253),
-                                    ("year", -1.7047480922384253), ("month", -1.2992829841302609)],
-                               n = 3}}),
-       ("Islamic New Year",
-        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}}),
-       ("Lent",
-        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}}),
-       ("negative numbers",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -7.696104113612832e-2),
-                                    ("integer (0..19)", -2.6026896854443837)],
-                               n = 25}}),
-       ("about|exactly <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("half an hour", -0.6931471805599453),
-                                    ("minute", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time> before last|after next",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Wednesday", -1.8718021769015913),
-                                    ("Friday", -1.466337068793427), ("day", -1.1786549963416462),
-                                    ("March", -1.8718021769015913), ("month", -1.8718021769015913)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("by the end of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("this|last|next <cycle>", -0.6931471805599453),
-                                    ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hhmm (military) am|pm",
-        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 = -0.3794896217049037, unseen = -4.304065093204169,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersecthh:mm", -3.1918471524802814),
-                                    ("intersect<time-of-day> am|pm", -3.1918471524802814),
-                                    ("minuteminute", -1.457246097092175),
-                                    ("hh:mmhh:mm", -2.093234863812172),
-                                    ("dayday", -3.1918471524802814),
-                                    ("hourhour", -2.093234863812172),
-                                    ("<named-month> <day-of-month> (non ordinal)<named-month> <day-of-month> (non ordinal)",
-                                     -3.1918471524802814),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
-                                     -3.1918471524802814),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
-                                     -3.597312260588446),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -3.597312260588446),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.681021528714291),
-                                    ("from|since|after <time-of-day>hh:mm", -2.681021528714291)],
-                               n = 26},
-                   koData =
-                     ClassData{prior = -1.1526795099383855, unseen = -3.828641396489095,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<named-month> <day-of-month> (non ordinal)July",
-                                     -3.1135153092103742),
-                                    ("daymonth", -2.70805020110221),
-                                    ("from|since|after <time-of-day>intersect", -2.70805020110221),
-                                    ("<time-of-day> am|pmintersect", -3.1135153092103742),
-                                    ("hh:mm<time-of-day> am|pm", -2.70805020110221),
-                                    ("minuteminute", -1.8607523407150064),
-                                    ("hourhour", -2.70805020110221),
-                                    ("minutehour", -2.70805020110221),
-                                    ("hh:mmintersect", -2.1972245773362196),
-                                    ("<named-month> <day-of-month> (non ordinal)August",
-                                     -3.1135153092103742),
-                                    ("about|exactly <time-of-day><time-of-day> am|pm",
-                                     -3.1135153092103742)],
-                               n = 12}}),
-       ("Tuesday",
-        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}}),
-       ("New Year's Day",
-        Classifier{okData =
-                     ClassData{prior = -1.6094379124341003,
-                               unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
-                   koData =
-                     ClassData{prior = -0.2231435513142097,
-                               unseen = -2.3025850929940455,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 8}}),
-       ("fortnight",
-        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}}),
-       ("<integer> and an half hour",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("National Patriots' Day",
-        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}}),
-       ("Laylat al-Qadr",
-        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}}),
-       ("Boghi",
-        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}}),
-       ("at the beginning|end of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -0.2231435513142097,
-                               unseen = -2.5649493574615367,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("January", -1.3862943611198906),
-                                    ("April", -1.3862943611198906), ("month", -0.8754687373538999)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -1.6094379124341003,
-                               unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -1.0986122886681098),
-                                    ("month", -1.0986122886681098)],
-                               n = 1}}),
-       ("<time-of-day> - <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.7375989431307791, unseen = -4.110873864173311,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -1.529395204760564),
-                                    ("hh:mmhh:mm", -1.8971199848858813),
-                                    ("<time-of-day> am|pmtime-of-day (latent)",
-                                     -2.4849066497880004),
-                                    ("hourhour", -1.6964492894237302),
-                                    ("from|since|after <time-of-day>time-of-day (latent)",
-                                     -3.4011973816621555),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -3.4011973816621555),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.4849066497880004),
-                                    ("from|since|after <time-of-day>hh:mm", -2.4849066497880004)],
-                               n = 22},
-                   koData =
-                     ClassData{prior = -0.6505875661411494, unseen = -4.174387269895637,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("about|exactly <time-of-day>time-of-day (latent)",
-                                     -3.4657359027997265),
-                                    ("hh:mmtime-of-day (latent)", -1.7609878105613013),
-                                    ("hh:mm<time-of-day> am|pm", -3.0602707946915624),
-                                    ("<time-of-day> am|pmtime-of-day (latent)",
-                                     -3.4657359027997265),
-                                    ("at <time-of-day><time-of-day> am|pm", -3.4657359027997265),
-                                    ("hourhour", -2.2129729343043585),
-                                    ("minutehour", -1.2144441041932315),
-                                    ("about|exactly <time-of-day><time-of-day> am|pm",
-                                     -3.4657359027997265),
-                                    ("from|since|after <time-of-day>time-of-day (latent)",
-                                     -2.5494451709255714),
-                                    ("at <time-of-day>time-of-day (latent)", -3.0602707946915624),
-                                    ("<integer> to|till|before <hour-of-day>time-of-day (latent)",
-                                     -3.0602707946915624)],
-                               n = 24}}),
-       ("military spelled out numbers am|pm",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
-                               likelihoods =
-                                 HashMap.fromList [("integer (0..19)integer (20..90)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("winter",
-        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}}),
-       ("nth <time> after <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayday", -0.916290731874155),
-                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
-                                     -0.916290731874155)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayday", -0.916290731874155),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayChristmas",
-                                     -0.916290731874155)],
-                               n = 1}}),
-       ("<named-month> <day-of-month> (non ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.42121346507630353,
-                               unseen = -3.951243718581427,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Augustinteger (numeric)", -2.5455312716044354),
-                                    ("Marchinteger (numeric)", -2.833213344056216),
-                                    ("Aprilinteger (numeric)", -3.2386784521643803),
-                                    ("month", -0.8407831793660099),
-                                    ("Februaryinteger (numeric)", -1.9859154836690123),
-                                    ("Septemberinteger (numeric)", -2.833213344056216),
-                                    ("Octoberinteger (numeric)", -2.833213344056216),
-                                    ("Julyinteger (numeric)", -2.1400661634962708)],
-                               n = 21},
-                   koData =
-                     ClassData{prior = -1.067840630001356, unseen = -3.4657359027997265,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Augustinteger (numeric)", -2.3353749158170367),
-                                    ("Marchinteger (numeric)", -2.740840023925201),
-                                    ("Aprilinteger (numeric)", -2.740840023925201),
-                                    ("month", -0.9490805546971459),
-                                    ("from|since|after <time-of-day>integer (numeric)",
-                                     -2.3353749158170367),
-                                    ("Julyinteger (numeric)", -1.6422277352570913)],
-                               n = 11}}),
-       ("Diwali",
-        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}}),
-       ("last night",
-        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}}),
-       ("this|next <day-of-week>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.995732273553991,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Thursday", -2.2512917986064953),
-                                    ("Wednesday", -2.2512917986064953),
-                                    ("Monday", -1.845826690498331), ("day", -0.8649974374866046),
-                                    ("Tuesday", -1.55814461804655)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("ordinal (digits)",
-        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}}),
-       ("quarter (grain)",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809, unseen = -2.639057329615259,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
-                   koData =
-                     ClassData{prior = -1.3862943611198906, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("last <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)October", -1.791759469228055),
-                                    ("daymonth", -1.2809338454620642),
-                                    ("day (grain)intersect", -1.791759469228055),
-                                    ("weekmonth", -1.791759469228055),
-                                    ("week (grain)intersect", -2.1972245773362196),
-                                    ("week (grain)September", -2.1972245773362196)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Chhath",
-        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}}),
-       ("Vasant Panchami",
-        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-month>(ordinal) <named-month> year",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)April", -0.6931471805599453),
-                                    ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Black Friday",
-        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}}),
-       ("week-end",
-        Classifier{okData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
-                   koData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
-       ("Great Lent",
-        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}}),
-       ("Maundy Thursday",
-        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 (grain)",
-        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}}),
-       ("right now",
-        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}}),
-       ("for <duration> from <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> <unit-of-duration><day-of-month> (ordinal)",
-                                     -1.5040773967762742),
-                                    ("dayday", -1.0986122886681098),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
-                                     -1.5040773967762742)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -1.252762968495368),
-                                    ("<integer> <unit-of-duration>time-of-day (latent)",
-                                     -1.252762968495368)],
-                               n = 1}}),
-       ("compose by multiplication",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList [("integer (0..19)powers of tens", 0.0)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("end of year",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("between <time> and <time>",
-        Classifier{okData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -0.832909122935104),
-                                    ("hh:mmhh:mm", -0.832909122935104)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -3.7376696182833684,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -1.410986973710262),
-                                    ("minuteminute", -1.410986973710262),
-                                    ("minutehour", -1.410986973710262),
-                                    ("hh:mmintersect", -1.410986973710262)],
-                               n = 18}}),
-       ("<month> dd-dd (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4657359027997265,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Julyinteger (numeric)integer (numeric)", -1.6422277352570913),
-                                    ("from|since|after <time-of-day>ordinal (digits)ordinal (digits)",
-                                     -2.740840023925201),
-                                    ("from|since|after <time-of-day>integer (numeric)integer (numeric)",
-                                     -2.740840023925201),
-                                    ("from|since|after <time-of-day>ordinal (digits)integer (numeric)",
-                                     -2.740840023925201),
-                                    ("Augustordinal (digits)integer (numeric)",
-                                     -2.3353749158170367),
-                                    ("month", -0.8690378470236094),
-                                    ("Augustordinal (digits)ordinal (digits)",
-                                     -2.3353749158170367)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("part of days",
-        Classifier{okData =
-                     ClassData{prior = -3.509131981127006e-2,
-                               unseen = -3.4011973816621555,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 28},
-                   koData =
-                     ClassData{prior = -3.367295829986474, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+                     ClassData{prior = -8.961215868968717e-2,
+                               unseen = -3.5263605246161616,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 32},
+                   koData =
+                     ClassData{prior = -2.456735772821304, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("integer (numeric)",
+        Classifier{okData =
+                     ClassData{prior = -0.5818290513461541, unseen = -5.768320995793772,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 318},
+                   koData =
+                     ClassData{prior = -0.818427494994547, unseen = -5.53338948872752,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 251}}),
+       ("<year> (bc|ad)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<duration> hence|ago",
+        Classifier{okData =
+                     ClassData{prior = -5.406722127027582e-2,
+                               unseen = -3.784189633918261,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.563975538357343), ("day", -1.8152899666382492),
+                                    ("year", -2.662587827025453),
+                                    ("<integer> <unit-of-duration>", -1.0531499145913523),
+                                    ("a <unit-of-duration>", -2.662587827025453),
+                                    ("month", -2.662587827025453),
+                                    ("fortnight", -2.662587827025453)],
+                               n = 18},
+                   koData =
+                     ClassData{prior = -2.9444389791664407,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year", -1.5040773967762742),
+                                    ("<integer> <unit-of-duration>", -1.5040773967762742)],
+                               n = 1}}),
+       ("noon|midnight|EOD|end of day",
+        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}}),
+       ("quarter to|till|before <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("noon|midnight|EOD|end of day", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Father's Day",
+        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}}),
+       ("<cycle> after|before <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)tomorrow", -1.6739764335716716),
+                                    ("dayday", -1.1631508098056809),
+                                    ("day (grain)yesterday", -1.6739764335716716)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -1.6739764335716716),
+                                    ("year (grain)Christmas", -2.0794415416798357),
+                                    ("dayday", -2.0794415416798357),
+                                    ("day (grain)intersect", -1.6739764335716716),
+                                    ("day (grain)Easter Sunday", -2.0794415416798357),
+                                    ("yearday", -2.0794415416798357)],
+                               n = 4}}),
+       ("Easter Monday",
+        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}}),
+       ("Navaratri",
+        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}}),
+       ("Martin Luther King's Day",
+        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}}),
+       ("integer (20..90)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Shemini Atzeret",
+        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}}),
+       ("Ramadan",
+        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}}),
+       ("Lazarus Saturday",
+        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}}),
+       ("intersect 2 numbers",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("compose by multiplicationinteger (0..19)",
+                                     -0.2231435513142097)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("powers of tensinteger (0..19)", -0.2231435513142097)],
+                               n = 3}}),
+       ("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}}),
+       ("from|since|after <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.540445040947149, unseen = -4.248495242049359,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<day-of-month> (ordinal or number) <named-month>",
+                                     -3.5409593240373143),
+                                    ("July", -3.5409593240373143),
+                                    ("year (latent)", -3.1354942159291497),
+                                    ("day", -3.1354942159291497),
+                                    ("time-of-day (latent)", -2.624668592163159),
+                                    ("year", -3.1354942159291497),
+                                    ("<time-of-day> am|pm", -2.624668592163159),
+                                    ("hh:mm", -2.624668592163159),
+                                    ("<day-of-month> (ordinal)", -3.5409593240373143),
+                                    ("hour", -2.03688192726104), ("month", -3.1354942159291497),
+                                    ("minute", -2.624668592163159),
+                                    ("August", -3.5409593240373143)],
+                               n = 18},
+                   koData =
+                     ClassData{prior = -0.2411620568168881, unseen = -5.111987788356543,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> to|till|before <hour-of-day>", -4.007333185232471),
+                                    ("week", -4.412798293340635),
+                                    ("<day-of-month> (ordinal or number) <named-month>",
+                                     -4.412798293340635),
+                                    ("today", -4.412798293340635),
+                                    ("intersect", -2.540996116439044),
+                                    ("<time> for <duration>", -4.412798293340635),
+                                    ("second", -4.412798293340635), ("now", -3.71965111278069),
+                                    ("tomorrow", -4.007333185232471),
+                                    ("this|last|next <cycle>", -4.412798293340635),
+                                    ("day", -1.927891643552635),
+                                    ("time-of-day (latent)", -2.6210388241125804),
+                                    ("<time-of-day> am|pm", -4.007333185232471),
+                                    ("nograin", -3.71965111278069),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)",
+                                     -4.412798293340635),
+                                    ("<day-of-month> (ordinal)", -4.007333185232471),
+                                    ("Easter Sunday", -4.412798293340635),
+                                    ("Christmas", -3.71965111278069), ("hour", -2.3978952727983707),
+                                    ("month", -4.412798293340635),
+                                    ("<datetime> - <datetime> (interval)", -3.1600353248452673),
+                                    ("<time-of-day> - <time-of-day> (interval)",
+                                     -2.908720896564361),
+                                    ("<named-month> <day-of-month> (non ordinal)",
+                                     -4.007333185232471),
+                                    ("minute", -1.927891643552635),
+                                    ("right now", -4.412798293340635),
+                                    ("<month> dd-dd (interval)", -3.71965111278069),
+                                    ("part of days", -4.412798293340635),
+                                    ("dd-dd <month> (interval)", -4.007333185232471)],
+                               n = 66}}),
+       ("integer after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.8109302162163288),
+                                    ("integer (numeric)time-of-day (latent)", -1.0986122886681098),
+                                    ("integer (20..90)time-of-day (latent)", -1.5040773967762742)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<ordinal> last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4011973816621555,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)week (grain)year (latent)",
+                                     -2.268683541318364),
+                                    ("daymonth", -2.268683541318364),
+                                    ("ordinal (digits)day (grain)May", -2.6741486494265287),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.6741486494265287),
+                                    ("weekmonth", -1.7578579175523736),
+                                    ("ordinal (digits)week (grain)October", -2.6741486494265287),
+                                    ("ordinal (digits)week (grain)intersect", -2.6741486494265287),
+                                    ("ordinal (digits)week (grain)year (latent)",
+                                     -2.6741486494265287),
+                                    ("weekyear", -1.9810014688665833),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.6741486494265287),
+                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)May",
+                                     -2.6741486494265287)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Yom HaShoah",
+        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-month> (ordinal or number) <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -1.0296194171811581,
+                               unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)December", -1.6582280766035324),
+                                    ("ordinal (digits)February", -2.3513752571634776),
+                                    ("integer (numeric)April", -2.3513752571634776),
+                                    ("month", -1.252762968495368)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.4418327522790392,
+                               unseen = -3.4011973816621555,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)October", -2.6741486494265287),
+                                    ("ordinal (digits)July", -2.6741486494265287),
+                                    ("integer (numeric)September", -2.268683541318364),
+                                    ("ordinal (digits)August", -2.6741486494265287),
+                                    ("integer (numeric)August", -2.6741486494265287),
+                                    ("ordinal (digits)April", -2.6741486494265287),
+                                    ("month", -1.0647107369924282),
+                                    ("integer (numeric)July", -2.268683541318364)],
+                               n = 9}}),
+       ("<time> <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -9.237332013101517e-2,
+                               unseen = -4.48863636973214,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("dayhour", -1.4816045409242156),
+                                    ("Mondayearly morning", -3.378724525810097),
+                                    ("time-of-day (latent)tonight", -3.378724525810097),
+                                    ("hourhour", -2.3978952727983707),
+                                    ("<time-of-day> o'clockin|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("todaypart of days", -3.784189633918261),
+                                    ("minutehour", -2.6855773452501515),
+                                    ("at <time-of-day>in|during the <part-of-day>",
+                                     -3.378724525810097),
+                                    ("time-of-day (latent)this <part-of-day>", -3.784189633918261),
+                                    ("Mondayin|during the <part-of-day>", -3.784189633918261),
+                                    ("intersectpart of days", -3.784189633918261),
+                                    ("intersectin|during the <part-of-day>", -3.784189633918261),
+                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("tomorrowpart of days", -2.3978952727983707),
+                                    ("hh:mmin|during the <part-of-day>", -3.0910424533583156),
+                                    ("time-of-day (latent)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("hhmm (latent)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("yesterdaypart of days", -3.378724525810097),
+                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("Mondaypart of days", -3.784189633918261)],
+                               n = 31},
+                   koData =
+                     ClassData{prior = -2.4277482359480516,
+                               unseen = -3.4965075614664802,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("yearhour", -2.772588722239781),
+                                    ("monthhour", -2.772588722239781),
+                                    ("hourhour", -2.772588722239781),
+                                    ("year (latent)in|during the <part-of-day>",
+                                     -2.772588722239781),
+                                    ("Februaryin|during the <part-of-day>", -2.772588722239781),
+                                    ("time-of-day (latent)in|during the <part-of-day>",
+                                     -2.772588722239781)],
+                               n = 3}}),
+       ("today",
+        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}}),
+       ("mm/dd",
+        Classifier{okData =
+                     ClassData{prior = -1.2729656758128873,
+                               unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
+                   koData =
+                     ClassData{prior = -0.3285040669720361, unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18}}),
+       ("at <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -8.4557388028063e-2, unseen = -5.003946305945459,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time> timezone", -3.898599985096005),
+                                    ("noon|midnight|EOD|end of day", -3.898599985096005),
+                                    ("integer after|past <hour-of-day>", -3.898599985096005),
+                                    ("half after|past <hour-of-day>", -4.304065093204169),
+                                    ("time-of-day (latent)", -1.6650077635889111),
+                                    ("hhmm (latent)", -3.6109179126442243),
+                                    ("<time-of-day> am|pm", -1.7783364488959144),
+                                    ("hh:mm", -3.3877743613300146),
+                                    ("about|exactly <time-of-day>", -3.898599985096005),
+                                    ("hour", -1.0459685551826876),
+                                    ("<time-of-day> sharp|exactly", -4.304065093204169),
+                                    ("minute", -2.10684051586795)],
+                               n = 68},
+                   koData =
+                     ClassData{prior = -2.512305623976115, unseen = -3.2188758248682006,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -1.2321436812926323),
+                                    ("hour", -1.2321436812926323)],
+                               n = 6}}),
+       ("December",
+        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}}),
+       ("absorption of , after named day",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.332204510175204,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("on <date>", -2.1972245773362196),
+                                    ("Wednesday", -2.6026896854443837),
+                                    ("Saturday", -2.6026896854443837),
+                                    ("Monday", -2.1972245773362196),
+                                    ("Friday", -1.9095425048844386), ("day", -0.8979415932059586),
+                                    ("Sunday", -2.6026896854443837)],
+                               n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("September",
+        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}}),
+       ("tonight",
+        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}}),
+       ("last|past|next <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -4.2626798770413155,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.456735772821304), ("second", -2.639057329615259),
+                                    ("day", -2.3025850929940455), ("year", -2.639057329615259),
+                                    ("<integer> <unit-of-duration>", -0.7827593392496325),
+                                    ("hour", -2.639057329615259), ("month", -2.639057329615259),
+                                    ("minute", -2.639057329615259)],
+                               n = 31},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the ides of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("on <date>",
+        Classifier{okData =
+                     ClassData{prior = -0.13353139262452263,
+                               unseen = -4.204692619390966,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Thursday", -1.4816045409242156),
+                                    ("mm/dd", -3.4965075614664802),
+                                    ("absorption of , after named day", -3.0910424533583156),
+                                    ("intersect", -3.0910424533583156),
+                                    ("Saturday", -2.803360380906535),
+                                    ("Friday", -3.4965075614664802), ("day", -0.8574502318512216),
+                                    ("the <day-of-month> (ordinal)", -3.0910424533583156),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -2.803360380906535),
+                                    ("hour", -3.4965075614664802)],
+                               n = 28},
+                   koData =
+                     ClassData{prior = -2.0794415416798357,
+                               unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersect", -1.791759469228055), ("day", -1.2809338454620642),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -1.791759469228055)],
+                               n = 4}}),
+       ("integer (0..19)",
+        Classifier{okData =
+                     ClassData{prior = -0.10919929196499197,
+                               unseen = -3.9889840465642745,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 52},
+                   koData =
+                     ClassData{prior = -2.268683541318364, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
+       ("between <time-of-day> and <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -0.7884573603642702),
+                                    ("hh:mmhh:mm", -0.7884573603642702)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -0.7884573603642702),
+                                    ("minutehour", -0.7884573603642702)],
+                               n = 9}}),
+       ("Halloween",
+        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}}),
+       ("Passover",
+        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}}),
+       ("from <month> dd-dd (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Julyinteger (numeric)integer (numeric)", -1.6094379124341003),
+                                    ("Augustordinal (digits)integer (numeric)",
+                                     -1.6094379124341003),
+                                    ("month", -0.916290731874155),
+                                    ("Augustordinal (digits)ordinal (digits)",
+                                     -1.6094379124341003)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("October",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("month (grain)",
+        Classifier{okData =
+                     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}}),
+       ("<integer> more <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)minute (grain)", -0.6931471805599453),
+                                    ("minute", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time-of-day> o'clock",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Vesak",
+        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}}),
+       ("Earth Hour",
+        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}}),
+       ("in|within|after <duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.12516314295400605,
+                               unseen = -4.6913478822291435,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -3.295836866004329),
+                                    ("<integer> more <unit-of-duration>", -3.9889840465642745),
+                                    ("three-quarters of an hour", -3.0726933146901194),
+                                    ("<integer> + '\"", -3.295836866004329),
+                                    ("number.number hours", -3.9889840465642745),
+                                    ("second", -3.58351893845611),
+                                    ("half a <time-grain>", -3.0726933146901194),
+                                    ("day", -3.295836866004329), ("year", -3.9889840465642745),
+                                    ("<integer> <unit-of-duration>", -1.6376087894007967),
+                                    ("a <unit-of-duration>", -3.0726933146901194),
+                                    ("quarter of an hour", -3.0726933146901194),
+                                    ("hour", -2.6026896854443837),
+                                    ("about|exactly <duration>", -3.9889840465642745),
+                                    ("half an hour (abbrev).", -3.58351893845611),
+                                    ("<integer> and an half hour", -3.9889840465642745),
+                                    ("minute", -1.2809338454620642)],
+                               n = 45},
+                   koData =
+                     ClassData{prior = -2.1400661634962708,
+                               unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("quarter", -2.3025850929940455), ("year", -1.791759469228055),
+                                    ("<integer> <unit-of-duration>", -1.791759469228055),
+                                    ("a <unit-of-duration>", -2.3025850929940455)],
+                               n = 6}}),
+       ("January",
+        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}}),
+       ("three-quarters of an hour",
+        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}}),
+       ("Mattu Pongal",
+        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}}),
+       ("Wednesday",
+        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}}),
+       ("half after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> + '\"",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("half <integer> (UK style hour-of-day)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Family Day",
+        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}}),
+       ("July",
+        Classifier{okData =
+                     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}}),
+       ("hour (grain)",
+        Classifier{okData =
+                     ClassData{prior = -0.48550781578170077,
+                               unseen = -2.890371757896165,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 16},
+                   koData =
+                     ClassData{prior = -0.9555114450274363,
+                               unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10}}),
+       ("Shavuot",
+        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}}),
+       ("Vimy Ridge Day",
+        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> <duration> hence|ago",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayyear", -0.6931471805599453),
+                                    ("Diwali<integer> <unit-of-duration>", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<ordinal> quarter",
+        Classifier{okData =
+                     ClassData{prior = -0.4700036292457356, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -1.1786549963416462),
+                                    ("ordinals (first..twentieth,thirtieth,...)quarter (grain)",
+                                     -1.466337068793427),
+                                    ("quarter", -0.7731898882334817)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.9808292530117262,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.8109302162163288),
+                                    ("quarter", -0.8109302162163288)],
+                               n = 3}}),
+       ("Boss's Day",
+        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}}),
+       ("Orthodox Easter Sunday",
+        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}}),
+       ("one twenty two",
+        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}}),
+       ("May",
+        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}}),
+       ("intersect",
+        Classifier{okData =
+                     ClassData{prior = -0.45391749149411126, unseen = -6.78105762593618,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Navaratriyear (latent)", -6.0867747269123065),
+                                    ("Father's Dayyear (latent)", -6.0867747269123065),
+                                    ("Ramadanyear (latent)", -6.0867747269123065),
+                                    ("<datetime> - <datetime> (interval)on <date>",
+                                     -4.834011758416939),
+                                    ("Bhai Doojyear (latent)", -6.0867747269123065),
+                                    ("<time-of-day> - <time-of-day> (interval)on <date>",
+                                     -4.834011758416939),
+                                    ("hourday", -4.382026634673881),
+                                    ("dayhour", -3.283414346005772),
+                                    ("Martin Luther King's Dayyear (latent)", -5.681309618804143),
+                                    ("Shemini Atzeretyear (latent)", -6.0867747269123065),
+                                    ("daymonth", -5.170483995038151),
+                                    ("monthday", -5.681309618804143),
+                                    ("monthyear", -4.295015257684252),
+                                    ("Yom Ha'atzmautyear (latent)", -6.0867747269123065),
+                                    ("Vijayadashamiyear (latent)", -6.0867747269123065),
+                                    ("Administrative Professionals' Dayyear (latent)",
+                                     -5.681309618804143),
+                                    ("Thanksgiving Dayyear (latent)", -4.988162438244197),
+                                    ("Thai Pongalyear (latent)", -5.393627546352362),
+                                    ("Thiru Onamyear (latent)", -5.393627546352362),
+                                    ("Tuesdaythe <day-of-month> (ordinal)", -6.0867747269123065),
+                                    ("from <datetime> - <datetime> (interval)July",
+                                     -6.0867747269123065),
+                                    ("houryear", -5.393627546352362),
+                                    ("this|next <day-of-week>hh(:mm) - <time-of-day> am|pm",
+                                     -6.0867747269123065),
+                                    ("Christmas<time-of-day> am|pm", -6.0867747269123065),
+                                    ("last <day-of-week> of <time>year (latent)",
+                                     -6.0867747269123065),
+                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.393627546352362),
+                                    ("<time-of-day> am|pmintersect", -4.834011758416939),
+                                    ("Earth Houryear (latent)", -6.0867747269123065),
+                                    ("Family Dayyear (latent)", -5.170483995038151),
+                                    ("Octoberyear (latent)", -4.582697330136033),
+                                    ("intersect<time-of-day> am|pm", -6.0867747269123065),
+                                    ("Mattu Pongalyear (latent)", -6.0867747269123065),
+                                    ("Shavuotyear (latent)", -6.0867747269123065),
+                                    ("Dhanterasin <named-month>|year", -6.0867747269123065),
+                                    ("at <time-of-day>in|within|after <duration>",
+                                     -6.0867747269123065),
+                                    ("Thursdayhh(:mm) - <time-of-day> am|pm", -6.0867747269123065),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -5.681309618804143),
+                                    ("Marchyear (latent)", -6.0867747269123065),
+                                    ("Sukkotyear (latent)", -5.681309618804143),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -6.0867747269123065),
+                                    ("Clean Mondayyear (latent)", -5.681309618804143),
+                                    ("monthhour", -5.681309618804143),
+                                    ("todayat <time-of-day>", -6.0867747269123065),
+                                    ("Thursday<time> timezone", -4.382026634673881),
+                                    ("from|since|after <time>December", -6.0867747269123065),
+                                    ("this <time>hh(:mm) - <time-of-day> am|pm",
+                                     -6.0867747269123065),
+                                    ("Palm SundaySunday", -5.681309618804143),
+                                    ("dayday", -3.8895501495760874),
+                                    ("<time> <part-of-day>at <time-of-day>", -6.0867747269123065),
+                                    ("mm/ddat <time-of-day>", -6.0867747269123065),
+                                    ("tonightat <time-of-day>", -6.0867747269123065),
+                                    ("<time-of-day> am|pmabsorption of , after named day",
+                                     -5.393627546352362),
+                                    ("today<time-of-day> am|pm", -6.0867747269123065),
+                                    ("Februarythe <day-of-month> (ordinal)", -5.681309618804143),
+                                    ("at <time-of-day><time> <part-of-day>", -6.0867747269123065),
+                                    ("mm/dd<time-of-day> am|pm", -6.0867747269123065),
+                                    ("hourhour", -4.834011758416939),
+                                    ("<time-of-day> am|pmon <date>", -4.071871706370042),
+                                    ("National Patriots' Dayyear (latent)", -5.393627546352362),
+                                    ("Wednesdaythis|last|next <cycle>", -6.0867747269123065),
+                                    ("Lentyear (latent)", -6.0867747269123065),
+                                    ("intersect<named-month> <day-of-month> (non ordinal)",
+                                     -4.582697330136033),
+                                    ("Boghiyear (latent)", -6.0867747269123065),
+                                    ("dayyear", -1.9123874570166697),
+                                    ("Thursdayfrom|since|after <time>", -5.681309618804143),
+                                    ("<time-of-day> o'clockin|during the <part-of-day>",
+                                     -6.0867747269123065),
+                                    ("Thursdayat <time-of-day>", -5.681309618804143),
+                                    ("Islamic New Yearyear (latent)", -5.681309618804143),
+                                    ("Laylat al-Qadryear (latent)", -5.170483995038151),
+                                    ("Chhathin <named-month>|year", -6.0867747269123065),
+                                    ("Vasant Panchamiin <named-month>|year", -6.0867747269123065),
+                                    ("Diwaliin <named-month>|year", -6.0867747269123065),
+                                    ("Discovery Dayyear (latent)", -5.681309618804143),
+                                    ("Shrove Tuesdayyear (latent)", -6.0867747269123065),
+                                    ("intersect by \",\", \"of\", \"from\" for year<time-of-day> am|pm",
+                                     -5.393627546352362),
+                                    ("<time-of-day> am|pmtomorrow", -5.393627546352362),
+                                    ("Yom Kippuryear (latent)", -6.0867747269123065),
+                                    ("<part-of-day> of <time>year (latent)", -6.0867747269123065),
+                                    ("minutehour", -5.170483995038151),
+                                    ("Kaanum Pongalyear (latent)", -5.681309618804143),
+                                    ("Maha Saptamiyear (latent)", -6.0867747269123065),
+                                    ("at <time-of-day>in|during the <part-of-day>",
+                                     -5.681309618804143),
+                                    ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
+                                     -4.382026634673881),
+                                    ("for <duration> from <time>December", -6.0867747269123065),
+                                    ("tomorrow<time-of-day> sharp|exactly", -6.0867747269123065),
+                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
+                                     -5.170483995038151),
+                                    ("on <date><named-month> <day-of-month> (non ordinal)",
+                                     -5.681309618804143),
+                                    ("Pentecostyear (latent)", -6.0867747269123065),
+                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.170483995038151),
+                                    ("Eid al-Fitryear (latent)", -6.0867747269123065),
+                                    ("Mondayin|during the <part-of-day>", -6.0867747269123065),
+                                    ("Raksha Bandhanyear (latent)", -6.0867747269123065),
+                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.681309618804143),
+                                    ("Navaratriin <named-month>|year", -6.0867747269123065),
+                                    ("Ashurayear (latent)", -6.0867747269123065),
+                                    ("Chinese New Yearyear (latent)", -6.0867747269123065),
+                                    ("Sundayyear (latent)", -6.0867747269123065),
+                                    ("Lag BaOmeryear (latent)", -6.0867747269123065),
+                                    ("last weekend of <named-month>year (latent)",
+                                     -6.0867747269123065),
+                                    ("Eid al-Adhayear (latent)", -5.170483995038151),
+                                    ("intersectin|during the <part-of-day>", -6.0867747269123065),
+                                    ("Christmasat <time-of-day>", -6.0867747269123065),
+                                    ("Passoveryear (latent)", -6.0867747269123065),
+                                    ("Lazarus Saturdayyear (latent)", -6.0867747269123065),
+                                    ("<day-of-month> (ordinal or number) <named-month>year (latent)",
+                                     -6.0867747269123065),
+                                    ("Yom HaShoahyear (latent)", -5.681309618804143),
+                                    ("Thursday<datetime> - <datetime> (interval)",
+                                     -5.681309618804143),
+                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
+                                     -6.0867747269123065),
+                                    ("Thai Pongalin <named-month>|year", -6.0867747269123065),
+                                    ("Septemberyear (latent)", -5.681309618804143),
+                                    ("mm/ddyear (latent)", -6.0867747269123065),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -4.834011758416939),
+                                    ("Halloweenyear (latent)", -6.0867747269123065),
+                                    ("<ordinal> last <cycle> of <time>year (latent)",
+                                     -5.681309618804143),
+                                    ("from <time-of-day> - <time-of-day> (interval)on <date>",
+                                     -5.393627546352362),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
+                                     -6.0867747269123065),
+                                    ("at <time-of-day>intersect", -5.681309618804143),
+                                    ("Rosh Hashanahyear (latent)", -5.393627546352362),
+                                    ("Dhanterasyear (latent)", -6.0867747269123065),
+                                    ("Tu BiShvatyear (latent)", -6.0867747269123065),
+                                    ("Holiyear (latent)", -5.393627546352362),
+                                    ("<time-of-day> - <time-of-day> (interval)tomorrow",
+                                     -6.0867747269123065),
+                                    ("Holika Dahanyear (latent)", -5.393627546352362),
+                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -6.0867747269123065),
+                                    ("dayminute", -3.4477173972970485),
+                                    ("Mawlidyear (latent)", -6.0867747269123065),
+                                    ("from <datetime> - <datetime> (interval)on <date>",
+                                     -5.681309618804143),
+                                    ("<datetime> - <datetime> (interval)tomorrow",
+                                     -6.0867747269123065),
+                                    ("Jumu'atul-Widayear (latent)", -5.170483995038151),
+                                    ("minuteday", -2.4491885671859213),
+                                    ("absorption of , after named dayintersect",
+                                     -6.0867747269123065),
+                                    ("intersectyear (latent)", -6.0867747269123065),
+                                    ("Orthodox Easter Sundayyear (latent)", -6.0867747269123065),
+                                    ("<ordinal> <cycle> of <time>year (latent)",
+                                     -6.0867747269123065),
+                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -6.0867747269123065),
+                                    ("Boss's Dayyear (latent)", -5.681309618804143),
+                                    ("Global Youth Service Dayyear (latent)", -6.0867747269123065),
+                                    ("Tisha B'Avyear (latent)", -6.0867747269123065),
+                                    ("Isra and Mi'rajyear (latent)", -5.170483995038151),
+                                    ("at <time-of-day>absorption of , after named day",
+                                     -6.0867747269123065),
+                                    ("Christmasyear (latent)", -5.681309618804143),
+                                    ("Naraka Chaturdashiyear (latent)", -5.681309618804143),
+                                    ("at <time-of-day>on <date>", -4.988162438244197),
+                                    ("between <time-of-day> and <time-of-day> (interval)on <date>",
+                                     -4.477336814478207),
+                                    ("dayweek", -6.0867747269123065),
+                                    ("Easter Sundayyear (latent)", -5.393627546352362),
+                                    ("Labour Dayyear (latent)", -6.0867747269123065),
+                                    ("weekyear", -4.988162438244197),
+                                    ("hh:mmin|during the <part-of-day>", -5.393627546352362),
+                                    ("<cycle> after|before <time><time-of-day> am|pm",
+                                     -5.681309618804143),
+                                    ("Hanukkahyear (latent)", -5.393627546352362),
+                                    ("February<time> <part-of-day>", -6.0867747269123065),
+                                    ("Tuesdayin <named-month>|year", -6.0867747269123065),
+                                    ("Great Lentyear (latent)", -6.0867747269123065),
+                                    ("tomorrowat <time-of-day>", -5.393627546352362),
+                                    ("between <time> and <time>on <date>", -4.477336814478207),
+                                    ("absorption of , after named dayintersect by \",\", \"of\", \"from\" for year",
+                                     -6.0867747269123065),
+                                    ("last <cycle> of <time>year (latent)", -5.393627546352362),
+                                    ("at <time-of-day>tomorrow", -5.681309618804143),
+                                    ("tomorrow<time-of-day> am|pm", -6.0867747269123065),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -6.0867747269123065),
+                                    ("Diwaliyear (latent)", -6.0867747269123065),
+                                    ("Black Fridayyear (latent)", -5.681309618804143),
+                                    ("the <ordinal> last <cycle> of <time>year (latent)",
+                                     -6.0867747269123065),
+                                    ("in|during the <part-of-day>at <time-of-day>",
+                                     -6.0867747269123065),
+                                    ("Chhathyear (latent)", -5.681309618804143),
+                                    ("Vasant Panchamiyear (latent)", -6.0867747269123065),
+                                    ("Palm Sundayintersect", -6.0867747269123065),
+                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
+                                     -6.0867747269123065),
+                                    ("Februaryintersect", -6.0867747269123065),
+                                    ("Mother's Dayyear (latent)", -6.0867747269123065),
+                                    ("Simchat Torahyear (latent)", -6.0867747269123065),
+                                    ("Victoria Dayyear (latent)", -5.681309618804143),
+                                    ("minuteyear", -6.0867747269123065)],
+                               n = 329},
+                   koData =
+                     ClassData{prior = -1.0082282271998406, unseen = -6.398594934535208,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day> - <time-of-day> (interval)on <date>",
+                                     -4.787491742782046),
+                                    ("hourday", -4.787491742782046),
+                                    ("<named-month> <day-of-month> (non ordinal)July",
+                                     -5.703782474656201),
+                                    ("dayhour", -3.138833117194664),
+                                    ("Tuesdayfrom|since|after <time>", -5.703782474656201),
+                                    ("daymonth", -3.56371631115993),
+                                    ("monthday", -5.298317366548036),
+                                    ("monthyear", -4.451019506160833),
+                                    ("<time-of-day> am|pmyear (latent)", -5.298317366548036),
+                                    ("Thai Pongalyear (latent)", -5.0106352940962555),
+                                    ("intersecthh:mm", -5.703782474656201),
+                                    ("from <datetime> - <datetime> (interval)July",
+                                     -5.703782474656201),
+                                    ("houryear", -4.787491742782046),
+                                    ("from <time-of-day> - <time-of-day> (interval)July",
+                                     -5.703782474656201),
+                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.0106352940962555),
+                                    ("<time-of-day> am|pmintersect", -4.451019506160833),
+                                    ("until <time>on <date>", -5.0106352940962555),
+                                    ("Octoberyear (latent)", -5.703782474656201),
+                                    ("July<day-of-month> (ordinal or number) <named-month>",
+                                     -5.703782474656201),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -4.451019506160833),
+                                    ("about|exactly <time-of-day>year (latent)",
+                                     -5.703782474656201),
+                                    ("absorption of , after named dayJuly", -5.298317366548036),
+                                    ("from|since|after <time>July", -5.703782474656201),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -4.787491742782046),
+                                    ("Clean Mondayyear (latent)", -5.703782474656201),
+                                    ("monthhour", -5.703782474656201),
+                                    ("hourmonth", -4.787491742782046),
+                                    ("todayat <time-of-day>", -5.703782474656201),
+                                    ("from|since|after <time>December", -5.703782474656201),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -5.703782474656201),
+                                    ("Mondayyear (latent)", -5.0106352940962555),
+                                    ("dayday", -5.298317366548036),
+                                    ("mm/ddat <time-of-day>", -5.298317366548036),
+                                    ("<time-of-day> am|pmon <date>", -4.451019506160833),
+                                    ("dayyear", -2.7333680090865),
+                                    ("Thursdaymm/dd", -5.703782474656201),
+                                    ("New Year's Dayyear (latent)", -5.298317366548036),
+                                    ("Thursdayfrom|since|after <time>", -3.9990343824177756),
+                                    ("Thursdayat <time-of-day>", -4.451019506160833),
+                                    ("<integer> to|till|before <hour-of-day>September",
+                                     -5.703782474656201),
+                                    ("Aprilyear (latent)", -5.703782474656201),
+                                    ("monthminute", -5.703782474656201),
+                                    ("<time-of-day> am|pmtomorrow", -5.703782474656201),
+                                    ("Thursdayhh:mm", -4.787491742782046),
+                                    ("August<day-of-month> (ordinal or number) <named-month>",
+                                     -5.703782474656201),
+                                    ("minutemonth", -3.912023005428146),
+                                    ("week-endin <named-month>|year", -5.703782474656201),
+                                    ("Augustyear (latent)", -5.298317366548036),
+                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
+                                     -5.298317366548036),
+                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.298317366548036),
+                                    ("mm/dd<time-of-day> - <time-of-day> (interval)",
+                                     -5.298317366548036),
+                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.703782474656201),
+                                    ("Sundayyear (latent)", -5.0106352940962555),
+                                    ("Christmasat <time-of-day>", -5.703782474656201),
+                                    ("from|since|after <time>year (latent)", -4.451019506160833),
+                                    ("<duration> after|before|from <time>December",
+                                     -5.703782474656201),
+                                    ("yesterday<time-of-day> am|pm", -5.703782474656201),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
+                                     -5.703782474656201),
+                                    ("mm/ddyear (latent)", -5.703782474656201),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -5.0106352940962555),
+                                    ("<named-month> <day-of-month> (non ordinal)August",
+                                     -5.703782474656201),
+                                    ("at <time-of-day>intersect", -5.298317366548036),
+                                    ("hh:mmyear (latent)", -4.605170185988091),
+                                    ("Holiyear (latent)", -5.703782474656201),
+                                    ("until <time><time-of-day> am|pm", -5.703782474656201),
+                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.703782474656201),
+                                    ("dayminute", -3.1780538303479458),
+                                    ("intersectSeptember", -4.199705077879927),
+                                    ("minuteday", -2.635729539522584),
+                                    ("absorption of , after named dayintersect",
+                                     -5.703782474656201),
+                                    ("Februaryin|during the <part-of-day>", -5.703782474656201),
+                                    ("hh:mmon <date>", -3.6888794541139363),
+                                    ("Saturdayyear (latent)", -5.703782474656201),
+                                    ("from|since|after <time>on <date>", -4.787491742782046),
+                                    ("absorption of , after named daySeptember",
+                                     -4.787491742782046),
+                                    ("Naraka Chaturdashiyear (latent)", -5.703782474656201),
+                                    ("on <date>September", -5.298317366548036),
+                                    ("at <time-of-day>on <date>", -5.298317366548036),
+                                    ("in <named-month>|yearyear (latent)", -5.703782474656201),
+                                    ("dayweek", -5.703782474656201),
+                                    ("Easter Sundayyear (latent)", -5.298317366548036),
+                                    ("Thursday<time-of-day> am|pm", -5.0106352940962555),
+                                    ("weekyear", -5.298317366548036),
+                                    ("<named-month> <day-of-month> (non ordinal)until <time>",
+                                     -5.703782474656201),
+                                    ("intersect by \",\", \"of\", \"from\" for yearhh:mm",
+                                     -5.0106352940962555),
+                                    ("Sundayfrom|since|after <time>", -5.703782474656201),
+                                    ("absorption of , after named dayFebruary", -4.787491742782046),
+                                    ("July<integer> to|till|before <hour-of-day>",
+                                     -5.703782474656201),
+                                    ("tomorrowat <time-of-day>", -5.703782474656201),
+                                    ("<integer> to|till|before <hour-of-day>July",
+                                     -5.703782474656201),
+                                    ("last <cycle> of <time>year (latent)", -5.298317366548036),
+                                    ("tomorrow<time-of-day> am|pm", -5.703782474656201),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -5.0106352940962555),
+                                    ("Diwaliyear (latent)", -5.298317366548036),
+                                    ("<time-of-day> - <time-of-day> (interval)July",
+                                     -5.703782474656201),
+                                    ("Fridayyear (latent)", -5.298317366548036),
+                                    ("minuteyear", -4.451019506160833)],
+                               n = 189}}),
+       ("one eleven",
+        Classifier{okData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},
+                   koData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("after lunch/work/school",
+        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}}),
+       ("early morning",
+        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}}),
+       ("in <number> (implicit minutes)",
+        Classifier{okData =
+                     ClassData{prior = -1.2685113254635072,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.3184537311185346),
+                                    ("integer (0..19)", -1.2992829841302609)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.33024168687057687,
+                               unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.2231435513142097),
+                                    ("integer (0..19)", -1.6094379124341003)],
+                               n = 23}}),
+       ("<ordinal> <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.791759469228055),
+                                    ("ordinal (digits)quarter (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("quarteryear", -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)October",
+                                     -2.1972245773362196),
+                                    ("ordinal (digits)day (grain)this|last|next <cycle>",
+                                     -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.1972245773362196),
+                                    ("weekmonth", -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.1972245773362196)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("year (grain)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.367295829986474,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 27},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("from <datetime> - <datetime> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -1.0116009116784799,
+                               unseen = -3.6375861597263857,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -2.001480000210124),
+                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal)",
+                                     -2.917770732084279),
+                                    ("hh:mmhh:mm", -2.001480000210124),
+                                    ("dayday", -2.512305623976115),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)<day-of-month> (ordinal)",
+                                     -2.917770732084279),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.917770732084279),
+                                    ("hourhour", -2.512305623976115),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.917770732084279)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -0.45198512374305727,
+                               unseen = -3.912023005428146,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hourday", -3.1986731175506815),
+                                    ("dayhour", -2.793208009442517),
+                                    ("<day-of-month> (ordinal)time-of-day (latent)",
+                                     -3.1986731175506815),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -3.1986731175506815),
+                                    ("hh:mmtime-of-day (latent)", -2.2823823856765264),
+                                    ("minuteminute", -2.793208009442517),
+                                    ("time-of-day (latent)time-of-day (latent)",
+                                     -2.793208009442517),
+                                    ("dayday", -3.1986731175506815),
+                                    ("hourhour", -2.505525936990736),
+                                    ("dayyear", -3.1986731175506815),
+                                    ("minutehour", -2.2823823856765264),
+                                    ("hh:mmintersect", -2.793208009442517),
+                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal or number) <named-month>",
+                                     -3.1986731175506815),
+                                    ("time-of-day (latent)<time-of-day> am|pm",
+                                     -3.1986731175506815),
+                                    ("time-of-day (latent)<day-of-month> (ordinal or number) <named-month>",
+                                     -3.1986731175506815),
+                                    ("<named-month> <day-of-month> (non ordinal)time-of-day (latent)",
+                                     -3.1986731175506815)],
+                               n = 14}}),
+       ("Saturday",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.9459101490553135,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("the <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week (grain)<named-month>|<named-day> <day-of-month> (ordinal)",
+                                     -1.7346010553881064),
+                                    ("weekmonth", -1.7346010553881064),
+                                    ("week (grain)October", -1.7346010553881064),
+                                    ("week (grain)<named-month> <day-of-month> (non ordinal)",
+                                     -1.7346010553881064),
+                                    ("weekday", -1.2237754316221157)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("number.number hours",
+        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}}),
+       ("from <time-of-day> - <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -1.6094379124341003),
+                                    ("hh:mmhh:mm", -1.6094379124341003),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
+                                    ("hourhour", -2.3025850929940455),
+                                    ("hourminute", -2.3025850929940455),
+                                    ("time-of-day (latent)<time-of-day> sharp|exactly",
+                                     -2.70805020110221),
+                                    ("time-of-day (latent)hh:mm", -2.70805020110221),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.6094379124341003),
+                                    ("time-of-day (latent)time-of-day (latent)",
+                                     -2.0149030205422647),
+                                    ("hourhour", -1.791759469228055),
+                                    ("minutehour", -1.6094379124341003),
+                                    ("time-of-day (latent)<time-of-day> am|pm", -2.70805020110221)],
+                               n = 9}}),
+       ("integer 21..99",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)integer (numeric)", -0.6931471805599453),
+                                    ("integer (20..90)integer (0..19)", -0.6931471805599453)],
+                               n = 4}}),
+       ("Global Youth Service Day",
+        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}}),
+       ("Tisha B'Av",
+        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}}),
+       ("yyyy-mm-dd",
+        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}}),
+       ("year (latent)",
+        Classifier{okData =
+                     ClassData{prior = -0.1431008436406733, unseen = -5.081404364984463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -3.822121282019774e-2),
+                                    ("intersect 2 numbers", -3.6888794541139363)],
+                               n = 156},
+                   koData =
+                     ClassData{prior = -2.0149030205422647, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -1.1349799328389845),
+                                    ("negative numbers", -0.6931471805599453),
+                                    ("compose by multiplication", -1.9459101490553135)],
+                               n = 24}}),
+       ("mm/dd/yyyy",
+        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}}),
+       ("Civic Holiday",
+        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}}),
+       ("<time> for <duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -1.0296194171811581),
+                                    ("intersect<integer> <unit-of-duration>", -1.9459101490553135),
+                                    ("<day-of-month> (ordinal or number) <named-month><integer> <unit-of-duration>",
+                                     -1.540445040947149),
+                                    ("from|since|after <time><integer> <unit-of-duration>",
+                                     -1.9459101490553135)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("monthday", -1.2039728043259361),
+                                    ("December<integer> <unit-of-duration>", -1.2039728043259361)],
+                               n = 2}}),
+       ("Memorial Day",
+        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}}),
+       ("Monday",
+        Classifier{okData =
+                     ClassData{prior = -0.3483066942682157, unseen = -2.639057329615259,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
+                   koData =
+                     ClassData{prior = -1.2237754316221157,
+                               unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
+       ("yesterday",
+        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}}),
+       ("<ordinal> quarter <year>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)year (latent)",
+                                     -0.6931471805599453),
+                                    ("quarteryear", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("hh:mm:ss",
+        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}}),
+       ("Hanukkah",
+        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}}),
+       ("<hour-of-day> <integer>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>integer (20..90)", -1.3862943611198906),
+                                    ("hour", -0.9808292530117262),
+                                    ("at <time-of-day>integer (numeric)", -1.3862943611198906)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("about|exactly <time-of-day>integer (numeric)",
+                                     -1.0986122886681098),
+                                    ("hour", -1.0986122886681098)],
+                               n = 1}}),
+       ("Labour Day",
+        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}}),
+       ("nth <time> of <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.4700036292457356, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -0.9808292530117262),
+                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
+                                     -2.0794415416798357),
+                                    ("ordinals (first..twentieth,thirtieth,...)Wednesdayintersect",
+                                     -1.6739764335716716),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayOctober",
+                                     -1.6739764335716716)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.9808292530117262,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.0986122886681098),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdaySeptember",
+                                     -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)WednesdayOctober",
+                                     -1.3862943611198906)],
+                               n = 3}}),
+       ("half a <time-grain>",
+        Classifier{okData =
+                     ClassData{prior = -0.1823215567939546,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -1.791759469228055, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1}}),
+       ("Valentine's Day",
+        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}}),
+       ("April",
+        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}}),
+       ("Maha Saptami",
+        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}}),
+       ("Discovery Day",
+        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}}),
+       ("end of month",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("week (grain)",
+        Classifier{okData =
+                     ClassData{prior = -3.822121282019774e-2,
+                               unseen = -4.3694478524670215,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 77},
+                   koData =
+                     ClassData{prior = -3.283414346005772, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("<part-of-day> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("part of daysintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -2.3513752571634776),
+                                    ("part of daysintersect", -2.3513752571634776),
+                                    ("hourday", -0.9650808960435872),
+                                    ("part of daysthe <day-of-month> (ordinal)",
+                                     -2.3513752571634776),
+                                    ("part of daysthe <day-of-month> (number)",
+                                     -2.3513752571634776),
+                                    ("part of daysthis <time>", -2.3513752571634776),
+                                    ("part of daysChristmas", -1.9459101490553135)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("from <time> for <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.6931471805599453),
+                                    ("<day-of-month> (ordinal or number) <named-month><integer> <unit-of-duration>",
+                                     -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("six thirty six a.m.",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -1.252762968495368),
+                                    ("one twenty two", -0.8472978603872037),
+                                    ("one eleven", -1.252762968495368)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Shrove Tuesday",
+        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}}),
+       ("now",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.9459101490553135,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("<day-of-month> (ordinal or number) of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -0.13353139262452263,
+                               unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)July", -2.3513752571634776),
+                                    ("ordinals (first..twentieth,thirtieth,...)March",
+                                     -2.3513752571634776),
+                                    ("ordinal (digits)February", -2.3513752571634776),
+                                    ("integer (numeric)February", -1.9459101490553135),
+                                    ("month", -0.9650808960435872),
+                                    ("ordinal (digits)March", -2.3513752571634776),
+                                    ("integer (numeric)July", -2.3513752571634776)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -2.0794415416798357,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)February", -1.5040773967762742),
+                                    ("month", -1.5040773967762742)],
+                               n = 1}}),
+       ("this <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.6931471805599453),
+                                    ("part of days", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Kaanum Pongal",
+        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}}),
+       ("Yom Kippur",
+        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}}),
+       ("The Twelfth",
+        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}}),
+       ("powers of tens",
+        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}}),
+       ("Friday",
+        Classifier{okData =
+                     ClassData{prior = -0.3677247801253174,
+                               unseen = -2.3978952727983707,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},
+                   koData =
+                     ClassData{prior = -1.1786549963416462, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("in|during the <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -8.701137698962981e-2,
+                               unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("early morning", -2.5257286443082556),
+                                    ("hour", -0.7339691750802004),
+                                    ("part of days", -0.8209805520698302)],
+                               n = 11},
+                   koData =
+                     ClassData{prior = -2.4849066497880004, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.916290731874155),
+                                    ("part of days", -0.916290731874155)],
+                               n = 1}}),
+       ("tomorrow",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 17},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("hh(:mm) - <time-of-day> am|pm",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Groundhog Day",
+        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}}),
+       ("this|last|next <cycle>",
+        Classifier{okData =
+                     ClassData{prior = -0.15600424847658126, unseen = -5.10594547390058,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.1295745142720766),
+                                    ("month (grain)", -2.797281334830153),
+                                    ("year (grain)", -2.5349170703626616),
+                                    ("week (grain)", -1.1295745142720766),
+                                    ("quarter", -3.4904285153900982), ("year", -2.5349170703626616),
+                                    ("month", -2.797281334830153),
+                                    ("quarter (grain)", -3.4904285153900982)],
+                               n = 77},
+                   koData =
+                     ClassData{prior = -1.9348603128687285,
+                               unseen = -3.6109179126442243,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.2809338454620642),
+                                    ("week (grain)", -1.2809338454620642),
+                                    ("day", -1.9740810260220096),
+                                    ("day (grain)", -1.9740810260220096)],
+                               n = 13}}),
+       ("Mother's Day",
+        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}}),
+       ("Simchat Torah",
+        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}}),
+       ("Victoria Day",
+        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}}),
+       ("New Year's Eve",
+        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}}),
+       ("the <ordinal> <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)year (latent)",
+                                     -0.6931471805599453),
+                                    ("quarteryear", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Raksha Bandhan",
+        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}}),
+       ("Ashura",
+        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}}),
+       ("Palm Sunday",
+        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}}),
+       ("Eid al-Adha",
+        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}}),
+       ("by <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("noon|midnight|EOD|end of day", -1.9459101490553135),
+                                    ("time-of-day (latent)", -1.9459101490553135),
+                                    ("<time-of-day> am|pm", -1.9459101490553135),
+                                    ("hh:mm", -1.9459101490553135), ("hour", -1.540445040947149),
+                                    ("minute", -1.540445040947149)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the <day-of-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.5753641449035618,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)",
+                                     -1.7047480922384253),
+                                    ("ordinal (digits)", -0.2006706954621511)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.8266785731844679,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)",
+                                     -0.8109302162163288),
+                                    ("ordinal (digits)", -0.587786664902119)],
+                               n = 7}}),
+       ("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,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Lag BaOmer",
+        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}}),
+       ("fractional number",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 17}}),
+       ("Sunday",
+        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}}),
+       ("Chinese New Year",
+        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}}),
+       ("February",
+        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}}),
+       ("minute (grain)",
+        Classifier{okData =
+                     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}}),
+       ("last|this|next <season>",
+        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}}),
+       ("the <ordinal> quarter",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
+                                    ("quarter", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
+                                    ("quarter", -0.6931471805599453)],
+                               n = 1}}),
+       ("time-of-day (latent)",
+        Classifier{okData =
+                     ClassData{prior = -0.635159922909596, unseen = -4.31748811353631,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.11441035117774422),
+                                    ("integer (0..19)", -2.3581549441488563)],
+                               n = 71},
+                   koData =
+                     ClassData{prior = -0.7547050735593787, unseen = -4.204692619390966,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -7.878087785311434e-2),
+                                    ("integer (0..19)", -3.0910424533583156),
+                                    ("integer 21..99", -3.4965075614664802)],
+                               n = 63}}),
+       ("beginning of year",
+        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}}),
+       ("last <day-of-week> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -0.916290731874155),
+                                    ("SundayMarch", -1.6094379124341003),
+                                    ("MondayMarch", -1.6094379124341003),
+                                    ("Sundayintersect", -1.6094379124341003)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.13353139262452263,
+                               unseen = -5.181783550292085,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.5370924029585704),
+                                    ("integer (0..19)year (grain)", -2.9789251552376097),
+                                    ("integer (numeric)day (grain)", -2.6112003751122925),
+                                    ("integer (0..19)second (grain) ", -3.7898553714539385),
+                                    ("integer (0..19)hour (grain)", -3.096708190893993),
+                                    ("second", -3.3843902633457743),
+                                    ("integer (numeric)second (grain) ", -4.07753744390572),
+                                    ("integer (numeric)year (grain)", -3.3843902633457743),
+                                    ("day", -2.342936388517613), ("year", -2.5370924029585704),
+                                    ("integer (numeric)week (grain)", -3.096708190893993),
+                                    ("integer (0..19)month (grain)", -3.5667118201397288),
+                                    ("hour", -2.691243082785829), ("month", -3.230239583518516),
+                                    ("integer (numeric)minute (grain)", -3.230239583518516),
+                                    ("integer (0..19)minute (grain)", -3.096708190893993),
+                                    ("integer (numeric)month (grain)", -4.07753744390572),
+                                    ("minute", -2.5370924029585704),
+                                    ("integer (numeric)hour (grain)", -3.5667118201397288),
+                                    ("integer (0..19)day (grain)", -3.5667118201397288),
+                                    ("integer (0..19)week (grain)", -3.230239583518516)],
+                               n = 77},
+                   koData =
+                     ClassData{prior = -2.0794415416798357, unseen = -3.828641396489095,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("quarter", -3.1135153092103742), ("hour", -1.4087672169719492),
+                                    ("integer (numeric)hour (grain)", -1.4087672169719492),
+                                    ("integer (0..19)quarter (grain)", -3.1135153092103742)],
+                               n = 11}}),
+       ("hhmm (latent)",
+        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}}),
+       ("<time-of-day> am|pm",
+        Classifier{okData =
+                     ClassData{prior = -0.2546422183735807, unseen = -5.37989735354046,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>", -3.765840495250065),
+                                    ("integer after|past <hour-of-day>", -3.9889840465642745),
+                                    ("at <time-of-day>", -2.1564025828159643),
+                                    ("<time-of-day> o'clock", -4.276666119016055),
+                                    ("half after|past <hour-of-day>", -4.276666119016055),
+                                    ("time-of-day (latent)", -1.7117167615545186),
+                                    ("hhmm (latent)", -4.68213122712422),
+                                    ("hh:mm", -2.330755969960742),
+                                    ("quarter after|past <hour-of-day>", -4.68213122712422),
+                                    ("until <time>", -3.9889840465642745),
+                                    ("about|exactly <time-of-day>", -4.68213122712422),
+                                    ("hour", -1.1856236656577395),
+                                    ("<time-of-day> sharp|exactly", -4.68213122712422),
+                                    ("minute", -1.791759469228055)],
+                               n = 100},
+                   koData =
+                     ClassData{prior = -1.492516574375198, unseen = -4.31748811353631,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> to|till|before <hour-of-day>", -3.20545280453606),
+                                    ("from|since|after <time>", -3.20545280453606),
+                                    ("<hour-of-day> <integer>", -3.6109179126442243),
+                                    ("time-of-day (latent)", -1.085189268335969),
+                                    ("hour", -1.0459685551826876), ("minute", -2.6946271807700692)],
+                               n = 29}}),
+       ("Yom Ha'atzmaut",
+        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}}),
+       ("from <day-of-month> (ordinal or number) to <day-of-month> (ordinal or number) <named-month> (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)ordinal (digits)July", -1.252762968495368),
+                                    ("integer (numeric)integer (numeric)July", -1.252762968495368),
+                                    ("month", -0.8472978603872037)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Thiru Onam",
+        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}}),
+       ("Thai Pongal",
+        Classifier{okData =
+                     ClassData{prior = -0.5596157879354228, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
+                   koData =
+                     ClassData{prior = -0.8472978603872037,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Vijayadashami",
+        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}}),
+       ("Administrative Professionals' Day",
+        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}}),
+       ("Thanksgiving Day",
+        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}}),
+       ("part of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("a <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.5306282510621704,
+                               unseen = -3.5553480614894135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.1400661634962708),
+                                    ("year (grain)", -2.4277482359480516),
+                                    ("second", -2.833213344056216),
+                                    ("week (grain)", -2.1400661634962708),
+                                    ("day", -2.1400661634962708),
+                                    ("minute (grain)", -2.833213344056216),
+                                    ("year", -2.4277482359480516),
+                                    ("second (grain) ", -2.833213344056216),
+                                    ("minute", -2.833213344056216),
+                                    ("day (grain)", -2.1400661634962708)],
+                               n = 10},
+                   koData =
+                     ClassData{prior = -0.8873031950009028, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -1.7227665977411035),
+                                    ("quarter", -1.9459101490553135), ("hour", -1.7227665977411035),
+                                    ("quarter (grain)", -1.9459101490553135)],
+                               n = 7}}),
+       ("at the beginning|end of <year>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year (latent)", -0.6931471805599453),
+                                    ("year", -0.6931471805599453)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Dhanteras",
+        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}}),
+       ("Tu BiShvat",
+        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}}),
+       ("Whit Monday",
+        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}}),
+       ("hh:mm",
+        Classifier{okData =
+                     ClassData{prior = -5.6352936551131744e-2,
+                               unseen = -4.2626798770413155,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 69},
+                   koData =
+                     ClassData{prior = -2.9041650800285006, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("Holi",
+        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}}),
+       ("Rosh Hashanah",
+        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}}),
+       ("<integer> <named-day> ago|back",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)Thursday", -0.6931471805599453),
+                                    ("day", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Holika Dahan",
+        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}}),
+       ("quarter of an hour",
+        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}}),
+       ("second (grain) ",
+        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}}),
+       ("ordinals (first..twentieth,thirtieth,...)",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18},
+                   koData =
+                     ClassData{prior = -1.9459101490553135,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Mawlid",
+        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}}),
+       ("Jumu'atul-Wida",
+        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}}),
+       ("quarter after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("until <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.1786549963416462, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year (latent)", -2.159484249353372),
+                                    ("time-of-day (latent)", -2.5649493574615367),
+                                    ("year", -2.159484249353372),
+                                    ("<time-of-day> am|pm", -1.8718021769015913),
+                                    ("hh:mm", -2.159484249353372), ("hour", -2.159484249353372),
+                                    ("minute", -1.6486586255873816)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -0.3677247801253174,
+                               unseen = -3.8501476017100584,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersect", -2.2192034840549946),
+                                    ("yesterday", -2.7300291078209855),
+                                    ("day", -2.7300291078209855),
+                                    ("time-of-day (latent)", -1.6314168191528755),
+                                    ("hh:mm", -2.2192034840549946), ("hour", -1.5260563034950494),
+                                    ("minute", -1.749199854809259)],
+                               n = 18}}),
+       ("the <cycle> after|before <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)tomorrow", -1.252762968495368),
+                                    ("dayday", -0.8472978603872037),
+                                    ("day (grain)yesterday", -1.252762968495368)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("about|exactly <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -3.6109179126442243,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.791759469228055),
+                                    ("hh(:mm) - <time-of-day> am|pm", -2.890371757896165),
+                                    ("this|last|next <cycle>", -1.791759469228055),
+                                    ("day", -2.4849066497880004),
+                                    ("time-of-day (latent)", -2.890371757896165),
+                                    ("hhmm (latent)", -2.4849066497880004),
+                                    ("<time-of-day> am|pm", -2.890371757896165),
+                                    ("hour", -2.1972245773362196),
+                                    ("next <time>", -2.890371757896165),
+                                    ("this|next <day-of-week>", -2.890371757896165),
+                                    ("minute", -2.4849066497880004)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -1.9459101490553135, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("mm/dd", -2.0794415416798357), ("day", -2.0794415416798357),
+                                    ("time-of-day (latent)", -2.0794415416798357),
+                                    ("hour", -2.0794415416798357)],
+                               n = 2}}),
+       ("Sukkot",
+        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> in <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("monthyear", -1.540445040947149),
+                                    ("Marcha <unit-of-duration>", -1.9459101490553135),
+                                    ("March<integer> <unit-of-duration>", -1.9459101490553135),
+                                    ("Vijayadashami<integer> <unit-of-duration>",
+                                     -1.9459101490553135),
+                                    ("Administrative Professionals' Day<integer> <unit-of-duration>",
+                                     -1.9459101490553135),
+                                    ("dayyear", -1.540445040947149)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("World Vegan Day",
+        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}}),
+       ("intersect by \",\", \"of\", \"from\", \"'s\"",
+        Classifier{okData =
+                     ClassData{prior = -0.5292593254548287, unseen = -4.969813299576001,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Wednesday<named-month> <day-of-month> (non ordinal)",
+                                     -4.269697449699962),
+                                    ("dayhour", -3.8642323415917974),
+                                    ("daymonth", -3.016934481204594),
+                                    ("<named-month> <day-of-month> (non ordinal)Friday",
+                                     -4.269697449699962),
+                                    ("Friday<named-month> <day-of-month> (non ordinal)",
+                                     -3.5765502691400166),
+                                    ("Wednesdayintersect", -4.269697449699962),
+                                    ("Black Fridaythis|last|next <cycle>", -4.269697449699962),
+                                    ("Labour Daythis|last|next <cycle>", -4.269697449699962),
+                                    ("<part-of-day> of <time>February", -4.269697449699962),
+                                    ("Saturday<time-of-day> am|pm", -4.269697449699962),
+                                    ("Martin Luther King's Daythis|last|next <cycle>",
+                                     -3.8642323415917974),
+                                    ("on <date><time-of-day> am|pm", -4.269697449699962),
+                                    ("hourmonth", -4.269697449699962),
+                                    ("Fridayintersect by \",\", \"of\", \"from\" for year",
+                                     -4.269697449699962),
+                                    ("dayday", -2.3978952727983707),
+                                    ("the <day-of-month> (ordinal)February", -3.8642323415917974),
+                                    ("WednesdayOctober", -4.269697449699962),
+                                    ("Wednesdaythis|last|next <cycle>", -3.8642323415917974),
+                                    ("intersect<named-month> <day-of-month> (non ordinal)",
+                                     -3.353406717825807),
+                                    ("dayyear", -3.1710851610318525),
+                                    ("Saturday<named-month> <day-of-month> (non ordinal)",
+                                     -4.269697449699962),
+                                    ("Thursdayhh:mm", -3.8642323415917974),
+                                    ("Thanksgiving Daythis|last|next <cycle>", -4.269697449699962),
+                                    ("on <date><named-month> <day-of-month> (non ordinal)",
+                                     -3.8642323415917974),
+                                    ("TuesdayOctober", -4.269697449699962),
+                                    ("the <day-of-month> (ordinal)March", -4.269697449699962),
+                                    ("Mondaythis|last|next <cycle>", -4.269697449699962),
+                                    ("Fridayintersect", -4.269697449699962),
+                                    ("Thursday<datetime> - <datetime> (interval)",
+                                     -3.8642323415917974),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -3.8642323415917974),
+                                    ("Tuesdaythis|last|next <cycle>", -4.269697449699962),
+                                    ("Sunday<named-month> <day-of-month> (non ordinal)",
+                                     -4.269697449699962),
+                                    ("dayminute", -2.883403088580071),
+                                    ("minuteday", -3.353406717825807),
+                                    ("this|last|next <cycle>Sunday", -4.269697449699962),
+                                    ("Sundaythis|last|next <cycle>", -4.269697449699962),
+                                    ("weekday", -4.269697449699962),
+                                    ("dayweek", -3.1710851610318525),
+                                    ("Monday<named-month> <day-of-month> (non ordinal)",
+                                     -3.8642323415917974)],
+                               n = 43},
+                   koData =
+                     ClassData{prior = -0.8892620594862358, unseen = -4.770684624465665,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week-endJuly", -4.069026754237811),
+                                    ("week-endOctober", -3.3758795736778655),
+                                    ("daymonth", -1.8718021769015913),
+                                    ("TuesdaySeptember", -4.069026754237811),
+                                    ("Wednesdayintersect", -4.069026754237811),
+                                    ("hourmonth", -2.9704144655697013),
+                                    ("Fridaythis|last|next <cycle>", -4.069026754237811),
+                                    ("SundayFebruary", -4.069026754237811),
+                                    ("WednesdayOctober", -4.069026754237811),
+                                    ("week-endintersect", -4.069026754237811),
+                                    ("dayyear", -4.069026754237811),
+                                    ("FridayJuly", -3.6635616461296463),
+                                    ("FridaySeptember", -4.069026754237811),
+                                    ("WednesdayFebruary", -4.069026754237811),
+                                    ("minutemonth", -3.152736022363656),
+                                    ("SundayMarch", -4.069026754237811),
+                                    ("MondayFebruary", -3.6635616461296463),
+                                    ("Fridayintersect", -4.069026754237811),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -3.6635616461296463),
+                                    ("dayminute", -3.3758795736778655),
+                                    ("SaturdaySeptember", -4.069026754237811),
+                                    ("intersectSeptember", -3.152736022363656),
+                                    ("MondayMarch", -4.069026754237811),
+                                    ("on <date>September", -3.6635616461296463),
+                                    ("Tuesdayintersect", -4.069026754237811),
+                                    ("Sundayintersect", -4.069026754237811)],
+                               n = 30}}),
+       ("last <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.5306282510621704,
+                               unseen = -3.4965075614664802,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Father's Day", -2.772588722239781),
+                                    ("Martin Luther King's Day", -2.772588722239781),
+                                    ("Mother's Day", -2.772588722239781),
+                                    ("day", -1.1631508098056809), ("Sunday", -2.772588722239781),
+                                    ("Chinese New Year", -2.367123614131617),
+                                    ("Thanksgiving Day", -2.772588722239781),
+                                    ("Easter Sunday", -2.772588722239781),
+                                    ("hour", -2.772588722239781), ("Tuesday", -2.772588722239781),
+                                    ("week-end", -2.772588722239781)],
+                               n = 10},
+                   koData =
+                     ClassData{prior = -0.8873031950009028, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Monday", -2.5649493574615367), ("day", -2.159484249353372),
+                                    ("Sunday", -2.5649493574615367), ("hour", -1.466337068793427),
+                                    ("week-end", -1.466337068793427)],
+                               n = 7}}),
+       ("March",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.044522437723423,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 19},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<named-month>|<named-day> <day-of-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.2231435513142097, unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Octoberordinal (digits)", -2.120263536200091),
+                                    ("Thursdayordinal (digits)", -2.5257286443082556),
+                                    ("day", -2.120263536200091),
+                                    ("Augustordinal (digits)", -2.5257286443082556),
+                                    ("Marchordinals (first..twentieth,thirtieth,...)",
+                                     -2.120263536200091),
+                                    ("Tuesdayordinal (digits)", -2.5257286443082556),
+                                    ("month", -1.2729656758128873),
+                                    ("Marchordinal (digits)", -2.5257286443082556)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -1.6094379124341003, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>ordinal (digits)",
+                                     -1.8718021769015913),
+                                    ("Augustordinal (digits)", -1.8718021769015913),
+                                    ("month", -1.466337068793427)],
+                               n = 2}}),
+       ("Clean Monday",
+        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-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("ordinal (digits)", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Easter Sunday",
+        Classifier{okData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
+       ("Christmas",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("mm.dd.yyyy",
+        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}}),
+       ("Isra and Mi'raj",
+        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}}),
+       ("<duration> after|before|from <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.3184537311185346,
+                               unseen = -3.5263605246161616,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("a <unit-of-duration>now", -2.803360380906535),
+                                    ("a <unit-of-duration>Christmas", -2.803360380906535),
+                                    ("dayday", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>today", -2.803360380906535),
+                                    ("daysecond", -2.803360380906535),
+                                    ("a <unit-of-duration>right now", -2.803360380906535),
+                                    ("minutenograin", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>Christmas", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>Easter Sunday",
+                                     -2.803360380906535),
+                                    ("secondnograin", -2.803360380906535),
+                                    ("yearday", -2.1102132003465894),
+                                    ("daynograin", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>now", -2.3978952727983707)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -1.2992829841302609,
+                               unseen = -3.1780538303479458,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -2.4423470353692043),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal)",
+                                     -2.4423470353692043),
+                                    ("dayday", -2.03688192726104),
+                                    ("<integer> <unit-of-duration>time-of-day (latent)",
+                                     -2.4423470353692043),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
+                                     -2.4423470353692043)],
+                               n = 3}}),
+       ("<day-of-month> (ordinal or number) of <month>",
+        Classifier{okData =
+                     ClassData{prior = -8.004270767353637e-2,
+                               unseen = -3.5263605246161616,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)July", -2.803360380906535),
+                                    ("ordinals (first..twentieth,thirtieth,...)March",
+                                     -2.803360380906535),
+                                    ("ordinal (digits)this|last|next <cycle>", -2.1102132003465894),
+                                    ("integer (numeric)this|last|next <cycle>",
+                                     -2.3978952727983707),
+                                    ("ordinal (digits)February", -2.803360380906535),
+                                    ("integer (numeric)February", -2.3978952727983707),
+                                    ("month", -0.9315582040049435),
+                                    ("ordinal (digits)March", -2.803360380906535),
+                                    ("integer (numeric)July", -2.803360380906535)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -2.5649493574615367,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)February", -1.7047480922384253),
+                                    ("month", -1.7047480922384253)],
+                               n = 1}}),
+       ("decimal number",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Labour Day weekend",
+        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}}),
+       ("Naraka Chaturdashi",
+        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}}),
+       ("beginning of month",
+        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}}),
+       ("next <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.6888794541139363,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Martin Luther King's Day", -2.9704144655697013),
+                                    ("Halloween", -2.9704144655697013),
+                                    ("Wednesday", -2.9704144655697013),
+                                    ("Boss's Day", -2.9704144655697013),
+                                    ("Memorial Day", -2.9704144655697013),
+                                    ("Monday", -2.9704144655697013),
+                                    ("Discovery Day", -2.9704144655697013),
+                                    ("Mother's Day", -2.9704144655697013),
+                                    ("day", -1.0986122886681098),
+                                    ("Thanksgiving Day", -2.9704144655697013),
+                                    ("March", -2.9704144655697013), ("month", -2.9704144655697013),
+                                    ("Tuesday", -2.277267285009756)],
+                               n = 13},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.639057329615259,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time-of-day> sharp|exactly",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>", -2.1400661634962708),
+                                    ("time-of-day (latent)", -2.1400661634962708),
+                                    ("hhmm (latent)", -2.1400661634962708),
+                                    ("<time-of-day> am|pm", -2.1400661634962708),
+                                    ("hh:mm", -2.1400661634962708), ("hour", -1.7346010553881064),
+                                    ("minute", -1.4469189829363254)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("in <named-month>|year",
+        Classifier{okData =
+                     ClassData{prior = -0.2719337154836418,
+                               unseen = -3.6635616461296463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<year> (bc|ad)", -1.845826690498331),
+                                    ("October", -2.9444389791664407),
+                                    ("year (latent)", -1.3350010667323402),
+                                    ("year", -0.9295359586241757), ("March", -2.9444389791664407),
+                                    ("month", -2.538973871058276)],
+                               n = 16},
+                   koData =
+                     ClassData{prior = -1.4350845252893227, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("October", -1.6739764335716716),
+                                    ("year (latent)", -1.3862943611198906),
+                                    ("year", -1.3862943611198906), ("month", -1.6739764335716716)],
+                               n = 5}}),
+       ("Islamic New Year",
+        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}}),
+       ("Lent",
+        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}}),
+       ("negative numbers",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -3.332204510175204,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -7.696104113612832e-2),
+                                    ("integer (0..19)", -2.6026896854443837)],
+                               n = 25}}),
+       ("about|exactly <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("half a <time-grain>", -0.6931471805599453),
+                                    ("minute", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time> before last|after next",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Wednesday", -1.8718021769015913),
+                                    ("Friday", -1.466337068793427), ("day", -1.1786549963416462),
+                                    ("March", -1.8718021769015913), ("month", -1.8718021769015913)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("by the end of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("this|last|next <cycle>", -0.6931471805599453),
+                                    ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("half an hour (abbrev).",
+        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}}),
+       ("hhmm (military) am|pm",
+        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 = -0.5596157879354228, unseen = -4.127134385045092,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersecthh:mm", -3.012261575505202),
+                                    ("from|since|after <time>hh:mm", -2.501435951739211),
+                                    ("minuteminute", -1.2776605201170952),
+                                    ("hh:mmhh:mm", -1.9136492868370918),
+                                    ("dayday", -3.012261575505202),
+                                    ("hourhour", -3.012261575505202),
+                                    ("<named-month> <day-of-month> (non ordinal)<named-month> <day-of-month> (non ordinal)",
+                                     -3.012261575505202),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
+                                     -3.012261575505202),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -3.012261575505202)],
+                               n = 20},
+                   koData =
+                     ClassData{prior = -0.8472978603872037, unseen = -3.951243718581427,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hourday", -3.2386784521643803),
+                                    ("<named-month> <day-of-month> (non ordinal)July",
+                                     -3.2386784521643803),
+                                    ("daymonth", -2.833213344056216),
+                                    ("<time-of-day> am|pmintersect", -3.2386784521643803),
+                                    ("hh:mm<time-of-day> am|pm", -2.833213344056216),
+                                    ("minuteminute", -1.9859154836690123),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.2386784521643803),
+                                    ("dayday", -3.2386784521643803),
+                                    ("from|since|after <time><day-of-month> (ordinal or number) <named-month>",
+                                     -2.833213344056216),
+                                    ("hourhour", -2.5455312716044354),
+                                    ("minutehour", -2.833213344056216),
+                                    ("hh:mmintersect", -2.322387720290225),
+                                    ("<named-month> <day-of-month> (non ordinal)August",
+                                     -3.2386784521643803),
+                                    ("about|exactly <time-of-day><time-of-day> am|pm",
+                                     -3.2386784521643803),
+                                    ("from|since|after <time>intersect", -2.833213344056216)],
+                               n = 15}}),
+       ("Tuesday",
+        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}}),
+       ("New Year's Day",
+        Classifier{okData =
+                     ClassData{prior = -1.6094379124341003,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                   koData =
+                     ClassData{prior = -0.2231435513142097,
+                               unseen = -2.3025850929940455,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 8}}),
+       ("fortnight",
+        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}}),
+       ("<integer> and an half hour",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("National Patriots' Day",
+        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}}),
+       ("Laylat al-Qadr",
+        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}}),
+       ("Boghi",
+        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}}),
+       ("at the beginning|end of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -0.2231435513142097,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("January", -1.3862943611198906),
+                                    ("April", -1.3862943611198906), ("month", -0.8754687373538999)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -1.6094379124341003,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("October", -1.0986122886681098),
+                                    ("month", -1.0986122886681098)],
+                               n = 1}}),
+       ("<time-of-day> - <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -1.0296194171811581, unseen = -4.110873864173311,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>hh:mm", -2.4849066497880004),
+                                    ("minuteminute", -1.529395204760564),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.4011973816621555),
+                                    ("hh:mmhh:mm", -1.8971199848858813),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
+                                    ("hourhour", -1.8971199848858813),
+                                    ("from|since|after <time>time-of-day (latent)",
+                                     -3.4011973816621555),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
+                               n = 20},
+                   koData =
+                     ClassData{prior = -0.4418327522790392, unseen = -4.532599493153256,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("about|exactly <time-of-day>time-of-day (latent)",
+                                     -3.828641396489095),
+                                    ("until <time>time-of-day (latent)", -2.575878427993727),
+                                    ("hh:mmtime-of-day (latent)", -2.12389330425067),
+                                    ("hh:mm<time-of-day> am|pm", -3.4231762883809305),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.828641396489095),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -3.828641396489095),
+                                    ("at <time-of-day><time-of-day> am|pm", -3.828641396489095),
+                                    ("hourhour", -1.6314168191528755),
+                                    ("from|since|after <time><integer> to|till|before <hour-of-day>",
+                                     -3.828641396489095),
+                                    ("hourminute", -3.828641396489095),
+                                    ("minutehour", -1.5773495978825998),
+                                    ("until <time><time-of-day> am|pm", -3.4231762883809305),
+                                    ("about|exactly <time-of-day><time-of-day> am|pm",
+                                     -3.828641396489095),
+                                    ("from|since|after <time>time-of-day (latent)",
+                                     -2.575878427993727),
+                                    ("at <time-of-day>time-of-day (latent)", -3.4231762883809305),
+                                    ("<integer> to|till|before <hour-of-day>time-of-day (latent)",
+                                     -3.4231762883809305)],
+                               n = 36}}),
+       ("military spelled out numbers am|pm",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods =
+                                 HashMap.fromList [("integer (0..19)integer (20..90)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("winter",
+        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}}),
+       ("nth <time> after <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.916290731874155),
+                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
+                                     -0.916290731874155)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.916290731874155),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayChristmas",
+                                     -0.916290731874155)],
+                               n = 1}}),
+       ("<named-month> <day-of-month> (non ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.42121346507630353,
+                               unseen = -3.951243718581427,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Augustinteger (numeric)", -2.5455312716044354),
+                                    ("Marchinteger (numeric)", -2.833213344056216),
+                                    ("Aprilinteger (numeric)", -3.2386784521643803),
+                                    ("month", -0.8407831793660099),
+                                    ("Februaryinteger (numeric)", -1.9859154836690123),
+                                    ("Septemberinteger (numeric)", -2.833213344056216),
+                                    ("Octoberinteger (numeric)", -2.833213344056216),
+                                    ("Julyinteger (numeric)", -2.1400661634962708)],
+                               n = 21},
+                   koData =
+                     ClassData{prior = -1.067840630001356, unseen = -3.4657359027997265,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Augustinteger (numeric)", -2.3353749158170367),
+                                    ("Marchinteger (numeric)", -2.740840023925201),
+                                    ("Aprilinteger (numeric)", -2.740840023925201),
+                                    ("month", -0.9490805546971459),
+                                    ("from|since|after <time>integer (numeric)",
+                                     -2.3353749158170367),
+                                    ("Julyinteger (numeric)", -1.6422277352570913)],
+                               n = 11}}),
+       ("Diwali",
+        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}}),
+       ("last night",
+        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}}),
+       ("this|next <day-of-week>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Thursday", -2.2512917986064953),
+                                    ("Wednesday", -2.2512917986064953),
+                                    ("Monday", -1.845826690498331), ("day", -0.8649974374866046),
+                                    ("Tuesday", -1.55814461804655)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("ordinal (digits)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.784189633918261,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 42},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("quarter (grain)",
+        Classifier{okData =
+                     ClassData{prior = -0.2876820724517809, unseen = -2.639057329615259,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
+                   koData =
+                     ClassData{prior = -1.3862943611198906, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.916290731874155, unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)October", -1.9924301646902063),
+                                    ("daymonth", -1.4816045409242156),
+                                    ("day (grain)intersect", -1.9924301646902063),
+                                    ("weekmonth", -1.9924301646902063),
+                                    ("week (grain)intersect", -2.3978952727983707),
+                                    ("week (grain)September", -2.3978952727983707)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -0.5108256237659907, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -2.2335922215070942),
+                                    ("day (grain)May", -2.2335922215070942),
+                                    ("week (grain)year (latent)", -1.9459101490553135),
+                                    ("weekmonth", -1.7227665977411035),
+                                    ("week (grain)October", -2.2335922215070942),
+                                    ("weekyear", -1.9459101490553135),
+                                    ("week (grain)intersect", -2.2335922215070942)],
+                               n = 9}}),
+       ("Chhath",
+        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}}),
+       ("Vasant Panchami",
+        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-month>(ordinal) <named-month> year",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)April", -0.6931471805599453),
+                                    ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the <ordinal> last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)week (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("daymonth", -2.1972245773362196),
+                                    ("ordinal (digits)day (grain)May", -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.1972245773362196),
+                                    ("weekmonth", -1.791759469228055),
+                                    ("ordinal (digits)week (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("weekyear", -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.1972245773362196)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Black Friday",
+        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}}),
+       ("week-end",
+        Classifier{okData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                   koData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
+       ("Great Lent",
+        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}}),
+       ("Maundy Thursday",
+        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 (grain)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 29},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("right now",
+        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}}),
+       ("for <duration> from <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> <unit-of-duration><day-of-month> (ordinal)",
+                                     -1.5040773967762742),
+                                    ("dayday", -1.0986122886681098),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
+                                     -1.5040773967762742)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -1.252762968495368),
+                                    ("<integer> <unit-of-duration>time-of-day (latent)",
+                                     -1.252762968495368)],
+                               n = 1}}),
+       ("compose by multiplication",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList [("integer (0..19)powers of tens", 0.0)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("end of year",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("between <time> and <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -3.1780538303479458,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -0.832909122935104),
+                                    ("hh:mmhh:mm", -0.832909122935104)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -3.7376696182833684,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.410986973710262),
+                                    ("minuteminute", -1.410986973710262),
+                                    ("minutehour", -1.410986973710262),
+                                    ("hh:mmintersect", -1.410986973710262)],
+                               n = 18}}),
+       ("<month> dd-dd (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4657359027997265,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>integer (numeric)integer (numeric)",
+                                     -2.740840023925201),
+                                    ("from|since|after <time>ordinal (digits)ordinal (digits)",
+                                     -2.740840023925201),
+                                    ("Julyinteger (numeric)integer (numeric)", -1.6422277352570913),
+                                    ("Augustordinal (digits)integer (numeric)",
+                                     -2.3353749158170367),
+                                    ("from|since|after <time>ordinal (digits)integer (numeric)",
+                                     -2.740840023925201),
+                                    ("month", -0.8690378470236094),
+                                    ("Augustordinal (digits)ordinal (digits)",
+                                     -2.3353749158170367)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("intersect by \",\", \"of\", \"from\" for year",
+        Classifier{okData =
+                     ClassData{prior = -0.10536051565782628,
+                               unseen = -3.332204510175204,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Black Fridaythis|last|next <cycle>", -2.6026896854443837),
+                                    ("Labour Daythis|last|next <cycle>", -2.6026896854443837),
+                                    ("Martin Luther King's Daythis|last|next <cycle>",
+                                     -2.1972245773362196),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -2.6026896854443837),
+                                    ("dayyear", -0.9932517730102834),
+                                    ("Thanksgiving Daythis|last|next <cycle>", -2.6026896854443837),
+                                    ("intersectyear (latent)", -2.6026896854443837),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -2.1972245773362196)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -2.3025850929940455,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Fridaythis|last|next <cycle>", -1.7047480922384253),
+                                    ("dayyear", -1.7047480922384253)],
+                               n = 1}}),
+       ("part of days",
+        Classifier{okData =
+                     ClassData{prior = -6.899287148695143e-2,
+                               unseen = -3.4011973816621555,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 28},
+                   koData =
+                     ClassData{prior = -2.70805020110221, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
        ("at the beginning|end of <week>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.330733340286331,
diff --git a/Duckling/Ranking/Classifiers/EN_GB.hs b/Duckling/Ranking/Classifiers/EN_GB.hs
--- a/Duckling/Ranking/Classifiers/EN_GB.hs
+++ b/Duckling/Ranking/Classifiers/EN_GB.hs
@@ -60,2922 +60,3130 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("Thursday",
         Classifier{okData =
-                     ClassData{prior = -9.53101798043249e-2,
-                               unseen = -3.4657359027997265,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 30},
-                   koData =
-                     ClassData{prior = -2.3978952727983707,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("integer (numeric)",
-        Classifier{okData =
-                     ClassData{prior = -0.6366143532277309, unseen = -5.648974238161206,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 282},
-                   koData =
-                     ClassData{prior = -0.7530684850340607, unseen = -5.53338948872752,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 251}}),
-       ("<duration> hence|ago",
-        Classifier{okData =
-                     ClassData{prior = -5.406722127027582e-2,
-                               unseen = -3.784189633918261,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.563975538357343), ("day", -1.8152899666382492),
-                                    ("year", -2.662587827025453),
-                                    ("<integer> <unit-of-duration>", -1.0531499145913523),
-                                    ("a <unit-of-duration>", -2.662587827025453),
-                                    ("month", -2.662587827025453),
-                                    ("fortnight", -2.662587827025453)],
-                               n = 18},
-                   koData =
-                     ClassData{prior = -2.9444389791664407,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("year", -1.5040773967762742),
-                                    ("<integer> <unit-of-duration>", -1.5040773967762742)],
-                               n = 1}}),
-       ("noon|midnight|EOD|end of day",
-        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}}),
-       ("quarter to|till|before <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("noon|midnight|EOD|end of day", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Father's Day",
-        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}}),
-       ("<cycle> after|before <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)tomorrow", -1.6739764335716716),
-                                    ("dayday", -1.1631508098056809),
-                                    ("day (grain)yesterday", -1.6739764335716716)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -1.6739764335716716),
-                                    ("year (grain)Christmas", -2.0794415416798357),
-                                    ("dayday", -2.0794415416798357),
-                                    ("day (grain)intersect", -1.6739764335716716),
-                                    ("day (grain)Easter Sunday", -2.0794415416798357),
-                                    ("yearday", -2.0794415416798357)],
-                               n = 4}}),
-       ("Easter Monday",
-        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}}),
-       ("Navaratri",
-        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}}),
-       ("Martin Luther King's Day",
-        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}}),
-       ("integer (20..90)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Shemini Atzeret",
-        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}}),
-       ("Ramadan",
-        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}}),
-       ("Lazarus Saturday",
-        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}}),
-       ("intersect 2 numbers",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("compose by multiplicationinteger (0..19)",
-                                     -0.2231435513142097)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("powers of tensinteger (0..19)", -0.2231435513142097)],
-                               n = 3}}),
-       ("mm/yyyy",
-        Classifier{okData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},
-                   koData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("integer after|past <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.8109302162163288),
-                                    ("integer (numeric)time-of-day (latent)", -1.0986122886681098),
-                                    ("integer (20..90)time-of-day (latent)", -1.5040773967762742)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Yom HaShoah",
-        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-month> (ordinal or number) <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -1.3862943611198906, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)December", -2.1400661634962708),
-                                    ("ordinal (digits)February", -2.1400661634962708),
-                                    ("integer (numeric)April", -2.1400661634962708),
-                                    ("month", -1.4469189829363254)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -3.4011973816621555,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)October", -2.6741486494265287),
-                                    ("ordinal (digits)July", -2.6741486494265287),
-                                    ("integer (numeric)September", -2.268683541318364),
-                                    ("ordinal (digits)August", -2.6741486494265287),
-                                    ("integer (numeric)August", -2.6741486494265287),
-                                    ("ordinal (digits)April", -2.6741486494265287),
-                                    ("month", -1.0647107369924282),
-                                    ("integer (numeric)July", -2.268683541318364)],
-                               n = 9}}),
-       ("<time> <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -9.237332013101517e-2,
-                               unseen = -4.48863636973214,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("dayhour", -1.4816045409242156),
-                                    ("Mondayearly morning", -3.378724525810097),
-                                    ("time-of-day (latent)tonight", -3.378724525810097),
-                                    ("hourhour", -2.3978952727983707),
-                                    ("<time-of-day> o'clockin|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("todaypart of days", -3.784189633918261),
-                                    ("minutehour", -2.6855773452501515),
-                                    ("at <time-of-day>in|during the <part-of-day>",
-                                     -3.378724525810097),
-                                    ("time-of-day (latent)this <part-of-day>", -3.784189633918261),
-                                    ("Mondayin|during the <part-of-day>", -3.784189633918261),
-                                    ("intersectpart of days", -3.784189633918261),
-                                    ("intersectin|during the <part-of-day>", -3.784189633918261),
-                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("tomorrowpart of days", -2.3978952727983707),
-                                    ("hh:mmin|during the <part-of-day>", -3.0910424533583156),
-                                    ("time-of-day (latent)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("hhmm (latent)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("yesterdaypart of days", -3.378724525810097),
-                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("Mondaypart of days", -3.784189633918261)],
-                               n = 31},
-                   koData =
-                     ClassData{prior = -2.4277482359480516,
-                               unseen = -3.4965075614664802,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("yearhour", -2.772588722239781),
-                                    ("monthhour", -2.772588722239781),
-                                    ("hourhour", -2.772588722239781),
-                                    ("year (latent)in|during the <part-of-day>",
-                                     -2.772588722239781),
-                                    ("Februaryin|during the <part-of-day>", -2.772588722239781),
-                                    ("time-of-day (latent)in|during the <part-of-day>",
-                                     -2.772588722239781)],
-                               n = 3}}),
-       ("dd/mm",
-        Classifier{okData =
-                     ClassData{prior = -1.2685113254635072,
-                               unseen = -2.3978952727983707,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},
-                   koData =
-                     ClassData{prior = -0.33024168687057687,
-                               unseen = -3.2188758248682006,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 23}}),
-       ("today",
-        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}}),
-       ("at <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -8.961215868968717e-2,
-                               unseen = -4.948759890378168,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<time> timezone", -3.8430301339411947),
-                                    ("noon|midnight|EOD|end of day", -3.8430301339411947),
-                                    ("integer after|past <hour-of-day>", -3.8430301339411947),
-                                    ("half after|past <hour-of-day>", -4.248495242049359),
-                                    ("time-of-day (latent)", -1.6835458845878222),
-                                    ("hhmm (latent)", -3.5553480614894135),
-                                    ("<time-of-day> am|pm", -1.8061482066801546),
-                                    ("hh:mm", -3.332204510175204),
-                                    ("about|exactly <time-of-day>", -3.8430301339411947),
-                                    ("hour", -1.0704414117014134),
-                                    ("<time-of-day> sharp|exactly", -4.248495242049359),
-                                    ("minute", -2.05127066471314)],
-                               n = 64},
-                   koData =
-                     ClassData{prior = -2.456735772821304, unseen = -3.2188758248682006,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -1.2321436812926323),
-                                    ("hour", -1.2321436812926323)],
-                               n = 6}}),
-       ("December",
-        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}}),
-       ("absorption of , after named day",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("on <date>", -2.1972245773362196),
-                                    ("Wednesday", -2.6026896854443837),
-                                    ("Saturday", -2.6026896854443837),
-                                    ("Monday", -2.1972245773362196),
-                                    ("Friday", -1.9095425048844386), ("day", -0.8979415932059586),
-                                    ("Sunday", -2.6026896854443837)],
-                               n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("September",
-        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}}),
-       ("tonight",
-        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}}),
-       ("last|past|next <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -4.2626798770413155,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.456735772821304), ("second", -2.639057329615259),
-                                    ("day", -2.3025850929940455), ("year", -2.639057329615259),
-                                    ("<integer> <unit-of-duration>", -0.7827593392496325),
-                                    ("hour", -2.639057329615259), ("month", -2.639057329615259),
-                                    ("minute", -2.639057329615259)],
-                               n = 31},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("the ides of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("on <date>",
-        Classifier{okData =
-                     ClassData{prior = -0.13353139262452263,
-                               unseen = -4.204692619390966,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Thursday", -1.4816045409242156),
-                                    ("dd/mm", -3.4965075614664802),
-                                    ("absorption of , after named day", -3.0910424533583156),
-                                    ("intersect", -3.0910424533583156),
-                                    ("Saturday", -2.803360380906535),
-                                    ("Friday", -3.4965075614664802), ("day", -0.8574502318512216),
-                                    ("the <day-of-month> (ordinal)", -3.0910424533583156),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -2.803360380906535),
-                                    ("hour", -3.4965075614664802)],
-                               n = 28},
-                   koData =
-                     ClassData{prior = -2.0794415416798357,
-                               unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersect", -1.791759469228055), ("day", -1.2809338454620642),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -1.791759469228055)],
-                               n = 4}}),
-       ("integer (0..19)",
-        Classifier{okData =
-                     ClassData{prior = -0.11122563511022437,
-                               unseen = -3.970291913552122,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 51},
-                   koData =
-                     ClassData{prior = -2.2512917986064953,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
-       ("between <time-of-day> and <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -0.7884573603642702),
-                                    ("hh:mmhh:mm", -0.7884573603642702)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -0.7884573603642702),
-                                    ("minutehour", -0.7884573603642702)],
-                               n = 9}}),
-       ("Halloween",
-        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}}),
-       ("Passover",
-        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}}),
-       ("from <month> dd-dd (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Julyinteger (numeric)integer (numeric)", -1.6094379124341003),
-                                    ("Augustordinal (digits)integer (numeric)",
-                                     -1.6094379124341003),
-                                    ("month", -0.916290731874155),
-                                    ("Augustordinal (digits)ordinal (digits)",
-                                     -1.6094379124341003)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("October",
-        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}}),
-       ("from|since|after <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -1.5950491749820006, unseen = -4.04305126783455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("July", -3.332204510175204),
-                                    ("time-of-day (latent)", -2.4159137783010487),
-                                    ("<time-of-day> am|pm", -2.4159137783010487),
-                                    ("hh:mm", -2.4159137783010487), ("hour", -1.8281271133989299),
-                                    ("month", -2.9267394020670396), ("minute", -2.4159137783010487),
-                                    ("August", -3.332204510175204)],
-                               n = 14},
-                   koData =
-                     ClassData{prior = -0.22677331936478848,
-                               unseen = -4.9344739331306915,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> to|till|before <hour-of-day>", -3.828641396489095),
-                                    ("week", -4.23410650459726),
-                                    ("<day-of-month> (ordinal or number) <named-month>",
-                                     -4.23410650459726),
-                                    ("today", -4.23410650459726), ("intersect", -2.362304327695668),
-                                    ("second", -4.23410650459726), ("now", -3.5409593240373143),
-                                    ("tomorrow", -3.828641396489095),
-                                    ("this|last|next <cycle>", -4.23410650459726),
-                                    ("day", -1.8827312474337816),
-                                    ("time-of-day (latent)", -4.23410650459726),
-                                    ("<time-of-day> am|pm", -3.828641396489095),
-                                    ("nograin", -3.5409593240373143),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)",
-                                     -4.23410650459726),
-                                    ("Easter Sunday", -4.23410650459726),
-                                    ("Christmas", -3.5409593240373143),
-                                    ("hour", -2.981343536101891), ("month", -4.23410650459726),
-                                    ("<datetime> - <datetime> (interval)", -2.847812143477369),
-                                    ("<time-of-day> - <time-of-day> (interval)",
-                                     -2.5293584123588344),
-                                    ("<named-month> <day-of-month> (non ordinal)",
-                                     -3.828641396489095),
-                                    ("minute", -1.749199854809259),
-                                    ("right now", -4.23410650459726),
-                                    ("<month> dd-dd (interval)", -3.5409593240373143),
-                                    ("dd-dd <month> (interval)", -3.828641396489095)],
-                               n = 55}}),
-       ("month (grain)",
-        Classifier{okData =
-                     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}}),
-       ("<integer> more <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)minute (grain)", -0.6931471805599453),
-                                    ("minute", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time-of-day> o'clock",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("in|within|after <duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.11000089521432846,
-                               unseen = -4.6443908991413725,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -3.248434627109745),
-                                    ("<integer> more <unit-of-duration>", -3.9415818076696905),
-                                    ("three-quarters of an hour", -3.0252910757955354),
-                                    ("<integer> + '\"", -3.248434627109745),
-                                    ("number.number hours", -3.9415818076696905),
-                                    ("second", -3.536116699561526), ("day", -3.248434627109745),
-                                    ("half an hour", -3.0252910757955354),
-                                    ("year", -3.9415818076696905),
-                                    ("<integer> <unit-of-duration>", -1.5902065505062128),
-                                    ("a <unit-of-duration>", -3.0252910757955354),
-                                    ("quarter of an hour", -3.0252910757955354),
-                                    ("hour", -2.5552874465498),
-                                    ("about|exactly <duration>", -3.9415818076696905),
-                                    ("<integer> and an half hour", -3.9415818076696905),
-                                    ("minute", -1.3025244780544318)],
-                               n = 43},
-                   koData =
-                     ClassData{prior = -2.2617630984737906, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("quarter", -2.1972245773362196), ("year", -1.9095425048844386),
-                                    ("<integer> <unit-of-duration>", -1.9095425048844386),
-                                    ("a <unit-of-duration>", -2.1972245773362196)],
-                               n = 5}}),
-       ("January",
-        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}}),
-       ("three-quarters of an hour",
-        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}}),
-       ("Mattu Pongal",
-        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}}),
-       ("Wednesday",
-        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}}),
-       ("half after|past <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<integer> + '\"",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("half <integer> (UK style hour-of-day)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("July",
-        Classifier{okData =
-                     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}}),
-       ("hour (grain)",
-        Classifier{okData =
-                     ClassData{prior = -0.8209805520698302,
-                               unseen = -2.5649493574615367,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},
-                   koData =
-                     ClassData{prior = -0.579818495252942, unseen = -2.772588722239781,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 14}}),
-       ("Shavuot",
-        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> <duration> hence|ago",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayyear", -0.6931471805599453),
-                                    ("Diwali<integer> <unit-of-duration>", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<ordinal> quarter",
-        Classifier{okData =
-                     ClassData{prior = -0.4700036292457356, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -1.1786549963416462),
-                                    ("ordinals (first..twentieth,thirtieth,...)quarter (grain)",
-                                     -1.466337068793427),
-                                    ("quarter", -0.7731898882334817)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -0.9808292530117262,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.8109302162163288),
-                                    ("quarter", -0.8109302162163288)],
-                               n = 3}}),
-       ("Boss's Day",
-        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}}),
-       ("Orthodox Easter Sunday",
-        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}}),
-       ("one twenty two",
-        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}}),
-       ("intersect",
-        Classifier{okData =
-                     ClassData{prior = -0.45868580431307404,
-                               unseen = -6.723832440821209,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Navaratriyear (latent)", -6.029482614295503),
-                                    ("Father's Dayyear (latent)", -6.029482614295503),
-                                    ("Ramadanyear (latent)", -6.029482614295503),
-                                    ("<datetime> - <datetime> (interval)on <date>",
-                                     -4.776719645800135),
-                                    ("Bhai Doojyear (latent)", -6.029482614295503),
-                                    ("<time-of-day> - <time-of-day> (interval)on <date>",
-                                     -4.776719645800135),
-                                    ("hourday", -4.324734522057078),
-                                    ("dayhour", -3.1117118822112237),
-                                    ("Martin Luther King's Dayyear (latent)", -5.6240175061873385),
-                                    ("Shemini Atzeretyear (latent)", -6.029482614295503),
-                                    ("daymonth", -5.336335433735558),
-                                    ("monthday", -5.6240175061873385),
-                                    ("monthyear", -4.420044701861403),
-                                    ("Yom Ha'atzmautyear (latent)", -6.029482614295503),
-                                    ("Vijayadashamiyear (latent)", -6.029482614295503),
-                                    ("Thanksgiving Dayyear (latent)", -4.930870325627393),
-                                    ("Thai Pongalyear (latent)", -5.336335433735558),
-                                    ("Thiru Onamyear (latent)", -5.336335433735558),
-                                    ("Tuesdaythe <day-of-month> (ordinal)", -6.029482614295503),
-                                    ("from <datetime> - <datetime> (interval)July",
-                                     -6.029482614295503),
-                                    ("houryear", -5.336335433735558),
-                                    ("this|next <day-of-week>hh(:mm) - <time-of-day> am|pm",
-                                     -6.029482614295503),
-                                    ("Christmas<time-of-day> am|pm", -6.029482614295503),
-                                    ("last <day-of-week> of <time>year (latent)",
-                                     -6.029482614295503),
-                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -5.336335433735558),
-                                    ("<time-of-day> am|pmintersect", -4.776719645800135),
-                                    ("Octoberyear (latent)", -4.776719645800135),
-                                    ("intersect<time-of-day> am|pm", -6.029482614295503),
-                                    ("Mattu Pongalyear (latent)", -6.029482614295503),
-                                    ("Shavuotyear (latent)", -6.029482614295503),
-                                    ("Dhanterasin <named-month>|year", -6.029482614295503),
-                                    ("at <time-of-day>in|within|after <duration>",
-                                     -6.029482614295503),
-                                    ("Thursdayhh(:mm) - <time-of-day> am|pm", -6.029482614295503),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -5.6240175061873385),
-                                    ("Marchyear (latent)", -6.029482614295503),
-                                    ("Sukkotyear (latent)", -5.6240175061873385),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -6.029482614295503),
-                                    ("Clean Mondayyear (latent)", -5.6240175061873385),
-                                    ("monthhour", -5.6240175061873385),
-                                    ("todayat <time-of-day>", -6.029482614295503),
-                                    ("Thursday<time> timezone", -4.324734522057078),
-                                    ("dd/mm<time-of-day> am|pm", -6.029482614295503),
-                                    ("this <time>hh(:mm) - <time-of-day> am|pm",
-                                     -6.029482614295503),
-                                    ("Palm SundaySunday", -5.6240175061873385),
-                                    ("dayday", -3.8322580369592836),
-                                    ("dd/mmat <time-of-day>", -6.029482614295503),
-                                    ("<time> <part-of-day>at <time-of-day>", -6.029482614295503),
-                                    ("tonightat <time-of-day>", -6.029482614295503),
-                                    ("<time-of-day> am|pmabsorption of , after named day",
-                                     -5.336335433735558),
-                                    ("today<time-of-day> am|pm", -6.029482614295503),
-                                    ("Februarythe <day-of-month> (ordinal)", -5.6240175061873385),
-                                    ("at <time-of-day><time> <part-of-day>", -6.029482614295503),
-                                    ("hourhour", -4.776719645800135),
-                                    ("<time-of-day> am|pmon <date>", -4.014579593753238),
-                                    ("Wednesdaythis|last|next <cycle>", -6.029482614295503),
-                                    ("Lentyear (latent)", -6.029482614295503),
-                                    ("intersect<named-month> <day-of-month> (non ordinal)",
-                                     -4.5254052175192285),
-                                    ("Boghiyear (latent)", -6.029482614295503),
-                                    ("dayyear", -1.9776976664921981),
-                                    ("<time-of-day> o'clockin|during the <part-of-day>",
-                                     -6.029482614295503),
-                                    ("Thursdayat <time-of-day>", -5.6240175061873385),
-                                    ("Islamic New Yearyear (latent)", -5.6240175061873385),
-                                    ("Laylat al-Qadryear (latent)", -5.113191882421348),
-                                    ("Chhathin <named-month>|year", -6.029482614295503),
-                                    ("Vasant Panchamiin <named-month>|year", -6.029482614295503),
-                                    ("Diwaliin <named-month>|year", -6.029482614295503),
-                                    ("Shrove Tuesdayyear (latent)", -6.029482614295503),
-                                    ("<time-of-day> am|pmtomorrow", -5.336335433735558),
-                                    ("Yom Kippuryear (latent)", -6.029482614295503),
-                                    ("<part-of-day> of <time>year (latent)", -6.029482614295503),
-                                    ("minutehour", -5.113191882421348),
-                                    ("Kaanum Pongalyear (latent)", -5.6240175061873385),
-                                    ("Maha Saptamiyear (latent)", -6.029482614295503),
-                                    ("at <time-of-day>in|during the <part-of-day>",
-                                     -5.6240175061873385),
-                                    ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
-                                     -4.324734522057078),
-                                    ("for <duration> from <time>December", -6.029482614295503),
-                                    ("tomorrow<time-of-day> sharp|exactly", -6.029482614295503),
-                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
-                                     -5.113191882421348),
-                                    ("on <date><named-month> <day-of-month> (non ordinal)",
-                                     -5.6240175061873385),
-                                    ("Pentecostyear (latent)", -6.029482614295503),
-                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.113191882421348),
-                                    ("Eid al-Fitryear (latent)", -6.029482614295503),
-                                    ("Mondayin|during the <part-of-day>", -6.029482614295503),
-                                    ("Raksha Bandhanyear (latent)", -6.029482614295503),
-                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.6240175061873385),
-                                    ("Navaratriin <named-month>|year", -6.029482614295503),
-                                    ("Ashurayear (latent)", -6.029482614295503),
-                                    ("Chinese New Yearyear (latent)", -6.029482614295503),
-                                    ("Sundayyear (latent)", -6.029482614295503),
-                                    ("Lag BaOmeryear (latent)", -6.029482614295503),
-                                    ("last weekend of <named-month>year (latent)",
-                                     -6.029482614295503),
-                                    ("Eid al-Adhayear (latent)", -5.113191882421348),
-                                    ("intersectin|during the <part-of-day>", -6.029482614295503),
-                                    ("Christmasat <time-of-day>", -6.029482614295503),
-                                    ("Passoveryear (latent)", -6.029482614295503),
-                                    ("Lazarus Saturdayyear (latent)", -6.029482614295503),
-                                    ("dd/mmyear (latent)", -6.029482614295503),
-                                    ("<day-of-month> (ordinal or number) <named-month>year (latent)",
-                                     -6.029482614295503),
-                                    ("Yom HaShoahyear (latent)", -5.6240175061873385),
-                                    ("Thursday<datetime> - <datetime> (interval)",
-                                     -5.113191882421348),
-                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
-                                     -6.029482614295503),
-                                    ("Thai Pongalin <named-month>|year", -6.029482614295503),
-                                    ("Septemberyear (latent)", -5.6240175061873385),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -4.776719645800135),
-                                    ("Halloweenyear (latent)", -6.029482614295503),
-                                    ("from <time-of-day> - <time-of-day> (interval)on <date>",
-                                     -5.336335433735558),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
-                                     -5.113191882421348),
-                                    ("at <time-of-day>intersect", -5.6240175061873385),
-                                    ("Rosh Hashanahyear (latent)", -6.029482614295503),
-                                    ("Dhanterasyear (latent)", -6.029482614295503),
-                                    ("Tu BiShvatyear (latent)", -6.029482614295503),
-                                    ("Holiyear (latent)", -5.336335433735558),
-                                    ("<time-of-day> - <time-of-day> (interval)tomorrow",
-                                     -6.029482614295503),
-                                    ("Holika Dahanyear (latent)", -5.336335433735558),
-                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -6.029482614295503),
-                                    ("dayminute", -3.3904252846802443),
-                                    ("Mawlidyear (latent)", -6.029482614295503),
-                                    ("from <datetime> - <datetime> (interval)on <date>",
-                                     -5.6240175061873385),
-                                    ("<datetime> - <datetime> (interval)tomorrow",
-                                     -6.029482614295503),
-                                    ("Jumu'atul-Widayear (latent)", -5.113191882421348),
-                                    ("absorption of , after named dayintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -6.029482614295503),
-                                    ("minuteday", -2.391896454569117),
-                                    ("absorption of , after named dayintersect",
-                                     -6.029482614295503),
-                                    ("intersectyear (latent)", -6.029482614295503),
-                                    ("Orthodox Easter Sundayyear (latent)", -6.029482614295503),
-                                    ("<ordinal> <cycle> of <time>year (latent)",
-                                     -6.029482614295503),
-                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -6.029482614295503),
-                                    ("Mothering Sundayyear (latent)", -5.6240175061873385),
-                                    ("Boss's Dayyear (latent)", -5.6240175061873385),
-                                    ("Tisha B'Avyear (latent)", -6.029482614295503),
-                                    ("Isra and Mi'rajyear (latent)", -5.113191882421348),
-                                    ("at <time-of-day>absorption of , after named day",
-                                     -6.029482614295503),
-                                    ("Christmasyear (latent)", -5.6240175061873385),
-                                    ("Naraka Chaturdashiyear (latent)", -5.6240175061873385),
-                                    ("at <time-of-day>on <date>", -4.930870325627393),
-                                    ("between <time-of-day> and <time-of-day> (interval)on <date>",
-                                     -4.420044701861403),
-                                    ("dayweek", -6.029482614295503),
-                                    ("Easter Sundayyear (latent)", -5.336335433735558),
-                                    ("Thursday<time-of-day> am|pm", -6.029482614295503),
-                                    ("weekyear", -5.6240175061873385),
-                                    ("hh:mmin|during the <part-of-day>", -5.336335433735558),
-                                    ("<cycle> after|before <time><time-of-day> am|pm",
-                                     -5.6240175061873385),
-                                    ("Hanukkahyear (latent)", -6.029482614295503),
-                                    ("February<time> <part-of-day>", -6.029482614295503),
-                                    ("Tuesdayin <named-month>|year", -6.029482614295503),
-                                    ("Great Lentyear (latent)", -6.029482614295503),
-                                    ("tomorrowat <time-of-day>", -5.336335433735558),
-                                    ("between <time> and <time>on <date>", -4.420044701861403),
-                                    ("Thursdayfrom|since|after <time-of-day>", -5.336335433735558),
-                                    ("last <cycle> of <time>year (latent)", -5.336335433735558),
-                                    ("at <time-of-day>tomorrow", -5.6240175061873385),
-                                    ("tomorrow<time-of-day> am|pm", -6.029482614295503),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -6.029482614295503),
-                                    ("Diwaliyear (latent)", -6.029482614295503),
-                                    ("Black Fridayyear (latent)", -5.6240175061873385),
-                                    ("in|during the <part-of-day>at <time-of-day>",
-                                     -6.029482614295503),
-                                    ("Chhathyear (latent)", -5.6240175061873385),
-                                    ("Vasant Panchamiyear (latent)", -6.029482614295503),
-                                    ("Palm Sundayintersect", -6.029482614295503),
-                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
-                                     -6.029482614295503),
-                                    ("August Bank Holidayyear (latent)", -5.336335433735558),
-                                    ("Februaryintersect", -6.029482614295503),
-                                    ("Simchat Torahyear (latent)", -6.029482614295503)],
-                               n = 311},
-                   koData =
-                     ClassData{prior = -0.9999816852264825, unseen = -6.349138991379798,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<time-of-day> - <time-of-day> (interval)on <date>",
-                                     -5.654242029096065),
-                                    ("hourday", -5.654242029096065),
-                                    ("<named-month> <day-of-month> (non ordinal)July",
-                                     -5.654242029096065),
-                                    ("dayhour", -3.2118949937268604),
-                                    ("daymonth", -3.574800487416229),
-                                    ("monthday", -5.2487769209879005),
-                                    ("monthyear", -4.401479060600697),
-                                    ("<time-of-day> am|pmyear (latent)", -5.2487769209879005),
-                                    ("Thai Pongalyear (latent)", -4.96109484853612),
-                                    ("intersecthh:mm", -5.654242029096065),
-                                    ("from <datetime> - <datetime> (interval)July",
-                                     -5.654242029096065),
-                                    ("houryear", -4.73795129722191),
-                                    ("from <time-of-day> - <time-of-day> (interval)July",
-                                     -5.654242029096065),
-                                    ("until <time-of-day><time-of-day> am|pm", -5.654242029096065),
-                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -4.96109484853612),
-                                    ("<time-of-day> am|pmintersect", -4.401479060600697),
-                                    ("Octoberyear (latent)", -5.654242029096065),
-                                    ("from|since|after <time-of-day>year (latent)",
-                                     -4.401479060600697),
-                                    ("from|since|after <time-of-day>on <date>", -4.73795129722191),
-                                    ("July<day-of-month> (ordinal or number) <named-month>",
-                                     -5.654242029096065),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -4.401479060600697),
-                                    ("about|exactly <time-of-day>year (latent)",
-                                     -5.654242029096065),
-                                    ("absorption of , after named dayJuly", -5.2487769209879005),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -4.73795129722191),
-                                    ("Clean Mondayyear (latent)", -5.654242029096065),
-                                    ("monthhour", -5.654242029096065),
-                                    ("hourmonth", -4.96109484853612),
-                                    ("todayat <time-of-day>", -5.654242029096065),
-                                    ("Bank Holidayyear (latent)", -4.96109484853612),
-                                    ("from|since|after <time-of-day>July", -5.654242029096065),
-                                    ("Mondayyear (latent)", -4.96109484853612),
-                                    ("dayday", -5.2487769209879005),
-                                    ("dd/mmat <time-of-day>", -5.2487769209879005),
-                                    ("<time-of-day> am|pmon <date>", -4.401479060600697),
-                                    ("Thursdaydd/mm", -5.654242029096065),
-                                    ("dayyear", -2.609719591372642),
-                                    ("New Year's Dayyear (latent)", -5.2487769209879005),
-                                    ("Thursdayat <time-of-day>", -4.401479060600697),
-                                    ("<integer> to|till|before <hour-of-day>September",
-                                     -5.654242029096065),
-                                    ("Aprilyear (latent)", -5.654242029096065),
-                                    ("monthminute", -5.654242029096065),
-                                    ("<time-of-day> am|pmtomorrow", -5.654242029096065),
-                                    ("Thursdayhh:mm", -4.73795129722191),
-                                    ("August<day-of-month> (ordinal or number) <named-month>",
-                                     -5.654242029096065),
-                                    ("minutemonth", -3.8624825598680097),
-                                    ("Sundayfrom|since|after <time-of-day>", -5.654242029096065),
-                                    ("week-endin <named-month>|year", -5.654242029096065),
-                                    ("Augustyear (latent)", -5.2487769209879005),
-                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
-                                     -5.2487769209879005),
-                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.2487769209879005),
-                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.654242029096065),
-                                    ("dd/mm<time-of-day> - <time-of-day> (interval)",
-                                     -5.2487769209879005),
-                                    ("Sundayyear (latent)", -4.96109484853612),
-                                    ("Christmasat <time-of-day>", -5.654242029096065),
-                                    ("dd/mmyear (latent)", -5.654242029096065),
-                                    ("<duration> after|before|from <time>December",
-                                     -5.654242029096065),
-                                    ("yesterday<time-of-day> am|pm", -5.654242029096065),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
-                                     -4.73795129722191),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -5.2487769209879005),
-                                    ("<named-month> <day-of-month> (non ordinal)August",
-                                     -5.654242029096065),
-                                    ("until <time-of-day>on <date>", -4.96109484853612),
-                                    ("at <time-of-day>intersect", -5.2487769209879005),
-                                    ("hh:mmyear (latent)", -4.555629740427955),
-                                    ("Holiyear (latent)", -5.654242029096065),
-                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -5.654242029096065),
-                                    ("dayminute", -3.1693353793080647),
-                                    ("intersectSeptember", -4.1501646323197905),
-                                    ("minuteday", -2.5861890939624477),
-                                    ("absorption of , after named dayintersect",
-                                     -5.654242029096065),
-                                    ("Februaryin|during the <part-of-day>", -5.654242029096065),
-                                    ("hh:mmon <date>", -3.6393390085538),
-                                    ("Saturdayyear (latent)", -5.654242029096065),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -5.654242029096065),
-                                    ("absorption of , after named daySeptember", -4.73795129722191),
-                                    ("Naraka Chaturdashiyear (latent)", -5.654242029096065),
-                                    ("on <date>September", -5.2487769209879005),
-                                    ("at <time-of-day>on <date>", -5.2487769209879005),
-                                    ("in <named-month>|yearyear (latent)", -5.654242029096065),
-                                    ("dayweek", -5.654242029096065),
-                                    ("Easter Sundayyear (latent)", -5.2487769209879005),
-                                    ("Thursday<time-of-day> am|pm", -5.2487769209879005),
-                                    ("absorption of , after named dayFebruary", -4.73795129722191),
-                                    ("July<integer> to|till|before <hour-of-day>",
-                                     -5.654242029096065),
-                                    ("tomorrowat <time-of-day>", -5.654242029096065),
-                                    ("<integer> to|till|before <hour-of-day>July",
-                                     -5.654242029096065),
-                                    ("Thursdayfrom|since|after <time-of-day>", -4.044804116661965),
-                                    ("tomorrow<time-of-day> am|pm", -5.654242029096065),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -4.96109484853612),
-                                    ("Diwaliyear (latent)", -5.2487769209879005),
-                                    ("Tuesdayfrom|since|after <time-of-day>", -5.654242029096065),
-                                    ("Fridayyear (latent)", -5.2487769209879005),
-                                    ("minuteyear", -4.401479060600697)],
-                               n = 181}}),
-       ("one eleven",
-        Classifier{okData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},
-                   koData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("after lunch/work/school",
-        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}}),
-       ("early morning",
-        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}}),
-       ("in <number> (implicit minutes)",
-        Classifier{okData =
-                     ClassData{prior = -1.2039728043259361,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.3184537311185346),
-                                    ("integer (0..19)", -1.2992829841302609)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.35667494393873245,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.19105523676270922),
-                                    ("integer (0..19)", -1.749199854809259)],
-                               n = 21}}),
-       ("<ordinal> <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -1.791759469228055),
-                                    ("ordinal (digits)quarter (grain)year (latent)",
-                                     -2.1972245773362196),
-                                    ("quarteryear", -2.1972245773362196),
-                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)October",
-                                     -2.1972245773362196),
-                                    ("ordinal (digits)day (grain)this|last|next <cycle>",
-                                     -2.1972245773362196),
-                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
-                                     -2.1972245773362196),
-                                    ("weekmonth", -1.791759469228055),
-                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
-                                     -2.1972245773362196)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("year (grain)",
-        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}}),
-       ("from <datetime> - <datetime> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -1.0116009116784799,
-                               unseen = -3.6375861597263857,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -2.001480000210124),
-                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal)",
-                                     -2.917770732084279),
-                                    ("hh:mmhh:mm", -2.001480000210124),
-                                    ("dayday", -2.512305623976115),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)<day-of-month> (ordinal)",
-                                     -2.917770732084279),
-                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.917770732084279),
-                                    ("hourhour", -2.512305623976115),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.917770732084279)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -0.45198512374305727,
-                               unseen = -3.912023005428146,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hourday", -3.1986731175506815),
-                                    ("dayhour", -2.793208009442517),
-                                    ("<day-of-month> (ordinal)time-of-day (latent)",
-                                     -3.1986731175506815),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -3.1986731175506815),
-                                    ("hh:mmtime-of-day (latent)", -2.2823823856765264),
-                                    ("minuteminute", -2.793208009442517),
-                                    ("time-of-day (latent)time-of-day (latent)",
-                                     -2.793208009442517),
-                                    ("dayday", -3.1986731175506815),
-                                    ("hourhour", -2.505525936990736),
-                                    ("dayyear", -3.1986731175506815),
-                                    ("minutehour", -2.2823823856765264),
-                                    ("hh:mmintersect", -2.793208009442517),
-                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal or number) <named-month>",
-                                     -3.1986731175506815),
-                                    ("time-of-day (latent)<time-of-day> am|pm",
-                                     -3.1986731175506815),
-                                    ("time-of-day (latent)<day-of-month> (ordinal or number) <named-month>",
-                                     -3.1986731175506815),
-                                    ("<named-month> <day-of-month> (non ordinal)time-of-day (latent)",
-                                     -3.1986731175506815)],
-                               n = 14}}),
-       ("Saturday",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.9459101490553135,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("the <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week (grain)<named-month>|<named-day> <day-of-month> (ordinal)",
-                                     -1.7346010553881064),
-                                    ("weekmonth", -1.7346010553881064),
-                                    ("week (grain)October", -1.7346010553881064),
-                                    ("week (grain)<named-month> <day-of-month> (non ordinal)",
-                                     -1.7346010553881064),
-                                    ("weekday", -1.2237754316221157)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("number.number hours",
-        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}}),
-       ("from <time-of-day> - <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.4339872044851463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -1.6094379124341003),
-                                    ("hh:mmhh:mm", -1.6094379124341003),
-                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
-                                    ("hourhour", -2.3025850929940455),
-                                    ("hourminute", -2.3025850929940455),
-                                    ("time-of-day (latent)<time-of-day> sharp|exactly",
-                                     -2.70805020110221),
-                                    ("time-of-day (latent)hh:mm", -2.70805020110221),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.4339872044851463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -1.6094379124341003),
-                                    ("time-of-day (latent)time-of-day (latent)",
-                                     -2.0149030205422647),
-                                    ("hourhour", -1.791759469228055),
-                                    ("minutehour", -1.6094379124341003),
-                                    ("time-of-day (latent)<time-of-day> am|pm", -2.70805020110221)],
-                               n = 9}}),
-       ("integer 21..99",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)integer (numeric)", -0.6931471805599453),
-                                    ("integer (20..90)integer (0..19)", -0.6931471805599453)],
-                               n = 4}}),
-       ("Tisha B'Av",
-        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}}),
-       ("Mothering Sunday",
-        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}}),
-       ("yyyy-mm-dd",
-        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}}),
-       ("year (latent)",
-        Classifier{okData =
-                     ClassData{prior = -0.15746743245325218,
-                               unseen = -4.897839799950911,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -4.616204176316249e-2),
-                                    ("intersect 2 numbers", -3.5040547671018634)],
-                               n = 129},
-                   koData =
-                     ClassData{prior = -1.9262373834566084, unseen = -3.295836866004329,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -1.3121863889661687),
-                                    ("negative numbers", -0.6190392084062235),
-                                    ("compose by multiplication", -1.8718021769015913)],
-                               n = 22}}),
-       ("Bank Holiday",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Monday",
-        Classifier{okData =
-                     ClassData{prior = -0.3483066942682157, unseen = -2.639057329615259,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
-                   koData =
-                     ClassData{prior = -1.2237754316221157,
-                               unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
-       ("dd/mm/yyyy",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("yesterday",
-        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}}),
-       ("<ordinal> quarter <year>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)year (latent)",
-                                     -0.6931471805599453),
-                                    ("quarteryear", -0.6931471805599453)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hh:mm:ss",
-        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}}),
-       ("Hanukkah",
-        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>",
-        Classifier{okData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("at <time-of-day>integer (20..90)", -1.3862943611198906),
-                                    ("hour", -0.9808292530117262),
-                                    ("at <time-of-day>integer (numeric)", -1.3862943611198906)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("about|exactly <time-of-day>integer (numeric)",
-                                     -1.0986122886681098),
-                                    ("hour", -1.0986122886681098)],
-                               n = 1}}),
-       ("nth <time> of <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.4700036292457356, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -0.9808292530117262),
-                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
-                                     -2.0794415416798357),
-                                    ("ordinals (first..twentieth,thirtieth,...)Wednesdayintersect",
-                                     -1.6739764335716716),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayOctober",
-                                     -1.6739764335716716)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -0.9808292530117262,
-                               unseen = -2.5649493574615367,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -1.0986122886681098),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdaySeptember",
-                                     -1.791759469228055),
-                                    ("ordinals (first..twentieth,thirtieth,...)WednesdayOctober",
-                                     -1.3862943611198906)],
-                               n = 3}}),
-       ("Valentine's Day",
-        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}}),
-       ("April",
-        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}}),
-       ("Maha Saptami",
-        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}}),
-       ("end of month",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("week (grain)",
-        Classifier{okData =
-                     ClassData{prior = -4.0821994520255166e-2,
-                               unseen = -4.304065093204169,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 72},
-                   koData =
-                     ClassData{prior = -3.2188758248682006,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("<part-of-day> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.0910424533583156,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("part of daysintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -2.3513752571634776),
-                                    ("part of daysintersect", -2.3513752571634776),
-                                    ("hourday", -0.9650808960435872),
-                                    ("part of daysthe <day-of-month> (ordinal)",
-                                     -2.3513752571634776),
-                                    ("part of daysthe <day-of-month> (number)",
-                                     -2.3513752571634776),
-                                    ("part of daysthis <time>", -2.3513752571634776),
-                                    ("part of daysChristmas", -1.9459101490553135)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("six thirty six a.m.",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -1.252762968495368),
-                                    ("one twenty two", -0.8472978603872037),
-                                    ("one eleven", -1.252762968495368)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Shrove Tuesday",
-        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}}),
-       ("now",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.9459101490553135,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("<day-of-month> (ordinal or number) of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -0.13353139262452263,
-                               unseen = -3.0910424533583156,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)July", -2.3513752571634776),
-                                    ("ordinals (first..twentieth,thirtieth,...)March",
-                                     -2.3513752571634776),
-                                    ("ordinal (digits)February", -2.3513752571634776),
-                                    ("integer (numeric)February", -1.9459101490553135),
-                                    ("month", -0.9650808960435872),
-                                    ("ordinal (digits)March", -2.3513752571634776),
-                                    ("integer (numeric)July", -2.3513752571634776)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -2.0794415416798357,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)February", -1.5040773967762742),
-                                    ("month", -1.5040773967762742)],
-                               n = 1}}),
-       ("this <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.6931471805599453),
-                                    ("part of days", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Kaanum Pongal",
-        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}}),
-       ("Yom Kippur",
-        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}}),
-       ("powers of tens",
-        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}}),
-       ("Friday",
-        Classifier{okData =
-                     ClassData{prior = -0.3677247801253174,
-                               unseen = -2.3978952727983707,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},
-                   koData =
-                     ClassData{prior = -1.1786549963416462, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("in|during the <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -8.701137698962981e-2,
-                               unseen = -3.258096538021482,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("early morning", -2.5257286443082556),
-                                    ("hour", -0.7339691750802004),
-                                    ("part of days", -0.8209805520698302)],
-                               n = 11},
-                   koData =
-                     ClassData{prior = -2.4849066497880004, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.916290731874155),
-                                    ("part of days", -0.916290731874155)],
-                               n = 1}}),
-       ("tomorrow",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 17},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hh(:mm) - <time-of-day> am|pm",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.70805020110221,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("this|last|next <cycle>",
-        Classifier{okData =
-                     ClassData{prior = -7.598590697792199e-2,
-                               unseen = -5.093750200806762,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.1173044216802621),
-                                    ("month (grain)", -2.7850112422383386),
-                                    ("year (grain)", -2.6026896854443837),
-                                    ("week (grain)", -1.1173044216802621),
-                                    ("quarter", -3.4781584227982836), ("year", -2.6026896854443837),
-                                    ("month", -2.7850112422383386),
-                                    ("quarter (grain)", -3.4781584227982836)],
-                               n = 76},
-                   koData =
-                     ClassData{prior = -2.6149597780361984,
-                               unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.4816045409242156),
-                                    ("week (grain)", -1.4816045409242156),
-                                    ("day", -1.9924301646902063),
-                                    ("day (grain)", -1.9924301646902063)],
-                               n = 6}}),
-       ("Simchat Torah",
-        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}}),
-       ("August Bank Holiday",
-        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}}),
-       ("New Year's Eve",
-        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}}),
-       ("the <ordinal> <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)year (latent)",
-                                     -0.6931471805599453),
-                                    ("quarteryear", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Raksha Bandhan",
-        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}}),
-       ("Ashura",
-        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}}),
-       ("Palm Sunday",
-        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}}),
-       ("Eid al-Adha",
-        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}}),
-       ("by <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.70805020110221,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("noon|midnight|EOD|end of day", -1.9459101490553135),
-                                    ("time-of-day (latent)", -1.9459101490553135),
-                                    ("<time-of-day> am|pm", -1.9459101490553135),
-                                    ("hh:mm", -1.9459101490553135), ("hour", -1.540445040947149),
-                                    ("minute", -1.540445040947149)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("half an hour",
-        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}}),
-       ("the <day-of-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.2006706954621511,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinals (first..twentieth,thirtieth,...)",
-                                     -1.7047480922384253),
-                                    ("ordinal (digits)", -0.2006706954621511)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -1.7047480922384253,
-                               unseen = -1.6094379124341003,
-                               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,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Lag BaOmer",
-        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}}),
-       ("fractional number",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -3.044522437723423,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 19}}),
-       ("Sunday",
-        Classifier{okData =
-                     ClassData{prior = -0.3364722366212129,
-                               unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -1.252762968495368, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("Chinese New Year",
-        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}}),
-       ("February",
-        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}}),
-       ("minute (grain)",
-        Classifier{okData =
-                     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}}),
-       ("last|this|next <season>",
-        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}}),
-       ("the <ordinal> quarter",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
-                                    ("quarter", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
-                                    ("quarter", -0.6931471805599453)],
-                               n = 1}}),
-       ("time-of-day (latent)",
-        Classifier{okData =
-                     ClassData{prior = -0.5699145401359973, unseen = -4.290459441148391,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.11778303565638351),
-                                    ("integer (0..19)", -2.330755969960742)],
-                               n = 69},
-                   koData =
-                     ClassData{prior = -0.8337291311811348, unseen = -4.04305126783455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -9.352605801082348e-2),
-                                    ("integer (0..19)", -2.9267394020670396),
-                                    ("integer 21..99", -3.332204510175204)],
-                               n = 53}}),
-       ("beginning of year",
-        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}}),
-       ("last <day-of-week> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -0.916290731874155),
-                                    ("SundayMarch", -1.6094379124341003),
-                                    ("MondayMarch", -1.6094379124341003),
-                                    ("Sundayintersect", -1.6094379124341003)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<integer> <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.13858616328614667,
-                               unseen = -5.147494476813453,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.5026062268874014),
-                                    ("integer (0..19)year (grain)", -3.062222014822824),
-                                    ("integer (numeric)day (grain)", -2.743768283704289),
-                                    ("integer (0..19)second (grain) ", -3.7553691953827695),
-                                    ("integer (0..19)hour (grain)", -3.062222014822824),
-                                    ("second", -3.349904087274605),
-                                    ("integer (numeric)second (grain) ", -4.04305126783455),
-                                    ("integer (numeric)year (grain)", -3.349904087274605),
-                                    ("day", -2.4336133554004498), ("year", -2.576714199041123),
-                                    ("integer (numeric)week (grain)", -3.062222014822824),
-                                    ("integer (0..19)month (grain)", -3.5322256440685593),
-                                    ("hour", -2.6567569067146595), ("month", -3.1957534074473464),
-                                    ("integer (numeric)minute (grain)", -3.1957534074473464),
-                                    ("integer (0..19)minute (grain)", -3.062222014822824),
-                                    ("integer (numeric)month (grain)", -4.04305126783455),
-                                    ("minute", -2.5026062268874014),
-                                    ("integer (numeric)hour (grain)", -3.5322256440685593),
-                                    ("integer (0..19)day (grain)", -3.5322256440685593),
-                                    ("integer (0..19)week (grain)", -3.1957534074473464)],
-                               n = 74},
-                   koData =
-                     ClassData{prior = -2.044755983691946, unseen = -3.828641396489095,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("quarter", -3.1135153092103742), ("hour", -1.4087672169719492),
-                                    ("integer (numeric)hour (grain)", -1.4087672169719492),
-                                    ("integer (0..19)quarter (grain)", -3.1135153092103742)],
-                               n = 11}}),
-       ("hhmm (latent)",
-        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}}),
-       ("<time-of-day> am|pm",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809, unseen = -5.342334251964811,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer after|past <hour-of-day>", -3.951243718581427),
-                                    ("at <time-of-day>", -2.202043863772168),
-                                    ("from|since|after <time-of-day>", -3.7281001672672174),
-                                    ("<time-of-day> o'clock", -4.238925791033208),
-                                    ("half after|past <hour-of-day>", -4.238925791033208),
-                                    ("time-of-day (latent)", -1.7266201670570935),
-                                    ("hhmm (latent)", -4.6443908991413725),
-                                    ("hh:mm", -2.293015641977895),
-                                    ("quarter after|past <hour-of-day>", -4.6443908991413725),
-                                    ("about|exactly <time-of-day>", -4.6443908991413725),
-                                    ("until <time-of-day>", -3.951243718581427),
-                                    ("hour", -1.2104036946562264),
-                                    ("<time-of-day> sharp|exactly", -4.6443908991413725),
-                                    ("minute", -1.754019141245208)],
-                               n = 96},
-                   koData =
-                     ClassData{prior = -1.3862943611198906, unseen = -4.394449154672439,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> to|till|before <hour-of-day>", -3.283414346005772),
-                                    ("from|since|after <time-of-day>", -3.283414346005772),
-                                    ("<hour-of-day> <integer>", -3.6888794541139363),
-                                    ("time-of-day (latent)", -1.0498221244986778),
-                                    ("hour", -1.0147308046874075), ("minute", -2.772588722239781)],
-                               n = 32}}),
-       ("Yom Ha'atzmaut",
-        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}}),
-       ("from <day-of-month> (ordinal or number) to <day-of-month> (ordinal or number) <named-month> (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)ordinal (digits)July", -1.252762968495368),
-                                    ("integer (numeric)integer (numeric)July", -1.252762968495368),
-                                    ("month", -0.8472978603872037)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Thiru Onam",
-        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}}),
-       ("Thai Pongal",
-        Classifier{okData =
-                     ClassData{prior = -0.5596157879354228, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
-                   koData =
-                     ClassData{prior = -0.8472978603872037,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Vijayadashami",
-        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}}),
-       ("Thanksgiving Day",
-        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}}),
-       ("part of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Guy Fawkes Day",
-        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}}),
-       ("a <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.5306282510621704,
-                               unseen = -3.5553480614894135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.1400661634962708),
-                                    ("year (grain)", -2.4277482359480516),
-                                    ("second", -2.833213344056216),
-                                    ("week (grain)", -2.1400661634962708),
-                                    ("day", -2.1400661634962708),
-                                    ("minute (grain)", -2.833213344056216),
-                                    ("year", -2.4277482359480516),
-                                    ("second (grain) ", -2.833213344056216),
-                                    ("minute", -2.833213344056216),
-                                    ("day (grain)", -2.1400661634962708)],
-                               n = 10},
-                   koData =
-                     ClassData{prior = -0.8873031950009028, unseen = -3.367295829986474,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour (grain)", -1.7227665977411035),
-                                    ("quarter", -1.9459101490553135), ("hour", -1.7227665977411035),
-                                    ("quarter (grain)", -1.9459101490553135)],
-                               n = 7}}),
-       ("at the beginning|end of <year>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("year (latent)", -0.6931471805599453),
-                                    ("year", -0.6931471805599453)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Dhanteras",
-        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}}),
-       ("Tu BiShvat",
-        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}}),
-       ("Whit Monday",
-        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}}),
-       ("hh:mm",
-        Classifier{okData =
-                     ClassData{prior = -4.255961441879589e-2,
-                               unseen = -4.2626798770413155,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 69},
-                   koData =
-                     ClassData{prior = -3.1780538303479458,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Holi",
-        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}}),
-       ("Rosh Hashanah",
-        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}}),
-       ("Holika Dahan",
-        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}}),
-       ("quarter of an hour",
-        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}}),
-       ("second (grain) ",
-        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}}),
-       ("ordinals (first..twentieth,thirtieth,...)",
-        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}}),
-       ("Mawlid",
-        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}}),
-       ("Jumu'atul-Wida",
-        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}}),
-       ("quarter after|past <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("the <cycle> after|before <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)tomorrow", -1.252762968495368),
-                                    ("dayday", -0.8472978603872037),
-                                    ("day (grain)yesterday", -1.252762968495368)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("about|exactly <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -3.6109179126442243,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.791759469228055),
-                                    ("hh(:mm) - <time-of-day> am|pm", -2.890371757896165),
-                                    ("this|last|next <cycle>", -1.791759469228055),
-                                    ("day", -2.4849066497880004),
-                                    ("time-of-day (latent)", -2.890371757896165),
-                                    ("hhmm (latent)", -2.4849066497880004),
-                                    ("<time-of-day> am|pm", -2.890371757896165),
-                                    ("hour", -2.1972245773362196),
-                                    ("next <time>", -2.890371757896165),
-                                    ("this|next <day-of-week>", -2.890371757896165),
-                                    ("minute", -2.4849066497880004)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -1.9459101490553135, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dd/mm", -2.0794415416798357), ("day", -2.0794415416798357),
-                                    ("time-of-day (latent)", -2.0794415416798357),
-                                    ("hour", -2.0794415416798357)],
-                               n = 2}}),
-       ("Sukkot",
-        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> in <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("monthyear", -1.2992829841302609),
-                                    ("Marcha <unit-of-duration>", -1.7047480922384253),
-                                    ("March<integer> <unit-of-duration>", -1.7047480922384253),
-                                    ("Vijayadashami<integer> <unit-of-duration>",
-                                     -1.7047480922384253),
-                                    ("dayyear", -1.7047480922384253)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("World Vegan Day",
-        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}}),
-       ("intersect by \",\", \"of\", \"from\", \"'s\"",
-        Classifier{okData =
-                     ClassData{prior = -0.4700036292457356, unseen = -5.081404364984463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Wednesday<named-month> <day-of-month> (non ordinal)",
-                                     -4.382026634673881),
-                                    ("dayhour", -3.1292636661785136),
-                                    ("daymonth", -3.1292636661785136),
-                                    ("<named-month> <day-of-month> (non ordinal)Friday",
-                                     -4.382026634673881),
-                                    ("Friday<named-month> <day-of-month> (non ordinal)",
-                                     -3.6888794541139363),
-                                    ("Wednesdayintersect", -4.382026634673881),
-                                    ("Black Fridaythis|last|next <cycle>", -4.382026634673881),
-                                    ("<part-of-day> of <time>February", -4.382026634673881),
-                                    ("Saturday<time-of-day> am|pm", -4.382026634673881),
-                                    ("Martin Luther King's Daythis|last|next <cycle>",
-                                     -3.9765615265657175),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -4.382026634673881),
-                                    ("on <date><time-of-day> am|pm", -4.382026634673881),
-                                    ("hourmonth", -4.382026634673881),
-                                    ("dayday", -2.5102244577722903),
-                                    ("the <day-of-month> (ordinal)February", -3.9765615265657175),
-                                    ("WednesdayOctober", -4.382026634673881),
-                                    ("Wednesdaythis|last|next <cycle>", -3.9765615265657175),
-                                    ("intersect<named-month> <day-of-month> (non ordinal)",
-                                     -3.4657359027997265),
-                                    ("dayyear", -2.8779492378976075),
-                                    ("Saturday<named-month> <day-of-month> (non ordinal)",
-                                     -4.382026634673881),
-                                    ("Thursdayhh:mm", -3.9765615265657175),
-                                    ("Thanksgiving Daythis|last|next <cycle>", -4.382026634673881),
-                                    ("on <date><named-month> <day-of-month> (non ordinal)",
-                                     -3.9765615265657175),
-                                    ("TuesdayOctober", -4.382026634673881),
-                                    ("the <day-of-month> (ordinal)March", -4.382026634673881),
-                                    ("Mondaythis|last|next <cycle>", -4.382026634673881),
-                                    ("Fridayintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -4.382026634673881),
-                                    ("Fridayintersect", -4.382026634673881),
-                                    ("Thursday<datetime> - <datetime> (interval)",
-                                     -3.6888794541139363),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -3.4657359027997265),
-                                    ("Tuesdaythis|last|next <cycle>", -4.382026634673881),
-                                    ("Sunday<named-month> <day-of-month> (non ordinal)",
-                                     -4.382026634673881),
-                                    ("dayminute", -2.995732273553991),
-                                    ("minuteday", -3.4657359027997265),
-                                    ("this|last|next <cycle>Sunday", -4.382026634673881),
-                                    ("intersectyear (latent)", -4.382026634673881),
-                                    ("Sundaythis|last|next <cycle>", -4.382026634673881),
-                                    ("weekday", -4.382026634673881),
-                                    ("dayweek", -3.283414346005772),
-                                    ("Thursday<time-of-day> am|pm", -4.382026634673881),
-                                    ("Monday<named-month> <day-of-month> (non ordinal)",
-                                     -3.9765615265657175),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -3.9765615265657175)],
-                               n = 50},
-                   koData =
-                     ClassData{prior = -0.9808292530117262, unseen = -4.795790545596741,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week-endJuly", -4.0943445622221),
-                                    ("week-endOctober", -3.4011973816621555),
-                                    ("daymonth", -1.8971199848858813),
-                                    ("TuesdaySeptember", -4.0943445622221),
-                                    ("Wednesdayintersect", -4.0943445622221),
-                                    ("hourmonth", -2.995732273553991),
-                                    ("Fridaythis|last|next <cycle>", -4.0943445622221),
-                                    ("SundayFebruary", -4.0943445622221),
-                                    ("WednesdayOctober", -4.0943445622221),
-                                    ("week-endintersect", -4.0943445622221),
-                                    ("dayyear", -4.0943445622221),
-                                    ("FridayJuly", -3.6888794541139363),
-                                    ("FridaySeptember", -4.0943445622221),
-                                    ("WednesdayFebruary", -4.0943445622221),
-                                    ("minutemonth", -3.1780538303479458),
-                                    ("SundayMarch", -4.0943445622221),
-                                    ("MondayFebruary", -3.6888794541139363),
-                                    ("Fridayintersect", -4.0943445622221),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -3.6888794541139363),
-                                    ("dayminute", -3.4011973816621555),
-                                    ("SaturdaySeptember", -4.0943445622221),
-                                    ("intersectSeptember", -3.1780538303479458),
-                                    ("MondayMarch", -4.0943445622221),
-                                    ("on <date>September", -3.6888794541139363),
-                                    ("Tuesdayintersect", -4.0943445622221),
-                                    ("Sundayintersect", -4.0943445622221)],
-                               n = 30}}),
-       ("last <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.5306282510621704,
-                               unseen = -3.4965075614664802,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Father's Day", -2.772588722239781),
-                                    ("Martin Luther King's Day", -2.772588722239781),
-                                    ("Mothering Sunday", -2.772588722239781),
-                                    ("day", -1.1631508098056809), ("Sunday", -2.772588722239781),
-                                    ("Chinese New Year", -2.367123614131617),
-                                    ("Thanksgiving Day", -2.772588722239781),
-                                    ("Easter Sunday", -2.772588722239781),
-                                    ("hour", -2.772588722239781), ("Tuesday", -2.772588722239781),
-                                    ("week-end", -2.772588722239781)],
-                               n = 10},
-                   koData =
-                     ClassData{prior = -0.8873031950009028, unseen = -3.295836866004329,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Monday", -2.5649493574615367), ("day", -2.159484249353372),
-                                    ("Sunday", -2.5649493574615367), ("hour", -1.466337068793427),
-                                    ("week-end", -1.466337068793427)],
-                               n = 7}}),
-       ("March",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.044522437723423,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 19},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<named-month>|<named-day> <day-of-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.2231435513142097, unseen = -3.258096538021482,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Octoberordinal (digits)", -2.120263536200091),
-                                    ("Thursdayordinal (digits)", -2.5257286443082556),
-                                    ("day", -2.120263536200091),
-                                    ("Augustordinal (digits)", -2.5257286443082556),
-                                    ("Marchordinals (first..twentieth,thirtieth,...)",
-                                     -2.120263536200091),
-                                    ("Tuesdayordinal (digits)", -2.5257286443082556),
-                                    ("month", -1.2729656758128873),
-                                    ("Marchordinal (digits)", -2.5257286443082556)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -1.6094379124341003, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("from|since|after <time-of-day>ordinal (digits)",
-                                     -1.8718021769015913),
-                                    ("Augustordinal (digits)", -1.8718021769015913),
-                                    ("month", -1.466337068793427)],
-                               n = 2}}),
-       ("Clean Monday",
-        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-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [("ordinal (digits)", 0.0)], n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Easter Sunday",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
-       ("Christmas",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("until <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -0.9808292530117262, unseen = -3.044522437723423,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -2.3025850929940455),
-                                    ("<time-of-day> am|pm", -1.6094379124341003),
-                                    ("hh:mm", -1.8971199848858813), ("hour", -1.8971199848858813),
-                                    ("minute", -1.3862943611198906)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -0.4700036292457356, unseen = -3.367295829986474,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersect", -1.7227665977411035),
-                                    ("yesterday", -2.2335922215070942),
-                                    ("day", -2.2335922215070942), ("hh:mm", -1.7227665977411035),
-                                    ("hour", -2.639057329615259), ("minute", -1.252762968495368)],
-                               n = 10}}),
-       ("dd.mm.yyyy",
-        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}}),
-       ("Isra and Mi'raj",
-        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}}),
-       ("<duration> after|before|from <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.3184537311185346,
-                               unseen = -3.5263605246161616,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("a <unit-of-duration>now", -2.803360380906535),
-                                    ("a <unit-of-duration>Christmas", -2.803360380906535),
-                                    ("dayday", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>today", -2.803360380906535),
-                                    ("daysecond", -2.803360380906535),
-                                    ("a <unit-of-duration>right now", -2.803360380906535),
-                                    ("minutenograin", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>Christmas", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>Easter Sunday",
-                                     -2.803360380906535),
-                                    ("secondnograin", -2.803360380906535),
-                                    ("yearday", -2.1102132003465894),
-                                    ("daynograin", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>now", -2.3978952727983707)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -1.2992829841302609,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -2.4423470353692043),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal)",
-                                     -2.4423470353692043),
-                                    ("dayday", -2.03688192726104),
-                                    ("<integer> <unit-of-duration>time-of-day (latent)",
-                                     -2.4423470353692043),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
-                                     -2.4423470353692043)],
-                               n = 3}}),
-       ("<day-of-month> (ordinal or number) of <month>",
-        Classifier{okData =
-                     ClassData{prior = -8.004270767353637e-2,
-                               unseen = -3.5263605246161616,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)July", -2.803360380906535),
-                                    ("ordinals (first..twentieth,thirtieth,...)March",
-                                     -2.803360380906535),
-                                    ("ordinal (digits)this|last|next <cycle>", -2.1102132003465894),
-                                    ("integer (numeric)this|last|next <cycle>",
-                                     -2.3978952727983707),
-                                    ("ordinal (digits)February", -2.803360380906535),
-                                    ("integer (numeric)February", -2.3978952727983707),
-                                    ("month", -0.9315582040049435),
-                                    ("ordinal (digits)March", -2.803360380906535),
-                                    ("integer (numeric)July", -2.803360380906535)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -2.5649493574615367,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)February", -1.7047480922384253),
-                                    ("month", -1.7047480922384253)],
-                               n = 1}}),
-       ("decimal number",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Naraka Chaturdashi",
-        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}}),
-       ("beginning of month",
-        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}}),
-       ("next <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.5263605246161616,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Martin Luther King's Day", -2.803360380906535),
-                                    ("Halloween", -2.803360380906535),
-                                    ("Wednesday", -2.803360380906535),
-                                    ("Boss's Day", -2.803360380906535),
-                                    ("Mothering Sunday", -2.803360380906535),
-                                    ("Monday", -2.803360380906535), ("day", -1.0986122886681098),
-                                    ("Thanksgiving Day", -2.803360380906535),
-                                    ("March", -2.803360380906535), ("month", -2.803360380906535),
-                                    ("Tuesday", -2.1102132003465894)],
-                               n = 11},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time-of-day> sharp|exactly",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("at <time-of-day>", -2.1400661634962708),
-                                    ("time-of-day (latent)", -2.1400661634962708),
-                                    ("hhmm (latent)", -2.1400661634962708),
-                                    ("<time-of-day> am|pm", -2.1400661634962708),
-                                    ("hh:mm", -2.1400661634962708), ("hour", -1.7346010553881064),
-                                    ("minute", -1.4469189829363254)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("in <named-month>|year",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -2.4423470353692043),
-                                    ("year (latent)", -1.0560526742493137),
-                                    ("year", -1.0560526742493137), ("March", -2.4423470353692043),
-                                    ("month", -2.03688192726104)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -1.2992829841302609),
-                                    ("year (latent)", -1.7047480922384253),
-                                    ("year", -1.7047480922384253), ("month", -1.2992829841302609)],
-                               n = 3}}),
-       ("Islamic New Year",
-        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}}),
-       ("Lent",
-        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}}),
-       ("negative numbers",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -7.696104113612832e-2),
-                                    ("integer (0..19)", -2.6026896854443837)],
-                               n = 25}}),
-       ("about|exactly <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("half an hour", -0.6931471805599453),
-                                    ("minute", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time> before last|after next",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Wednesday", -1.8718021769015913),
-                                    ("Friday", -1.466337068793427), ("day", -1.1786549963416462),
-                                    ("March", -1.8718021769015913), ("month", -1.8718021769015913)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("by the end of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("this|last|next <cycle>", -0.6931471805599453),
-                                    ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hhmm (military) am|pm",
-        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 = -0.3794896217049037, unseen = -4.304065093204169,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersecthh:mm", -3.1918471524802814),
-                                    ("intersect<time-of-day> am|pm", -3.1918471524802814),
-                                    ("minuteminute", -1.457246097092175),
-                                    ("hh:mmhh:mm", -2.093234863812172),
-                                    ("dayday", -3.1918471524802814),
-                                    ("hourhour", -2.093234863812172),
-                                    ("<named-month> <day-of-month> (non ordinal)<named-month> <day-of-month> (non ordinal)",
-                                     -3.1918471524802814),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
-                                     -3.1918471524802814),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
-                                     -3.597312260588446),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -3.597312260588446),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.681021528714291),
-                                    ("from|since|after <time-of-day>hh:mm", -2.681021528714291)],
-                               n = 26},
-                   koData =
-                     ClassData{prior = -1.1526795099383855, unseen = -3.828641396489095,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<named-month> <day-of-month> (non ordinal)July",
-                                     -3.1135153092103742),
-                                    ("daymonth", -2.70805020110221),
-                                    ("from|since|after <time-of-day>intersect", -2.70805020110221),
-                                    ("<time-of-day> am|pmintersect", -3.1135153092103742),
-                                    ("hh:mm<time-of-day> am|pm", -2.70805020110221),
-                                    ("minuteminute", -1.8607523407150064),
-                                    ("hourhour", -2.70805020110221),
-                                    ("minutehour", -2.70805020110221),
-                                    ("hh:mmintersect", -2.1972245773362196),
-                                    ("<named-month> <day-of-month> (non ordinal)August",
-                                     -3.1135153092103742),
-                                    ("about|exactly <time-of-day><time-of-day> am|pm",
-                                     -3.1135153092103742)],
-                               n = 12}}),
-       ("Tuesday",
-        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}}),
-       ("New Year's Day",
-        Classifier{okData =
-                     ClassData{prior = -1.6094379124341003,
-                               unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
-                   koData =
-                     ClassData{prior = -0.2231435513142097,
-                               unseen = -2.3025850929940455,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 8}}),
-       ("fortnight",
-        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}}),
-       ("<integer> and an half hour",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Laylat al-Qadr",
-        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}}),
-       ("Boghi",
-        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}}),
-       ("at the beginning|end of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -0.2231435513142097,
-                               unseen = -2.5649493574615367,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("January", -1.3862943611198906),
-                                    ("April", -1.3862943611198906), ("month", -0.8754687373538999)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -1.6094379124341003,
-                               unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -1.0986122886681098),
-                                    ("month", -1.0986122886681098)],
-                               n = 1}}),
-       ("<time-of-day> - <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.7375989431307791, unseen = -4.110873864173311,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -1.529395204760564),
-                                    ("hh:mmhh:mm", -1.8971199848858813),
-                                    ("<time-of-day> am|pmtime-of-day (latent)",
-                                     -2.4849066497880004),
-                                    ("hourhour", -1.6964492894237302),
-                                    ("from|since|after <time-of-day>time-of-day (latent)",
-                                     -3.4011973816621555),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -3.4011973816621555),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.4849066497880004),
-                                    ("from|since|after <time-of-day>hh:mm", -2.4849066497880004)],
-                               n = 22},
-                   koData =
-                     ClassData{prior = -0.6505875661411494, unseen = -4.174387269895637,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("about|exactly <time-of-day>time-of-day (latent)",
-                                     -3.4657359027997265),
-                                    ("hh:mmtime-of-day (latent)", -1.7609878105613013),
-                                    ("hh:mm<time-of-day> am|pm", -3.0602707946915624),
-                                    ("<time-of-day> am|pmtime-of-day (latent)",
-                                     -3.4657359027997265),
-                                    ("at <time-of-day><time-of-day> am|pm", -3.4657359027997265),
-                                    ("hourhour", -2.2129729343043585),
-                                    ("minutehour", -1.2144441041932315),
-                                    ("about|exactly <time-of-day><time-of-day> am|pm",
-                                     -3.4657359027997265),
-                                    ("from|since|after <time-of-day>time-of-day (latent)",
-                                     -2.5494451709255714),
-                                    ("at <time-of-day>time-of-day (latent)", -3.0602707946915624),
-                                    ("<integer> to|till|before <hour-of-day>time-of-day (latent)",
-                                     -3.0602707946915624)],
-                               n = 24}}),
-       ("military spelled out numbers am|pm",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
-                               likelihoods =
-                                 HashMap.fromList [("integer (0..19)integer (20..90)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("winter",
-        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}}),
-       ("nth <time> after <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayday", -0.916290731874155),
-                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
-                                     -0.916290731874155)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayday", -0.916290731874155),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayChristmas",
-                                     -0.916290731874155)],
-                               n = 1}}),
-       ("<named-month> <day-of-month> (non ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.42121346507630353,
-                               unseen = -3.951243718581427,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Augustinteger (numeric)", -2.5455312716044354),
-                                    ("Marchinteger (numeric)", -2.833213344056216),
-                                    ("Aprilinteger (numeric)", -3.2386784521643803),
-                                    ("month", -0.8407831793660099),
-                                    ("Februaryinteger (numeric)", -1.9859154836690123),
-                                    ("Septemberinteger (numeric)", -2.833213344056216),
-                                    ("Octoberinteger (numeric)", -2.833213344056216),
-                                    ("Julyinteger (numeric)", -2.1400661634962708)],
-                               n = 21},
-                   koData =
-                     ClassData{prior = -1.067840630001356, unseen = -3.4657359027997265,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Augustinteger (numeric)", -2.3353749158170367),
-                                    ("Marchinteger (numeric)", -2.740840023925201),
-                                    ("Aprilinteger (numeric)", -2.740840023925201),
-                                    ("month", -0.9490805546971459),
-                                    ("from|since|after <time-of-day>integer (numeric)",
-                                     -2.3353749158170367),
-                                    ("Julyinteger (numeric)", -1.6422277352570913)],
-                               n = 11}}),
-       ("Diwali",
-        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}}),
-       ("last night",
-        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}}),
-       ("this|next <day-of-week>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.995732273553991,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Thursday", -2.2512917986064953),
-                                    ("Wednesday", -2.2512917986064953),
-                                    ("Monday", -1.845826690498331), ("day", -0.8649974374866046),
-                                    ("Tuesday", -1.55814461804655)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("ordinal (digits)",
-        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}}),
-       ("quarter (grain)",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809, unseen = -2.639057329615259,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
-                   koData =
-                     ClassData{prior = -1.3862943611198906, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("last <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)October", -1.791759469228055),
-                                    ("daymonth", -1.2809338454620642),
-                                    ("day (grain)intersect", -1.791759469228055),
-                                    ("weekmonth", -1.791759469228055),
-                                    ("week (grain)intersect", -2.1972245773362196),
-                                    ("week (grain)September", -2.1972245773362196)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Chhath",
-        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}}),
-       ("Vasant Panchami",
-        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-month>(ordinal) <named-month> year",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)April", -0.6931471805599453),
-                                    ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Black Friday",
-        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}}),
-       ("week-end",
-        Classifier{okData =
-                     ClassData{prior = -1.252762968495368, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
-                   koData =
-                     ClassData{prior = -0.3364722366212129,
-                               unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
-       ("Great Lent",
-        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}}),
-       ("Maundy Thursday",
-        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 (grain)",
-        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}}),
-       ("right now",
-        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}}),
-       ("for <duration> from <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> <unit-of-duration><day-of-month> (ordinal)",
-                                     -1.5040773967762742),
-                                    ("dayday", -1.0986122886681098),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
-                                     -1.5040773967762742)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -1.252762968495368),
-                                    ("<integer> <unit-of-duration>time-of-day (latent)",
-                                     -1.252762968495368)],
-                               n = 1}}),
-       ("compose by multiplication",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList [("integer (0..19)powers of tens", 0.0)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("end of year",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("between <time> and <time>",
-        Classifier{okData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -0.832909122935104),
-                                    ("hh:mmhh:mm", -0.832909122935104)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -3.7376696182833684,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -1.410986973710262),
-                                    ("minuteminute", -1.410986973710262),
-                                    ("minutehour", -1.410986973710262),
-                                    ("hh:mmintersect", -1.410986973710262)],
-                               n = 18}}),
-       ("<month> dd-dd (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4657359027997265,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Julyinteger (numeric)integer (numeric)", -1.6422277352570913),
-                                    ("from|since|after <time-of-day>ordinal (digits)ordinal (digits)",
-                                     -2.740840023925201),
-                                    ("from|since|after <time-of-day>integer (numeric)integer (numeric)",
-                                     -2.740840023925201),
-                                    ("from|since|after <time-of-day>ordinal (digits)integer (numeric)",
-                                     -2.740840023925201),
-                                    ("Augustordinal (digits)integer (numeric)",
-                                     -2.3353749158170367),
-                                    ("month", -0.8690378470236094),
-                                    ("Augustordinal (digits)ordinal (digits)",
-                                     -2.3353749158170367)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("part of days",
-        Classifier{okData =
-                     ClassData{prior = -3.509131981127006e-2,
-                               unseen = -3.4011973816621555,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 28},
-                   koData =
-                     ClassData{prior = -3.367295829986474, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+                     ClassData{prior = -8.961215868968717e-2,
+                               unseen = -3.5263605246161616,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 32},
+                   koData =
+                     ClassData{prior = -2.456735772821304, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("integer (numeric)",
+        Classifier{okData =
+                     ClassData{prior = -0.6049544685244844, unseen = -5.736572297479192,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 308},
+                   koData =
+                     ClassData{prior = -0.7898768070184965, unseen = -5.552959584921617,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 256}}),
+       ("<year> (bc|ad)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<duration> hence|ago",
+        Classifier{okData =
+                     ClassData{prior = -5.406722127027582e-2,
+                               unseen = -3.784189633918261,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.563975538357343), ("day", -1.8152899666382492),
+                                    ("year", -2.662587827025453),
+                                    ("<integer> <unit-of-duration>", -1.0531499145913523),
+                                    ("a <unit-of-duration>", -2.662587827025453),
+                                    ("month", -2.662587827025453),
+                                    ("fortnight", -2.662587827025453)],
+                               n = 18},
+                   koData =
+                     ClassData{prior = -2.9444389791664407,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year", -1.5040773967762742),
+                                    ("<integer> <unit-of-duration>", -1.5040773967762742)],
+                               n = 1}}),
+       ("noon|midnight|EOD|end of day",
+        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}}),
+       ("quarter to|till|before <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("noon|midnight|EOD|end of day", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Father's Day",
+        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}}),
+       ("<cycle> after|before <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)tomorrow", -1.6739764335716716),
+                                    ("dayday", -1.1631508098056809),
+                                    ("day (grain)yesterday", -1.6739764335716716)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -1.6739764335716716),
+                                    ("year (grain)Christmas", -2.0794415416798357),
+                                    ("dayday", -2.0794415416798357),
+                                    ("day (grain)intersect", -1.6739764335716716),
+                                    ("day (grain)Easter Sunday", -2.0794415416798357),
+                                    ("yearday", -2.0794415416798357)],
+                               n = 4}}),
+       ("Easter Monday",
+        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}}),
+       ("Navaratri",
+        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}}),
+       ("Martin Luther King's Day",
+        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}}),
+       ("integer (20..90)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Shemini Atzeret",
+        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}}),
+       ("Ramadan",
+        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}}),
+       ("Lazarus Saturday",
+        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}}),
+       ("intersect 2 numbers",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("compose by multiplicationinteger (0..19)",
+                                     -0.2231435513142097)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("powers of tensinteger (0..19)", -0.2231435513142097)],
+                               n = 3}}),
+       ("mm/yyyy",
+        Classifier{okData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},
+                   koData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("from|since|after <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.540445040947149, unseen = -4.248495242049359,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<day-of-month> (ordinal or number) <named-month>",
+                                     -3.5409593240373143),
+                                    ("July", -3.5409593240373143),
+                                    ("year (latent)", -3.1354942159291497),
+                                    ("day", -3.1354942159291497),
+                                    ("time-of-day (latent)", -2.624668592163159),
+                                    ("year", -3.1354942159291497),
+                                    ("<time-of-day> am|pm", -2.624668592163159),
+                                    ("hh:mm", -2.624668592163159),
+                                    ("<day-of-month> (ordinal)", -3.5409593240373143),
+                                    ("hour", -2.03688192726104), ("month", -3.1354942159291497),
+                                    ("minute", -2.624668592163159),
+                                    ("August", -3.5409593240373143)],
+                               n = 18},
+                   koData =
+                     ClassData{prior = -0.2411620568168881, unseen = -5.111987788356543,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> to|till|before <hour-of-day>", -4.007333185232471),
+                                    ("week", -4.412798293340635),
+                                    ("<day-of-month> (ordinal or number) <named-month>",
+                                     -4.412798293340635),
+                                    ("today", -4.412798293340635),
+                                    ("intersect", -2.540996116439044),
+                                    ("<time> for <duration>", -4.412798293340635),
+                                    ("second", -4.412798293340635), ("now", -3.71965111278069),
+                                    ("tomorrow", -4.007333185232471),
+                                    ("this|last|next <cycle>", -4.412798293340635),
+                                    ("day", -1.927891643552635),
+                                    ("time-of-day (latent)", -2.6210388241125804),
+                                    ("<time-of-day> am|pm", -4.007333185232471),
+                                    ("nograin", -3.71965111278069),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)",
+                                     -4.412798293340635),
+                                    ("<day-of-month> (ordinal)", -4.007333185232471),
+                                    ("Easter Sunday", -4.412798293340635),
+                                    ("Christmas", -3.71965111278069), ("hour", -2.3978952727983707),
+                                    ("month", -4.412798293340635),
+                                    ("<datetime> - <datetime> (interval)", -3.1600353248452673),
+                                    ("<time-of-day> - <time-of-day> (interval)",
+                                     -2.908720896564361),
+                                    ("<named-month> <day-of-month> (non ordinal)",
+                                     -4.007333185232471),
+                                    ("minute", -1.927891643552635),
+                                    ("right now", -4.412798293340635),
+                                    ("<month> dd-dd (interval)", -3.71965111278069),
+                                    ("part of days", -4.412798293340635),
+                                    ("dd-dd <month> (interval)", -4.007333185232471)],
+                               n = 66}}),
+       ("integer after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.8109302162163288),
+                                    ("integer (numeric)time-of-day (latent)", -1.0986122886681098),
+                                    ("integer (20..90)time-of-day (latent)", -1.5040773967762742)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<ordinal> last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4011973816621555,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)week (grain)year (latent)",
+                                     -2.268683541318364),
+                                    ("daymonth", -2.268683541318364),
+                                    ("ordinal (digits)day (grain)May", -2.6741486494265287),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.6741486494265287),
+                                    ("weekmonth", -1.7578579175523736),
+                                    ("ordinal (digits)week (grain)October", -2.6741486494265287),
+                                    ("ordinal (digits)week (grain)intersect", -2.6741486494265287),
+                                    ("ordinal (digits)week (grain)year (latent)",
+                                     -2.6741486494265287),
+                                    ("weekyear", -1.9810014688665833),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.6741486494265287),
+                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)May",
+                                     -2.6741486494265287)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Yom HaShoah",
+        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-month> (ordinal or number) <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -1.0296194171811581,
+                               unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)December", -1.6582280766035324),
+                                    ("ordinal (digits)February", -2.3513752571634776),
+                                    ("integer (numeric)April", -2.3513752571634776),
+                                    ("month", -1.252762968495368)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.4418327522790392,
+                               unseen = -3.4011973816621555,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)October", -2.6741486494265287),
+                                    ("ordinal (digits)July", -2.6741486494265287),
+                                    ("integer (numeric)September", -2.268683541318364),
+                                    ("ordinal (digits)August", -2.6741486494265287),
+                                    ("integer (numeric)August", -2.6741486494265287),
+                                    ("ordinal (digits)April", -2.6741486494265287),
+                                    ("month", -1.0647107369924282),
+                                    ("integer (numeric)July", -2.268683541318364)],
+                               n = 9}}),
+       ("<time> <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -9.237332013101517e-2,
+                               unseen = -4.48863636973214,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("dayhour", -1.4816045409242156),
+                                    ("Mondayearly morning", -3.378724525810097),
+                                    ("time-of-day (latent)tonight", -3.378724525810097),
+                                    ("hourhour", -2.3978952727983707),
+                                    ("<time-of-day> o'clockin|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("todaypart of days", -3.784189633918261),
+                                    ("minutehour", -2.6855773452501515),
+                                    ("at <time-of-day>in|during the <part-of-day>",
+                                     -3.378724525810097),
+                                    ("time-of-day (latent)this <part-of-day>", -3.784189633918261),
+                                    ("Mondayin|during the <part-of-day>", -3.784189633918261),
+                                    ("intersectpart of days", -3.784189633918261),
+                                    ("intersectin|during the <part-of-day>", -3.784189633918261),
+                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("tomorrowpart of days", -2.3978952727983707),
+                                    ("hh:mmin|during the <part-of-day>", -3.0910424533583156),
+                                    ("time-of-day (latent)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("hhmm (latent)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("yesterdaypart of days", -3.378724525810097),
+                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("Mondaypart of days", -3.784189633918261)],
+                               n = 31},
+                   koData =
+                     ClassData{prior = -2.4277482359480516,
+                               unseen = -3.4965075614664802,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("yearhour", -2.772588722239781),
+                                    ("monthhour", -2.772588722239781),
+                                    ("hourhour", -2.772588722239781),
+                                    ("year (latent)in|during the <part-of-day>",
+                                     -2.772588722239781),
+                                    ("Februaryin|during the <part-of-day>", -2.772588722239781),
+                                    ("time-of-day (latent)in|during the <part-of-day>",
+                                     -2.772588722239781)],
+                               n = 3}}),
+       ("dd/mm",
+        Classifier{okData =
+                     ClassData{prior = -1.2685113254635072,
+                               unseen = -2.3978952727983707,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},
+                   koData =
+                     ClassData{prior = -0.33024168687057687,
+                               unseen = -3.2188758248682006,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 23}}),
+       ("today",
+        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}}),
+       ("at <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -8.4557388028063e-2, unseen = -5.003946305945459,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time> timezone", -3.898599985096005),
+                                    ("noon|midnight|EOD|end of day", -3.898599985096005),
+                                    ("integer after|past <hour-of-day>", -3.898599985096005),
+                                    ("half after|past <hour-of-day>", -4.304065093204169),
+                                    ("time-of-day (latent)", -1.6650077635889111),
+                                    ("hhmm (latent)", -3.6109179126442243),
+                                    ("<time-of-day> am|pm", -1.7783364488959144),
+                                    ("hh:mm", -3.3877743613300146),
+                                    ("about|exactly <time-of-day>", -3.898599985096005),
+                                    ("hour", -1.0459685551826876),
+                                    ("<time-of-day> sharp|exactly", -4.304065093204169),
+                                    ("minute", -2.10684051586795)],
+                               n = 68},
+                   koData =
+                     ClassData{prior = -2.512305623976115, unseen = -3.2188758248682006,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -1.2321436812926323),
+                                    ("hour", -1.2321436812926323)],
+                               n = 6}}),
+       ("December",
+        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}}),
+       ("absorption of , after named day",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.332204510175204,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("on <date>", -2.1972245773362196),
+                                    ("Wednesday", -2.6026896854443837),
+                                    ("Saturday", -2.6026896854443837),
+                                    ("Monday", -2.1972245773362196),
+                                    ("Friday", -1.9095425048844386), ("day", -0.8979415932059586),
+                                    ("Sunday", -2.6026896854443837)],
+                               n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("September",
+        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}}),
+       ("tonight",
+        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}}),
+       ("last|past|next <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -4.2626798770413155,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.456735772821304), ("second", -2.639057329615259),
+                                    ("day", -2.3025850929940455), ("year", -2.639057329615259),
+                                    ("<integer> <unit-of-duration>", -0.7827593392496325),
+                                    ("hour", -2.639057329615259), ("month", -2.639057329615259),
+                                    ("minute", -2.639057329615259)],
+                               n = 31},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the ides of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("on <date>",
+        Classifier{okData =
+                     ClassData{prior = -0.13353139262452263,
+                               unseen = -4.204692619390966,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Thursday", -1.4816045409242156),
+                                    ("dd/mm", -3.4965075614664802),
+                                    ("absorption of , after named day", -3.0910424533583156),
+                                    ("intersect", -3.0910424533583156),
+                                    ("Saturday", -2.803360380906535),
+                                    ("Friday", -3.4965075614664802), ("day", -0.8574502318512216),
+                                    ("the <day-of-month> (ordinal)", -3.0910424533583156),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -2.803360380906535),
+                                    ("hour", -3.4965075614664802)],
+                               n = 28},
+                   koData =
+                     ClassData{prior = -2.0794415416798357,
+                               unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersect", -1.791759469228055), ("day", -1.2809338454620642),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -1.791759469228055)],
+                               n = 4}}),
+       ("integer (0..19)",
+        Classifier{okData =
+                     ClassData{prior = -0.11122563511022437,
+                               unseen = -3.970291913552122,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 51},
+                   koData =
+                     ClassData{prior = -2.2512917986064953,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
+       ("between <time-of-day> and <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -0.7884573603642702),
+                                    ("hh:mmhh:mm", -0.7884573603642702)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -0.7884573603642702),
+                                    ("minutehour", -0.7884573603642702)],
+                               n = 9}}),
+       ("Halloween",
+        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}}),
+       ("Passover",
+        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}}),
+       ("from <month> dd-dd (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Julyinteger (numeric)integer (numeric)", -1.6094379124341003),
+                                    ("Augustordinal (digits)integer (numeric)",
+                                     -1.6094379124341003),
+                                    ("month", -0.916290731874155),
+                                    ("Augustordinal (digits)ordinal (digits)",
+                                     -1.6094379124341003)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("October",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("month (grain)",
+        Classifier{okData =
+                     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}}),
+       ("<integer> more <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)minute (grain)", -0.6931471805599453),
+                                    ("minute", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time-of-day> o'clock",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Vesak",
+        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}}),
+       ("Earth Hour",
+        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}}),
+       ("in|within|after <duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.10536051565782628,
+                               unseen = -4.6913478822291435,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -3.295836866004329),
+                                    ("<integer> more <unit-of-duration>", -3.9889840465642745),
+                                    ("three-quarters of an hour", -3.0726933146901194),
+                                    ("<integer> + '\"", -3.295836866004329),
+                                    ("number.number hours", -3.9889840465642745),
+                                    ("second", -3.58351893845611),
+                                    ("half a <time-grain>", -3.0726933146901194),
+                                    ("day", -3.295836866004329), ("year", -3.9889840465642745),
+                                    ("<integer> <unit-of-duration>", -1.6376087894007967),
+                                    ("a <unit-of-duration>", -3.0726933146901194),
+                                    ("quarter of an hour", -3.0726933146901194),
+                                    ("hour", -2.6026896854443837),
+                                    ("about|exactly <duration>", -3.9889840465642745),
+                                    ("half an hour (abbrev).", -3.58351893845611),
+                                    ("<integer> and an half hour", -3.9889840465642745),
+                                    ("minute", -1.2809338454620642)],
+                               n = 45},
+                   koData =
+                     ClassData{prior = -2.3025850929940455, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("quarter", -2.2335922215070942), ("year", -1.9459101490553135),
+                                    ("<integer> <unit-of-duration>", -1.9459101490553135),
+                                    ("a <unit-of-duration>", -2.2335922215070942)],
+                               n = 5}}),
+       ("January",
+        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}}),
+       ("three-quarters of an hour",
+        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}}),
+       ("Mattu Pongal",
+        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}}),
+       ("Wednesday",
+        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}}),
+       ("half after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> + '\"",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("half <integer> (UK style hour-of-day)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("July",
+        Classifier{okData =
+                     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}}),
+       ("hour (grain)",
+        Classifier{okData =
+                     ClassData{prior = -0.48550781578170077,
+                               unseen = -2.890371757896165,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 16},
+                   koData =
+                     ClassData{prior = -0.9555114450274363,
+                               unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10}}),
+       ("Shavuot",
+        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> <duration> hence|ago",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayyear", -0.6931471805599453),
+                                    ("Diwali<integer> <unit-of-duration>", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<ordinal> quarter",
+        Classifier{okData =
+                     ClassData{prior = -0.4700036292457356, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -1.1786549963416462),
+                                    ("ordinals (first..twentieth,thirtieth,...)quarter (grain)",
+                                     -1.466337068793427),
+                                    ("quarter", -0.7731898882334817)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.9808292530117262,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.8109302162163288),
+                                    ("quarter", -0.8109302162163288)],
+                               n = 3}}),
+       ("Boss's Day",
+        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}}),
+       ("Orthodox Easter Sunday",
+        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}}),
+       ("one twenty two",
+        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}}),
+       ("May",
+        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}}),
+       ("intersect",
+        Classifier{okData =
+                     ClassData{prior = -0.4711784874188598, unseen = -6.75343791859778,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Navaratriyear (latent)", -6.059123195581797),
+                                    ("Father's Dayyear (latent)", -6.059123195581797),
+                                    ("Ramadanyear (latent)", -6.059123195581797),
+                                    ("<datetime> - <datetime> (interval)on <date>",
+                                     -4.8063602270864285),
+                                    ("Bhai Doojyear (latent)", -6.059123195581797),
+                                    ("<time-of-day> - <time-of-day> (interval)on <date>",
+                                     -4.8063602270864285),
+                                    ("hourday", -4.354375103343371),
+                                    ("dayhour", -3.2557628146752617),
+                                    ("Martin Luther King's Dayyear (latent)", -5.653658087473633),
+                                    ("Shemini Atzeretyear (latent)", -6.059123195581797),
+                                    ("daymonth", -5.1428324637076415),
+                                    ("monthday", -5.653658087473633),
+                                    ("monthyear", -4.267363726353742),
+                                    ("Yom Ha'atzmautyear (latent)", -6.059123195581797),
+                                    ("Vijayadashamiyear (latent)", -6.059123195581797),
+                                    ("Thanksgiving Dayyear (latent)", -4.9605109069136875),
+                                    ("Thai Pongalyear (latent)", -5.365976015021851),
+                                    ("Thiru Onamyear (latent)", -5.365976015021851),
+                                    ("Tuesdaythe <day-of-month> (ordinal)", -6.059123195581797),
+                                    ("from <datetime> - <datetime> (interval)July",
+                                     -6.059123195581797),
+                                    ("houryear", -5.365976015021851),
+                                    ("this|next <day-of-week>hh(:mm) - <time-of-day> am|pm",
+                                     -6.059123195581797),
+                                    ("Christmas<time-of-day> am|pm", -6.059123195581797),
+                                    ("last <day-of-week> of <time>year (latent)",
+                                     -6.059123195581797),
+                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.365976015021851),
+                                    ("<time-of-day> am|pmintersect", -4.8063602270864285),
+                                    ("Earth Houryear (latent)", -6.059123195581797),
+                                    ("Octoberyear (latent)", -4.555045798805523),
+                                    ("intersect<time-of-day> am|pm", -6.059123195581797),
+                                    ("Mattu Pongalyear (latent)", -6.059123195581797),
+                                    ("Shavuotyear (latent)", -6.059123195581797),
+                                    ("Dhanterasin <named-month>|year", -6.059123195581797),
+                                    ("at <time-of-day>in|within|after <duration>",
+                                     -6.059123195581797),
+                                    ("Thursdayhh(:mm) - <time-of-day> am|pm", -6.059123195581797),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -5.653658087473633),
+                                    ("Marchyear (latent)", -6.059123195581797),
+                                    ("Sukkotyear (latent)", -5.653658087473633),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -6.059123195581797),
+                                    ("Clean Mondayyear (latent)", -5.653658087473633),
+                                    ("monthhour", -5.653658087473633),
+                                    ("todayat <time-of-day>", -6.059123195581797),
+                                    ("Thursday<time> timezone", -4.354375103343371),
+                                    ("from|since|after <time>December", -6.059123195581797),
+                                    ("dd/mm<time-of-day> am|pm", -6.059123195581797),
+                                    ("this <time>hh(:mm) - <time-of-day> am|pm",
+                                     -6.059123195581797),
+                                    ("Palm SundaySunday", -5.653658087473633),
+                                    ("dayday", -3.8618986182455775),
+                                    ("dd/mmat <time-of-day>", -6.059123195581797),
+                                    ("<time> <part-of-day>at <time-of-day>", -6.059123195581797),
+                                    ("tonightat <time-of-day>", -6.059123195581797),
+                                    ("<time-of-day> am|pmabsorption of , after named day",
+                                     -5.365976015021851),
+                                    ("today<time-of-day> am|pm", -6.059123195581797),
+                                    ("Februarythe <day-of-month> (ordinal)", -5.653658087473633),
+                                    ("at <time-of-day><time> <part-of-day>", -6.059123195581797),
+                                    ("hourhour", -4.8063602270864285),
+                                    ("<time-of-day> am|pmon <date>", -4.044220175039532),
+                                    ("Wednesdaythis|last|next <cycle>", -6.059123195581797),
+                                    ("Lentyear (latent)", -6.059123195581797),
+                                    ("intersect<named-month> <day-of-month> (non ordinal)",
+                                     -4.555045798805523),
+                                    ("Boghiyear (latent)", -6.059123195581797),
+                                    ("dayyear", -1.9647786333596962),
+                                    ("Thursdayfrom|since|after <time>", -5.653658087473633),
+                                    ("<time-of-day> o'clockin|during the <part-of-day>",
+                                     -6.059123195581797),
+                                    ("Thursdayat <time-of-day>", -5.653658087473633),
+                                    ("Islamic New Yearyear (latent)", -5.653658087473633),
+                                    ("Laylat al-Qadryear (latent)", -5.1428324637076415),
+                                    ("Chhathin <named-month>|year", -6.059123195581797),
+                                    ("Vasant Panchamiin <named-month>|year", -6.059123195581797),
+                                    ("Diwaliin <named-month>|year", -6.059123195581797),
+                                    ("Shrove Tuesdayyear (latent)", -6.059123195581797),
+                                    ("intersect by \",\", \"of\", \"from\" for year<time-of-day> am|pm",
+                                     -5.365976015021851),
+                                    ("<time-of-day> am|pmtomorrow", -5.365976015021851),
+                                    ("Yom Kippuryear (latent)", -6.059123195581797),
+                                    ("<part-of-day> of <time>year (latent)", -6.059123195581797),
+                                    ("minutehour", -5.1428324637076415),
+                                    ("Kaanum Pongalyear (latent)", -5.653658087473633),
+                                    ("Maha Saptamiyear (latent)", -6.059123195581797),
+                                    ("at <time-of-day>in|during the <part-of-day>",
+                                     -5.653658087473633),
+                                    ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
+                                     -4.354375103343371),
+                                    ("for <duration> from <time>December", -6.059123195581797),
+                                    ("tomorrow<time-of-day> sharp|exactly", -6.059123195581797),
+                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
+                                     -5.1428324637076415),
+                                    ("on <date><named-month> <day-of-month> (non ordinal)",
+                                     -5.653658087473633),
+                                    ("Pentecostyear (latent)", -6.059123195581797),
+                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.1428324637076415),
+                                    ("Eid al-Fitryear (latent)", -6.059123195581797),
+                                    ("Mondayin|during the <part-of-day>", -6.059123195581797),
+                                    ("Raksha Bandhanyear (latent)", -6.059123195581797),
+                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.653658087473633),
+                                    ("Navaratriin <named-month>|year", -6.059123195581797),
+                                    ("Ashurayear (latent)", -6.059123195581797),
+                                    ("Chinese New Yearyear (latent)", -6.059123195581797),
+                                    ("Sundayyear (latent)", -6.059123195581797),
+                                    ("Lag BaOmeryear (latent)", -6.059123195581797),
+                                    ("last weekend of <named-month>year (latent)",
+                                     -6.059123195581797),
+                                    ("Eid al-Adhayear (latent)", -5.1428324637076415),
+                                    ("intersectin|during the <part-of-day>", -6.059123195581797),
+                                    ("Christmasat <time-of-day>", -6.059123195581797),
+                                    ("Passoveryear (latent)", -6.059123195581797),
+                                    ("Lazarus Saturdayyear (latent)", -6.059123195581797),
+                                    ("dd/mmyear (latent)", -6.059123195581797),
+                                    ("<day-of-month> (ordinal or number) <named-month>year (latent)",
+                                     -6.059123195581797),
+                                    ("Yom HaShoahyear (latent)", -5.653658087473633),
+                                    ("Thursday<datetime> - <datetime> (interval)",
+                                     -5.653658087473633),
+                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
+                                     -6.059123195581797),
+                                    ("Thai Pongalin <named-month>|year", -6.059123195581797),
+                                    ("Septemberyear (latent)", -5.653658087473633),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -4.8063602270864285),
+                                    ("Halloweenyear (latent)", -6.059123195581797),
+                                    ("<ordinal> last <cycle> of <time>year (latent)",
+                                     -5.653658087473633),
+                                    ("from <time-of-day> - <time-of-day> (interval)on <date>",
+                                     -5.365976015021851),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
+                                     -6.059123195581797),
+                                    ("at <time-of-day>intersect", -5.653658087473633),
+                                    ("Rosh Hashanahyear (latent)", -5.365976015021851),
+                                    ("Dhanterasyear (latent)", -6.059123195581797),
+                                    ("Tu BiShvatyear (latent)", -6.059123195581797),
+                                    ("Holiyear (latent)", -5.365976015021851),
+                                    ("<time-of-day> - <time-of-day> (interval)tomorrow",
+                                     -6.059123195581797),
+                                    ("Holika Dahanyear (latent)", -5.365976015021851),
+                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -6.059123195581797),
+                                    ("dayminute", -3.420065865966538),
+                                    ("Mawlidyear (latent)", -6.059123195581797),
+                                    ("from <datetime> - <datetime> (interval)on <date>",
+                                     -5.653658087473633),
+                                    ("<datetime> - <datetime> (interval)tomorrow",
+                                     -6.059123195581797),
+                                    ("Jumu'atul-Widayear (latent)", -5.1428324637076415),
+                                    ("minuteday", -2.421537035855411),
+                                    ("absorption of , after named dayintersect",
+                                     -6.059123195581797),
+                                    ("intersectyear (latent)", -6.059123195581797),
+                                    ("Orthodox Easter Sundayyear (latent)", -6.059123195581797),
+                                    ("<ordinal> <cycle> of <time>year (latent)",
+                                     -6.059123195581797),
+                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -6.059123195581797),
+                                    ("Mothering Sundayyear (latent)", -5.653658087473633),
+                                    ("Boss's Dayyear (latent)", -5.653658087473633),
+                                    ("Global Youth Service Dayyear (latent)", -6.059123195581797),
+                                    ("Tisha B'Avyear (latent)", -6.059123195581797),
+                                    ("Isra and Mi'rajyear (latent)", -5.1428324637076415),
+                                    ("at <time-of-day>absorption of , after named day",
+                                     -6.059123195581797),
+                                    ("Christmasyear (latent)", -5.653658087473633),
+                                    ("Naraka Chaturdashiyear (latent)", -5.653658087473633),
+                                    ("at <time-of-day>on <date>", -4.9605109069136875),
+                                    ("between <time-of-day> and <time-of-day> (interval)on <date>",
+                                     -4.449685283147696),
+                                    ("dayweek", -6.059123195581797),
+                                    ("Easter Sundayyear (latent)", -5.365976015021851),
+                                    ("weekyear", -4.9605109069136875),
+                                    ("hh:mmin|during the <part-of-day>", -5.365976015021851),
+                                    ("<cycle> after|before <time><time-of-day> am|pm",
+                                     -5.653658087473633),
+                                    ("Hanukkahyear (latent)", -5.365976015021851),
+                                    ("February<time> <part-of-day>", -6.059123195581797),
+                                    ("Tuesdayin <named-month>|year", -6.059123195581797),
+                                    ("Great Lentyear (latent)", -6.059123195581797),
+                                    ("tomorrowat <time-of-day>", -5.365976015021851),
+                                    ("between <time> and <time>on <date>", -4.449685283147696),
+                                    ("absorption of , after named dayintersect by \",\", \"of\", \"from\" for year",
+                                     -6.059123195581797),
+                                    ("last <cycle> of <time>year (latent)", -5.365976015021851),
+                                    ("at <time-of-day>tomorrow", -5.653658087473633),
+                                    ("tomorrow<time-of-day> am|pm", -6.059123195581797),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -6.059123195581797),
+                                    ("Diwaliyear (latent)", -6.059123195581797),
+                                    ("Black Fridayyear (latent)", -5.653658087473633),
+                                    ("the <ordinal> last <cycle> of <time>year (latent)",
+                                     -6.059123195581797),
+                                    ("in|during the <part-of-day>at <time-of-day>",
+                                     -6.059123195581797),
+                                    ("Chhathyear (latent)", -5.653658087473633),
+                                    ("Vasant Panchamiyear (latent)", -6.059123195581797),
+                                    ("Palm Sundayintersect", -6.059123195581797),
+                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
+                                     -6.059123195581797),
+                                    ("August Bank Holidayyear (latent)", -5.365976015021851),
+                                    ("Februaryintersect", -6.059123195581797),
+                                    ("Simchat Torahyear (latent)", -6.059123195581797),
+                                    ("minuteyear", -6.059123195581797)],
+                               n = 319},
+                   koData =
+                     ClassData{prior = -0.9788742181759229, unseen = -6.401917196727186,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day> - <time-of-day> (interval)on <date>",
+                                     -4.79081953287472),
+                                    ("hourday", -4.79081953287472),
+                                    ("<named-month> <day-of-month> (non ordinal)July",
+                                     -5.707110264748875),
+                                    ("dayhour", -3.142160907287339),
+                                    ("Tuesdayfrom|since|after <time>", -5.707110264748875),
+                                    ("daymonth", -3.567044101252605),
+                                    ("monthday", -5.301645156640712),
+                                    ("monthyear", -4.454347296253507),
+                                    ("<time-of-day> am|pmyear (latent)", -5.301645156640712),
+                                    ("Thai Pongalyear (latent)", -5.01396308418893),
+                                    ("intersecthh:mm", -5.707110264748875),
+                                    ("from <datetime> - <datetime> (interval)July",
+                                     -5.707110264748875),
+                                    ("houryear", -4.79081953287472),
+                                    ("from <time-of-day> - <time-of-day> (interval)July",
+                                     -5.707110264748875),
+                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.01396308418893),
+                                    ("<time-of-day> am|pmintersect", -4.454347296253507),
+                                    ("until <time>on <date>", -5.01396308418893),
+                                    ("Octoberyear (latent)", -5.707110264748875),
+                                    ("July<day-of-month> (ordinal or number) <named-month>",
+                                     -5.707110264748875),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -4.454347296253507),
+                                    ("about|exactly <time-of-day>year (latent)",
+                                     -5.707110264748875),
+                                    ("absorption of , after named dayJuly", -5.301645156640712),
+                                    ("from|since|after <time>July", -5.707110264748875),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -4.79081953287472),
+                                    ("Clean Mondayyear (latent)", -5.707110264748875),
+                                    ("monthhour", -5.707110264748875),
+                                    ("hourmonth", -4.79081953287472),
+                                    ("todayat <time-of-day>", -5.707110264748875),
+                                    ("Bank Holidayyear (latent)", -5.01396308418893),
+                                    ("from|since|after <time>December", -5.707110264748875),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -5.707110264748875),
+                                    ("Mondayyear (latent)", -5.01396308418893),
+                                    ("dayday", -5.301645156640712),
+                                    ("dd/mmat <time-of-day>", -5.301645156640712),
+                                    ("<time-of-day> am|pmon <date>", -4.454347296253507),
+                                    ("Thursdaydd/mm", -5.707110264748875),
+                                    ("dayyear", -2.662587827025453),
+                                    ("New Year's Dayyear (latent)", -5.301645156640712),
+                                    ("Thursdayfrom|since|after <time>", -4.00236217251045),
+                                    ("Thursdayat <time-of-day>", -4.454347296253507),
+                                    ("<integer> to|till|before <hour-of-day>September",
+                                     -5.707110264748875),
+                                    ("Aprilyear (latent)", -5.707110264748875),
+                                    ("monthminute", -5.707110264748875),
+                                    ("<time-of-day> am|pmtomorrow", -5.707110264748875),
+                                    ("Thursdayhh:mm", -4.79081953287472),
+                                    ("August<day-of-month> (ordinal or number) <named-month>",
+                                     -5.707110264748875),
+                                    ("minutemonth", -3.915350795520821),
+                                    ("week-endin <named-month>|year", -5.707110264748875),
+                                    ("Augustyear (latent)", -5.301645156640712),
+                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
+                                     -5.301645156640712),
+                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.301645156640712),
+                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.707110264748875),
+                                    ("dd/mm<time-of-day> - <time-of-day> (interval)",
+                                     -5.301645156640712),
+                                    ("Sundayyear (latent)", -5.01396308418893),
+                                    ("Christmasat <time-of-day>", -5.707110264748875),
+                                    ("from|since|after <time>year (latent)", -4.454347296253507),
+                                    ("dd/mmyear (latent)", -5.707110264748875),
+                                    ("<duration> after|before|from <time>December",
+                                     -5.707110264748875),
+                                    ("yesterday<time-of-day> am|pm", -5.707110264748875),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
+                                     -5.707110264748875),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -5.01396308418893),
+                                    ("<named-month> <day-of-month> (non ordinal)August",
+                                     -5.707110264748875),
+                                    ("at <time-of-day>intersect", -5.301645156640712),
+                                    ("hh:mmyear (latent)", -4.608497976080766),
+                                    ("Holiyear (latent)", -5.707110264748875),
+                                    ("until <time><time-of-day> am|pm", -5.707110264748875),
+                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.707110264748875),
+                                    ("dayminute", -3.1813816204406202),
+                                    ("intersectSeptember", -4.203032867972602),
+                                    ("minuteday", -2.639057329615259),
+                                    ("absorption of , after named dayintersect",
+                                     -5.707110264748875),
+                                    ("Februaryin|during the <part-of-day>", -5.707110264748875),
+                                    ("hh:mmon <date>", -3.692207244206611),
+                                    ("Saturdayyear (latent)", -5.707110264748875),
+                                    ("from|since|after <time>on <date>", -4.79081953287472),
+                                    ("absorption of , after named daySeptember", -4.79081953287472),
+                                    ("Naraka Chaturdashiyear (latent)", -5.707110264748875),
+                                    ("on <date>September", -5.301645156640712),
+                                    ("at <time-of-day>on <date>", -5.301645156640712),
+                                    ("in <named-month>|yearyear (latent)", -5.707110264748875),
+                                    ("dayweek", -5.707110264748875),
+                                    ("Easter Sundayyear (latent)", -5.301645156640712),
+                                    ("Thursday<time-of-day> am|pm", -5.01396308418893),
+                                    ("weekyear", -5.301645156640712),
+                                    ("<named-month> <day-of-month> (non ordinal)until <time>",
+                                     -5.707110264748875),
+                                    ("intersect by \",\", \"of\", \"from\" for yearhh:mm",
+                                     -5.01396308418893),
+                                    ("Sundayfrom|since|after <time>", -5.707110264748875),
+                                    ("absorption of , after named dayFebruary", -4.79081953287472),
+                                    ("July<integer> to|till|before <hour-of-day>",
+                                     -5.707110264748875),
+                                    ("tomorrowat <time-of-day>", -5.707110264748875),
+                                    ("<integer> to|till|before <hour-of-day>July",
+                                     -5.707110264748875),
+                                    ("last <cycle> of <time>year (latent)", -5.301645156640712),
+                                    ("tomorrow<time-of-day> am|pm", -5.707110264748875),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -5.01396308418893),
+                                    ("Diwaliyear (latent)", -5.301645156640712),
+                                    ("<time-of-day> - <time-of-day> (interval)July",
+                                     -5.707110264748875),
+                                    ("Fridayyear (latent)", -5.301645156640712),
+                                    ("minuteyear", -4.454347296253507)],
+                               n = 192}}),
+       ("one eleven",
+        Classifier{okData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},
+                   koData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("after lunch/work/school",
+        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}}),
+       ("early morning",
+        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}}),
+       ("in <number> (implicit minutes)",
+        Classifier{okData =
+                     ClassData{prior = -1.2367626271489267,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.3184537311185346),
+                                    ("integer (0..19)", -1.2992829841302609)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.3429447511268303,
+                               unseen = -3.2188758248682006,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.1823215567939546),
+                                    ("integer (0..19)", -1.791759469228055)],
+                               n = 22}}),
+       ("<ordinal> <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.791759469228055),
+                                    ("ordinal (digits)quarter (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("quarteryear", -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)October",
+                                     -2.1972245773362196),
+                                    ("ordinal (digits)day (grain)this|last|next <cycle>",
+                                     -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.1972245773362196),
+                                    ("weekmonth", -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.1972245773362196)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("year (grain)",
+        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}}),
+       ("from <datetime> - <datetime> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -1.0116009116784799,
+                               unseen = -3.6375861597263857,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -2.001480000210124),
+                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal)",
+                                     -2.917770732084279),
+                                    ("hh:mmhh:mm", -2.001480000210124),
+                                    ("dayday", -2.512305623976115),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)<day-of-month> (ordinal)",
+                                     -2.917770732084279),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.917770732084279),
+                                    ("hourhour", -2.512305623976115),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.917770732084279)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -0.45198512374305727,
+                               unseen = -3.912023005428146,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hourday", -3.1986731175506815),
+                                    ("dayhour", -2.793208009442517),
+                                    ("<day-of-month> (ordinal)time-of-day (latent)",
+                                     -3.1986731175506815),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -3.1986731175506815),
+                                    ("hh:mmtime-of-day (latent)", -2.2823823856765264),
+                                    ("minuteminute", -2.793208009442517),
+                                    ("time-of-day (latent)time-of-day (latent)",
+                                     -2.793208009442517),
+                                    ("dayday", -3.1986731175506815),
+                                    ("hourhour", -2.505525936990736),
+                                    ("dayyear", -3.1986731175506815),
+                                    ("minutehour", -2.2823823856765264),
+                                    ("hh:mmintersect", -2.793208009442517),
+                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal or number) <named-month>",
+                                     -3.1986731175506815),
+                                    ("time-of-day (latent)<time-of-day> am|pm",
+                                     -3.1986731175506815),
+                                    ("time-of-day (latent)<day-of-month> (ordinal or number) <named-month>",
+                                     -3.1986731175506815),
+                                    ("<named-month> <day-of-month> (non ordinal)time-of-day (latent)",
+                                     -3.1986731175506815)],
+                               n = 14}}),
+       ("Saturday",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.9459101490553135,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("the <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week (grain)<named-month>|<named-day> <day-of-month> (ordinal)",
+                                     -1.7346010553881064),
+                                    ("weekmonth", -1.7346010553881064),
+                                    ("week (grain)October", -1.7346010553881064),
+                                    ("week (grain)<named-month> <day-of-month> (non ordinal)",
+                                     -1.7346010553881064),
+                                    ("weekday", -1.2237754316221157)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("number.number hours",
+        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}}),
+       ("from <time-of-day> - <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -1.6094379124341003),
+                                    ("hh:mmhh:mm", -1.6094379124341003),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
+                                    ("hourhour", -2.3025850929940455),
+                                    ("hourminute", -2.3025850929940455),
+                                    ("time-of-day (latent)<time-of-day> sharp|exactly",
+                                     -2.70805020110221),
+                                    ("time-of-day (latent)hh:mm", -2.70805020110221),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.6094379124341003),
+                                    ("time-of-day (latent)time-of-day (latent)",
+                                     -2.0149030205422647),
+                                    ("hourhour", -1.791759469228055),
+                                    ("minutehour", -1.6094379124341003),
+                                    ("time-of-day (latent)<time-of-day> am|pm", -2.70805020110221)],
+                               n = 9}}),
+       ("integer 21..99",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)integer (numeric)", -0.6931471805599453),
+                                    ("integer (20..90)integer (0..19)", -0.6931471805599453)],
+                               n = 4}}),
+       ("Global Youth Service Day",
+        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}}),
+       ("Tisha B'Av",
+        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}}),
+       ("Mothering Sunday",
+        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}}),
+       ("yyyy-mm-dd",
+        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}}),
+       ("year (latent)",
+        Classifier{okData =
+                     ClassData{prior = -0.15219181534192538,
+                               unseen = -5.017279836814924,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -4.0821994520255166e-2),
+                                    ("intersect 2 numbers", -3.624340932976365)],
+                               n = 146},
+                   koData =
+                     ClassData{prior = -1.957744606702316, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -1.1349799328389845),
+                                    ("negative numbers", -0.6931471805599453),
+                                    ("compose by multiplication", -1.9459101490553135)],
+                               n = 24}}),
+       ("Bank Holiday",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("<time> for <duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -1.0296194171811581),
+                                    ("intersect<integer> <unit-of-duration>", -1.9459101490553135),
+                                    ("<day-of-month> (ordinal or number) <named-month><integer> <unit-of-duration>",
+                                     -1.540445040947149),
+                                    ("from|since|after <time><integer> <unit-of-duration>",
+                                     -1.9459101490553135)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("monthday", -1.2039728043259361),
+                                    ("December<integer> <unit-of-duration>", -1.2039728043259361)],
+                               n = 2}}),
+       ("Monday",
+        Classifier{okData =
+                     ClassData{prior = -0.3483066942682157, unseen = -2.639057329615259,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
+                   koData =
+                     ClassData{prior = -1.2237754316221157,
+                               unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
+       ("dd/mm/yyyy",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("yesterday",
+        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}}),
+       ("<ordinal> quarter <year>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)year (latent)",
+                                     -0.6931471805599453),
+                                    ("quarteryear", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("hh:mm:ss",
+        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}}),
+       ("Hanukkah",
+        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}}),
+       ("<hour-of-day> <integer>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>integer (20..90)", -1.3862943611198906),
+                                    ("hour", -0.9808292530117262),
+                                    ("at <time-of-day>integer (numeric)", -1.3862943611198906)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("about|exactly <time-of-day>integer (numeric)",
+                                     -1.0986122886681098),
+                                    ("hour", -1.0986122886681098)],
+                               n = 1}}),
+       ("nth <time> of <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.4700036292457356, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -0.9808292530117262),
+                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
+                                     -2.0794415416798357),
+                                    ("ordinals (first..twentieth,thirtieth,...)Wednesdayintersect",
+                                     -1.6739764335716716),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayOctober",
+                                     -1.6739764335716716)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.9808292530117262,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.0986122886681098),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdaySeptember",
+                                     -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)WednesdayOctober",
+                                     -1.3862943611198906)],
+                               n = 3}}),
+       ("half a <time-grain>",
+        Classifier{okData =
+                     ClassData{prior = -0.1823215567939546,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -1.791759469228055, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1}}),
+       ("Valentine's Day",
+        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}}),
+       ("April",
+        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}}),
+       ("Maha Saptami",
+        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}}),
+       ("end of month",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("week (grain)",
+        Classifier{okData =
+                     ClassData{prior = -3.822121282019774e-2,
+                               unseen = -4.3694478524670215,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 77},
+                   koData =
+                     ClassData{prior = -3.283414346005772, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("<part-of-day> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("part of daysintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -2.3513752571634776),
+                                    ("part of daysintersect", -2.3513752571634776),
+                                    ("hourday", -0.9650808960435872),
+                                    ("part of daysthe <day-of-month> (ordinal)",
+                                     -2.3513752571634776),
+                                    ("part of daysthe <day-of-month> (number)",
+                                     -2.3513752571634776),
+                                    ("part of daysthis <time>", -2.3513752571634776),
+                                    ("part of daysChristmas", -1.9459101490553135)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("from <time> for <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.6931471805599453),
+                                    ("<day-of-month> (ordinal or number) <named-month><integer> <unit-of-duration>",
+                                     -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("six thirty six a.m.",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -1.252762968495368),
+                                    ("one twenty two", -0.8472978603872037),
+                                    ("one eleven", -1.252762968495368)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Shrove Tuesday",
+        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}}),
+       ("now",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.9459101490553135,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("<day-of-month> (ordinal or number) of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -0.13353139262452263,
+                               unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)July", -2.3513752571634776),
+                                    ("ordinals (first..twentieth,thirtieth,...)March",
+                                     -2.3513752571634776),
+                                    ("ordinal (digits)February", -2.3513752571634776),
+                                    ("integer (numeric)February", -1.9459101490553135),
+                                    ("month", -0.9650808960435872),
+                                    ("ordinal (digits)March", -2.3513752571634776),
+                                    ("integer (numeric)July", -2.3513752571634776)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -2.0794415416798357,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)February", -1.5040773967762742),
+                                    ("month", -1.5040773967762742)],
+                               n = 1}}),
+       ("this <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.6931471805599453),
+                                    ("part of days", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Kaanum Pongal",
+        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}}),
+       ("Yom Kippur",
+        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}}),
+       ("powers of tens",
+        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}}),
+       ("Friday",
+        Classifier{okData =
+                     ClassData{prior = -0.3677247801253174,
+                               unseen = -2.3978952727983707,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},
+                   koData =
+                     ClassData{prior = -1.1786549963416462, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("in|during the <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -8.701137698962981e-2,
+                               unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("early morning", -2.5257286443082556),
+                                    ("hour", -0.7339691750802004),
+                                    ("part of days", -0.8209805520698302)],
+                               n = 11},
+                   koData =
+                     ClassData{prior = -2.4849066497880004, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.916290731874155),
+                                    ("part of days", -0.916290731874155)],
+                               n = 1}}),
+       ("tomorrow",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 17},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("hh(:mm) - <time-of-day> am|pm",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("this|last|next <cycle>",
+        Classifier{okData =
+                     ClassData{prior = -0.15790302944580878,
+                               unseen = -5.093750200806762,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.1173044216802621),
+                                    ("month (grain)", -2.7850112422383386),
+                                    ("year (grain)", -2.6026896854443837),
+                                    ("week (grain)", -1.1173044216802621),
+                                    ("quarter", -3.4781584227982836), ("year", -2.6026896854443837),
+                                    ("month", -2.7850112422383386),
+                                    ("quarter (grain)", -3.4781584227982836)],
+                               n = 76},
+                   koData =
+                     ClassData{prior = -1.9236870122706031,
+                               unseen = -3.6109179126442243,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.2809338454620642),
+                                    ("week (grain)", -1.2809338454620642),
+                                    ("day", -1.9740810260220096),
+                                    ("day (grain)", -1.9740810260220096)],
+                               n = 13}}),
+       ("Simchat Torah",
+        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}}),
+       ("August Bank Holiday",
+        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}}),
+       ("New Year's Eve",
+        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}}),
+       ("the <ordinal> <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)year (latent)",
+                                     -0.6931471805599453),
+                                    ("quarteryear", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Raksha Bandhan",
+        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}}),
+       ("Ashura",
+        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}}),
+       ("Palm Sunday",
+        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}}),
+       ("Eid al-Adha",
+        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}}),
+       ("by <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("noon|midnight|EOD|end of day", -1.9459101490553135),
+                                    ("time-of-day (latent)", -1.9459101490553135),
+                                    ("<time-of-day> am|pm", -1.9459101490553135),
+                                    ("hh:mm", -1.9459101490553135), ("hour", -1.540445040947149),
+                                    ("minute", -1.540445040947149)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the <day-of-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.5108256237659907,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)",
+                                     -1.7047480922384253),
+                                    ("ordinal (digits)", -0.2006706954621511)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.916290731874155, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)",
+                                     -0.9808292530117262),
+                                    ("ordinal (digits)", -0.4700036292457356)],
+                               n = 6}}),
+       ("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,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Lag BaOmer",
+        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}}),
+       ("fractional number",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -3.044522437723423,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 19}}),
+       ("Sunday",
+        Classifier{okData =
+                     ClassData{prior = -0.3364722366212129,
+                               unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -1.252762968495368, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("Chinese New Year",
+        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}}),
+       ("February",
+        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}}),
+       ("minute (grain)",
+        Classifier{okData =
+                     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}}),
+       ("last|this|next <season>",
+        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}}),
+       ("the <ordinal> quarter",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
+                                    ("quarter", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
+                                    ("quarter", -0.6931471805599453)],
+                               n = 1}}),
+       ("time-of-day (latent)",
+        Classifier{okData =
+                     ClassData{prior = -0.635159922909596, unseen = -4.31748811353631,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.11441035117774422),
+                                    ("integer (0..19)", -2.3581549441488563)],
+                               n = 71},
+                   koData =
+                     ClassData{prior = -0.7547050735593787, unseen = -4.204692619390966,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -7.878087785311434e-2),
+                                    ("integer (0..19)", -3.0910424533583156),
+                                    ("integer 21..99", -3.4965075614664802)],
+                               n = 63}}),
+       ("beginning of year",
+        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}}),
+       ("last <day-of-week> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -0.916290731874155),
+                                    ("SundayMarch", -1.6094379124341003),
+                                    ("MondayMarch", -1.6094379124341003),
+                                    ("Sundayintersect", -1.6094379124341003)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.1351747783682526, unseen = -5.170483995038151,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.5257286443082556),
+                                    ("integer (0..19)year (grain)", -3.0853444322436783),
+                                    ("integer (numeric)day (grain)", -2.5998366164619773),
+                                    ("integer (0..19)second (grain) ", -3.7784916128036232),
+                                    ("integer (0..19)hour (grain)", -3.0853444322436783),
+                                    ("second", -3.373026504695459),
+                                    ("integer (numeric)second (grain) ", -4.0661736852554045),
+                                    ("integer (numeric)year (grain)", -3.373026504695459),
+                                    ("day", -2.331572629867298), ("year", -2.5998366164619773),
+                                    ("integer (numeric)week (grain)", -3.0853444322436783),
+                                    ("integer (0..19)month (grain)", -3.5553480614894135),
+                                    ("hour", -2.6798793241355137), ("month", -3.2188758248682006),
+                                    ("integer (numeric)minute (grain)", -3.2188758248682006),
+                                    ("integer (0..19)minute (grain)", -3.0853444322436783),
+                                    ("integer (numeric)month (grain)", -4.0661736852554045),
+                                    ("minute", -2.5257286443082556),
+                                    ("integer (numeric)hour (grain)", -3.5553480614894135),
+                                    ("integer (0..19)day (grain)", -3.5553480614894135),
+                                    ("integer (0..19)week (grain)", -3.2188758248682006)],
+                               n = 76},
+                   koData =
+                     ClassData{prior = -2.068012845856213, unseen = -3.828641396489095,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("quarter", -3.1135153092103742), ("hour", -1.4087672169719492),
+                                    ("integer (numeric)hour (grain)", -1.4087672169719492),
+                                    ("integer (0..19)quarter (grain)", -3.1135153092103742)],
+                               n = 11}}),
+       ("hhmm (latent)",
+        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}}),
+       ("<time-of-day> am|pm",
+        Classifier{okData =
+                     ClassData{prior = -0.2546422183735807, unseen = -5.37989735354046,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>", -3.765840495250065),
+                                    ("integer after|past <hour-of-day>", -3.9889840465642745),
+                                    ("at <time-of-day>", -2.1564025828159643),
+                                    ("<time-of-day> o'clock", -4.276666119016055),
+                                    ("half after|past <hour-of-day>", -4.276666119016055),
+                                    ("time-of-day (latent)", -1.7117167615545186),
+                                    ("hhmm (latent)", -4.68213122712422),
+                                    ("hh:mm", -2.330755969960742),
+                                    ("quarter after|past <hour-of-day>", -4.68213122712422),
+                                    ("until <time>", -3.9889840465642745),
+                                    ("about|exactly <time-of-day>", -4.68213122712422),
+                                    ("hour", -1.1856236656577395),
+                                    ("<time-of-day> sharp|exactly", -4.68213122712422),
+                                    ("minute", -1.791759469228055)],
+                               n = 100},
+                   koData =
+                     ClassData{prior = -1.492516574375198, unseen = -4.31748811353631,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> to|till|before <hour-of-day>", -3.20545280453606),
+                                    ("from|since|after <time>", -3.20545280453606),
+                                    ("<hour-of-day> <integer>", -3.6109179126442243),
+                                    ("time-of-day (latent)", -1.085189268335969),
+                                    ("hour", -1.0459685551826876), ("minute", -2.6946271807700692)],
+                               n = 29}}),
+       ("Yom Ha'atzmaut",
+        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}}),
+       ("from <day-of-month> (ordinal or number) to <day-of-month> (ordinal or number) <named-month> (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)ordinal (digits)July", -1.252762968495368),
+                                    ("integer (numeric)integer (numeric)July", -1.252762968495368),
+                                    ("month", -0.8472978603872037)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Thiru Onam",
+        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}}),
+       ("Thai Pongal",
+        Classifier{okData =
+                     ClassData{prior = -0.5596157879354228, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
+                   koData =
+                     ClassData{prior = -0.8472978603872037,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Vijayadashami",
+        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}}),
+       ("Thanksgiving Day",
+        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}}),
+       ("part of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Guy Fawkes Day",
+        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}}),
+       ("a <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.5306282510621704,
+                               unseen = -3.5553480614894135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.1400661634962708),
+                                    ("year (grain)", -2.4277482359480516),
+                                    ("second", -2.833213344056216),
+                                    ("week (grain)", -2.1400661634962708),
+                                    ("day", -2.1400661634962708),
+                                    ("minute (grain)", -2.833213344056216),
+                                    ("year", -2.4277482359480516),
+                                    ("second (grain) ", -2.833213344056216),
+                                    ("minute", -2.833213344056216),
+                                    ("day (grain)", -2.1400661634962708)],
+                               n = 10},
+                   koData =
+                     ClassData{prior = -0.8873031950009028, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -1.7227665977411035),
+                                    ("quarter", -1.9459101490553135), ("hour", -1.7227665977411035),
+                                    ("quarter (grain)", -1.9459101490553135)],
+                               n = 7}}),
+       ("at the beginning|end of <year>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year (latent)", -0.6931471805599453),
+                                    ("year", -0.6931471805599453)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Dhanteras",
+        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}}),
+       ("Tu BiShvat",
+        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}}),
+       ("Whit Monday",
+        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}}),
+       ("hh:mm",
+        Classifier{okData =
+                     ClassData{prior = -4.255961441879589e-2,
+                               unseen = -4.2626798770413155,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 69},
+                   koData =
+                     ClassData{prior = -3.1780538303479458,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Holi",
+        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}}),
+       ("Rosh Hashanah",
+        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}}),
+       ("<integer> <named-day> ago|back",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)Thursday", -0.6931471805599453),
+                                    ("day", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Holika Dahan",
+        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}}),
+       ("quarter of an hour",
+        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}}),
+       ("second (grain) ",
+        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}}),
+       ("ordinals (first..twentieth,thirtieth,...)",
+        Classifier{okData =
+                     ClassData{prior = -5.406722127027582e-2,
+                               unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18},
+                   koData =
+                     ClassData{prior = -2.9444389791664407,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("Mawlid",
+        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}}),
+       ("Jumu'atul-Wida",
+        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}}),
+       ("quarter after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("until <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.1786549963416462, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year (latent)", -2.159484249353372),
+                                    ("time-of-day (latent)", -2.5649493574615367),
+                                    ("year", -2.159484249353372),
+                                    ("<time-of-day> am|pm", -1.8718021769015913),
+                                    ("hh:mm", -2.159484249353372), ("hour", -2.159484249353372),
+                                    ("minute", -1.6486586255873816)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -0.3677247801253174,
+                               unseen = -3.8501476017100584,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersect", -2.2192034840549946),
+                                    ("yesterday", -2.7300291078209855),
+                                    ("day", -2.7300291078209855),
+                                    ("time-of-day (latent)", -1.6314168191528755),
+                                    ("hh:mm", -2.2192034840549946), ("hour", -1.5260563034950494),
+                                    ("minute", -1.749199854809259)],
+                               n = 18}}),
+       ("the <cycle> after|before <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)tomorrow", -1.252762968495368),
+                                    ("dayday", -0.8472978603872037),
+                                    ("day (grain)yesterday", -1.252762968495368)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("about|exactly <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -3.6109179126442243,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.791759469228055),
+                                    ("hh(:mm) - <time-of-day> am|pm", -2.890371757896165),
+                                    ("this|last|next <cycle>", -1.791759469228055),
+                                    ("day", -2.4849066497880004),
+                                    ("time-of-day (latent)", -2.890371757896165),
+                                    ("hhmm (latent)", -2.4849066497880004),
+                                    ("<time-of-day> am|pm", -2.890371757896165),
+                                    ("hour", -2.1972245773362196),
+                                    ("next <time>", -2.890371757896165),
+                                    ("this|next <day-of-week>", -2.890371757896165),
+                                    ("minute", -2.4849066497880004)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -1.9459101490553135, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dd/mm", -2.0794415416798357), ("day", -2.0794415416798357),
+                                    ("time-of-day (latent)", -2.0794415416798357),
+                                    ("hour", -2.0794415416798357)],
+                               n = 2}}),
+       ("Sukkot",
+        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> in <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("monthyear", -1.2992829841302609),
+                                    ("Marcha <unit-of-duration>", -1.7047480922384253),
+                                    ("March<integer> <unit-of-duration>", -1.7047480922384253),
+                                    ("Vijayadashami<integer> <unit-of-duration>",
+                                     -1.7047480922384253),
+                                    ("dayyear", -1.7047480922384253)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("World Vegan Day",
+        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}}),
+       ("intersect by \",\", \"of\", \"from\", \"'s\"",
+        Classifier{okData =
+                     ClassData{prior = -0.5389965007326869, unseen = -4.948759890378168,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Wednesday<named-month> <day-of-month> (non ordinal)",
+                                     -4.248495242049359),
+                                    ("dayhour", -3.8430301339411947),
+                                    ("daymonth", -2.995732273553991),
+                                    ("<named-month> <day-of-month> (non ordinal)Friday",
+                                     -4.248495242049359),
+                                    ("Friday<named-month> <day-of-month> (non ordinal)",
+                                     -3.5553480614894135),
+                                    ("Wednesdayintersect", -4.248495242049359),
+                                    ("Black Fridaythis|last|next <cycle>", -4.248495242049359),
+                                    ("<part-of-day> of <time>February", -4.248495242049359),
+                                    ("Saturday<time-of-day> am|pm", -4.248495242049359),
+                                    ("Martin Luther King's Daythis|last|next <cycle>",
+                                     -3.8430301339411947),
+                                    ("on <date><time-of-day> am|pm", -4.248495242049359),
+                                    ("hourmonth", -4.248495242049359),
+                                    ("Fridayintersect by \",\", \"of\", \"from\" for year",
+                                     -4.248495242049359),
+                                    ("dayday", -2.3766930651477676),
+                                    ("the <day-of-month> (ordinal)February", -3.8430301339411947),
+                                    ("WednesdayOctober", -4.248495242049359),
+                                    ("Wednesdaythis|last|next <cycle>", -3.8430301339411947),
+                                    ("intersect<named-month> <day-of-month> (non ordinal)",
+                                     -3.332204510175204),
+                                    ("dayyear", -3.332204510175204),
+                                    ("Saturday<named-month> <day-of-month> (non ordinal)",
+                                     -4.248495242049359),
+                                    ("Thursdayhh:mm", -3.8430301339411947),
+                                    ("Thanksgiving Daythis|last|next <cycle>", -4.248495242049359),
+                                    ("on <date><named-month> <day-of-month> (non ordinal)",
+                                     -3.8430301339411947),
+                                    ("TuesdayOctober", -4.248495242049359),
+                                    ("the <day-of-month> (ordinal)March", -4.248495242049359),
+                                    ("Mondaythis|last|next <cycle>", -4.248495242049359),
+                                    ("Fridayintersect", -4.248495242049359),
+                                    ("Thursday<datetime> - <datetime> (interval)",
+                                     -3.8430301339411947),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -3.8430301339411947),
+                                    ("Tuesdaythis|last|next <cycle>", -4.248495242049359),
+                                    ("Sunday<named-month> <day-of-month> (non ordinal)",
+                                     -4.248495242049359),
+                                    ("dayminute", -2.8622008809294686),
+                                    ("minuteday", -3.332204510175204),
+                                    ("this|last|next <cycle>Sunday", -4.248495242049359),
+                                    ("Sundaythis|last|next <cycle>", -4.248495242049359),
+                                    ("weekday", -4.248495242049359),
+                                    ("dayweek", -3.1498829533812494),
+                                    ("Monday<named-month> <day-of-month> (non ordinal)",
+                                     -3.8430301339411947)],
+                               n = 42},
+                   koData =
+                     ClassData{prior = -0.8754687373538999, unseen = -4.762173934797756,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week-endJuly", -4.060443010546419),
+                                    ("week-endOctober", -3.367295829986474),
+                                    ("daymonth", -1.8632184332102),
+                                    ("TuesdaySeptember", -4.060443010546419),
+                                    ("Wednesdayintersect", -4.060443010546419),
+                                    ("hourmonth", -2.9618307218783095),
+                                    ("Fridaythis|last|next <cycle>", -4.060443010546419),
+                                    ("SundayFebruary", -4.060443010546419),
+                                    ("WednesdayOctober", -4.060443010546419),
+                                    ("week-endintersect", -4.060443010546419),
+                                    ("dayyear", -4.060443010546419),
+                                    ("FridayJuly", -3.654977902438255),
+                                    ("FridaySeptember", -4.060443010546419),
+                                    ("WednesdayFebruary", -4.060443010546419),
+                                    ("minutemonth", -3.144152278672264),
+                                    ("SundayMarch", -4.060443010546419),
+                                    ("MondayFebruary", -3.654977902438255),
+                                    ("Fridayintersect", -4.060443010546419),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -3.654977902438255),
+                                    ("dayminute", -3.367295829986474),
+                                    ("SaturdaySeptember", -4.060443010546419),
+                                    ("intersectSeptember", -3.144152278672264),
+                                    ("MondayMarch", -4.060443010546419),
+                                    ("on <date>September", -3.654977902438255),
+                                    ("Tuesdayintersect", -4.060443010546419),
+                                    ("Sundayintersect", -4.060443010546419)],
+                               n = 30}}),
+       ("last <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.5306282510621704,
+                               unseen = -3.4965075614664802,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Father's Day", -2.772588722239781),
+                                    ("Martin Luther King's Day", -2.772588722239781),
+                                    ("Mothering Sunday", -2.772588722239781),
+                                    ("day", -1.1631508098056809), ("Sunday", -2.772588722239781),
+                                    ("Chinese New Year", -2.367123614131617),
+                                    ("Thanksgiving Day", -2.772588722239781),
+                                    ("Easter Sunday", -2.772588722239781),
+                                    ("hour", -2.772588722239781), ("Tuesday", -2.772588722239781),
+                                    ("week-end", -2.772588722239781)],
+                               n = 10},
+                   koData =
+                     ClassData{prior = -0.8873031950009028, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Monday", -2.5649493574615367), ("day", -2.159484249353372),
+                                    ("Sunday", -2.5649493574615367), ("hour", -1.466337068793427),
+                                    ("week-end", -1.466337068793427)],
+                               n = 7}}),
+       ("March",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.044522437723423,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 19},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<named-month>|<named-day> <day-of-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.2231435513142097, unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Octoberordinal (digits)", -2.120263536200091),
+                                    ("Thursdayordinal (digits)", -2.5257286443082556),
+                                    ("day", -2.120263536200091),
+                                    ("Augustordinal (digits)", -2.5257286443082556),
+                                    ("Marchordinals (first..twentieth,thirtieth,...)",
+                                     -2.120263536200091),
+                                    ("Tuesdayordinal (digits)", -2.5257286443082556),
+                                    ("month", -1.2729656758128873),
+                                    ("Marchordinal (digits)", -2.5257286443082556)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -1.6094379124341003, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>ordinal (digits)",
+                                     -1.8718021769015913),
+                                    ("Augustordinal (digits)", -1.8718021769015913),
+                                    ("month", -1.466337068793427)],
+                               n = 2}}),
+       ("Clean Monday",
+        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-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("ordinal (digits)", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Easter Sunday",
+        Classifier{okData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
+       ("Christmas",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("dd.mm.yyyy",
+        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}}),
+       ("Isra and Mi'raj",
+        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}}),
+       ("<duration> after|before|from <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.3184537311185346,
+                               unseen = -3.5263605246161616,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("a <unit-of-duration>now", -2.803360380906535),
+                                    ("a <unit-of-duration>Christmas", -2.803360380906535),
+                                    ("dayday", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>today", -2.803360380906535),
+                                    ("daysecond", -2.803360380906535),
+                                    ("a <unit-of-duration>right now", -2.803360380906535),
+                                    ("minutenograin", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>Christmas", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>Easter Sunday",
+                                     -2.803360380906535),
+                                    ("secondnograin", -2.803360380906535),
+                                    ("yearday", -2.1102132003465894),
+                                    ("daynograin", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>now", -2.3978952727983707)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -1.2992829841302609,
+                               unseen = -3.1780538303479458,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -2.4423470353692043),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal)",
+                                     -2.4423470353692043),
+                                    ("dayday", -2.03688192726104),
+                                    ("<integer> <unit-of-duration>time-of-day (latent)",
+                                     -2.4423470353692043),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
+                                     -2.4423470353692043)],
+                               n = 3}}),
+       ("<day-of-month> (ordinal or number) of <month>",
+        Classifier{okData =
+                     ClassData{prior = -8.004270767353637e-2,
+                               unseen = -3.5263605246161616,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)July", -2.803360380906535),
+                                    ("ordinals (first..twentieth,thirtieth,...)March",
+                                     -2.803360380906535),
+                                    ("ordinal (digits)this|last|next <cycle>", -2.1102132003465894),
+                                    ("integer (numeric)this|last|next <cycle>",
+                                     -2.3978952727983707),
+                                    ("ordinal (digits)February", -2.803360380906535),
+                                    ("integer (numeric)February", -2.3978952727983707),
+                                    ("month", -0.9315582040049435),
+                                    ("ordinal (digits)March", -2.803360380906535),
+                                    ("integer (numeric)July", -2.803360380906535)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -2.5649493574615367,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)February", -1.7047480922384253),
+                                    ("month", -1.7047480922384253)],
+                               n = 1}}),
+       ("decimal number",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Naraka Chaturdashi",
+        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}}),
+       ("beginning of month",
+        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}}),
+       ("next <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.5263605246161616,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Martin Luther King's Day", -2.803360380906535),
+                                    ("Halloween", -2.803360380906535),
+                                    ("Wednesday", -2.803360380906535),
+                                    ("Boss's Day", -2.803360380906535),
+                                    ("Mothering Sunday", -2.803360380906535),
+                                    ("Monday", -2.803360380906535), ("day", -1.0986122886681098),
+                                    ("Thanksgiving Day", -2.803360380906535),
+                                    ("March", -2.803360380906535), ("month", -2.803360380906535),
+                                    ("Tuesday", -2.1102132003465894)],
+                               n = 11},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time-of-day> sharp|exactly",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>", -2.1400661634962708),
+                                    ("time-of-day (latent)", -2.1400661634962708),
+                                    ("hhmm (latent)", -2.1400661634962708),
+                                    ("<time-of-day> am|pm", -2.1400661634962708),
+                                    ("hh:mm", -2.1400661634962708), ("hour", -1.7346010553881064),
+                                    ("minute", -1.4469189829363254)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("in <named-month>|year",
+        Classifier{okData =
+                     ClassData{prior = -0.2719337154836418,
+                               unseen = -3.6635616461296463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<year> (bc|ad)", -1.845826690498331),
+                                    ("October", -2.9444389791664407),
+                                    ("year (latent)", -1.3350010667323402),
+                                    ("year", -0.9295359586241757), ("March", -2.9444389791664407),
+                                    ("month", -2.538973871058276)],
+                               n = 16},
+                   koData =
+                     ClassData{prior = -1.4350845252893227, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("October", -1.6739764335716716),
+                                    ("year (latent)", -1.3862943611198906),
+                                    ("year", -1.3862943611198906), ("month", -1.6739764335716716)],
+                               n = 5}}),
+       ("Islamic New Year",
+        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}}),
+       ("Lent",
+        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}}),
+       ("negative numbers",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -3.332204510175204,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -7.696104113612832e-2),
+                                    ("integer (0..19)", -2.6026896854443837)],
+                               n = 25}}),
+       ("about|exactly <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("half a <time-grain>", -0.6931471805599453),
+                                    ("minute", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time> before last|after next",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Wednesday", -1.8718021769015913),
+                                    ("Friday", -1.466337068793427), ("day", -1.1786549963416462),
+                                    ("March", -1.8718021769015913), ("month", -1.8718021769015913)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("by the end of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("this|last|next <cycle>", -0.6931471805599453),
+                                    ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("half an hour (abbrev).",
+        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}}),
+       ("hhmm (military) am|pm",
+        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 = -0.5596157879354228, unseen = -4.127134385045092,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersecthh:mm", -3.012261575505202),
+                                    ("from|since|after <time>hh:mm", -2.501435951739211),
+                                    ("minuteminute", -1.2776605201170952),
+                                    ("hh:mmhh:mm", -1.9136492868370918),
+                                    ("dayday", -3.012261575505202),
+                                    ("hourhour", -3.012261575505202),
+                                    ("<named-month> <day-of-month> (non ordinal)<named-month> <day-of-month> (non ordinal)",
+                                     -3.012261575505202),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
+                                     -3.012261575505202),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -3.012261575505202)],
+                               n = 20},
+                   koData =
+                     ClassData{prior = -0.8472978603872037, unseen = -3.951243718581427,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hourday", -3.2386784521643803),
+                                    ("<named-month> <day-of-month> (non ordinal)July",
+                                     -3.2386784521643803),
+                                    ("daymonth", -2.833213344056216),
+                                    ("<time-of-day> am|pmintersect", -3.2386784521643803),
+                                    ("hh:mm<time-of-day> am|pm", -2.833213344056216),
+                                    ("minuteminute", -1.9859154836690123),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.2386784521643803),
+                                    ("dayday", -3.2386784521643803),
+                                    ("from|since|after <time><day-of-month> (ordinal or number) <named-month>",
+                                     -2.833213344056216),
+                                    ("hourhour", -2.5455312716044354),
+                                    ("minutehour", -2.833213344056216),
+                                    ("hh:mmintersect", -2.322387720290225),
+                                    ("<named-month> <day-of-month> (non ordinal)August",
+                                     -3.2386784521643803),
+                                    ("about|exactly <time-of-day><time-of-day> am|pm",
+                                     -3.2386784521643803),
+                                    ("from|since|after <time>intersect", -2.833213344056216)],
+                               n = 15}}),
+       ("Tuesday",
+        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}}),
+       ("New Year's Day",
+        Classifier{okData =
+                     ClassData{prior = -1.6094379124341003,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                   koData =
+                     ClassData{prior = -0.2231435513142097,
+                               unseen = -2.3025850929940455,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 8}}),
+       ("fortnight",
+        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}}),
+       ("<integer> and an half hour",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Laylat al-Qadr",
+        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}}),
+       ("Boghi",
+        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}}),
+       ("at the beginning|end of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -0.2231435513142097,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("January", -1.3862943611198906),
+                                    ("April", -1.3862943611198906), ("month", -0.8754687373538999)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -1.6094379124341003,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("October", -1.0986122886681098),
+                                    ("month", -1.0986122886681098)],
+                               n = 1}}),
+       ("<time-of-day> - <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -1.0296194171811581, unseen = -4.110873864173311,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>hh:mm", -2.4849066497880004),
+                                    ("minuteminute", -1.529395204760564),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.4011973816621555),
+                                    ("hh:mmhh:mm", -1.8971199848858813),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
+                                    ("hourhour", -1.8971199848858813),
+                                    ("from|since|after <time>time-of-day (latent)",
+                                     -3.4011973816621555),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
+                               n = 20},
+                   koData =
+                     ClassData{prior = -0.4418327522790392, unseen = -4.532599493153256,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("about|exactly <time-of-day>time-of-day (latent)",
+                                     -3.828641396489095),
+                                    ("until <time>time-of-day (latent)", -2.575878427993727),
+                                    ("hh:mmtime-of-day (latent)", -2.12389330425067),
+                                    ("hh:mm<time-of-day> am|pm", -3.4231762883809305),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.828641396489095),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -3.828641396489095),
+                                    ("at <time-of-day><time-of-day> am|pm", -3.828641396489095),
+                                    ("hourhour", -1.6314168191528755),
+                                    ("from|since|after <time><integer> to|till|before <hour-of-day>",
+                                     -3.828641396489095),
+                                    ("hourminute", -3.828641396489095),
+                                    ("minutehour", -1.5773495978825998),
+                                    ("until <time><time-of-day> am|pm", -3.4231762883809305),
+                                    ("about|exactly <time-of-day><time-of-day> am|pm",
+                                     -3.828641396489095),
+                                    ("from|since|after <time>time-of-day (latent)",
+                                     -2.575878427993727),
+                                    ("at <time-of-day>time-of-day (latent)", -3.4231762883809305),
+                                    ("<integer> to|till|before <hour-of-day>time-of-day (latent)",
+                                     -3.4231762883809305)],
+                               n = 36}}),
+       ("military spelled out numbers am|pm",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods =
+                                 HashMap.fromList [("integer (0..19)integer (20..90)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("winter",
+        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}}),
+       ("nth <time> after <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.916290731874155),
+                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
+                                     -0.916290731874155)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.916290731874155),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayChristmas",
+                                     -0.916290731874155)],
+                               n = 1}}),
+       ("<named-month> <day-of-month> (non ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.42121346507630353,
+                               unseen = -3.951243718581427,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Augustinteger (numeric)", -2.5455312716044354),
+                                    ("Marchinteger (numeric)", -2.833213344056216),
+                                    ("Aprilinteger (numeric)", -3.2386784521643803),
+                                    ("month", -0.8407831793660099),
+                                    ("Februaryinteger (numeric)", -1.9859154836690123),
+                                    ("Septemberinteger (numeric)", -2.833213344056216),
+                                    ("Octoberinteger (numeric)", -2.833213344056216),
+                                    ("Julyinteger (numeric)", -2.1400661634962708)],
+                               n = 21},
+                   koData =
+                     ClassData{prior = -1.067840630001356, unseen = -3.4657359027997265,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Augustinteger (numeric)", -2.3353749158170367),
+                                    ("Marchinteger (numeric)", -2.740840023925201),
+                                    ("Aprilinteger (numeric)", -2.740840023925201),
+                                    ("month", -0.9490805546971459),
+                                    ("from|since|after <time>integer (numeric)",
+                                     -2.3353749158170367),
+                                    ("Julyinteger (numeric)", -1.6422277352570913)],
+                               n = 11}}),
+       ("Diwali",
+        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}}),
+       ("last night",
+        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}}),
+       ("this|next <day-of-week>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Thursday", -2.2512917986064953),
+                                    ("Wednesday", -2.2512917986064953),
+                                    ("Monday", -1.845826690498331), ("day", -0.8649974374866046),
+                                    ("Tuesday", -1.55814461804655)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("ordinal (digits)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.784189633918261,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 42},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("quarter (grain)",
+        Classifier{okData =
+                     ClassData{prior = -0.2876820724517809, unseen = -2.639057329615259,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
+                   koData =
+                     ClassData{prior = -1.3862943611198906, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.916290731874155, unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)October", -1.9924301646902063),
+                                    ("daymonth", -1.4816045409242156),
+                                    ("day (grain)intersect", -1.9924301646902063),
+                                    ("weekmonth", -1.9924301646902063),
+                                    ("week (grain)intersect", -2.3978952727983707),
+                                    ("week (grain)September", -2.3978952727983707)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -0.5108256237659907, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -2.2335922215070942),
+                                    ("day (grain)May", -2.2335922215070942),
+                                    ("week (grain)year (latent)", -1.9459101490553135),
+                                    ("weekmonth", -1.7227665977411035),
+                                    ("week (grain)October", -2.2335922215070942),
+                                    ("weekyear", -1.9459101490553135),
+                                    ("week (grain)intersect", -2.2335922215070942)],
+                               n = 9}}),
+       ("Chhath",
+        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}}),
+       ("Vasant Panchami",
+        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-month>(ordinal) <named-month> year",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)April", -0.6931471805599453),
+                                    ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the <ordinal> last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)week (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("daymonth", -2.1972245773362196),
+                                    ("ordinal (digits)day (grain)May", -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.1972245773362196),
+                                    ("weekmonth", -1.791759469228055),
+                                    ("ordinal (digits)week (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("weekyear", -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.1972245773362196)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Black Friday",
+        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}}),
+       ("week-end",
+        Classifier{okData =
+                     ClassData{prior = -1.252762968495368, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                   koData =
+                     ClassData{prior = -0.3364722366212129,
+                               unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
+       ("Great Lent",
+        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}}),
+       ("Maundy Thursday",
+        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 (grain)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 29},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("right now",
+        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}}),
+       ("for <duration> from <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> <unit-of-duration><day-of-month> (ordinal)",
+                                     -1.5040773967762742),
+                                    ("dayday", -1.0986122886681098),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
+                                     -1.5040773967762742)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -1.252762968495368),
+                                    ("<integer> <unit-of-duration>time-of-day (latent)",
+                                     -1.252762968495368)],
+                               n = 1}}),
+       ("compose by multiplication",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList [("integer (0..19)powers of tens", 0.0)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("end of year",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("between <time> and <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -3.1780538303479458,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -0.832909122935104),
+                                    ("hh:mmhh:mm", -0.832909122935104)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -3.7376696182833684,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.410986973710262),
+                                    ("minuteminute", -1.410986973710262),
+                                    ("minutehour", -1.410986973710262),
+                                    ("hh:mmintersect", -1.410986973710262)],
+                               n = 18}}),
+       ("<month> dd-dd (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4657359027997265,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>integer (numeric)integer (numeric)",
+                                     -2.740840023925201),
+                                    ("from|since|after <time>ordinal (digits)ordinal (digits)",
+                                     -2.740840023925201),
+                                    ("Julyinteger (numeric)integer (numeric)", -1.6422277352570913),
+                                    ("Augustordinal (digits)integer (numeric)",
+                                     -2.3353749158170367),
+                                    ("from|since|after <time>ordinal (digits)integer (numeric)",
+                                     -2.740840023925201),
+                                    ("month", -0.8690378470236094),
+                                    ("Augustordinal (digits)ordinal (digits)",
+                                     -2.3353749158170367)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("intersect by \",\", \"of\", \"from\" for year",
+        Classifier{okData =
+                     ClassData{prior = -0.11778303565638351,
+                               unseen = -3.2188758248682006,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Black Fridaythis|last|next <cycle>", -2.4849066497880004),
+                                    ("Martin Luther King's Daythis|last|next <cycle>",
+                                     -2.0794415416798357),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -2.4849066497880004),
+                                    ("dayyear", -0.9808292530117262),
+                                    ("Thanksgiving Daythis|last|next <cycle>", -2.4849066497880004),
+                                    ("intersectyear (latent)", -2.4849066497880004),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -2.0794415416798357)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -2.1972245773362196,
+                               unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Fridaythis|last|next <cycle>", -1.6094379124341003),
+                                    ("dayyear", -1.6094379124341003)],
+                               n = 1}}),
+       ("part of days",
+        Classifier{okData =
+                     ClassData{prior = -6.899287148695143e-2,
+                               unseen = -3.4011973816621555,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 28},
+                   koData =
+                     ClassData{prior = -2.70805020110221, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
        ("at the beginning|end of <week>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.330733340286331,
diff --git a/Duckling/Ranking/Classifiers/EN_US.hs b/Duckling/Ranking/Classifiers/EN_US.hs
--- a/Duckling/Ranking/Classifiers/EN_US.hs
+++ b/Duckling/Ranking/Classifiers/EN_US.hs
@@ -67,2994 +67,3257 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("Thursday",
         Classifier{okData =
-                     ClassData{prior = -9.53101798043249e-2,
-                               unseen = -3.4657359027997265,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 30},
-                   koData =
-                     ClassData{prior = -2.3978952727983707,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("integer (numeric)",
-        Classifier{okData =
-                     ClassData{prior = -0.6239027683849615, unseen = -5.655991810819852,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 284},
-                   koData =
-                     ClassData{prior = -0.7675454706138047,
-                               unseen = -5.5134287461649825,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 246}}),
-       ("<duration> hence|ago",
-        Classifier{okData =
-                     ClassData{prior = -5.406722127027582e-2,
-                               unseen = -3.784189633918261,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.563975538357343), ("day", -1.8152899666382492),
-                                    ("year", -2.662587827025453),
-                                    ("<integer> <unit-of-duration>", -1.0531499145913523),
-                                    ("a <unit-of-duration>", -2.662587827025453),
-                                    ("month", -2.662587827025453),
-                                    ("fortnight", -2.662587827025453)],
-                               n = 18},
-                   koData =
-                     ClassData{prior = -2.9444389791664407,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("year", -1.5040773967762742),
-                                    ("<integer> <unit-of-duration>", -1.5040773967762742)],
-                               n = 1}}),
-       ("noon|midnight|EOD|end of day",
-        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}}),
-       ("quarter to|till|before <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("noon|midnight|EOD|end of day", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Father's Day",
-        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}}),
-       ("<cycle> after|before <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)tomorrow", -1.6739764335716716),
-                                    ("dayday", -1.1631508098056809),
-                                    ("day (grain)yesterday", -1.6739764335716716)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -1.6739764335716716),
-                                    ("year (grain)Christmas", -2.0794415416798357),
-                                    ("dayday", -2.0794415416798357),
-                                    ("day (grain)intersect", -1.6739764335716716),
-                                    ("day (grain)Easter Sunday", -2.0794415416798357),
-                                    ("yearday", -2.0794415416798357)],
-                               n = 4}}),
-       ("Easter Monday",
-        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}}),
-       ("Navaratri",
-        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}}),
-       ("Martin Luther King's Day",
-        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}}),
-       ("integer (20..90)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Shemini Atzeret",
-        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}}),
-       ("Ramadan",
-        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}}),
-       ("Lazarus Saturday",
-        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}}),
-       ("intersect 2 numbers",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("compose by multiplicationinteger (0..19)",
-                                     -0.2231435513142097)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("powers of tensinteger (0..19)", -0.2231435513142097)],
-                               n = 3}}),
-       ("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,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.8109302162163288),
-                                    ("integer (numeric)time-of-day (latent)", -1.0986122886681098),
-                                    ("integer (20..90)time-of-day (latent)", -1.5040773967762742)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Yom HaShoah",
-        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-month> (ordinal or number) <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -1.3862943611198906, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)December", -2.1400661634962708),
-                                    ("ordinal (digits)February", -2.1400661634962708),
-                                    ("integer (numeric)April", -2.1400661634962708),
-                                    ("month", -1.4469189829363254)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -3.4011973816621555,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)October", -2.6741486494265287),
-                                    ("ordinal (digits)July", -2.6741486494265287),
-                                    ("integer (numeric)September", -2.268683541318364),
-                                    ("ordinal (digits)August", -2.6741486494265287),
-                                    ("integer (numeric)August", -2.6741486494265287),
-                                    ("ordinal (digits)April", -2.6741486494265287),
-                                    ("month", -1.0647107369924282),
-                                    ("integer (numeric)July", -2.268683541318364)],
-                               n = 9}}),
-       ("<time> <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -9.237332013101517e-2,
-                               unseen = -4.48863636973214,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("dayhour", -1.4816045409242156),
-                                    ("Mondayearly morning", -3.378724525810097),
-                                    ("time-of-day (latent)tonight", -3.378724525810097),
-                                    ("hourhour", -2.3978952727983707),
-                                    ("<time-of-day> o'clockin|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("todaypart of days", -3.784189633918261),
-                                    ("minutehour", -2.6855773452501515),
-                                    ("at <time-of-day>in|during the <part-of-day>",
-                                     -3.378724525810097),
-                                    ("time-of-day (latent)this <part-of-day>", -3.784189633918261),
-                                    ("Mondayin|during the <part-of-day>", -3.784189633918261),
-                                    ("intersectpart of days", -3.784189633918261),
-                                    ("intersectin|during the <part-of-day>", -3.784189633918261),
-                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("tomorrowpart of days", -2.3978952727983707),
-                                    ("hh:mmin|during the <part-of-day>", -3.0910424533583156),
-                                    ("time-of-day (latent)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("hhmm (latent)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("yesterdaypart of days", -3.378724525810097),
-                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("Mondaypart of days", -3.784189633918261)],
-                               n = 31},
-                   koData =
-                     ClassData{prior = -2.4277482359480516,
-                               unseen = -3.4965075614664802,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("yearhour", -2.772588722239781),
-                                    ("monthhour", -2.772588722239781),
-                                    ("hourhour", -2.772588722239781),
-                                    ("year (latent)in|during the <part-of-day>",
-                                     -2.772588722239781),
-                                    ("Februaryin|during the <part-of-day>", -2.772588722239781),
-                                    ("time-of-day (latent)in|during the <part-of-day>",
-                                     -2.772588722239781)],
-                               n = 3}}),
-       ("Cyber Monday",
-        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}}),
-       ("today",
-        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}}),
-       ("mm/dd",
-        Classifier{okData =
-                     ClassData{prior = -1.2729656758128873,
-                               unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
-                   koData =
-                     ClassData{prior = -0.3285040669720361, unseen = -2.995732273553991,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 18}}),
-       ("at <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -8.961215868968717e-2,
-                               unseen = -4.948759890378168,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<time> timezone", -3.8430301339411947),
-                                    ("noon|midnight|EOD|end of day", -3.8430301339411947),
-                                    ("integer after|past <hour-of-day>", -3.8430301339411947),
-                                    ("half after|past <hour-of-day>", -4.248495242049359),
-                                    ("time-of-day (latent)", -1.6835458845878222),
-                                    ("hhmm (latent)", -3.5553480614894135),
-                                    ("<time-of-day> am|pm", -1.8061482066801546),
-                                    ("hh:mm", -3.332204510175204),
-                                    ("about|exactly <time-of-day>", -3.8430301339411947),
-                                    ("hour", -1.0704414117014134),
-                                    ("<time-of-day> sharp|exactly", -4.248495242049359),
-                                    ("minute", -2.05127066471314)],
-                               n = 64},
-                   koData =
-                     ClassData{prior = -2.456735772821304, unseen = -3.2188758248682006,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -1.2321436812926323),
-                                    ("hour", -1.2321436812926323)],
-                               n = 6}}),
-       ("December",
-        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}}),
-       ("absorption of , after named day",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("on <date>", -2.1972245773362196),
-                                    ("Wednesday", -2.6026896854443837),
-                                    ("Saturday", -2.6026896854443837),
-                                    ("Monday", -2.1972245773362196),
-                                    ("Friday", -1.9095425048844386), ("day", -0.8979415932059586),
-                                    ("Sunday", -2.6026896854443837)],
-                               n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("September",
-        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}}),
-       ("tonight",
-        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}}),
-       ("last|past|next <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -4.2626798770413155,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.456735772821304), ("second", -2.639057329615259),
-                                    ("day", -2.3025850929940455), ("year", -2.639057329615259),
-                                    ("<integer> <unit-of-duration>", -0.7827593392496325),
-                                    ("hour", -2.639057329615259), ("month", -2.639057329615259),
-                                    ("minute", -2.639057329615259)],
-                               n = 31},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("the ides of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("on <date>",
-        Classifier{okData =
-                     ClassData{prior = -0.13353139262452263,
-                               unseen = -4.204692619390966,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Thursday", -1.4816045409242156),
-                                    ("mm/dd", -3.4965075614664802),
-                                    ("absorption of , after named day", -3.0910424533583156),
-                                    ("intersect", -3.0910424533583156),
-                                    ("Saturday", -2.803360380906535),
-                                    ("Friday", -3.4965075614664802), ("day", -0.8574502318512216),
-                                    ("the <day-of-month> (ordinal)", -3.0910424533583156),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -2.803360380906535),
-                                    ("hour", -3.4965075614664802)],
-                               n = 28},
-                   koData =
-                     ClassData{prior = -2.0794415416798357,
-                               unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersect", -1.791759469228055), ("day", -1.2809338454620642),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -1.791759469228055)],
-                               n = 4}}),
-       ("integer (0..19)",
-        Classifier{okData =
-                     ClassData{prior = -0.11122563511022437,
-                               unseen = -3.970291913552122,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 51},
-                   koData =
-                     ClassData{prior = -2.2512917986064953,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
-       ("between <time-of-day> and <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -0.7884573603642702),
-                                    ("hh:mmhh:mm", -0.7884573603642702)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -0.7884573603642702),
-                                    ("minutehour", -0.7884573603642702)],
-                               n = 9}}),
-       ("Halloween",
-        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}}),
-       ("Passover",
-        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}}),
-       ("from <month> dd-dd (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Julyinteger (numeric)integer (numeric)", -1.6094379124341003),
-                                    ("Augustordinal (digits)integer (numeric)",
-                                     -1.6094379124341003),
-                                    ("month", -0.916290731874155),
-                                    ("Augustordinal (digits)ordinal (digits)",
-                                     -1.6094379124341003)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("October",
-        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}}),
-       ("from|since|after <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -1.5950491749820006, unseen = -4.04305126783455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("July", -3.332204510175204),
-                                    ("time-of-day (latent)", -2.4159137783010487),
-                                    ("<time-of-day> am|pm", -2.4159137783010487),
-                                    ("hh:mm", -2.4159137783010487), ("hour", -1.8281271133989299),
-                                    ("month", -2.9267394020670396), ("minute", -2.4159137783010487),
-                                    ("August", -3.332204510175204)],
-                               n = 14},
-                   koData =
-                     ClassData{prior = -0.22677331936478848,
-                               unseen = -4.9344739331306915,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> to|till|before <hour-of-day>", -3.828641396489095),
-                                    ("week", -4.23410650459726),
-                                    ("<day-of-month> (ordinal or number) <named-month>",
-                                     -4.23410650459726),
-                                    ("today", -4.23410650459726), ("intersect", -2.362304327695668),
-                                    ("second", -4.23410650459726), ("now", -3.5409593240373143),
-                                    ("tomorrow", -3.828641396489095),
-                                    ("this|last|next <cycle>", -4.23410650459726),
-                                    ("day", -1.8827312474337816),
-                                    ("time-of-day (latent)", -4.23410650459726),
-                                    ("<time-of-day> am|pm", -3.828641396489095),
-                                    ("nograin", -3.5409593240373143),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)",
-                                     -4.23410650459726),
-                                    ("Easter Sunday", -4.23410650459726),
-                                    ("Christmas", -3.5409593240373143),
-                                    ("hour", -2.981343536101891), ("month", -4.23410650459726),
-                                    ("<datetime> - <datetime> (interval)", -2.847812143477369),
-                                    ("<time-of-day> - <time-of-day> (interval)",
-                                     -2.5293584123588344),
-                                    ("<named-month> <day-of-month> (non ordinal)",
-                                     -3.828641396489095),
-                                    ("minute", -1.749199854809259),
-                                    ("right now", -4.23410650459726),
-                                    ("<month> dd-dd (interval)", -3.5409593240373143),
-                                    ("dd-dd <month> (interval)", -3.828641396489095)],
-                               n = 55}}),
-       ("month (grain)",
-        Classifier{okData =
-                     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}}),
-       ("<integer> more <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)minute (grain)", -0.6931471805599453),
-                                    ("minute", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time-of-day> o'clock",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("in|within|after <duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.11000089521432846,
-                               unseen = -4.6443908991413725,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -3.248434627109745),
-                                    ("<integer> more <unit-of-duration>", -3.9415818076696905),
-                                    ("three-quarters of an hour", -3.0252910757955354),
-                                    ("<integer> + '\"", -3.248434627109745),
-                                    ("number.number hours", -3.9415818076696905),
-                                    ("second", -3.536116699561526), ("day", -3.248434627109745),
-                                    ("half an hour", -3.0252910757955354),
-                                    ("year", -3.9415818076696905),
-                                    ("<integer> <unit-of-duration>", -1.5902065505062128),
-                                    ("a <unit-of-duration>", -3.0252910757955354),
-                                    ("quarter of an hour", -3.0252910757955354),
-                                    ("hour", -2.5552874465498),
-                                    ("about|exactly <duration>", -3.9415818076696905),
-                                    ("<integer> and an half hour", -3.9415818076696905),
-                                    ("minute", -1.3025244780544318)],
-                               n = 43},
-                   koData =
-                     ClassData{prior = -2.2617630984737906, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("quarter", -2.1972245773362196), ("year", -1.9095425048844386),
-                                    ("<integer> <unit-of-duration>", -1.9095425048844386),
-                                    ("a <unit-of-duration>", -2.1972245773362196)],
-                               n = 5}}),
-       ("January",
-        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}}),
-       ("three-quarters of an hour",
-        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}}),
-       ("Mattu Pongal",
-        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}}),
-       ("Wednesday",
-        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}}),
-       ("half after|past <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<integer> + '\"",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("half <integer> (UK style hour-of-day)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("July",
-        Classifier{okData =
-                     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}}),
-       ("hour (grain)",
-        Classifier{okData =
-                     ClassData{prior = -0.8209805520698302,
-                               unseen = -2.5649493574615367,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},
-                   koData =
-                     ClassData{prior = -0.579818495252942, unseen = -2.772588722239781,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 14}}),
-       ("Shavuot",
-        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> <duration> hence|ago",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayyear", -0.6931471805599453),
-                                    ("Diwali<integer> <unit-of-duration>", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<ordinal> quarter",
-        Classifier{okData =
-                     ClassData{prior = -0.4700036292457356, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -1.1786549963416462),
-                                    ("ordinals (first..twentieth,thirtieth,...)quarter (grain)",
-                                     -1.466337068793427),
-                                    ("quarter", -0.7731898882334817)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -0.9808292530117262,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.8109302162163288),
-                                    ("quarter", -0.8109302162163288)],
-                               n = 3}}),
-       ("Boss's Day",
-        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}}),
-       ("Orthodox Easter Sunday",
-        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}}),
-       ("one twenty two",
-        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}}),
-       ("intersect",
-        Classifier{okData =
-                     ClassData{prior = -0.454305983502537, unseen = -6.732210706467206,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Navaratriyear (latent)", -6.037870919922137),
-                                    ("Father's Dayyear (latent)", -6.037870919922137),
-                                    ("Ramadanyear (latent)", -6.037870919922137),
-                                    ("<datetime> - <datetime> (interval)on <date>",
-                                     -4.785107951426769),
-                                    ("Military Spouse Dayyear (latent)", -6.037870919922137),
-                                    ("Bhai Doojyear (latent)", -6.037870919922137),
-                                    ("<time-of-day> - <time-of-day> (interval)on <date>",
-                                     -4.785107951426769),
-                                    ("hourday", -4.333122827683712),
-                                    ("dayhour", -3.1201001878378585),
-                                    ("Martin Luther King's Dayyear (latent)", -5.632405811813974),
-                                    ("Shemini Atzeretyear (latent)", -6.037870919922137),
-                                    ("daymonth", -5.344723739362192),
-                                    ("monthday", -5.632405811813974),
-                                    ("monthyear", -4.428433007488038),
-                                    ("Yom Ha'atzmautyear (latent)", -6.037870919922137),
-                                    ("Vijayadashamiyear (latent)", -6.037870919922137),
-                                    ("Thanksgiving Dayyear (latent)", -4.939258631254028),
-                                    ("Thai Pongalyear (latent)", -5.344723739362192),
-                                    ("Thiru Onamyear (latent)", -5.344723739362192),
-                                    ("Tuesdaythe <day-of-month> (ordinal)", -6.037870919922137),
-                                    ("from <datetime> - <datetime> (interval)July",
-                                     -6.037870919922137),
-                                    ("houryear", -5.344723739362192),
-                                    ("this|next <day-of-week>hh(:mm) - <time-of-day> am|pm",
-                                     -6.037870919922137),
-                                    ("Christmas<time-of-day> am|pm", -6.037870919922137),
-                                    ("last <day-of-week> of <time>year (latent)",
-                                     -6.037870919922137),
-                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -5.344723739362192),
-                                    ("<time-of-day> am|pmintersect", -4.785107951426769),
-                                    ("Octoberyear (latent)", -4.785107951426769),
-                                    ("intersect<time-of-day> am|pm", -6.037870919922137),
-                                    ("Mattu Pongalyear (latent)", -6.037870919922137),
-                                    ("Shavuotyear (latent)", -6.037870919922137),
-                                    ("Dhanterasin <named-month>|year", -6.037870919922137),
-                                    ("at <time-of-day>in|within|after <duration>",
-                                     -6.037870919922137),
-                                    ("Thursdayhh(:mm) - <time-of-day> am|pm", -6.037870919922137),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -5.632405811813974),
-                                    ("Marchyear (latent)", -6.037870919922137),
-                                    ("Sukkotyear (latent)", -5.632405811813974),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -6.037870919922137),
-                                    ("Clean Mondayyear (latent)", -5.632405811813974),
-                                    ("monthhour", -5.632405811813974),
-                                    ("todayat <time-of-day>", -6.037870919922137),
-                                    ("Thursday<time> timezone", -4.333122827683712),
-                                    ("this <time>hh(:mm) - <time-of-day> am|pm",
-                                     -6.037870919922137),
-                                    ("Palm SundaySunday", -5.632405811813974),
-                                    ("dayday", -3.8406463425859183),
-                                    ("<time> <part-of-day>at <time-of-day>", -6.037870919922137),
-                                    ("mm/ddat <time-of-day>", -6.037870919922137),
-                                    ("tonightat <time-of-day>", -6.037870919922137),
-                                    ("<time-of-day> am|pmabsorption of , after named day",
-                                     -5.344723739362192),
-                                    ("today<time-of-day> am|pm", -6.037870919922137),
-                                    ("Februarythe <day-of-month> (ordinal)", -5.632405811813974),
-                                    ("at <time-of-day><time> <part-of-day>", -6.037870919922137),
-                                    ("mm/dd<time-of-day> am|pm", -6.037870919922137),
-                                    ("hourhour", -4.785107951426769),
-                                    ("<time-of-day> am|pmon <date>", -4.022967899379873),
-                                    ("Wednesdaythis|last|next <cycle>", -6.037870919922137),
-                                    ("Lentyear (latent)", -6.037870919922137),
-                                    ("intersect<named-month> <day-of-month> (non ordinal)",
-                                     -4.533793523145864),
-                                    ("Boghiyear (latent)", -6.037870919922137),
-                                    ("dayyear", -1.9688441656843267),
-                                    ("<time-of-day> o'clockin|during the <part-of-day>",
-                                     -6.037870919922137),
-                                    ("Thursdayat <time-of-day>", -5.632405811813974),
-                                    ("Islamic New Yearyear (latent)", -5.632405811813974),
-                                    ("Laylat al-Qadryear (latent)", -5.121580188047982),
-                                    ("Chhathin <named-month>|year", -6.037870919922137),
-                                    ("Vasant Panchamiin <named-month>|year", -6.037870919922137),
-                                    ("Diwaliin <named-month>|year", -6.037870919922137),
-                                    ("Shrove Tuesdayyear (latent)", -6.037870919922137),
-                                    ("<time-of-day> am|pmtomorrow", -5.344723739362192),
-                                    ("Yom Kippuryear (latent)", -6.037870919922137),
-                                    ("<part-of-day> of <time>year (latent)", -6.037870919922137),
-                                    ("minutehour", -5.121580188047982),
-                                    ("Kaanum Pongalyear (latent)", -5.632405811813974),
-                                    ("Maha Saptamiyear (latent)", -6.037870919922137),
-                                    ("at <time-of-day>in|during the <part-of-day>",
-                                     -5.632405811813974),
-                                    ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
-                                     -4.333122827683712),
-                                    ("for <duration> from <time>December", -6.037870919922137),
-                                    ("tomorrow<time-of-day> sharp|exactly", -6.037870919922137),
-                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
-                                     -5.121580188047982),
-                                    ("on <date><named-month> <day-of-month> (non ordinal)",
-                                     -5.632405811813974),
-                                    ("Pentecostyear (latent)", -6.037870919922137),
-                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.121580188047982),
-                                    ("Eid al-Fitryear (latent)", -6.037870919922137),
-                                    ("Mondayin|during the <part-of-day>", -6.037870919922137),
-                                    ("Raksha Bandhanyear (latent)", -6.037870919922137),
-                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.632405811813974),
-                                    ("Navaratriin <named-month>|year", -6.037870919922137),
-                                    ("Ashurayear (latent)", -6.037870919922137),
-                                    ("Chinese New Yearyear (latent)", -6.037870919922137),
-                                    ("Sundayyear (latent)", -6.037870919922137),
-                                    ("Lag BaOmeryear (latent)", -6.037870919922137),
-                                    ("last weekend of <named-month>year (latent)",
-                                     -6.037870919922137),
-                                    ("Eid al-Adhayear (latent)", -5.121580188047982),
-                                    ("intersectin|during the <part-of-day>", -6.037870919922137),
-                                    ("Christmasat <time-of-day>", -6.037870919922137),
-                                    ("Passoveryear (latent)", -6.037870919922137),
-                                    ("Lazarus Saturdayyear (latent)", -6.037870919922137),
-                                    ("<day-of-month> (ordinal or number) <named-month>year (latent)",
-                                     -6.037870919922137),
-                                    ("Cyber Mondayyear (latent)", -5.632405811813974),
-                                    ("Yom HaShoahyear (latent)", -5.632405811813974),
-                                    ("Thursday<datetime> - <datetime> (interval)",
-                                     -5.121580188047982),
-                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
-                                     -6.037870919922137),
-                                    ("Thai Pongalin <named-month>|year", -6.037870919922137),
-                                    ("Septemberyear (latent)", -5.632405811813974),
-                                    ("mm/ddyear (latent)", -6.037870919922137),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -4.785107951426769),
-                                    ("Halloweenyear (latent)", -6.037870919922137),
-                                    ("from <time-of-day> - <time-of-day> (interval)on <date>",
-                                     -5.344723739362192),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
-                                     -5.121580188047982),
-                                    ("at <time-of-day>intersect", -5.632405811813974),
-                                    ("Rosh Hashanahyear (latent)", -6.037870919922137),
-                                    ("Dhanterasyear (latent)", -6.037870919922137),
-                                    ("Tu BiShvatyear (latent)", -6.037870919922137),
-                                    ("Holiyear (latent)", -5.344723739362192),
-                                    ("<time-of-day> - <time-of-day> (interval)tomorrow",
-                                     -6.037870919922137),
-                                    ("Holika Dahanyear (latent)", -5.344723739362192),
-                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -6.037870919922137),
-                                    ("dayminute", -3.398813590306879),
-                                    ("Mawlidyear (latent)", -6.037870919922137),
-                                    ("from <datetime> - <datetime> (interval)on <date>",
-                                     -5.632405811813974),
-                                    ("<datetime> - <datetime> (interval)tomorrow",
-                                     -6.037870919922137),
-                                    ("Jumu'atul-Widayear (latent)", -5.121580188047982),
-                                    ("absorption of , after named dayintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -6.037870919922137),
-                                    ("minuteday", -2.400284760195752),
-                                    ("absorption of , after named dayintersect",
-                                     -6.037870919922137),
-                                    ("intersectyear (latent)", -6.037870919922137),
-                                    ("Orthodox Easter Sundayyear (latent)", -6.037870919922137),
-                                    ("<ordinal> <cycle> of <time>year (latent)",
-                                     -6.037870919922137),
-                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -6.037870919922137),
-                                    ("Boss's Dayyear (latent)", -5.632405811813974),
-                                    ("Tisha B'Avyear (latent)", -6.037870919922137),
-                                    ("Isra and Mi'rajyear (latent)", -5.121580188047982),
-                                    ("at <time-of-day>absorption of , after named day",
-                                     -6.037870919922137),
-                                    ("Christmasyear (latent)", -5.632405811813974),
-                                    ("Naraka Chaturdashiyear (latent)", -5.632405811813974),
-                                    ("at <time-of-day>on <date>", -4.939258631254028),
-                                    ("between <time-of-day> and <time-of-day> (interval)on <date>",
-                                     -4.428433007488038),
-                                    ("dayweek", -6.037870919922137),
-                                    ("Easter Sundayyear (latent)", -5.344723739362192),
-                                    ("Thursday<time-of-day> am|pm", -6.037870919922137),
-                                    ("weekyear", -5.632405811813974),
-                                    ("hh:mmin|during the <part-of-day>", -5.344723739362192),
-                                    ("<cycle> after|before <time><time-of-day> am|pm",
-                                     -5.632405811813974),
-                                    ("Hanukkahyear (latent)", -6.037870919922137),
-                                    ("February<time> <part-of-day>", -6.037870919922137),
-                                    ("National Grandparents Dayyear (latent)", -6.037870919922137),
-                                    ("Tuesdayin <named-month>|year", -6.037870919922137),
-                                    ("Great Lentyear (latent)", -6.037870919922137),
-                                    ("tomorrowat <time-of-day>", -5.344723739362192),
-                                    ("Labor Dayyear (latent)", -6.037870919922137),
-                                    ("between <time> and <time>on <date>", -4.428433007488038),
-                                    ("Thursdayfrom|since|after <time-of-day>", -5.344723739362192),
-                                    ("last <cycle> of <time>year (latent)", -5.344723739362192),
-                                    ("at <time-of-day>tomorrow", -5.632405811813974),
-                                    ("tomorrow<time-of-day> am|pm", -6.037870919922137),
-                                    ("President's Dayyear (latent)", -6.037870919922137),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -6.037870919922137),
-                                    ("Diwaliyear (latent)", -6.037870919922137),
-                                    ("Black Fridayyear (latent)", -5.632405811813974),
-                                    ("in|during the <part-of-day>at <time-of-day>",
-                                     -6.037870919922137),
-                                    ("Chhathyear (latent)", -5.632405811813974),
-                                    ("Vasant Panchamiyear (latent)", -6.037870919922137),
-                                    ("Palm Sundayintersect", -6.037870919922137),
-                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
-                                     -6.037870919922137),
-                                    ("Februaryintersect", -6.037870919922137),
-                                    ("Mother's Dayyear (latent)", -6.037870919922137),
-                                    ("Simchat Torahyear (latent)", -6.037870919922137)],
-                               n = 313},
-                   koData =
-                     ClassData{prior = -1.0075523231524797, unseen = -6.35088571671474,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<time-of-day> - <time-of-day> (interval)on <date>",
-                                     -5.655991810819852),
-                                    ("hourday", -5.655991810819852),
-                                    ("<named-month> <day-of-month> (non ordinal)July",
-                                     -5.655991810819852),
-                                    ("dayhour", -3.213644775450648),
-                                    ("daymonth", -3.5765502691400166),
-                                    ("monthday", -5.250526702711688),
-                                    ("monthyear", -4.403228842324484),
-                                    ("<time-of-day> am|pmyear (latent)", -5.250526702711688),
-                                    ("Thai Pongalyear (latent)", -4.962844630259907),
-                                    ("intersecthh:mm", -5.655991810819852),
-                                    ("from <datetime> - <datetime> (interval)July",
-                                     -5.655991810819852),
-                                    ("houryear", -4.739701078945697),
-                                    ("from <time-of-day> - <time-of-day> (interval)July",
-                                     -5.655991810819852),
-                                    ("until <time-of-day><time-of-day> am|pm", -5.655991810819852),
-                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -4.962844630259907),
-                                    ("<time-of-day> am|pmintersect", -4.403228842324484),
-                                    ("Octoberyear (latent)", -5.655991810819852),
-                                    ("from|since|after <time-of-day>year (latent)",
-                                     -4.403228842324484),
-                                    ("from|since|after <time-of-day>on <date>", -4.739701078945697),
-                                    ("July<day-of-month> (ordinal or number) <named-month>",
-                                     -5.655991810819852),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -4.403228842324484),
-                                    ("about|exactly <time-of-day>year (latent)",
-                                     -5.655991810819852),
-                                    ("absorption of , after named dayJuly", -5.250526702711688),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -4.739701078945697),
-                                    ("Clean Mondayyear (latent)", -5.655991810819852),
-                                    ("monthhour", -5.655991810819852),
-                                    ("hourmonth", -4.962844630259907),
-                                    ("todayat <time-of-day>", -5.655991810819852),
-                                    ("from|since|after <time-of-day>July", -5.655991810819852),
-                                    ("Mondayyear (latent)", -4.557379522151743),
-                                    ("dayday", -5.250526702711688),
-                                    ("mm/ddat <time-of-day>", -5.250526702711688),
-                                    ("<time-of-day> am|pmon <date>", -4.403228842324484),
-                                    ("dayyear", -2.6355669246754903),
-                                    ("Thursdaymm/dd", -5.655991810819852),
-                                    ("New Year's Dayyear (latent)", -5.250526702711688),
-                                    ("Thursdayat <time-of-day>", -4.403228842324484),
-                                    ("<integer> to|till|before <hour-of-day>September",
-                                     -5.655991810819852),
-                                    ("Aprilyear (latent)", -5.655991810819852),
-                                    ("monthminute", -5.655991810819852),
-                                    ("<time-of-day> am|pmtomorrow", -5.655991810819852),
-                                    ("Thursdayhh:mm", -4.739701078945697),
-                                    ("August<day-of-month> (ordinal or number) <named-month>",
-                                     -5.655991810819852),
-                                    ("minutemonth", -3.8642323415917974),
-                                    ("Sundayfrom|since|after <time-of-day>", -5.655991810819852),
-                                    ("week-endin <named-month>|year", -5.655991810819852),
-                                    ("Augustyear (latent)", -5.250526702711688),
-                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
-                                     -5.250526702711688),
-                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.250526702711688),
-                                    ("mm/dd<time-of-day> - <time-of-day> (interval)",
-                                     -5.250526702711688),
-                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.655991810819852),
-                                    ("Sundayyear (latent)", -4.962844630259907),
-                                    ("Christmasat <time-of-day>", -5.655991810819852),
-                                    ("<duration> after|before|from <time>December",
-                                     -5.655991810819852),
-                                    ("yesterday<time-of-day> am|pm", -5.655991810819852),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
-                                     -4.739701078945697),
-                                    ("mm/ddyear (latent)", -5.655991810819852),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -5.250526702711688),
-                                    ("<named-month> <day-of-month> (non ordinal)August",
-                                     -5.655991810819852),
-                                    ("until <time-of-day>on <date>", -4.962844630259907),
-                                    ("at <time-of-day>intersect", -5.250526702711688),
-                                    ("hh:mmyear (latent)", -4.557379522151743),
-                                    ("Holiyear (latent)", -5.655991810819852),
-                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -5.655991810819852),
-                                    ("dayminute", -3.1710851610318525),
-                                    ("intersectSeptember", -4.151914414043579),
-                                    ("minuteday", -2.5879388756862354),
-                                    ("absorption of , after named dayintersect",
-                                     -5.655991810819852),
-                                    ("Februaryin|during the <part-of-day>", -5.655991810819852),
-                                    ("hh:mmon <date>", -3.6410887902775877),
-                                    ("Saturdayyear (latent)", -5.655991810819852),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -5.655991810819852),
-                                    ("absorption of , after named daySeptember",
-                                     -4.739701078945697),
-                                    ("Naraka Chaturdashiyear (latent)", -5.655991810819852),
-                                    ("on <date>September", -5.250526702711688),
-                                    ("at <time-of-day>on <date>", -5.250526702711688),
-                                    ("in <named-month>|yearyear (latent)", -5.655991810819852),
-                                    ("dayweek", -5.655991810819852),
-                                    ("Easter Sundayyear (latent)", -5.250526702711688),
-                                    ("Thursday<time-of-day> am|pm", -5.250526702711688),
-                                    ("absorption of , after named dayFebruary", -4.739701078945697),
-                                    ("July<integer> to|till|before <hour-of-day>",
-                                     -5.655991810819852),
-                                    ("tomorrowat <time-of-day>", -5.655991810819852),
-                                    ("<integer> to|till|before <hour-of-day>July",
-                                     -5.655991810819852),
-                                    ("Thursdayfrom|since|after <time-of-day>", -4.046553898385752),
-                                    ("tomorrow<time-of-day> am|pm", -5.655991810819852),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -4.962844630259907),
-                                    ("Diwaliyear (latent)", -5.250526702711688),
-                                    ("Tuesdayfrom|since|after <time-of-day>", -5.655991810819852),
-                                    ("Fridayyear (latent)", -5.250526702711688),
-                                    ("minuteyear", -4.403228842324484)],
-                               n = 180}}),
-       ("one eleven",
-        Classifier{okData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},
-                   koData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("after lunch/work/school",
-        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}}),
-       ("early morning",
-        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}}),
-       ("in <number> (implicit minutes)",
-        Classifier{okData =
-                     ClassData{prior = -1.2039728043259361,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.3184537311185346),
-                                    ("integer (0..19)", -1.2992829841302609)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.35667494393873245,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.19105523676270922),
-                                    ("integer (0..19)", -1.749199854809259)],
-                               n = 21}}),
-       ("<ordinal> <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -1.791759469228055),
-                                    ("ordinal (digits)quarter (grain)year (latent)",
-                                     -2.1972245773362196),
-                                    ("quarteryear", -2.1972245773362196),
-                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)October",
-                                     -2.1972245773362196),
-                                    ("ordinal (digits)day (grain)this|last|next <cycle>",
-                                     -2.1972245773362196),
-                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
-                                     -2.1972245773362196),
-                                    ("weekmonth", -1.791759469228055),
-                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
-                                     -2.1972245773362196)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("year (grain)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.367295829986474,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 27},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("from <datetime> - <datetime> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -1.0116009116784799,
-                               unseen = -3.6375861597263857,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -2.001480000210124),
-                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal)",
-                                     -2.917770732084279),
-                                    ("hh:mmhh:mm", -2.001480000210124),
-                                    ("dayday", -2.512305623976115),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)<day-of-month> (ordinal)",
-                                     -2.917770732084279),
-                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.917770732084279),
-                                    ("hourhour", -2.512305623976115),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.917770732084279)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -0.45198512374305727,
-                               unseen = -3.912023005428146,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hourday", -3.1986731175506815),
-                                    ("dayhour", -2.793208009442517),
-                                    ("<day-of-month> (ordinal)time-of-day (latent)",
-                                     -3.1986731175506815),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -3.1986731175506815),
-                                    ("hh:mmtime-of-day (latent)", -2.2823823856765264),
-                                    ("minuteminute", -2.793208009442517),
-                                    ("time-of-day (latent)time-of-day (latent)",
-                                     -2.793208009442517),
-                                    ("dayday", -3.1986731175506815),
-                                    ("hourhour", -2.505525936990736),
-                                    ("dayyear", -3.1986731175506815),
-                                    ("minutehour", -2.2823823856765264),
-                                    ("hh:mmintersect", -2.793208009442517),
-                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal or number) <named-month>",
-                                     -3.1986731175506815),
-                                    ("time-of-day (latent)<time-of-day> am|pm",
-                                     -3.1986731175506815),
-                                    ("time-of-day (latent)<day-of-month> (ordinal or number) <named-month>",
-                                     -3.1986731175506815),
-                                    ("<named-month> <day-of-month> (non ordinal)time-of-day (latent)",
-                                     -3.1986731175506815)],
-                               n = 14}}),
-       ("Saturday",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.9459101490553135,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("the <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week (grain)<named-month>|<named-day> <day-of-month> (ordinal)",
-                                     -1.7346010553881064),
-                                    ("weekmonth", -1.7346010553881064),
-                                    ("week (grain)October", -1.7346010553881064),
-                                    ("week (grain)<named-month> <day-of-month> (non ordinal)",
-                                     -1.7346010553881064),
-                                    ("weekday", -1.2237754316221157)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("number.number hours",
-        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}}),
-       ("from <time-of-day> - <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.4339872044851463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -1.6094379124341003),
-                                    ("hh:mmhh:mm", -1.6094379124341003),
-                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
-                                    ("hourhour", -2.3025850929940455),
-                                    ("hourminute", -2.3025850929940455),
-                                    ("time-of-day (latent)<time-of-day> sharp|exactly",
-                                     -2.70805020110221),
-                                    ("time-of-day (latent)hh:mm", -2.70805020110221),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.4339872044851463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -1.6094379124341003),
-                                    ("time-of-day (latent)time-of-day (latent)",
-                                     -2.0149030205422647),
-                                    ("hourhour", -1.791759469228055),
-                                    ("minutehour", -1.6094379124341003),
-                                    ("time-of-day (latent)<time-of-day> am|pm", -2.70805020110221)],
-                               n = 9}}),
-       ("integer 21..99",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)integer (numeric)", -0.6931471805599453),
-                                    ("integer (20..90)integer (0..19)", -0.6931471805599453)],
-                               n = 4}}),
-       ("Tisha B'Av",
-        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}}),
-       ("yyyy-mm-dd",
-        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}}),
-       ("year (latent)",
-        Classifier{okData =
-                     ClassData{prior = -0.15524059819128397,
-                               unseen = -4.912654885736052,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -4.546237407675729e-2),
-                                    ("intersect 2 numbers", -3.518980417318539)],
-                               n = 131},
-                   koData =
-                     ClassData{prior = -1.9393954680341197, unseen = -3.295836866004329,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -1.3121863889661687),
-                                    ("negative numbers", -0.6190392084062235),
-                                    ("compose by multiplication", -1.8718021769015913)],
-                               n = 22}}),
-       ("mm/dd/yyyy",
-        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}}),
-       ("Memorial Day",
-        Classifier{okData =
-                     ClassData{prior = -0.1823215567939546,
-                               unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 5},
-                   koData =
-                     ClassData{prior = -1.791759469228055, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("Monday",
-        Classifier{okData =
-                     ClassData{prior = -0.5108256237659907, unseen = -2.639057329615259,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
-                   koData =
-                     ClassData{prior = -0.916290731874155, unseen = -2.3025850929940455,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 8}}),
-       ("yesterday",
-        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}}),
-       ("<ordinal> quarter <year>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)year (latent)",
-                                     -0.6931471805599453),
-                                    ("quarteryear", -0.6931471805599453)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Lincoln's Birthday",
-        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}}),
-       ("hh:mm:ss",
-        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}}),
-       ("Hanukkah",
-        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>",
-        Classifier{okData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("at <time-of-day>integer (20..90)", -1.3862943611198906),
-                                    ("hour", -0.9808292530117262),
-                                    ("at <time-of-day>integer (numeric)", -1.3862943611198906)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("about|exactly <time-of-day>integer (numeric)",
-                                     -1.0986122886681098),
-                                    ("hour", -1.0986122886681098)],
-                               n = 1}}),
-       ("nth <time> of <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.4700036292457356, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -0.9808292530117262),
-                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
-                                     -2.0794415416798357),
-                                    ("ordinals (first..twentieth,thirtieth,...)Wednesdayintersect",
-                                     -1.6739764335716716),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayOctober",
-                                     -1.6739764335716716)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -0.9808292530117262,
-                               unseen = -2.5649493574615367,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -1.0986122886681098),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdaySeptember",
-                                     -1.791759469228055),
-                                    ("ordinals (first..twentieth,thirtieth,...)WednesdayOctober",
-                                     -1.3862943611198906)],
-                               n = 3}}),
-       ("National Grandparents Day",
-        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}}),
-       ("Valentine's Day",
-        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}}),
-       ("April",
-        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}}),
-       ("Maha Saptami",
-        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}}),
-       ("end of month",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("week (grain)",
-        Classifier{okData =
-                     ClassData{prior = -4.0821994520255166e-2,
-                               unseen = -4.304065093204169,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 72},
-                   koData =
-                     ClassData{prior = -3.2188758248682006,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("<part-of-day> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.0910424533583156,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("part of daysintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -2.3513752571634776),
-                                    ("part of daysintersect", -2.3513752571634776),
-                                    ("hourday", -0.9650808960435872),
-                                    ("part of daysthe <day-of-month> (ordinal)",
-                                     -2.3513752571634776),
-                                    ("part of daysthe <day-of-month> (number)",
-                                     -2.3513752571634776),
-                                    ("part of daysthis <time>", -2.3513752571634776),
-                                    ("part of daysChristmas", -1.9459101490553135)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("six thirty six a.m.",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -1.252762968495368),
-                                    ("one twenty two", -0.8472978603872037),
-                                    ("one eleven", -1.252762968495368)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Loyalty Day",
-        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}}),
-       ("Shrove Tuesday",
-        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}}),
-       ("now",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.9459101490553135,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("<day-of-month> (ordinal or number) of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -0.13353139262452263,
-                               unseen = -3.0910424533583156,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)July", -2.3513752571634776),
-                                    ("ordinals (first..twentieth,thirtieth,...)March",
-                                     -2.3513752571634776),
-                                    ("ordinal (digits)February", -2.3513752571634776),
-                                    ("integer (numeric)February", -1.9459101490553135),
-                                    ("month", -0.9650808960435872),
-                                    ("ordinal (digits)March", -2.3513752571634776),
-                                    ("integer (numeric)July", -2.3513752571634776)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -2.0794415416798357,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)February", -1.5040773967762742),
-                                    ("month", -1.5040773967762742)],
-                               n = 1}}),
-       ("this <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.6931471805599453),
-                                    ("part of days", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Kaanum Pongal",
-        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}}),
-       ("Yom Kippur",
-        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}}),
-       ("powers of tens",
-        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}}),
-       ("Friday",
-        Classifier{okData =
-                     ClassData{prior = -0.3677247801253174,
-                               unseen = -2.3978952727983707,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},
-                   koData =
-                     ClassData{prior = -1.1786549963416462, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("in|during the <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -8.701137698962981e-2,
-                               unseen = -3.258096538021482,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("early morning", -2.5257286443082556),
-                                    ("hour", -0.7339691750802004),
-                                    ("part of days", -0.8209805520698302)],
-                               n = 11},
-                   koData =
-                     ClassData{prior = -2.4849066497880004, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.916290731874155),
-                                    ("part of days", -0.916290731874155)],
-                               n = 1}}),
-       ("tomorrow",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 17},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hh(:mm) - <time-of-day> am|pm",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.70805020110221,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Groundhog Day",
-        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}}),
-       ("this|last|next <cycle>",
-        Classifier{okData =
-                     ClassData{prior = -7.410797215372185e-2,
-                               unseen = -5.117993812416755,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.1416958748044215),
-                                    ("month (grain)", -2.8094026953624978),
-                                    ("year (grain)", -2.472930458741285),
-                                    ("week (grain)", -1.1416958748044215),
-                                    ("quarter", -3.5025498759224427), ("year", -2.472930458741285),
-                                    ("month", -2.8094026953624978),
-                                    ("quarter (grain)", -3.5025498759224427)],
-                               n = 78},
-                   koData =
-                     ClassData{prior = -2.639057329615259, unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("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,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Simchat Torah",
-        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}}),
-       ("New Year's Eve",
-        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}}),
-       ("the <ordinal> <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)year (latent)",
-                                     -0.6931471805599453),
-                                    ("quarteryear", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Raksha Bandhan",
-        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}}),
-       ("Ashura",
-        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}}),
-       ("Palm Sunday",
-        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}}),
-       ("Eid al-Adha",
-        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}}),
-       ("by <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.70805020110221,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("noon|midnight|EOD|end of day", -1.9459101490553135),
-                                    ("time-of-day (latent)", -1.9459101490553135),
-                                    ("<time-of-day> am|pm", -1.9459101490553135),
-                                    ("hh:mm", -1.9459101490553135), ("hour", -1.540445040947149),
-                                    ("minute", -1.540445040947149)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("half an hour",
-        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}}),
-       ("the <day-of-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.2006706954621511,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinals (first..twentieth,thirtieth,...)",
-                                     -1.7047480922384253),
-                                    ("ordinal (digits)", -0.2006706954621511)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -1.7047480922384253,
-                               unseen = -1.6094379124341003,
-                               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,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Lag BaOmer",
-        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}}),
-       ("fractional number",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 17}}),
-       ("Sunday",
-        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}}),
-       ("Chinese New Year",
-        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}}),
-       ("February",
-        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}}),
-       ("minute (grain)",
-        Classifier{okData =
-                     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}}),
-       ("last|this|next <season>",
-        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}}),
-       ("the <ordinal> quarter",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
-                                    ("quarter", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
-                                    ("quarter", -0.6931471805599453)],
-                               n = 1}}),
-       ("time-of-day (latent)",
-        Classifier{okData =
-                     ClassData{prior = -0.5699145401359973, unseen = -4.290459441148391,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.11778303565638351),
-                                    ("integer (0..19)", -2.330755969960742)],
-                               n = 69},
-                   koData =
-                     ClassData{prior = -0.8337291311811348, unseen = -4.04305126783455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -9.352605801082348e-2),
-                                    ("integer (0..19)", -2.9267394020670396),
-                                    ("integer 21..99", -3.332204510175204)],
-                               n = 53}}),
-       ("beginning of year",
-        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}}),
-       ("last <day-of-week> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -0.916290731874155),
-                                    ("SundayMarch", -1.6094379124341003),
-                                    ("MondayMarch", -1.6094379124341003),
-                                    ("Sundayintersect", -1.6094379124341003)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<integer> <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.13858616328614667,
-                               unseen = -5.147494476813453,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.5026062268874014),
-                                    ("integer (0..19)year (grain)", -3.062222014822824),
-                                    ("integer (numeric)day (grain)", -2.743768283704289),
-                                    ("integer (0..19)second (grain) ", -3.7553691953827695),
-                                    ("integer (0..19)hour (grain)", -3.062222014822824),
-                                    ("second", -3.349904087274605),
-                                    ("integer (numeric)second (grain) ", -4.04305126783455),
-                                    ("integer (numeric)year (grain)", -3.349904087274605),
-                                    ("day", -2.4336133554004498), ("year", -2.576714199041123),
-                                    ("integer (numeric)week (grain)", -3.062222014822824),
-                                    ("integer (0..19)month (grain)", -3.5322256440685593),
-                                    ("hour", -2.6567569067146595), ("month", -3.1957534074473464),
-                                    ("integer (numeric)minute (grain)", -3.1957534074473464),
-                                    ("integer (0..19)minute (grain)", -3.062222014822824),
-                                    ("integer (numeric)month (grain)", -4.04305126783455),
-                                    ("minute", -2.5026062268874014),
-                                    ("integer (numeric)hour (grain)", -3.5322256440685593),
-                                    ("integer (0..19)day (grain)", -3.5322256440685593),
-                                    ("integer (0..19)week (grain)", -3.1957534074473464)],
-                               n = 74},
-                   koData =
-                     ClassData{prior = -2.044755983691946, unseen = -3.828641396489095,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("quarter", -3.1135153092103742), ("hour", -1.4087672169719492),
-                                    ("integer (numeric)hour (grain)", -1.4087672169719492),
-                                    ("integer (0..19)quarter (grain)", -3.1135153092103742)],
-                               n = 11}}),
-       ("hhmm (latent)",
-        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}}),
-       ("<time-of-day> am|pm",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809, unseen = -5.342334251964811,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer after|past <hour-of-day>", -3.951243718581427),
-                                    ("at <time-of-day>", -2.202043863772168),
-                                    ("from|since|after <time-of-day>", -3.7281001672672174),
-                                    ("<time-of-day> o'clock", -4.238925791033208),
-                                    ("half after|past <hour-of-day>", -4.238925791033208),
-                                    ("time-of-day (latent)", -1.7266201670570935),
-                                    ("hhmm (latent)", -4.6443908991413725),
-                                    ("hh:mm", -2.293015641977895),
-                                    ("quarter after|past <hour-of-day>", -4.6443908991413725),
-                                    ("about|exactly <time-of-day>", -4.6443908991413725),
-                                    ("until <time-of-day>", -3.951243718581427),
-                                    ("hour", -1.2104036946562264),
-                                    ("<time-of-day> sharp|exactly", -4.6443908991413725),
-                                    ("minute", -1.754019141245208)],
-                               n = 96},
-                   koData =
-                     ClassData{prior = -1.3862943611198906, unseen = -4.394449154672439,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> to|till|before <hour-of-day>", -3.283414346005772),
-                                    ("from|since|after <time-of-day>", -3.283414346005772),
-                                    ("<hour-of-day> <integer>", -3.6888794541139363),
-                                    ("time-of-day (latent)", -1.0498221244986778),
-                                    ("hour", -1.0147308046874075), ("minute", -2.772588722239781)],
-                               n = 32}}),
-       ("Yom Ha'atzmaut",
-        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}}),
-       ("from <day-of-month> (ordinal or number) to <day-of-month> (ordinal or number) <named-month> (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)ordinal (digits)July", -1.252762968495368),
-                                    ("integer (numeric)integer (numeric)July", -1.252762968495368),
-                                    ("month", -0.8472978603872037)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Thiru Onam",
-        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}}),
-       ("Thai Pongal",
-        Classifier{okData =
-                     ClassData{prior = -0.5596157879354228, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
-                   koData =
-                     ClassData{prior = -0.8472978603872037,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Vijayadashami",
-        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}}),
-       ("Thanksgiving Day",
-        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}}),
-       ("part of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("a <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.5306282510621704,
-                               unseen = -3.5553480614894135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.1400661634962708),
-                                    ("year (grain)", -2.4277482359480516),
-                                    ("second", -2.833213344056216),
-                                    ("week (grain)", -2.1400661634962708),
-                                    ("day", -2.1400661634962708),
-                                    ("minute (grain)", -2.833213344056216),
-                                    ("year", -2.4277482359480516),
-                                    ("second (grain) ", -2.833213344056216),
-                                    ("minute", -2.833213344056216),
-                                    ("day (grain)", -2.1400661634962708)],
-                               n = 10},
-                   koData =
-                     ClassData{prior = -0.8873031950009028, unseen = -3.367295829986474,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour (grain)", -1.7227665977411035),
-                                    ("quarter", -1.9459101490553135), ("hour", -1.7227665977411035),
-                                    ("quarter (grain)", -1.9459101490553135)],
-                               n = 7}}),
-       ("at the beginning|end of <year>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("year (latent)", -0.6931471805599453),
-                                    ("year", -0.6931471805599453)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Dhanteras",
-        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}}),
-       ("Tu BiShvat",
-        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}}),
-       ("Whit Monday",
-        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}}),
-       ("hh:mm",
-        Classifier{okData =
-                     ClassData{prior = -5.6352936551131744e-2,
-                               unseen = -4.2626798770413155,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 69},
-                   koData =
-                     ClassData{prior = -2.9041650800285006, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("Holi",
-        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}}),
-       ("Rosh Hashanah",
-        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}}),
-       ("Holika Dahan",
-        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}}),
-       ("quarter of an hour",
-        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}}),
-       ("second (grain) ",
-        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}}),
-       ("ordinals (first..twentieth,thirtieth,...)",
-        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}}),
-       ("Mawlid",
-        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}}),
-       ("Jumu'atul-Wida",
-        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}}),
-       ("quarter after|past <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("the <cycle> after|before <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)tomorrow", -1.252762968495368),
-                                    ("dayday", -0.8472978603872037),
-                                    ("day (grain)yesterday", -1.252762968495368)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("about|exactly <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -3.6109179126442243,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.791759469228055),
-                                    ("hh(:mm) - <time-of-day> am|pm", -2.890371757896165),
-                                    ("this|last|next <cycle>", -1.791759469228055),
-                                    ("day", -2.4849066497880004),
-                                    ("time-of-day (latent)", -2.890371757896165),
-                                    ("hhmm (latent)", -2.4849066497880004),
-                                    ("<time-of-day> am|pm", -2.890371757896165),
-                                    ("hour", -2.1972245773362196),
-                                    ("next <time>", -2.890371757896165),
-                                    ("this|next <day-of-week>", -2.890371757896165),
-                                    ("minute", -2.4849066497880004)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -1.9459101490553135, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("mm/dd", -2.0794415416798357), ("day", -2.0794415416798357),
-                                    ("time-of-day (latent)", -2.0794415416798357),
-                                    ("hour", -2.0794415416798357)],
-                               n = 2}}),
-       ("Sukkot",
-        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> in <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("monthyear", -1.2992829841302609),
-                                    ("Marcha <unit-of-duration>", -1.7047480922384253),
-                                    ("March<integer> <unit-of-duration>", -1.7047480922384253),
-                                    ("Vijayadashami<integer> <unit-of-duration>",
-                                     -1.7047480922384253),
-                                    ("dayyear", -1.7047480922384253)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("World Vegan Day",
-        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}}),
-       ("intersect by \",\", \"of\", \"from\", \"'s\"",
-        Classifier{okData =
-                     ClassData{prior = -0.45547552868282576,
-                               unseen = -5.117993812416755,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Wednesday<named-month> <day-of-month> (non ordinal)",
-                                     -4.418840607796598),
-                                    ("dayhour", -3.16607763930123), ("daymonth", -3.16607763930123),
-                                    ("<named-month> <day-of-month> (non ordinal)Friday",
-                                     -4.418840607796598),
-                                    ("Friday<named-month> <day-of-month> (non ordinal)",
-                                     -3.7256934272366524),
-                                    ("Wednesdayintersect", -4.418840607796598),
-                                    ("Labor Daythis|last|next <cycle>", -4.418840607796598),
-                                    ("Black Fridaythis|last|next <cycle>", -4.418840607796598),
-                                    ("<part-of-day> of <time>February", -4.418840607796598),
-                                    ("Saturday<time-of-day> am|pm", -4.418840607796598),
-                                    ("Martin Luther King's Daythis|last|next <cycle>",
-                                     -4.013375499688434),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -4.418840607796598),
-                                    ("on <date><time-of-day> am|pm", -4.418840607796598),
-                                    ("hourmonth", -4.418840607796598),
-                                    ("dayday", -2.5470384308950065),
-                                    ("the <day-of-month> (ordinal)February", -4.013375499688434),
-                                    ("WednesdayOctober", -4.418840607796598),
-                                    ("Wednesdaythis|last|next <cycle>", -4.013375499688434),
-                                    ("intersect<named-month> <day-of-month> (non ordinal)",
-                                     -3.5025498759224427),
-                                    ("dayyear", -2.7140925155581725),
-                                    ("Saturday<named-month> <day-of-month> (non ordinal)",
-                                     -4.418840607796598),
-                                    ("Thursdayhh:mm", -4.013375499688434),
-                                    ("Thanksgiving Daythis|last|next <cycle>", -4.418840607796598),
-                                    ("Memorial Daythis|last|next <cycle>", -4.418840607796598),
-                                    ("on <date><named-month> <day-of-month> (non ordinal)",
-                                     -4.013375499688434),
-                                    ("TuesdayOctober", -4.418840607796598),
-                                    ("the <day-of-month> (ordinal)March", -4.418840607796598),
-                                    ("Mondaythis|last|next <cycle>", -4.418840607796598),
-                                    ("Fridayintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -4.418840607796598),
-                                    ("Fridayintersect", -4.418840607796598),
-                                    ("Thursday<datetime> - <datetime> (interval)",
-                                     -3.7256934272366524),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -3.5025498759224427),
-                                    ("Tuesdaythis|last|next <cycle>", -4.418840607796598),
-                                    ("Sunday<named-month> <day-of-month> (non ordinal)",
-                                     -4.418840607796598),
-                                    ("dayminute", -3.0325462466767075),
-                                    ("minuteday", -3.5025498759224427),
-                                    ("this|last|next <cycle>Sunday", -4.418840607796598),
-                                    ("intersectyear (latent)", -4.418840607796598),
-                                    ("Sundaythis|last|next <cycle>", -4.418840607796598),
-                                    ("weekday", -4.418840607796598),
-                                    ("dayweek", -3.3202283191284883),
-                                    ("Thursday<time-of-day> am|pm", -4.418840607796598),
-                                    ("Monday<named-month> <day-of-month> (non ordinal)",
-                                     -4.013375499688434),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -4.013375499688434)],
-                               n = 52},
-                   koData =
-                     ClassData{prior = -1.0055218656020977, unseen = -4.812184355372417,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week-endJuly", -4.110873864173311),
-                                    ("week-endOctober", -3.417726683613366),
-                                    ("daymonth", -1.9136492868370918),
-                                    ("TuesdaySeptember", -4.110873864173311),
-                                    ("Wednesdayintersect", -4.110873864173311),
-                                    ("hourmonth", -3.012261575505202),
-                                    ("Fridaythis|last|next <cycle>", -4.110873864173311),
-                                    ("SundayFebruary", -4.110873864173311),
-                                    ("WednesdayOctober", -4.110873864173311),
-                                    ("week-endintersect", -4.110873864173311),
-                                    ("dayyear", -4.110873864173311),
-                                    ("FridayJuly", -3.7054087560651467),
-                                    ("FridaySeptember", -4.110873864173311),
-                                    ("WednesdayFebruary", -4.110873864173311),
-                                    ("minutemonth", -3.1945831322991562),
-                                    ("SundayMarch", -4.110873864173311),
-                                    ("MondayFebruary", -3.7054087560651467),
-                                    ("Fridayintersect", -4.110873864173311),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -3.7054087560651467),
-                                    ("dayminute", -3.417726683613366),
-                                    ("SaturdaySeptember", -4.110873864173311),
-                                    ("intersectSeptember", -3.1945831322991562),
-                                    ("MondayMarch", -4.110873864173311),
-                                    ("on <date>September", -3.7054087560651467),
-                                    ("Tuesdayintersect", -4.110873864173311),
-                                    ("Sundayintersect", -4.110873864173311)],
-                               n = 30}}),
-       ("last <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.4595323293784402,
-                               unseen = -3.6635616461296463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Father's Day", -2.9444389791664407),
-                                    ("Martin Luther King's Day", -2.9444389791664407),
-                                    ("Cyber Monday", -2.9444389791664407),
-                                    ("Memorial Day", -2.9444389791664407),
-                                    ("Mother's Day", -2.9444389791664407),
-                                    ("day", -1.1526795099383855), ("Sunday", -2.9444389791664407),
-                                    ("Chinese New Year", -2.538973871058276),
-                                    ("Thanksgiving Day", -2.9444389791664407),
-                                    ("Easter Sunday", -2.9444389791664407),
-                                    ("hour", -2.9444389791664407), ("Tuesday", -2.9444389791664407),
-                                    ("week-end", -2.9444389791664407)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -0.9985288301111273, unseen = -3.367295829986474,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Monday", -2.639057329615259), ("day", -2.2335922215070942),
-                                    ("Sunday", -2.639057329615259), ("hour", -1.540445040947149),
-                                    ("week-end", -1.540445040947149)],
-                               n = 7}}),
-       ("March",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.044522437723423,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 19},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<named-month>|<named-day> <day-of-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.2231435513142097, unseen = -3.258096538021482,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Octoberordinal (digits)", -2.120263536200091),
-                                    ("Thursdayordinal (digits)", -2.5257286443082556),
-                                    ("day", -2.120263536200091),
-                                    ("Augustordinal (digits)", -2.5257286443082556),
-                                    ("Marchordinals (first..twentieth,thirtieth,...)",
-                                     -2.120263536200091),
-                                    ("Tuesdayordinal (digits)", -2.5257286443082556),
-                                    ("month", -1.2729656758128873),
-                                    ("Marchordinal (digits)", -2.5257286443082556)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -1.6094379124341003, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("from|since|after <time-of-day>ordinal (digits)",
-                                     -1.8718021769015913),
-                                    ("Augustordinal (digits)", -1.8718021769015913),
-                                    ("month", -1.466337068793427)],
-                               n = 2}}),
-       ("Labor Day weekend",
-        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}}),
-       ("Clean Monday",
-        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-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [("ordinal (digits)", 0.0)], n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Veterans Day",
-        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}}),
-       ("Easter Sunday",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
-       ("Christmas",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("until <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -0.9808292530117262, unseen = -3.044522437723423,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -2.3025850929940455),
-                                    ("<time-of-day> am|pm", -1.6094379124341003),
-                                    ("hh:mm", -1.8971199848858813), ("hour", -1.8971199848858813),
-                                    ("minute", -1.3862943611198906)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -0.4700036292457356, unseen = -3.367295829986474,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersect", -1.7227665977411035),
-                                    ("yesterday", -2.2335922215070942),
-                                    ("day", -2.2335922215070942), ("hh:mm", -1.7227665977411035),
-                                    ("hour", -2.639057329615259), ("minute", -1.252762968495368)],
-                               n = 10}}),
-       ("mm.dd.yyyy",
-        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}}),
-       ("Isra and Mi'raj",
-        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}}),
-       ("<duration> after|before|from <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.3184537311185346,
-                               unseen = -3.5263605246161616,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("a <unit-of-duration>now", -2.803360380906535),
-                                    ("a <unit-of-duration>Christmas", -2.803360380906535),
-                                    ("dayday", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>today", -2.803360380906535),
-                                    ("daysecond", -2.803360380906535),
-                                    ("a <unit-of-duration>right now", -2.803360380906535),
-                                    ("minutenograin", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>Christmas", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>Easter Sunday",
-                                     -2.803360380906535),
-                                    ("secondnograin", -2.803360380906535),
-                                    ("yearday", -2.1102132003465894),
-                                    ("daynograin", -2.803360380906535),
-                                    ("<integer> <unit-of-duration>now", -2.3978952727983707)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -1.2992829841302609,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -2.4423470353692043),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal)",
-                                     -2.4423470353692043),
-                                    ("dayday", -2.03688192726104),
-                                    ("<integer> <unit-of-duration>time-of-day (latent)",
-                                     -2.4423470353692043),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
-                                     -2.4423470353692043)],
-                               n = 3}}),
-       ("<day-of-month> (ordinal or number) of <month>",
-        Classifier{okData =
-                     ClassData{prior = -8.004270767353637e-2,
-                               unseen = -3.5263605246161616,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)July", -2.803360380906535),
-                                    ("ordinals (first..twentieth,thirtieth,...)March",
-                                     -2.803360380906535),
-                                    ("ordinal (digits)this|last|next <cycle>", -2.1102132003465894),
-                                    ("integer (numeric)this|last|next <cycle>",
-                                     -2.3978952727983707),
-                                    ("ordinal (digits)February", -2.803360380906535),
-                                    ("integer (numeric)February", -2.3978952727983707),
-                                    ("month", -0.9315582040049435),
-                                    ("ordinal (digits)March", -2.803360380906535),
-                                    ("integer (numeric)July", -2.803360380906535)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -2.5649493574615367,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)February", -1.7047480922384253),
-                                    ("month", -1.7047480922384253)],
-                               n = 1}}),
-       ("Independence Day",
-        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}}),
-       ("decimal number",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Naraka Chaturdashi",
-        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}}),
-       ("beginning of month",
-        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}}),
-       ("next <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.6109179126442243,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Martin Luther King's Day", -2.890371757896165),
-                                    ("Halloween", -2.890371757896165),
-                                    ("Wednesday", -2.890371757896165),
-                                    ("Boss's Day", -2.890371757896165),
-                                    ("Memorial Day", -2.890371757896165),
-                                    ("Monday", -2.890371757896165),
-                                    ("Mother's Day", -2.890371757896165),
-                                    ("day", -1.0986122886681098),
-                                    ("Thanksgiving Day", -2.890371757896165),
-                                    ("March", -2.890371757896165), ("month", -2.890371757896165),
-                                    ("Tuesday", -2.1972245773362196)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.5649493574615367,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time-of-day> sharp|exactly",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("at <time-of-day>", -2.1400661634962708),
-                                    ("time-of-day (latent)", -2.1400661634962708),
-                                    ("hhmm (latent)", -2.1400661634962708),
-                                    ("<time-of-day> am|pm", -2.1400661634962708),
-                                    ("hh:mm", -2.1400661634962708), ("hour", -1.7346010553881064),
-                                    ("minute", -1.4469189829363254)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("in <named-month>|year",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -2.4423470353692043),
-                                    ("year (latent)", -1.0560526742493137),
-                                    ("year", -1.0560526742493137), ("March", -2.4423470353692043),
-                                    ("month", -2.03688192726104)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -1.2992829841302609),
-                                    ("year (latent)", -1.7047480922384253),
-                                    ("year", -1.7047480922384253), ("month", -1.2992829841302609)],
-                               n = 3}}),
-       ("Islamic New Year",
-        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}}),
-       ("Lent",
-        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}}),
-       ("negative numbers",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -7.696104113612832e-2),
-                                    ("integer (0..19)", -2.6026896854443837)],
-                               n = 25}}),
-       ("about|exactly <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("half an hour", -0.6931471805599453),
-                                    ("minute", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time> before last|after next",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Wednesday", -1.8718021769015913),
-                                    ("Friday", -1.466337068793427), ("day", -1.1786549963416462),
-                                    ("March", -1.8718021769015913), ("month", -1.8718021769015913)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("by the end of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("this|last|next <cycle>", -0.6931471805599453),
-                                    ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hhmm (military) am|pm",
-        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 = -0.3794896217049037, unseen = -4.304065093204169,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersecthh:mm", -3.1918471524802814),
-                                    ("intersect<time-of-day> am|pm", -3.1918471524802814),
-                                    ("minuteminute", -1.457246097092175),
-                                    ("hh:mmhh:mm", -2.093234863812172),
-                                    ("dayday", -3.1918471524802814),
-                                    ("hourhour", -2.093234863812172),
-                                    ("<named-month> <day-of-month> (non ordinal)<named-month> <day-of-month> (non ordinal)",
-                                     -3.1918471524802814),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
-                                     -3.1918471524802814),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
-                                     -3.597312260588446),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -3.597312260588446),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.681021528714291),
-                                    ("from|since|after <time-of-day>hh:mm", -2.681021528714291)],
-                               n = 26},
-                   koData =
-                     ClassData{prior = -1.1526795099383855, unseen = -3.828641396489095,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<named-month> <day-of-month> (non ordinal)July",
-                                     -3.1135153092103742),
-                                    ("daymonth", -2.70805020110221),
-                                    ("from|since|after <time-of-day>intersect", -2.70805020110221),
-                                    ("<time-of-day> am|pmintersect", -3.1135153092103742),
-                                    ("hh:mm<time-of-day> am|pm", -2.70805020110221),
-                                    ("minuteminute", -1.8607523407150064),
-                                    ("hourhour", -2.70805020110221),
-                                    ("minutehour", -2.70805020110221),
-                                    ("hh:mmintersect", -2.1972245773362196),
-                                    ("<named-month> <day-of-month> (non ordinal)August",
-                                     -3.1135153092103742),
-                                    ("about|exactly <time-of-day><time-of-day> am|pm",
-                                     -3.1135153092103742)],
-                               n = 12}}),
-       ("Tuesday",
-        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}}),
-       ("New Year's Day",
-        Classifier{okData =
-                     ClassData{prior = -1.6094379124341003,
-                               unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
-                   koData =
-                     ClassData{prior = -0.2231435513142097,
-                               unseen = -2.3025850929940455,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 8}}),
-       ("fortnight",
-        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}}),
-       ("Memorial Day weekend",
-        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}}),
-       ("<integer> and an half hour",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Laylat al-Qadr",
-        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}}),
-       ("Boghi",
-        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}}),
-       ("at the beginning|end of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -0.2231435513142097,
-                               unseen = -2.5649493574615367,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("January", -1.3862943611198906),
-                                    ("April", -1.3862943611198906), ("month", -0.8754687373538999)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -1.6094379124341003,
-                               unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -1.0986122886681098),
-                                    ("month", -1.0986122886681098)],
-                               n = 1}}),
-       ("<time-of-day> - <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.7375989431307791, unseen = -4.110873864173311,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -1.529395204760564),
-                                    ("hh:mmhh:mm", -1.8971199848858813),
-                                    ("<time-of-day> am|pmtime-of-day (latent)",
-                                     -2.4849066497880004),
-                                    ("hourhour", -1.6964492894237302),
-                                    ("from|since|after <time-of-day>time-of-day (latent)",
-                                     -3.4011973816621555),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -3.4011973816621555),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.4849066497880004),
-                                    ("from|since|after <time-of-day>hh:mm", -2.4849066497880004)],
-                               n = 22},
-                   koData =
-                     ClassData{prior = -0.6505875661411494, unseen = -4.174387269895637,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("about|exactly <time-of-day>time-of-day (latent)",
-                                     -3.4657359027997265),
-                                    ("hh:mmtime-of-day (latent)", -1.7609878105613013),
-                                    ("hh:mm<time-of-day> am|pm", -3.0602707946915624),
-                                    ("<time-of-day> am|pmtime-of-day (latent)",
-                                     -3.4657359027997265),
-                                    ("at <time-of-day><time-of-day> am|pm", -3.4657359027997265),
-                                    ("hourhour", -2.2129729343043585),
-                                    ("minutehour", -1.2144441041932315),
-                                    ("about|exactly <time-of-day><time-of-day> am|pm",
-                                     -3.4657359027997265),
-                                    ("from|since|after <time-of-day>time-of-day (latent)",
-                                     -2.5494451709255714),
-                                    ("at <time-of-day>time-of-day (latent)", -3.0602707946915624),
-                                    ("<integer> to|till|before <hour-of-day>time-of-day (latent)",
-                                     -3.0602707946915624)],
-                               n = 24}}),
-       ("military spelled out numbers am|pm",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
-                               likelihoods =
-                                 HashMap.fromList [("integer (0..19)integer (20..90)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("winter",
-        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}}),
-       ("nth <time> after <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayday", -0.916290731874155),
-                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
-                                     -0.916290731874155)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayday", -0.916290731874155),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayChristmas",
-                                     -0.916290731874155)],
-                               n = 1}}),
-       ("<named-month> <day-of-month> (non ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.42121346507630353,
-                               unseen = -3.951243718581427,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Augustinteger (numeric)", -2.5455312716044354),
-                                    ("Marchinteger (numeric)", -2.833213344056216),
-                                    ("Aprilinteger (numeric)", -3.2386784521643803),
-                                    ("month", -0.8407831793660099),
-                                    ("Februaryinteger (numeric)", -1.9859154836690123),
-                                    ("Septemberinteger (numeric)", -2.833213344056216),
-                                    ("Octoberinteger (numeric)", -2.833213344056216),
-                                    ("Julyinteger (numeric)", -2.1400661634962708)],
-                               n = 21},
-                   koData =
-                     ClassData{prior = -1.067840630001356, unseen = -3.4657359027997265,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Augustinteger (numeric)", -2.3353749158170367),
-                                    ("Marchinteger (numeric)", -2.740840023925201),
-                                    ("Aprilinteger (numeric)", -2.740840023925201),
-                                    ("month", -0.9490805546971459),
-                                    ("from|since|after <time-of-day>integer (numeric)",
-                                     -2.3353749158170367),
-                                    ("Julyinteger (numeric)", -1.6422277352570913)],
-                               n = 11}}),
-       ("President's Day",
-        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}}),
-       ("Diwali",
-        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}}),
-       ("last night",
-        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}}),
-       ("this|next <day-of-week>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.995732273553991,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Thursday", -2.2512917986064953),
-                                    ("Wednesday", -2.2512917986064953),
-                                    ("Monday", -1.845826690498331), ("day", -0.8649974374866046),
-                                    ("Tuesday", -1.55814461804655)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("ordinal (digits)",
-        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}}),
-       ("quarter (grain)",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809, unseen = -2.639057329615259,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
-                   koData =
-                     ClassData{prior = -1.3862943611198906, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("last <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)October", -1.791759469228055),
-                                    ("daymonth", -1.2809338454620642),
-                                    ("day (grain)intersect", -1.791759469228055),
-                                    ("weekmonth", -1.791759469228055),
-                                    ("week (grain)intersect", -2.1972245773362196),
-                                    ("week (grain)September", -2.1972245773362196)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Chhath",
-        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}}),
-       ("Vasant Panchami",
-        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-month>(ordinal) <named-month> year",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)April", -0.6931471805599453),
-                                    ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Black Friday",
-        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}}),
-       ("Labor Day",
-        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}}),
-       ("week-end",
-        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}}),
-       ("Great Lent",
-        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}}),
-       ("Maundy Thursday",
-        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 (grain)",
-        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}}),
-       ("right now",
-        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}}),
-       ("for <duration> from <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> <unit-of-duration><day-of-month> (ordinal)",
-                                     -1.5040773967762742),
-                                    ("dayday", -1.0986122886681098),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
-                                     -1.5040773967762742)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -1.252762968495368),
-                                    ("<integer> <unit-of-duration>time-of-day (latent)",
-                                     -1.252762968495368)],
-                               n = 1}}),
-       ("compose by multiplication",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList [("integer (0..19)powers of tens", 0.0)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("end of year",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("between <time> and <time>",
-        Classifier{okData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -0.832909122935104),
-                                    ("hh:mmhh:mm", -0.832909122935104)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -3.7376696182833684,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -1.410986973710262),
-                                    ("minuteminute", -1.410986973710262),
-                                    ("minutehour", -1.410986973710262),
-                                    ("hh:mmintersect", -1.410986973710262)],
-                               n = 18}}),
-       ("<month> dd-dd (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4657359027997265,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Julyinteger (numeric)integer (numeric)", -1.6422277352570913),
-                                    ("from|since|after <time-of-day>ordinal (digits)ordinal (digits)",
-                                     -2.740840023925201),
-                                    ("from|since|after <time-of-day>integer (numeric)integer (numeric)",
-                                     -2.740840023925201),
-                                    ("from|since|after <time-of-day>ordinal (digits)integer (numeric)",
-                                     -2.740840023925201),
-                                    ("Augustordinal (digits)integer (numeric)",
-                                     -2.3353749158170367),
-                                    ("month", -0.8690378470236094),
-                                    ("Augustordinal (digits)ordinal (digits)",
-                                     -2.3353749158170367)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("part of days",
-        Classifier{okData =
-                     ClassData{prior = -3.509131981127006e-2,
-                               unseen = -3.4011973816621555,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 28},
-                   koData =
-                     ClassData{prior = -3.367295829986474, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+                     ClassData{prior = -8.961215868968717e-2,
+                               unseen = -3.5263605246161616,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 32},
+                   koData =
+                     ClassData{prior = -2.456735772821304, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("integer (numeric)",
+        Classifier{okData =
+                     ClassData{prior = -0.5682888691888516, unseen = -5.799092654460526,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 328},
+                   koData =
+                     ClassData{prior = -0.8358495384412113, unseen = -5.53338948872752,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 251}}),
+       ("<year> (bc|ad)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<duration> hence|ago",
+        Classifier{okData =
+                     ClassData{prior = -0.10536051565782628,
+                               unseen = -3.784189633918261,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.563975538357343), ("day", -1.8152899666382492),
+                                    ("year", -2.662587827025453),
+                                    ("<integer> <unit-of-duration>", -1.0531499145913523),
+                                    ("a <unit-of-duration>", -2.662587827025453),
+                                    ("month", -2.662587827025453),
+                                    ("fortnight", -2.662587827025453)],
+                               n = 18},
+                   koData =
+                     ClassData{prior = -2.3025850929940455,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year", -1.2992829841302609),
+                                    ("<integer> <unit-of-duration>", -1.2992829841302609)],
+                               n = 2}}),
+       ("noon|midnight|EOD|end of day",
+        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}}),
+       ("quarter to|till|before <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("noon|midnight|EOD|end of day", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Father's Day",
+        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}}),
+       ("<cycle> after|before <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)tomorrow", -1.6739764335716716),
+                                    ("dayday", -1.1631508098056809),
+                                    ("day (grain)yesterday", -1.6739764335716716)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -1.6739764335716716),
+                                    ("year (grain)Christmas", -2.0794415416798357),
+                                    ("dayday", -2.0794415416798357),
+                                    ("day (grain)intersect", -1.6739764335716716),
+                                    ("day (grain)Easter Sunday", -2.0794415416798357),
+                                    ("yearday", -2.0794415416798357)],
+                               n = 4}}),
+       ("Easter Monday",
+        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}}),
+       ("Navaratri",
+        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}}),
+       ("Martin Luther King's Day",
+        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}}),
+       ("integer (20..90)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Shemini Atzeret",
+        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}}),
+       ("Ramadan",
+        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}}),
+       ("Lazarus Saturday",
+        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}}),
+       ("intersect 2 numbers",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("compose by multiplicationinteger (0..19)",
+                                     -0.2231435513142097)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("powers of tensinteger (0..19)", -0.2231435513142097)],
+                               n = 3}}),
+       ("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}}),
+       ("from|since|after <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.540445040947149, unseen = -4.248495242049359,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<day-of-month> (ordinal or number) <named-month>",
+                                     -3.5409593240373143),
+                                    ("July", -3.5409593240373143),
+                                    ("year (latent)", -3.1354942159291497),
+                                    ("day", -3.1354942159291497),
+                                    ("time-of-day (latent)", -2.624668592163159),
+                                    ("year", -3.1354942159291497),
+                                    ("<time-of-day> am|pm", -2.624668592163159),
+                                    ("hh:mm", -2.624668592163159),
+                                    ("<day-of-month> (ordinal)", -3.5409593240373143),
+                                    ("hour", -2.03688192726104), ("month", -3.1354942159291497),
+                                    ("minute", -2.624668592163159),
+                                    ("August", -3.5409593240373143)],
+                               n = 18},
+                   koData =
+                     ClassData{prior = -0.2411620568168881, unseen = -5.111987788356543,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> to|till|before <hour-of-day>", -4.007333185232471),
+                                    ("week", -4.412798293340635),
+                                    ("<day-of-month> (ordinal or number) <named-month>",
+                                     -4.412798293340635),
+                                    ("today", -4.412798293340635),
+                                    ("intersect", -2.540996116439044),
+                                    ("<time> for <duration>", -4.412798293340635),
+                                    ("second", -4.412798293340635), ("now", -3.71965111278069),
+                                    ("tomorrow", -4.007333185232471),
+                                    ("this|last|next <cycle>", -4.412798293340635),
+                                    ("day", -1.927891643552635),
+                                    ("time-of-day (latent)", -2.6210388241125804),
+                                    ("<time-of-day> am|pm", -4.007333185232471),
+                                    ("nograin", -3.71965111278069),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)",
+                                     -4.412798293340635),
+                                    ("<day-of-month> (ordinal)", -4.007333185232471),
+                                    ("Easter Sunday", -4.412798293340635),
+                                    ("Christmas", -3.71965111278069), ("hour", -2.3978952727983707),
+                                    ("month", -4.412798293340635),
+                                    ("<datetime> - <datetime> (interval)", -3.1600353248452673),
+                                    ("<time-of-day> - <time-of-day> (interval)",
+                                     -2.908720896564361),
+                                    ("<named-month> <day-of-month> (non ordinal)",
+                                     -4.007333185232471),
+                                    ("minute", -1.927891643552635),
+                                    ("right now", -4.412798293340635),
+                                    ("<month> dd-dd (interval)", -3.71965111278069),
+                                    ("part of days", -4.412798293340635),
+                                    ("dd-dd <month> (interval)", -4.007333185232471)],
+                               n = 66}}),
+       ("integer after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.8109302162163288),
+                                    ("integer (numeric)time-of-day (latent)", -1.0986122886681098),
+                                    ("integer (20..90)time-of-day (latent)", -1.5040773967762742)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<ordinal> last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4011973816621555,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)week (grain)year (latent)",
+                                     -2.268683541318364),
+                                    ("daymonth", -2.268683541318364),
+                                    ("ordinal (digits)day (grain)May", -2.6741486494265287),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.6741486494265287),
+                                    ("weekmonth", -1.7578579175523736),
+                                    ("ordinal (digits)week (grain)October", -2.6741486494265287),
+                                    ("ordinal (digits)week (grain)intersect", -2.6741486494265287),
+                                    ("ordinal (digits)week (grain)year (latent)",
+                                     -2.6741486494265287),
+                                    ("weekyear", -1.9810014688665833),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.6741486494265287),
+                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)May",
+                                     -2.6741486494265287)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Yom HaShoah",
+        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-month> (ordinal or number) <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -1.0296194171811581,
+                               unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)December", -1.6582280766035324),
+                                    ("ordinal (digits)February", -2.3513752571634776),
+                                    ("integer (numeric)April", -2.3513752571634776),
+                                    ("month", -1.252762968495368)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.4418327522790392,
+                               unseen = -3.4011973816621555,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)October", -2.6741486494265287),
+                                    ("ordinal (digits)July", -2.6741486494265287),
+                                    ("integer (numeric)September", -2.268683541318364),
+                                    ("ordinal (digits)August", -2.6741486494265287),
+                                    ("integer (numeric)August", -2.6741486494265287),
+                                    ("ordinal (digits)April", -2.6741486494265287),
+                                    ("month", -1.0647107369924282),
+                                    ("integer (numeric)July", -2.268683541318364)],
+                               n = 9}}),
+       ("<time> <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -9.237332013101517e-2,
+                               unseen = -4.48863636973214,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("dayhour", -1.4816045409242156),
+                                    ("Mondayearly morning", -3.378724525810097),
+                                    ("time-of-day (latent)tonight", -3.378724525810097),
+                                    ("hourhour", -2.3978952727983707),
+                                    ("<time-of-day> o'clockin|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("todaypart of days", -3.784189633918261),
+                                    ("minutehour", -2.6855773452501515),
+                                    ("at <time-of-day>in|during the <part-of-day>",
+                                     -3.378724525810097),
+                                    ("time-of-day (latent)this <part-of-day>", -3.784189633918261),
+                                    ("Mondayin|during the <part-of-day>", -3.784189633918261),
+                                    ("intersectpart of days", -3.784189633918261),
+                                    ("intersectin|during the <part-of-day>", -3.784189633918261),
+                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("tomorrowpart of days", -2.3978952727983707),
+                                    ("hh:mmin|during the <part-of-day>", -3.0910424533583156),
+                                    ("time-of-day (latent)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("hhmm (latent)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("yesterdaypart of days", -3.378724525810097),
+                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("Mondaypart of days", -3.784189633918261)],
+                               n = 31},
+                   koData =
+                     ClassData{prior = -2.4277482359480516,
+                               unseen = -3.4965075614664802,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("yearhour", -2.772588722239781),
+                                    ("monthhour", -2.772588722239781),
+                                    ("hourhour", -2.772588722239781),
+                                    ("year (latent)in|during the <part-of-day>",
+                                     -2.772588722239781),
+                                    ("Februaryin|during the <part-of-day>", -2.772588722239781),
+                                    ("time-of-day (latent)in|during the <part-of-day>",
+                                     -2.772588722239781)],
+                               n = 3}}),
+       ("Cyber Monday",
+        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}}),
+       ("today",
+        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}}),
+       ("mm/dd",
+        Classifier{okData =
+                     ClassData{prior = -1.2729656758128873,
+                               unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
+                   koData =
+                     ClassData{prior = -0.3285040669720361, unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18}}),
+       ("at <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -8.4557388028063e-2, unseen = -5.003946305945459,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time> timezone", -3.898599985096005),
+                                    ("noon|midnight|EOD|end of day", -3.898599985096005),
+                                    ("integer after|past <hour-of-day>", -3.898599985096005),
+                                    ("half after|past <hour-of-day>", -4.304065093204169),
+                                    ("time-of-day (latent)", -1.6650077635889111),
+                                    ("hhmm (latent)", -3.6109179126442243),
+                                    ("<time-of-day> am|pm", -1.7783364488959144),
+                                    ("hh:mm", -3.3877743613300146),
+                                    ("about|exactly <time-of-day>", -3.898599985096005),
+                                    ("hour", -1.0459685551826876),
+                                    ("<time-of-day> sharp|exactly", -4.304065093204169),
+                                    ("minute", -2.10684051586795)],
+                               n = 68},
+                   koData =
+                     ClassData{prior = -2.512305623976115, unseen = -3.2188758248682006,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -1.2321436812926323),
+                                    ("hour", -1.2321436812926323)],
+                               n = 6}}),
+       ("December",
+        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}}),
+       ("absorption of , after named day",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.332204510175204,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("on <date>", -2.1972245773362196),
+                                    ("Wednesday", -2.6026896854443837),
+                                    ("Saturday", -2.6026896854443837),
+                                    ("Monday", -2.1972245773362196),
+                                    ("Friday", -1.9095425048844386), ("day", -0.8979415932059586),
+                                    ("Sunday", -2.6026896854443837)],
+                               n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("September",
+        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}}),
+       ("tonight",
+        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}}),
+       ("last|past|next <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -4.2626798770413155,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.456735772821304), ("second", -2.639057329615259),
+                                    ("day", -2.3025850929940455), ("year", -2.639057329615259),
+                                    ("<integer> <unit-of-duration>", -0.7827593392496325),
+                                    ("hour", -2.639057329615259), ("month", -2.639057329615259),
+                                    ("minute", -2.639057329615259)],
+                               n = 31},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the ides of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("on <date>",
+        Classifier{okData =
+                     ClassData{prior = -0.13353139262452263,
+                               unseen = -4.204692619390966,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Thursday", -1.4816045409242156),
+                                    ("mm/dd", -3.4965075614664802),
+                                    ("absorption of , after named day", -3.0910424533583156),
+                                    ("intersect", -3.0910424533583156),
+                                    ("Saturday", -2.803360380906535),
+                                    ("Friday", -3.4965075614664802), ("day", -0.8574502318512216),
+                                    ("the <day-of-month> (ordinal)", -3.0910424533583156),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -2.803360380906535),
+                                    ("hour", -3.4965075614664802)],
+                               n = 28},
+                   koData =
+                     ClassData{prior = -2.0794415416798357,
+                               unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersect", -1.791759469228055), ("day", -1.2809338454620642),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -1.791759469228055)],
+                               n = 4}}),
+       ("integer (0..19)",
+        Classifier{okData =
+                     ClassData{prior = -0.10919929196499197,
+                               unseen = -3.9889840465642745,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 52},
+                   koData =
+                     ClassData{prior = -2.268683541318364, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
+       ("between <time-of-day> and <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -0.7884573603642702),
+                                    ("hh:mmhh:mm", -0.7884573603642702)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -0.7884573603642702),
+                                    ("minutehour", -0.7884573603642702)],
+                               n = 9}}),
+       ("Halloween",
+        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}}),
+       ("Passover",
+        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}}),
+       ("from <month> dd-dd (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Julyinteger (numeric)integer (numeric)", -1.6094379124341003),
+                                    ("Augustordinal (digits)integer (numeric)",
+                                     -1.6094379124341003),
+                                    ("month", -0.916290731874155),
+                                    ("Augustordinal (digits)ordinal (digits)",
+                                     -1.6094379124341003)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("October",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("month (grain)",
+        Classifier{okData =
+                     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}}),
+       ("<integer> more <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)minute (grain)", -0.6931471805599453),
+                                    ("minute", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time-of-day> o'clock",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Vesak",
+        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}}),
+       ("Earth Hour",
+        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}}),
+       ("in|within|after <duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.12516314295400605,
+                               unseen = -4.6913478822291435,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -3.295836866004329),
+                                    ("<integer> more <unit-of-duration>", -3.9889840465642745),
+                                    ("three-quarters of an hour", -3.0726933146901194),
+                                    ("<integer> + '\"", -3.295836866004329),
+                                    ("number.number hours", -3.9889840465642745),
+                                    ("second", -3.58351893845611),
+                                    ("half a <time-grain>", -3.0726933146901194),
+                                    ("day", -3.295836866004329), ("year", -3.9889840465642745),
+                                    ("<integer> <unit-of-duration>", -1.6376087894007967),
+                                    ("a <unit-of-duration>", -3.0726933146901194),
+                                    ("quarter of an hour", -3.0726933146901194),
+                                    ("hour", -2.6026896854443837),
+                                    ("about|exactly <duration>", -3.9889840465642745),
+                                    ("half an hour (abbrev).", -3.58351893845611),
+                                    ("<integer> and an half hour", -3.9889840465642745),
+                                    ("minute", -1.2809338454620642)],
+                               n = 45},
+                   koData =
+                     ClassData{prior = -2.1400661634962708,
+                               unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("quarter", -2.3025850929940455), ("year", -1.791759469228055),
+                                    ("<integer> <unit-of-duration>", -1.791759469228055),
+                                    ("a <unit-of-duration>", -2.3025850929940455)],
+                               n = 6}}),
+       ("January",
+        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}}),
+       ("three-quarters of an hour",
+        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}}),
+       ("Mattu Pongal",
+        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}}),
+       ("Wednesday",
+        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}}),
+       ("half after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> + '\"",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("half <integer> (UK style hour-of-day)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("July",
+        Classifier{okData =
+                     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}}),
+       ("hour (grain)",
+        Classifier{okData =
+                     ClassData{prior = -0.48550781578170077,
+                               unseen = -2.890371757896165,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 16},
+                   koData =
+                     ClassData{prior = -0.9555114450274363,
+                               unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10}}),
+       ("Shavuot",
+        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> <duration> hence|ago",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayyear", -0.8472978603872037),
+                                    ("Tax Day<integer> <unit-of-duration>", -1.252762968495368),
+                                    ("Diwali<integer> <unit-of-duration>", -1.252762968495368)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<ordinal> quarter",
+        Classifier{okData =
+                     ClassData{prior = -0.4700036292457356, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -1.1786549963416462),
+                                    ("ordinals (first..twentieth,thirtieth,...)quarter (grain)",
+                                     -1.466337068793427),
+                                    ("quarter", -0.7731898882334817)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.9808292530117262,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.8109302162163288),
+                                    ("quarter", -0.8109302162163288)],
+                               n = 3}}),
+       ("Boss's Day",
+        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}}),
+       ("Orthodox Easter Sunday",
+        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}}),
+       ("one twenty two",
+        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}}),
+       ("May",
+        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}}),
+       ("intersect",
+        Classifier{okData =
+                     ClassData{prior = -0.4479425363752806, unseen = -6.806829360392176,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Navaratriyear (latent)", -6.11257537285704),
+                                    ("Father's Dayyear (latent)", -6.11257537285704),
+                                    ("Ramadanyear (latent)", -6.11257537285704),
+                                    ("<datetime> - <datetime> (interval)on <date>",
+                                     -4.859812404361672),
+                                    ("Military Spouse Dayyear (latent)", -6.11257537285704),
+                                    ("Bhai Doojyear (latent)", -6.11257537285704),
+                                    ("<time-of-day> - <time-of-day> (interval)on <date>",
+                                     -4.859812404361672),
+                                    ("hourday", -4.407827280618615),
+                                    ("dayhour", -3.309214991950505),
+                                    ("Martin Luther King's Dayyear (latent)", -5.707110264748875),
+                                    ("Shemini Atzeretyear (latent)", -6.11257537285704),
+                                    ("daymonth", -5.196284640982885),
+                                    ("monthday", -5.707110264748875),
+                                    ("monthyear", -4.3208159036289855),
+                                    ("Yom Ha'atzmautyear (latent)", -6.11257537285704),
+                                    ("Vijayadashamiyear (latent)", -6.11257537285704),
+                                    ("Administrative Professionals' Dayyear (latent)",
+                                     -4.726281011737149),
+                                    ("Thanksgiving Dayyear (latent)", -5.01396308418893),
+                                    ("Thai Pongalyear (latent)", -5.419428192297095),
+                                    ("Thiru Onamyear (latent)", -5.419428192297095),
+                                    ("Tuesdaythe <day-of-month> (ordinal)", -6.11257537285704),
+                                    ("from <datetime> - <datetime> (interval)July",
+                                     -6.11257537285704),
+                                    ("houryear", -5.419428192297095),
+                                    ("this|next <day-of-week>hh(:mm) - <time-of-day> am|pm",
+                                     -6.11257537285704),
+                                    ("Christmas<time-of-day> am|pm", -6.11257537285704),
+                                    ("last <day-of-week> of <time>year (latent)",
+                                     -6.11257537285704),
+                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.419428192297095),
+                                    ("<time-of-day> am|pmintersect", -4.859812404361672),
+                                    ("Earth Houryear (latent)", -6.11257537285704),
+                                    ("Octoberyear (latent)", -4.608497976080766),
+                                    ("intersect<time-of-day> am|pm", -6.11257537285704),
+                                    ("Mattu Pongalyear (latent)", -6.11257537285704),
+                                    ("Shavuotyear (latent)", -6.11257537285704),
+                                    ("Dhanterasin <named-month>|year", -6.11257537285704),
+                                    ("at <time-of-day>in|within|after <duration>",
+                                     -6.11257537285704),
+                                    ("Thursdayhh(:mm) - <time-of-day> am|pm", -6.11257537285704),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -5.707110264748875),
+                                    ("Marchyear (latent)", -6.11257537285704),
+                                    ("Sukkotyear (latent)", -5.707110264748875),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -6.11257537285704),
+                                    ("Clean Mondayyear (latent)", -5.707110264748875),
+                                    ("monthhour", -5.707110264748875),
+                                    ("todayat <time-of-day>", -6.11257537285704),
+                                    ("Thursday<time> timezone", -4.407827280618615),
+                                    ("from|since|after <time>December", -6.11257537285704),
+                                    ("Emergency Medical Services for Children Dayyear (latent)",
+                                     -6.11257537285704),
+                                    ("this <time>hh(:mm) - <time-of-day> am|pm", -6.11257537285704),
+                                    ("Palm SundaySunday", -5.707110264748875),
+                                    ("Tax Daythis|last|next <cycle>", -6.11257537285704),
+                                    ("dayday", -3.915350795520821),
+                                    ("<time> <part-of-day>at <time-of-day>", -6.11257537285704),
+                                    ("mm/ddat <time-of-day>", -6.11257537285704),
+                                    ("tonightat <time-of-day>", -6.11257537285704),
+                                    ("<time-of-day> am|pmabsorption of , after named day",
+                                     -5.419428192297095),
+                                    ("today<time-of-day> am|pm", -6.11257537285704),
+                                    ("Februarythe <day-of-month> (ordinal)", -5.707110264748875),
+                                    ("at <time-of-day><time> <part-of-day>", -6.11257537285704),
+                                    ("mm/dd<time-of-day> am|pm", -6.11257537285704),
+                                    ("hourhour", -4.859812404361672),
+                                    ("<time-of-day> am|pmon <date>", -4.097672352314775),
+                                    ("Wednesdaythis|last|next <cycle>", -6.11257537285704),
+                                    ("Lentyear (latent)", -6.11257537285704),
+                                    ("intersect<named-month> <day-of-month> (non ordinal)",
+                                     -4.608497976080766),
+                                    ("Boghiyear (latent)", -6.11257537285704),
+                                    ("dayyear", -1.8712486202862937),
+                                    ("Thursdayfrom|since|after <time>", -5.707110264748875),
+                                    ("<time-of-day> o'clockin|during the <part-of-day>",
+                                     -6.11257537285704),
+                                    ("Thursdayat <time-of-day>", -5.707110264748875),
+                                    ("Islamic New Yearyear (latent)", -5.707110264748875),
+                                    ("Laylat al-Qadryear (latent)", -5.196284640982885),
+                                    ("Chhathin <named-month>|year", -6.11257537285704),
+                                    ("Vasant Panchamiin <named-month>|year", -6.11257537285704),
+                                    ("Diwaliin <named-month>|year", -6.11257537285704),
+                                    ("Shrove Tuesdayyear (latent)", -6.11257537285704),
+                                    ("intersect by \",\", \"of\", \"from\" for year<time-of-day> am|pm",
+                                     -5.419428192297095),
+                                    ("<time-of-day> am|pmtomorrow", -5.419428192297095),
+                                    ("Yom Kippuryear (latent)", -6.11257537285704),
+                                    ("<part-of-day> of <time>year (latent)", -6.11257537285704),
+                                    ("minutehour", -5.196284640982885),
+                                    ("Kaanum Pongalyear (latent)", -5.707110264748875),
+                                    ("Maha Saptamiyear (latent)", -6.11257537285704),
+                                    ("at <time-of-day>in|during the <part-of-day>",
+                                     -5.707110264748875),
+                                    ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
+                                     -4.407827280618615),
+                                    ("for <duration> from <time>December", -6.11257537285704),
+                                    ("tomorrow<time-of-day> sharp|exactly", -6.11257537285704),
+                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
+                                     -5.196284640982885),
+                                    ("on <date><named-month> <day-of-month> (non ordinal)",
+                                     -5.707110264748875),
+                                    ("Pentecostyear (latent)", -6.11257537285704),
+                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.196284640982885),
+                                    ("Eid al-Fitryear (latent)", -6.11257537285704),
+                                    ("Mondayin|during the <part-of-day>", -6.11257537285704),
+                                    ("Raksha Bandhanyear (latent)", -6.11257537285704),
+                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.707110264748875),
+                                    ("Emancipation Dayyear (latent)", -5.419428192297095),
+                                    ("Navaratriin <named-month>|year", -6.11257537285704),
+                                    ("Ashurayear (latent)", -6.11257537285704),
+                                    ("Chinese New Yearyear (latent)", -6.11257537285704),
+                                    ("Sundayyear (latent)", -6.11257537285704),
+                                    ("Lag BaOmeryear (latent)", -6.11257537285704),
+                                    ("last weekend of <named-month>year (latent)",
+                                     -6.11257537285704),
+                                    ("Eid al-Adhayear (latent)", -5.196284640982885),
+                                    ("intersectin|during the <part-of-day>", -6.11257537285704),
+                                    ("Christmasat <time-of-day>", -6.11257537285704),
+                                    ("Passoveryear (latent)", -6.11257537285704),
+                                    ("Lazarus Saturdayyear (latent)", -6.11257537285704),
+                                    ("<day-of-month> (ordinal or number) <named-month>year (latent)",
+                                     -6.11257537285704),
+                                    ("Cyber Mondayyear (latent)", -5.707110264748875),
+                                    ("Yom HaShoahyear (latent)", -5.707110264748875),
+                                    ("Thursday<datetime> - <datetime> (interval)",
+                                     -5.707110264748875),
+                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
+                                     -6.11257537285704),
+                                    ("Thai Pongalin <named-month>|year", -6.11257537285704),
+                                    ("Septemberyear (latent)", -5.707110264748875),
+                                    ("mm/ddyear (latent)", -6.11257537285704),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -4.859812404361672),
+                                    ("Halloweenyear (latent)", -6.11257537285704),
+                                    ("<ordinal> last <cycle> of <time>year (latent)",
+                                     -5.707110264748875),
+                                    ("from <time-of-day> - <time-of-day> (interval)on <date>",
+                                     -5.419428192297095),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
+                                     -6.11257537285704),
+                                    ("at <time-of-day>intersect", -5.707110264748875),
+                                    ("Rosh Hashanahyear (latent)", -5.419428192297095),
+                                    ("Dhanterasyear (latent)", -6.11257537285704),
+                                    ("Tu BiShvatyear (latent)", -6.11257537285704),
+                                    ("Holiyear (latent)", -5.419428192297095),
+                                    ("<time-of-day> - <time-of-day> (interval)tomorrow",
+                                     -6.11257537285704),
+                                    ("Holika Dahanyear (latent)", -5.419428192297095),
+                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -6.11257537285704),
+                                    ("dayminute", -3.4735180432417816),
+                                    ("Mawlidyear (latent)", -6.11257537285704),
+                                    ("from <datetime> - <datetime> (interval)on <date>",
+                                     -5.707110264748875),
+                                    ("<datetime> - <datetime> (interval)tomorrow",
+                                     -6.11257537285704),
+                                    ("Jumu'atul-Widayear (latent)", -5.196284640982885),
+                                    ("minuteday", -2.4749892131306543),
+                                    ("absorption of , after named dayintersect", -6.11257537285704),
+                                    ("intersectyear (latent)", -6.11257537285704),
+                                    ("Orthodox Easter Sundayyear (latent)", -6.11257537285704),
+                                    ("<ordinal> <cycle> of <time>year (latent)", -6.11257537285704),
+                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -6.11257537285704),
+                                    ("Boss's Dayyear (latent)", -5.707110264748875),
+                                    ("Global Youth Service Dayyear (latent)", -6.11257537285704),
+                                    ("Tisha B'Avyear (latent)", -6.11257537285704),
+                                    ("Isra and Mi'rajyear (latent)", -5.196284640982885),
+                                    ("at <time-of-day>absorption of , after named day",
+                                     -6.11257537285704),
+                                    ("Christmasyear (latent)", -5.707110264748875),
+                                    ("Naraka Chaturdashiyear (latent)", -5.707110264748875),
+                                    ("at <time-of-day>on <date>", -5.01396308418893),
+                                    ("Emergency Medical Services Weekyear (latent)",
+                                     -6.11257537285704),
+                                    ("between <time-of-day> and <time-of-day> (interval)on <date>",
+                                     -4.5031374604229395),
+                                    ("dayweek", -6.11257537285704),
+                                    ("Easter Sundayyear (latent)", -5.419428192297095),
+                                    ("weekyear", -5.01396308418893),
+                                    ("hh:mmin|during the <part-of-day>", -5.419428192297095),
+                                    ("<cycle> after|before <time><time-of-day> am|pm",
+                                     -5.707110264748875),
+                                    ("Hanukkahyear (latent)", -5.419428192297095),
+                                    ("February<time> <part-of-day>", -6.11257537285704),
+                                    ("National Grandparents Dayyear (latent)", -6.11257537285704),
+                                    ("Tuesdayin <named-month>|year", -6.11257537285704),
+                                    ("Great Lentyear (latent)", -6.11257537285704),
+                                    ("tomorrowat <time-of-day>", -5.419428192297095),
+                                    ("Labor Dayyear (latent)", -6.11257537285704),
+                                    ("between <time> and <time>on <date>", -4.5031374604229395),
+                                    ("absorption of , after named dayintersect by \",\", \"of\", \"from\" for year",
+                                     -6.11257537285704),
+                                    ("last <cycle> of <time>year (latent)", -5.419428192297095),
+                                    ("at <time-of-day>tomorrow", -5.707110264748875),
+                                    ("tomorrow<time-of-day> am|pm", -6.11257537285704),
+                                    ("President's Dayyear (latent)", -6.11257537285704),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -6.11257537285704),
+                                    ("Diwaliyear (latent)", -6.11257537285704),
+                                    ("Black Fridayyear (latent)", -5.707110264748875),
+                                    ("the <ordinal> last <cycle> of <time>year (latent)",
+                                     -6.11257537285704),
+                                    ("in|during the <part-of-day>at <time-of-day>",
+                                     -6.11257537285704),
+                                    ("Chhathyear (latent)", -5.707110264748875),
+                                    ("Vasant Panchamiyear (latent)", -6.11257537285704),
+                                    ("Palm Sundayintersect", -6.11257537285704),
+                                    ("Tax Dayyear (latent)", -5.196284640982885),
+                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
+                                     -6.11257537285704),
+                                    ("Februaryintersect", -6.11257537285704),
+                                    ("Mother's Dayyear (latent)", -6.11257537285704),
+                                    ("Simchat Torahyear (latent)", -6.11257537285704),
+                                    ("minuteyear", -6.11257537285704)],
+                               n = 338},
+                   koData =
+                     ClassData{prior = -1.0187150038116695, unseen = -6.413458957167357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day> - <time-of-day> (interval)on <date>",
+                                     -4.802380355275797),
+                                    ("hourday", -4.802380355275797),
+                                    ("<named-month> <day-of-month> (non ordinal)July",
+                                     -5.718671087149952),
+                                    ("dayhour", -3.153721729688415),
+                                    ("Tuesdayfrom|since|after <time>", -5.718671087149952),
+                                    ("daymonth", -3.578604923653681),
+                                    ("monthday", -5.313205979041787),
+                                    ("monthyear", -4.465908118654584),
+                                    ("<time-of-day> am|pmyear (latent)", -5.313205979041787),
+                                    ("Thai Pongalyear (latent)", -5.025523906590006),
+                                    ("intersecthh:mm", -5.718671087149952),
+                                    ("from <datetime> - <datetime> (interval)July",
+                                     -5.718671087149952),
+                                    ("houryear", -4.802380355275797),
+                                    ("from <time-of-day> - <time-of-day> (interval)July",
+                                     -5.718671087149952),
+                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.025523906590006),
+                                    ("<time-of-day> am|pmintersect", -4.465908118654584),
+                                    ("until <time>on <date>", -5.025523906590006),
+                                    ("Octoberyear (latent)", -5.718671087149952),
+                                    ("July<day-of-month> (ordinal or number) <named-month>",
+                                     -5.718671087149952),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -4.465908118654584),
+                                    ("about|exactly <time-of-day>year (latent)",
+                                     -5.718671087149952),
+                                    ("absorption of , after named dayJuly", -5.313205979041787),
+                                    ("from|since|after <time>July", -5.718671087149952),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -4.802380355275797),
+                                    ("Clean Mondayyear (latent)", -5.718671087149952),
+                                    ("monthhour", -5.718671087149952),
+                                    ("hourmonth", -4.802380355275797),
+                                    ("todayat <time-of-day>", -5.718671087149952),
+                                    ("from|since|after <time>December", -5.718671087149952),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -5.718671087149952),
+                                    ("Mondayyear (latent)", -4.620058798481842),
+                                    ("dayday", -5.313205979041787),
+                                    ("mm/ddat <time-of-day>", -5.313205979041787),
+                                    ("<time-of-day> am|pmon <date>", -4.465908118654584),
+                                    ("dayyear", -2.698246201005589),
+                                    ("Thursdaymm/dd", -5.718671087149952),
+                                    ("New Year's Dayyear (latent)", -5.313205979041787),
+                                    ("Thursdayfrom|since|after <time>", -4.0139229949115265),
+                                    ("Thursdayat <time-of-day>", -4.465908118654584),
+                                    ("<integer> to|till|before <hour-of-day>September",
+                                     -5.718671087149952),
+                                    ("Aprilyear (latent)", -5.718671087149952),
+                                    ("monthminute", -5.718671087149952),
+                                    ("<time-of-day> am|pmtomorrow", -5.718671087149952),
+                                    ("Thursdayhh:mm", -4.802380355275797),
+                                    ("August<day-of-month> (ordinal or number) <named-month>",
+                                     -5.718671087149952),
+                                    ("minutemonth", -3.926911617921897),
+                                    ("week-endin <named-month>|year", -5.718671087149952),
+                                    ("Augustyear (latent)", -5.313205979041787),
+                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
+                                     -5.313205979041787),
+                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.313205979041787),
+                                    ("mm/dd<time-of-day> - <time-of-day> (interval)",
+                                     -5.313205979041787),
+                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.718671087149952),
+                                    ("Sundayyear (latent)", -5.025523906590006),
+                                    ("Christmasat <time-of-day>", -5.718671087149952),
+                                    ("from|since|after <time>year (latent)", -4.465908118654584),
+                                    ("<duration> after|before|from <time>December",
+                                     -5.718671087149952),
+                                    ("yesterday<time-of-day> am|pm", -5.718671087149952),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
+                                     -5.718671087149952),
+                                    ("mm/ddyear (latent)", -5.718671087149952),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -5.025523906590006),
+                                    ("<named-month> <day-of-month> (non ordinal)August",
+                                     -5.718671087149952),
+                                    ("at <time-of-day>intersect", -5.313205979041787),
+                                    ("hh:mmyear (latent)", -4.620058798481842),
+                                    ("Holiyear (latent)", -5.718671087149952),
+                                    ("until <time><time-of-day> am|pm", -5.718671087149952),
+                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.718671087149952),
+                                    ("dayminute", -3.192942442841696),
+                                    ("intersectSeptember", -4.214593690373678),
+                                    ("minuteday", -2.6506181520163348),
+                                    ("absorption of , after named dayintersect",
+                                     -5.718671087149952),
+                                    ("Februaryin|during the <part-of-day>", -5.718671087149952),
+                                    ("hh:mmon <date>", -3.703768066607687),
+                                    ("Saturdayyear (latent)", -5.718671087149952),
+                                    ("from|since|after <time>on <date>", -4.802380355275797),
+                                    ("absorption of , after named daySeptember",
+                                     -4.802380355275797),
+                                    ("Naraka Chaturdashiyear (latent)", -5.718671087149952),
+                                    ("on <date>September", -5.313205979041787),
+                                    ("at <time-of-day>on <date>", -5.313205979041787),
+                                    ("in <named-month>|yearyear (latent)", -5.718671087149952),
+                                    ("dayweek", -5.718671087149952),
+                                    ("Easter Sundayyear (latent)", -5.313205979041787),
+                                    ("Thursday<time-of-day> am|pm", -5.025523906590006),
+                                    ("weekyear", -5.313205979041787),
+                                    ("<named-month> <day-of-month> (non ordinal)until <time>",
+                                     -5.718671087149952),
+                                    ("intersect by \",\", \"of\", \"from\" for yearhh:mm",
+                                     -5.025523906590006),
+                                    ("Sundayfrom|since|after <time>", -5.718671087149952),
+                                    ("absorption of , after named dayFebruary", -4.802380355275797),
+                                    ("July<integer> to|till|before <hour-of-day>",
+                                     -5.718671087149952),
+                                    ("tomorrowat <time-of-day>", -5.718671087149952),
+                                    ("<integer> to|till|before <hour-of-day>July",
+                                     -5.718671087149952),
+                                    ("last <cycle> of <time>year (latent)", -5.313205979041787),
+                                    ("tomorrow<time-of-day> am|pm", -5.718671087149952),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -5.025523906590006),
+                                    ("Diwaliyear (latent)", -5.313205979041787),
+                                    ("<time-of-day> - <time-of-day> (interval)July",
+                                     -5.718671087149952),
+                                    ("Fridayyear (latent)", -5.313205979041787),
+                                    ("minuteyear", -4.465908118654584)],
+                               n = 191}}),
+       ("one eleven",
+        Classifier{okData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},
+                   koData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("after lunch/work/school",
+        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}}),
+       ("early morning",
+        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}}),
+       ("in <number> (implicit minutes)",
+        Classifier{okData =
+                     ClassData{prior = -1.2685113254635072,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.3184537311185346),
+                                    ("integer (0..19)", -1.2992829841302609)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.33024168687057687,
+                               unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.1743533871447778),
+                                    ("integer (0..19)", -1.8325814637483102)],
+                               n = 23}}),
+       ("<ordinal> <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.791759469228055),
+                                    ("ordinal (digits)quarter (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("quarteryear", -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)October",
+                                     -2.1972245773362196),
+                                    ("ordinal (digits)day (grain)this|last|next <cycle>",
+                                     -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.1972245773362196),
+                                    ("weekmonth", -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.1972245773362196)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("year (grain)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4657359027997265,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 30},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("from <datetime> - <datetime> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -1.0116009116784799,
+                               unseen = -3.6375861597263857,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -2.001480000210124),
+                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal)",
+                                     -2.917770732084279),
+                                    ("hh:mmhh:mm", -2.001480000210124),
+                                    ("dayday", -2.512305623976115),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)<day-of-month> (ordinal)",
+                                     -2.917770732084279),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.917770732084279),
+                                    ("hourhour", -2.512305623976115),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.917770732084279)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -0.45198512374305727,
+                               unseen = -3.912023005428146,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hourday", -3.1986731175506815),
+                                    ("dayhour", -2.793208009442517),
+                                    ("<day-of-month> (ordinal)time-of-day (latent)",
+                                     -3.1986731175506815),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -3.1986731175506815),
+                                    ("hh:mmtime-of-day (latent)", -2.2823823856765264),
+                                    ("minuteminute", -2.793208009442517),
+                                    ("time-of-day (latent)time-of-day (latent)",
+                                     -2.793208009442517),
+                                    ("dayday", -3.1986731175506815),
+                                    ("hourhour", -2.505525936990736),
+                                    ("dayyear", -3.1986731175506815),
+                                    ("minutehour", -2.2823823856765264),
+                                    ("hh:mmintersect", -2.793208009442517),
+                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal or number) <named-month>",
+                                     -3.1986731175506815),
+                                    ("time-of-day (latent)<time-of-day> am|pm",
+                                     -3.1986731175506815),
+                                    ("time-of-day (latent)<day-of-month> (ordinal or number) <named-month>",
+                                     -3.1986731175506815),
+                                    ("<named-month> <day-of-month> (non ordinal)time-of-day (latent)",
+                                     -3.1986731175506815)],
+                               n = 14}}),
+       ("Saturday",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.9459101490553135,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("the <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week (grain)<named-month>|<named-day> <day-of-month> (ordinal)",
+                                     -1.7346010553881064),
+                                    ("weekmonth", -1.7346010553881064),
+                                    ("week (grain)October", -1.7346010553881064),
+                                    ("week (grain)<named-month> <day-of-month> (non ordinal)",
+                                     -1.7346010553881064),
+                                    ("weekday", -1.2237754316221157)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("number.number hours",
+        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}}),
+       ("from <time-of-day> - <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -1.6094379124341003),
+                                    ("hh:mmhh:mm", -1.6094379124341003),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
+                                    ("hourhour", -2.3025850929940455),
+                                    ("hourminute", -2.3025850929940455),
+                                    ("time-of-day (latent)<time-of-day> sharp|exactly",
+                                     -2.70805020110221),
+                                    ("time-of-day (latent)hh:mm", -2.70805020110221),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.6094379124341003),
+                                    ("time-of-day (latent)time-of-day (latent)",
+                                     -2.0149030205422647),
+                                    ("hourhour", -1.791759469228055),
+                                    ("minutehour", -1.6094379124341003),
+                                    ("time-of-day (latent)<time-of-day> am|pm", -2.70805020110221)],
+                               n = 9}}),
+       ("integer 21..99",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)integer (numeric)", -0.6931471805599453),
+                                    ("integer (20..90)integer (0..19)", -0.6931471805599453)],
+                               n = 4}}),
+       ("Global Youth Service Day",
+        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}}),
+       ("Tisha B'Av",
+        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}}),
+       ("yyyy-mm-dd",
+        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}}),
+       ("year (latent)",
+        Classifier{okData =
+                     ClassData{prior = -0.13580154115906176,
+                               unseen = -5.135798437050262,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -3.614851411631109e-2),
+                                    ("intersect 2 numbers", -3.7436043538031827)],
+                               n = 165},
+                   koData =
+                     ClassData{prior = -2.063693184711697, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -1.1349799328389845),
+                                    ("negative numbers", -0.6931471805599453),
+                                    ("compose by multiplication", -1.9459101490553135)],
+                               n = 24}}),
+       ("mm/dd/yyyy",
+        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}}),
+       ("<time> for <duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -1.0296194171811581),
+                                    ("intersect<integer> <unit-of-duration>", -1.9459101490553135),
+                                    ("<day-of-month> (ordinal or number) <named-month><integer> <unit-of-duration>",
+                                     -1.540445040947149),
+                                    ("from|since|after <time><integer> <unit-of-duration>",
+                                     -1.9459101490553135)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("monthday", -1.2039728043259361),
+                                    ("December<integer> <unit-of-duration>", -1.2039728043259361)],
+                               n = 2}}),
+       ("Memorial Day",
+        Classifier{okData =
+                     ClassData{prior = -0.1823215567939546,
+                               unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 5},
+                   koData =
+                     ClassData{prior = -1.791759469228055, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("Monday",
+        Classifier{okData =
+                     ClassData{prior = -0.5108256237659907, unseen = -2.639057329615259,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
+                   koData =
+                     ClassData{prior = -0.916290731874155, unseen = -2.3025850929940455,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 8}}),
+       ("yesterday",
+        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}}),
+       ("<ordinal> quarter <year>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)year (latent)",
+                                     -0.6931471805599453),
+                                    ("quarteryear", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Lincoln's Birthday",
+        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}}),
+       ("hh:mm:ss",
+        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}}),
+       ("Emergency Medical Services for Children Day",
+        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}}),
+       ("Hanukkah",
+        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}}),
+       ("Siblings Day",
+        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> <integer>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>integer (20..90)", -1.3862943611198906),
+                                    ("hour", -0.9808292530117262),
+                                    ("at <time-of-day>integer (numeric)", -1.3862943611198906)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("about|exactly <time-of-day>integer (numeric)",
+                                     -1.0986122886681098),
+                                    ("hour", -1.0986122886681098)],
+                               n = 1}}),
+       ("nth <time> of <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.4700036292457356, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -0.9808292530117262),
+                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
+                                     -2.0794415416798357),
+                                    ("ordinals (first..twentieth,thirtieth,...)Wednesdayintersect",
+                                     -1.6739764335716716),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayOctober",
+                                     -1.6739764335716716)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.9808292530117262,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.0986122886681098),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdaySeptember",
+                                     -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)WednesdayOctober",
+                                     -1.3862943611198906)],
+                               n = 3}}),
+       ("National Grandparents Day",
+        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}}),
+       ("half a <time-grain>",
+        Classifier{okData =
+                     ClassData{prior = -0.1823215567939546,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -1.791759469228055, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1}}),
+       ("Valentine's Day",
+        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}}),
+       ("April",
+        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}}),
+       ("Maha Saptami",
+        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}}),
+       ("end of month",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("week (grain)",
+        Classifier{okData =
+                     ClassData{prior = -3.822121282019774e-2,
+                               unseen = -4.3694478524670215,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 77},
+                   koData =
+                     ClassData{prior = -3.283414346005772, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("<part-of-day> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("part of daysintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -2.3513752571634776),
+                                    ("part of daysintersect", -2.3513752571634776),
+                                    ("hourday", -0.9650808960435872),
+                                    ("part of daysthe <day-of-month> (ordinal)",
+                                     -2.3513752571634776),
+                                    ("part of daysthe <day-of-month> (number)",
+                                     -2.3513752571634776),
+                                    ("part of daysthis <time>", -2.3513752571634776),
+                                    ("part of daysChristmas", -1.9459101490553135)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("from <time> for <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.6931471805599453),
+                                    ("<day-of-month> (ordinal or number) <named-month><integer> <unit-of-duration>",
+                                     -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("six thirty six a.m.",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -1.252762968495368),
+                                    ("one twenty two", -0.8472978603872037),
+                                    ("one eleven", -1.252762968495368)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Loyalty Day",
+        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}}),
+       ("Shrove Tuesday",
+        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}}),
+       ("now",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.9459101490553135,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("<day-of-month> (ordinal or number) of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -0.13353139262452263,
+                               unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)July", -2.3513752571634776),
+                                    ("ordinals (first..twentieth,thirtieth,...)March",
+                                     -2.3513752571634776),
+                                    ("ordinal (digits)February", -2.3513752571634776),
+                                    ("integer (numeric)February", -1.9459101490553135),
+                                    ("month", -0.9650808960435872),
+                                    ("ordinal (digits)March", -2.3513752571634776),
+                                    ("integer (numeric)July", -2.3513752571634776)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -2.0794415416798357,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)February", -1.5040773967762742),
+                                    ("month", -1.5040773967762742)],
+                               n = 1}}),
+       ("this <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.6931471805599453),
+                                    ("part of days", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Kaanum Pongal",
+        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}}),
+       ("Yom Kippur",
+        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}}),
+       ("Tax Day",
+        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}}),
+       ("powers of tens",
+        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}}),
+       ("Friday",
+        Classifier{okData =
+                     ClassData{prior = -0.3677247801253174,
+                               unseen = -2.3978952727983707,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},
+                   koData =
+                     ClassData{prior = -1.1786549963416462, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("in|during the <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -8.701137698962981e-2,
+                               unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("early morning", -2.5257286443082556),
+                                    ("hour", -0.7339691750802004),
+                                    ("part of days", -0.8209805520698302)],
+                               n = 11},
+                   koData =
+                     ClassData{prior = -2.4849066497880004, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.916290731874155),
+                                    ("part of days", -0.916290731874155)],
+                               n = 1}}),
+       ("tomorrow",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 17},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("hh(:mm) - <time-of-day> am|pm",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Groundhog Day",
+        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}}),
+       ("this|last|next <cycle>",
+        Classifier{okData =
+                     ClassData{prior = -0.15234072458201878,
+                               unseen = -5.1298987149230735,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.153672065851137),
+                                    ("month (grain)", -2.8213788864092133),
+                                    ("year (grain)", -2.4159137783010487),
+                                    ("week (grain)", -1.153672065851137),
+                                    ("quarter", -3.5145260669691587), ("year", -2.4159137783010487),
+                                    ("month", -2.8213788864092133),
+                                    ("quarter (grain)", -3.5145260669691587)],
+                               n = 79},
+                   koData =
+                     ClassData{prior = -1.9568392195875037,
+                               unseen = -3.6109179126442243,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.2809338454620642),
+                                    ("week (grain)", -1.2809338454620642),
+                                    ("day", -1.9740810260220096),
+                                    ("day (grain)", -1.9740810260220096)],
+                               n = 13}}),
+       ("Mother's Day",
+        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}}),
+       ("Simchat Torah",
+        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}}),
+       ("New Year's Eve",
+        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}}),
+       ("the <ordinal> <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)year (latent)",
+                                     -0.6931471805599453),
+                                    ("quarteryear", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Raksha Bandhan",
+        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}}),
+       ("Ashura",
+        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}}),
+       ("Palm Sunday",
+        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}}),
+       ("Eid al-Adha",
+        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}}),
+       ("by <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("noon|midnight|EOD|end of day", -1.9459101490553135),
+                                    ("time-of-day (latent)", -1.9459101490553135),
+                                    ("<time-of-day> am|pm", -1.9459101490553135),
+                                    ("hh:mm", -1.9459101490553135), ("hour", -1.540445040947149),
+                                    ("minute", -1.540445040947149)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the <day-of-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.5108256237659907,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)",
+                                     -1.7047480922384253),
+                                    ("ordinal (digits)", -0.2006706954621511)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.916290731874155, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)",
+                                     -0.9808292530117262),
+                                    ("ordinal (digits)", -0.4700036292457356)],
+                               n = 6}}),
+       ("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,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Lag BaOmer",
+        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}}),
+       ("fractional number",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 17}}),
+       ("Sunday",
+        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}}),
+       ("Chinese New Year",
+        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}}),
+       ("February",
+        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}}),
+       ("Emancipation Day",
+        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}}),
+       ("minute (grain)",
+        Classifier{okData =
+                     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}}),
+       ("last|this|next <season>",
+        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}}),
+       ("the <ordinal> quarter",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
+                                    ("quarter", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
+                                    ("quarter", -0.6931471805599453)],
+                               n = 1}}),
+       ("time-of-day (latent)",
+        Classifier{okData =
+                     ClassData{prior = -0.635159922909596, unseen = -4.31748811353631,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.11441035117774422),
+                                    ("integer (0..19)", -2.3581549441488563)],
+                               n = 71},
+                   koData =
+                     ClassData{prior = -0.7547050735593787, unseen = -4.204692619390966,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -7.878087785311434e-2),
+                                    ("integer (0..19)", -3.0910424533583156),
+                                    ("integer 21..99", -3.4965075614664802)],
+                               n = 63}}),
+       ("beginning of year",
+        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}}),
+       ("last <day-of-week> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -0.916290731874155),
+                                    ("SundayMarch", -1.6094379124341003),
+                                    ("MondayMarch", -1.6094379124341003),
+                                    ("Sundayintersect", -1.6094379124341003)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.13192754304254806, unseen = -5.19295685089021,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.5483284762254965),
+                                    ("integer (0..19)year (grain)", -2.9901612285045354),
+                                    ("integer (numeric)day (grain)", -2.622436448379218),
+                                    ("integer (0..19)second (grain) ", -3.801091444720864),
+                                    ("integer (0..19)hour (grain)", -3.107944264160919),
+                                    ("second", -3.3956263366127),
+                                    ("integer (numeric)second (grain) ", -4.088773517172645),
+                                    ("integer (numeric)year (grain)", -3.2414756567854415),
+                                    ("day", -2.3541724617845388), ("year", -2.479335604738545),
+                                    ("integer (numeric)week (grain)", -3.107944264160919),
+                                    ("integer (0..19)month (grain)", -3.577947893406655),
+                                    ("hour", -2.7024791560527546), ("month", -3.2414756567854415),
+                                    ("integer (numeric)minute (grain)", -3.2414756567854415),
+                                    ("integer (0..19)minute (grain)", -3.107944264160919),
+                                    ("integer (numeric)month (grain)", -4.088773517172645),
+                                    ("minute", -2.5483284762254965),
+                                    ("integer (numeric)hour (grain)", -3.577947893406655),
+                                    ("integer (0..19)day (grain)", -3.577947893406655),
+                                    ("integer (0..19)week (grain)", -3.2414756567854415)],
+                               n = 78},
+                   koData =
+                     ClassData{prior = -2.0907410969337694, unseen = -3.828641396489095,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("quarter", -3.1135153092103742), ("hour", -1.4087672169719492),
+                                    ("integer (numeric)hour (grain)", -1.4087672169719492),
+                                    ("integer (0..19)quarter (grain)", -3.1135153092103742)],
+                               n = 11}}),
+       ("hhmm (latent)",
+        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}}),
+       ("<time-of-day> am|pm",
+        Classifier{okData =
+                     ClassData{prior = -0.2546422183735807, unseen = -5.37989735354046,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>", -3.765840495250065),
+                                    ("integer after|past <hour-of-day>", -3.9889840465642745),
+                                    ("at <time-of-day>", -2.1564025828159643),
+                                    ("<time-of-day> o'clock", -4.276666119016055),
+                                    ("half after|past <hour-of-day>", -4.276666119016055),
+                                    ("time-of-day (latent)", -1.7117167615545186),
+                                    ("hhmm (latent)", -4.68213122712422),
+                                    ("hh:mm", -2.330755969960742),
+                                    ("quarter after|past <hour-of-day>", -4.68213122712422),
+                                    ("until <time>", -3.9889840465642745),
+                                    ("about|exactly <time-of-day>", -4.68213122712422),
+                                    ("hour", -1.1856236656577395),
+                                    ("<time-of-day> sharp|exactly", -4.68213122712422),
+                                    ("minute", -1.791759469228055)],
+                               n = 100},
+                   koData =
+                     ClassData{prior = -1.492516574375198, unseen = -4.31748811353631,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> to|till|before <hour-of-day>", -3.20545280453606),
+                                    ("from|since|after <time>", -3.20545280453606),
+                                    ("<hour-of-day> <integer>", -3.6109179126442243),
+                                    ("time-of-day (latent)", -1.085189268335969),
+                                    ("hour", -1.0459685551826876), ("minute", -2.6946271807700692)],
+                               n = 29}}),
+       ("Yom Ha'atzmaut",
+        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}}),
+       ("from <day-of-month> (ordinal or number) to <day-of-month> (ordinal or number) <named-month> (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)ordinal (digits)July", -1.252762968495368),
+                                    ("integer (numeric)integer (numeric)July", -1.252762968495368),
+                                    ("month", -0.8472978603872037)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Thiru Onam",
+        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}}),
+       ("Thai Pongal",
+        Classifier{okData =
+                     ClassData{prior = -0.5596157879354228, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
+                   koData =
+                     ClassData{prior = -0.8472978603872037,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Vijayadashami",
+        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}}),
+       ("Administrative Professionals' Day",
+        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}}),
+       ("Thanksgiving Day",
+        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}}),
+       ("part of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("a <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.5306282510621704,
+                               unseen = -3.5553480614894135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.1400661634962708),
+                                    ("year (grain)", -2.4277482359480516),
+                                    ("second", -2.833213344056216),
+                                    ("week (grain)", -2.1400661634962708),
+                                    ("day", -2.1400661634962708),
+                                    ("minute (grain)", -2.833213344056216),
+                                    ("year", -2.4277482359480516),
+                                    ("second (grain) ", -2.833213344056216),
+                                    ("minute", -2.833213344056216),
+                                    ("day (grain)", -2.1400661634962708)],
+                               n = 10},
+                   koData =
+                     ClassData{prior = -0.8873031950009028, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -1.7227665977411035),
+                                    ("quarter", -1.9459101490553135), ("hour", -1.7227665977411035),
+                                    ("quarter (grain)", -1.9459101490553135)],
+                               n = 7}}),
+       ("at the beginning|end of <year>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year (latent)", -0.6931471805599453),
+                                    ("year", -0.6931471805599453)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Dhanteras",
+        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}}),
+       ("Tu BiShvat",
+        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}}),
+       ("Whit Monday",
+        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}}),
+       ("hh:mm",
+        Classifier{okData =
+                     ClassData{prior = -5.6352936551131744e-2,
+                               unseen = -4.2626798770413155,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 69},
+                   koData =
+                     ClassData{prior = -2.9041650800285006, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("Holi",
+        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}}),
+       ("Rosh Hashanah",
+        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}}),
+       ("<integer> <named-day> ago|back",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)Thursday", -0.6931471805599453),
+                                    ("day", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Holika Dahan",
+        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}}),
+       ("quarter of an hour",
+        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}}),
+       ("second (grain) ",
+        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}}),
+       ("ordinals (first..twentieth,thirtieth,...)",
+        Classifier{okData =
+                     ClassData{prior = -5.406722127027582e-2,
+                               unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18},
+                   koData =
+                     ClassData{prior = -2.9444389791664407,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("Mawlid",
+        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}}),
+       ("Jumu'atul-Wida",
+        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}}),
+       ("quarter after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("until <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.1786549963416462, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year (latent)", -2.159484249353372),
+                                    ("time-of-day (latent)", -2.5649493574615367),
+                                    ("year", -2.159484249353372),
+                                    ("<time-of-day> am|pm", -1.8718021769015913),
+                                    ("hh:mm", -2.159484249353372), ("hour", -2.159484249353372),
+                                    ("minute", -1.6486586255873816)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -0.3677247801253174,
+                               unseen = -3.8501476017100584,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersect", -2.2192034840549946),
+                                    ("yesterday", -2.7300291078209855),
+                                    ("day", -2.7300291078209855),
+                                    ("time-of-day (latent)", -1.6314168191528755),
+                                    ("hh:mm", -2.2192034840549946), ("hour", -1.5260563034950494),
+                                    ("minute", -1.749199854809259)],
+                               n = 18}}),
+       ("the <cycle> after|before <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)tomorrow", -1.252762968495368),
+                                    ("dayday", -0.8472978603872037),
+                                    ("day (grain)yesterday", -1.252762968495368)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("about|exactly <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -3.6109179126442243,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.791759469228055),
+                                    ("hh(:mm) - <time-of-day> am|pm", -2.890371757896165),
+                                    ("this|last|next <cycle>", -1.791759469228055),
+                                    ("day", -2.4849066497880004),
+                                    ("time-of-day (latent)", -2.890371757896165),
+                                    ("hhmm (latent)", -2.4849066497880004),
+                                    ("<time-of-day> am|pm", -2.890371757896165),
+                                    ("hour", -2.1972245773362196),
+                                    ("next <time>", -2.890371757896165),
+                                    ("this|next <day-of-week>", -2.890371757896165),
+                                    ("minute", -2.4849066497880004)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -1.9459101490553135, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("mm/dd", -2.0794415416798357), ("day", -2.0794415416798357),
+                                    ("time-of-day (latent)", -2.0794415416798357),
+                                    ("hour", -2.0794415416798357)],
+                               n = 2}}),
+       ("Sukkot",
+        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> in <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("monthyear", -1.540445040947149),
+                                    ("Marcha <unit-of-duration>", -1.9459101490553135),
+                                    ("March<integer> <unit-of-duration>", -1.9459101490553135),
+                                    ("Vijayadashami<integer> <unit-of-duration>",
+                                     -1.9459101490553135),
+                                    ("dayyear", -1.540445040947149),
+                                    ("Tax Day<integer> <unit-of-duration>", -1.9459101490553135)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("World Vegan Day",
+        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}}),
+       ("intersect by \",\", \"of\", \"from\", \"'s\"",
+        Classifier{okData =
+                     ClassData{prior = -0.5198754592859085, unseen = -4.990432586778736,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Wednesday<named-month> <day-of-month> (non ordinal)",
+                                     -4.290459441148391),
+                                    ("dayhour", -3.884994333040227),
+                                    ("daymonth", -3.0376964726530233),
+                                    ("<named-month> <day-of-month> (non ordinal)Friday",
+                                     -4.290459441148391),
+                                    ("Friday<named-month> <day-of-month> (non ordinal)",
+                                     -3.597312260588446),
+                                    ("Wednesdayintersect", -4.290459441148391),
+                                    ("Labor Daythis|last|next <cycle>", -4.290459441148391),
+                                    ("Black Fridaythis|last|next <cycle>", -4.290459441148391),
+                                    ("<part-of-day> of <time>February", -4.290459441148391),
+                                    ("Saturday<time-of-day> am|pm", -4.290459441148391),
+                                    ("Martin Luther King's Daythis|last|next <cycle>",
+                                     -3.884994333040227),
+                                    ("on <date><time-of-day> am|pm", -4.290459441148391),
+                                    ("hourmonth", -4.290459441148391),
+                                    ("Fridayintersect by \",\", \"of\", \"from\" for year",
+                                     -4.290459441148391),
+                                    ("dayday", -2.4186572642467996),
+                                    ("the <day-of-month> (ordinal)February", -3.884994333040227),
+                                    ("WednesdayOctober", -4.290459441148391),
+                                    ("Wednesdaythis|last|next <cycle>", -3.884994333040227),
+                                    ("intersect<named-month> <day-of-month> (non ordinal)",
+                                     -3.3741687092742363),
+                                    ("dayyear", -3.0376964726530233),
+                                    ("Saturday<named-month> <day-of-month> (non ordinal)",
+                                     -4.290459441148391),
+                                    ("Thursdayhh:mm", -3.884994333040227),
+                                    ("Thanksgiving Daythis|last|next <cycle>", -4.290459441148391),
+                                    ("Memorial Daythis|last|next <cycle>", -4.290459441148391),
+                                    ("on <date><named-month> <day-of-month> (non ordinal)",
+                                     -3.884994333040227),
+                                    ("TuesdayOctober", -4.290459441148391),
+                                    ("the <day-of-month> (ordinal)March", -4.290459441148391),
+                                    ("Mondaythis|last|next <cycle>", -4.290459441148391),
+                                    ("Fridayintersect", -4.290459441148391),
+                                    ("Thursday<datetime> - <datetime> (interval)",
+                                     -3.884994333040227),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -3.884994333040227),
+                                    ("Tuesdaythis|last|next <cycle>", -4.290459441148391),
+                                    ("Sunday<named-month> <day-of-month> (non ordinal)",
+                                     -4.290459441148391),
+                                    ("dayminute", -2.9041650800285006),
+                                    ("minuteday", -3.3741687092742363),
+                                    ("this|last|next <cycle>Sunday", -4.290459441148391),
+                                    ("Sundaythis|last|next <cycle>", -4.290459441148391),
+                                    ("weekday", -4.290459441148391),
+                                    ("dayweek", -3.1918471524802814),
+                                    ("Monday<named-month> <day-of-month> (non ordinal)",
+                                     -3.884994333040227)],
+                               n = 44},
+                   koData =
+                     ClassData{prior = -0.9028677115420143, unseen = -4.77912349311153,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week-endJuly", -4.07753744390572),
+                                    ("week-endOctober", -3.3843902633457743),
+                                    ("daymonth", -1.8803128665695),
+                                    ("TuesdaySeptember", -4.07753744390572),
+                                    ("Wednesdayintersect", -4.07753744390572),
+                                    ("hourmonth", -2.9789251552376097),
+                                    ("Fridaythis|last|next <cycle>", -4.07753744390572),
+                                    ("SundayFebruary", -4.07753744390572),
+                                    ("WednesdayOctober", -4.07753744390572),
+                                    ("week-endintersect", -4.07753744390572),
+                                    ("dayyear", -4.07753744390572),
+                                    ("FridayJuly", -3.672072335797555),
+                                    ("FridaySeptember", -4.07753744390572),
+                                    ("WednesdayFebruary", -4.07753744390572),
+                                    ("minutemonth", -3.1612467120315646),
+                                    ("SundayMarch", -4.07753744390572),
+                                    ("MondayFebruary", -3.672072335797555),
+                                    ("Fridayintersect", -4.07753744390572),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -3.672072335797555),
+                                    ("dayminute", -3.3843902633457743),
+                                    ("SaturdaySeptember", -4.07753744390572),
+                                    ("intersectSeptember", -3.1612467120315646),
+                                    ("MondayMarch", -4.07753744390572),
+                                    ("on <date>September", -3.672072335797555),
+                                    ("Tuesdayintersect", -4.07753744390572),
+                                    ("Sundayintersect", -4.07753744390572)],
+                               n = 30}}),
+       ("last <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.4595323293784402,
+                               unseen = -3.6635616461296463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Father's Day", -2.9444389791664407),
+                                    ("Martin Luther King's Day", -2.9444389791664407),
+                                    ("Cyber Monday", -2.9444389791664407),
+                                    ("Memorial Day", -2.9444389791664407),
+                                    ("Mother's Day", -2.9444389791664407),
+                                    ("day", -1.1526795099383855), ("Sunday", -2.9444389791664407),
+                                    ("Chinese New Year", -2.538973871058276),
+                                    ("Thanksgiving Day", -2.9444389791664407),
+                                    ("Easter Sunday", -2.9444389791664407),
+                                    ("hour", -2.9444389791664407), ("Tuesday", -2.9444389791664407),
+                                    ("week-end", -2.9444389791664407)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -0.9985288301111273, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Monday", -2.639057329615259), ("day", -2.2335922215070942),
+                                    ("Sunday", -2.639057329615259), ("hour", -1.540445040947149),
+                                    ("week-end", -1.540445040947149)],
+                               n = 7}}),
+       ("March",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.044522437723423,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 19},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<named-month>|<named-day> <day-of-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.2231435513142097, unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Octoberordinal (digits)", -2.120263536200091),
+                                    ("Thursdayordinal (digits)", -2.5257286443082556),
+                                    ("day", -2.120263536200091),
+                                    ("Augustordinal (digits)", -2.5257286443082556),
+                                    ("Marchordinals (first..twentieth,thirtieth,...)",
+                                     -2.120263536200091),
+                                    ("Tuesdayordinal (digits)", -2.5257286443082556),
+                                    ("month", -1.2729656758128873),
+                                    ("Marchordinal (digits)", -2.5257286443082556)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -1.6094379124341003, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>ordinal (digits)",
+                                     -1.8718021769015913),
+                                    ("Augustordinal (digits)", -1.8718021769015913),
+                                    ("month", -1.466337068793427)],
+                               n = 2}}),
+       ("Labor Day weekend",
+        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}}),
+       ("Clean Monday",
+        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-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("ordinal (digits)", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Emergency Medical Services Week",
+        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}}),
+       ("Veterans Day",
+        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}}),
+       ("Easter Sunday",
+        Classifier{okData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
+       ("Christmas",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("mm.dd.yyyy",
+        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}}),
+       ("Isra and Mi'raj",
+        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}}),
+       ("<duration> after|before|from <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.3184537311185346,
+                               unseen = -3.5263605246161616,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("a <unit-of-duration>now", -2.803360380906535),
+                                    ("a <unit-of-duration>Christmas", -2.803360380906535),
+                                    ("dayday", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>today", -2.803360380906535),
+                                    ("daysecond", -2.803360380906535),
+                                    ("a <unit-of-duration>right now", -2.803360380906535),
+                                    ("minutenograin", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>Christmas", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>Easter Sunday",
+                                     -2.803360380906535),
+                                    ("secondnograin", -2.803360380906535),
+                                    ("yearday", -2.1102132003465894),
+                                    ("daynograin", -2.803360380906535),
+                                    ("<integer> <unit-of-duration>now", -2.3978952727983707)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -1.2992829841302609,
+                               unseen = -3.1780538303479458,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -2.4423470353692043),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal)",
+                                     -2.4423470353692043),
+                                    ("dayday", -2.03688192726104),
+                                    ("<integer> <unit-of-duration>time-of-day (latent)",
+                                     -2.4423470353692043),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
+                                     -2.4423470353692043)],
+                               n = 3}}),
+       ("<day-of-month> (ordinal or number) of <month>",
+        Classifier{okData =
+                     ClassData{prior = -8.004270767353637e-2,
+                               unseen = -3.5263605246161616,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)July", -2.803360380906535),
+                                    ("ordinals (first..twentieth,thirtieth,...)March",
+                                     -2.803360380906535),
+                                    ("ordinal (digits)this|last|next <cycle>", -2.1102132003465894),
+                                    ("integer (numeric)this|last|next <cycle>",
+                                     -2.3978952727983707),
+                                    ("ordinal (digits)February", -2.803360380906535),
+                                    ("integer (numeric)February", -2.3978952727983707),
+                                    ("month", -0.9315582040049435),
+                                    ("ordinal (digits)March", -2.803360380906535),
+                                    ("integer (numeric)July", -2.803360380906535)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -2.5649493574615367,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)February", -1.7047480922384253),
+                                    ("month", -1.7047480922384253)],
+                               n = 1}}),
+       ("Independence Day",
+        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}}),
+       ("decimal number",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Naraka Chaturdashi",
+        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}}),
+       ("beginning of month",
+        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}}),
+       ("next <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.6888794541139363,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Martin Luther King's Day", -2.9704144655697013),
+                                    ("Halloween", -2.9704144655697013),
+                                    ("Wednesday", -2.9704144655697013),
+                                    ("Boss's Day", -2.9704144655697013),
+                                    ("Memorial Day", -2.9704144655697013),
+                                    ("Monday", -2.9704144655697013),
+                                    ("Tax Day", -2.9704144655697013),
+                                    ("Mother's Day", -2.9704144655697013),
+                                    ("day", -1.0986122886681098),
+                                    ("Thanksgiving Day", -2.9704144655697013),
+                                    ("March", -2.9704144655697013), ("month", -2.9704144655697013),
+                                    ("Tuesday", -2.277267285009756)],
+                               n = 13},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.639057329615259,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time-of-day> sharp|exactly",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>", -2.1400661634962708),
+                                    ("time-of-day (latent)", -2.1400661634962708),
+                                    ("hhmm (latent)", -2.1400661634962708),
+                                    ("<time-of-day> am|pm", -2.1400661634962708),
+                                    ("hh:mm", -2.1400661634962708), ("hour", -1.7346010553881064),
+                                    ("minute", -1.4469189829363254)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("in <named-month>|year",
+        Classifier{okData =
+                     ClassData{prior = -0.2719337154836418,
+                               unseen = -3.6635616461296463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<year> (bc|ad)", -1.845826690498331),
+                                    ("October", -2.9444389791664407),
+                                    ("year (latent)", -1.3350010667323402),
+                                    ("year", -0.9295359586241757), ("March", -2.9444389791664407),
+                                    ("month", -2.538973871058276)],
+                               n = 16},
+                   koData =
+                     ClassData{prior = -1.4350845252893227, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("October", -1.6739764335716716),
+                                    ("year (latent)", -1.3862943611198906),
+                                    ("year", -1.3862943611198906), ("month", -1.6739764335716716)],
+                               n = 5}}),
+       ("Islamic New Year",
+        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}}),
+       ("Lent",
+        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}}),
+       ("negative numbers",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -3.332204510175204,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -7.696104113612832e-2),
+                                    ("integer (0..19)", -2.6026896854443837)],
+                               n = 25}}),
+       ("about|exactly <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("half a <time-grain>", -0.6931471805599453),
+                                    ("minute", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time> before last|after next",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Wednesday", -1.8718021769015913),
+                                    ("Friday", -1.466337068793427), ("day", -1.1786549963416462),
+                                    ("March", -1.8718021769015913), ("month", -1.8718021769015913)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("by the end of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("this|last|next <cycle>", -0.6931471805599453),
+                                    ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("half an hour (abbrev).",
+        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}}),
+       ("hhmm (military) am|pm",
+        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 = -0.5596157879354228, unseen = -4.127134385045092,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersecthh:mm", -3.012261575505202),
+                                    ("from|since|after <time>hh:mm", -2.501435951739211),
+                                    ("minuteminute", -1.2776605201170952),
+                                    ("hh:mmhh:mm", -1.9136492868370918),
+                                    ("dayday", -3.012261575505202),
+                                    ("hourhour", -3.012261575505202),
+                                    ("<named-month> <day-of-month> (non ordinal)<named-month> <day-of-month> (non ordinal)",
+                                     -3.012261575505202),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
+                                     -3.012261575505202),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -3.012261575505202)],
+                               n = 20},
+                   koData =
+                     ClassData{prior = -0.8472978603872037, unseen = -3.951243718581427,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hourday", -3.2386784521643803),
+                                    ("<named-month> <day-of-month> (non ordinal)July",
+                                     -3.2386784521643803),
+                                    ("daymonth", -2.833213344056216),
+                                    ("<time-of-day> am|pmintersect", -3.2386784521643803),
+                                    ("hh:mm<time-of-day> am|pm", -2.833213344056216),
+                                    ("minuteminute", -1.9859154836690123),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.2386784521643803),
+                                    ("dayday", -3.2386784521643803),
+                                    ("from|since|after <time><day-of-month> (ordinal or number) <named-month>",
+                                     -2.833213344056216),
+                                    ("hourhour", -2.5455312716044354),
+                                    ("minutehour", -2.833213344056216),
+                                    ("hh:mmintersect", -2.322387720290225),
+                                    ("<named-month> <day-of-month> (non ordinal)August",
+                                     -3.2386784521643803),
+                                    ("about|exactly <time-of-day><time-of-day> am|pm",
+                                     -3.2386784521643803),
+                                    ("from|since|after <time>intersect", -2.833213344056216)],
+                               n = 15}}),
+       ("Tuesday",
+        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}}),
+       ("New Year's Day",
+        Classifier{okData =
+                     ClassData{prior = -1.6094379124341003,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                   koData =
+                     ClassData{prior = -0.2231435513142097,
+                               unseen = -2.3025850929940455,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 8}}),
+       ("fortnight",
+        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}}),
+       ("Memorial Day weekend",
+        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}}),
+       ("<integer> and an half hour",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Laylat al-Qadr",
+        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}}),
+       ("Boghi",
+        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}}),
+       ("at the beginning|end of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -0.2231435513142097,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("January", -1.3862943611198906),
+                                    ("April", -1.3862943611198906), ("month", -0.8754687373538999)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -1.6094379124341003,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("October", -1.0986122886681098),
+                                    ("month", -1.0986122886681098)],
+                               n = 1}}),
+       ("<time-of-day> - <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -1.0296194171811581, unseen = -4.110873864173311,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>hh:mm", -2.4849066497880004),
+                                    ("minuteminute", -1.529395204760564),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.4011973816621555),
+                                    ("hh:mmhh:mm", -1.8971199848858813),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
+                                    ("hourhour", -1.8971199848858813),
+                                    ("from|since|after <time>time-of-day (latent)",
+                                     -3.4011973816621555),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
+                               n = 20},
+                   koData =
+                     ClassData{prior = -0.4418327522790392, unseen = -4.532599493153256,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("about|exactly <time-of-day>time-of-day (latent)",
+                                     -3.828641396489095),
+                                    ("until <time>time-of-day (latent)", -2.575878427993727),
+                                    ("hh:mmtime-of-day (latent)", -2.12389330425067),
+                                    ("hh:mm<time-of-day> am|pm", -3.4231762883809305),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.828641396489095),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -3.828641396489095),
+                                    ("at <time-of-day><time-of-day> am|pm", -3.828641396489095),
+                                    ("hourhour", -1.6314168191528755),
+                                    ("from|since|after <time><integer> to|till|before <hour-of-day>",
+                                     -3.828641396489095),
+                                    ("hourminute", -3.828641396489095),
+                                    ("minutehour", -1.5773495978825998),
+                                    ("until <time><time-of-day> am|pm", -3.4231762883809305),
+                                    ("about|exactly <time-of-day><time-of-day> am|pm",
+                                     -3.828641396489095),
+                                    ("from|since|after <time>time-of-day (latent)",
+                                     -2.575878427993727),
+                                    ("at <time-of-day>time-of-day (latent)", -3.4231762883809305),
+                                    ("<integer> to|till|before <hour-of-day>time-of-day (latent)",
+                                     -3.4231762883809305)],
+                               n = 36}}),
+       ("military spelled out numbers am|pm",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods =
+                                 HashMap.fromList [("integer (0..19)integer (20..90)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("winter",
+        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}}),
+       ("nth <time> after <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.916290731874155),
+                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
+                                     -0.916290731874155)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.916290731874155),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayChristmas",
+                                     -0.916290731874155)],
+                               n = 1}}),
+       ("<named-month> <day-of-month> (non ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.42121346507630353,
+                               unseen = -3.951243718581427,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Augustinteger (numeric)", -2.5455312716044354),
+                                    ("Marchinteger (numeric)", -2.833213344056216),
+                                    ("Aprilinteger (numeric)", -3.2386784521643803),
+                                    ("month", -0.8407831793660099),
+                                    ("Februaryinteger (numeric)", -1.9859154836690123),
+                                    ("Septemberinteger (numeric)", -2.833213344056216),
+                                    ("Octoberinteger (numeric)", -2.833213344056216),
+                                    ("Julyinteger (numeric)", -2.1400661634962708)],
+                               n = 21},
+                   koData =
+                     ClassData{prior = -1.067840630001356, unseen = -3.4657359027997265,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Augustinteger (numeric)", -2.3353749158170367),
+                                    ("Marchinteger (numeric)", -2.740840023925201),
+                                    ("Aprilinteger (numeric)", -2.740840023925201),
+                                    ("month", -0.9490805546971459),
+                                    ("from|since|after <time>integer (numeric)",
+                                     -2.3353749158170367),
+                                    ("Julyinteger (numeric)", -1.6422277352570913)],
+                               n = 11}}),
+       ("President's Day",
+        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}}),
+       ("Diwali",
+        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}}),
+       ("last night",
+        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}}),
+       ("this|next <day-of-week>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Thursday", -2.2512917986064953),
+                                    ("Wednesday", -2.2512917986064953),
+                                    ("Monday", -1.845826690498331), ("day", -0.8649974374866046),
+                                    ("Tuesday", -1.55814461804655)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("ordinal (digits)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.784189633918261,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 42},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("quarter (grain)",
+        Classifier{okData =
+                     ClassData{prior = -0.2876820724517809, unseen = -2.639057329615259,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
+                   koData =
+                     ClassData{prior = -1.3862943611198906, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.916290731874155, unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)October", -1.9924301646902063),
+                                    ("daymonth", -1.4816045409242156),
+                                    ("day (grain)intersect", -1.9924301646902063),
+                                    ("weekmonth", -1.9924301646902063),
+                                    ("week (grain)intersect", -2.3978952727983707),
+                                    ("week (grain)September", -2.3978952727983707)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -0.5108256237659907, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -2.2335922215070942),
+                                    ("day (grain)May", -2.2335922215070942),
+                                    ("week (grain)year (latent)", -1.9459101490553135),
+                                    ("weekmonth", -1.7227665977411035),
+                                    ("week (grain)October", -2.2335922215070942),
+                                    ("weekyear", -1.9459101490553135),
+                                    ("week (grain)intersect", -2.2335922215070942)],
+                               n = 9}}),
+       ("Chhath",
+        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}}),
+       ("Vasant Panchami",
+        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-month>(ordinal) <named-month> year",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)April", -0.6931471805599453),
+                                    ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the <ordinal> last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)week (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("daymonth", -2.1972245773362196),
+                                    ("ordinal (digits)day (grain)May", -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.1972245773362196),
+                                    ("weekmonth", -1.791759469228055),
+                                    ("ordinal (digits)week (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("weekyear", -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.1972245773362196)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Black Friday",
+        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}}),
+       ("Labor Day",
+        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}}),
+       ("week-end",
+        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}}),
+       ("Great Lent",
+        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}}),
+       ("Maundy Thursday",
+        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 (grain)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 29},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("right now",
+        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}}),
+       ("for <duration> from <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> <unit-of-duration><day-of-month> (ordinal)",
+                                     -1.5040773967762742),
+                                    ("dayday", -1.0986122886681098),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
+                                     -1.5040773967762742)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -1.252762968495368),
+                                    ("<integer> <unit-of-duration>time-of-day (latent)",
+                                     -1.252762968495368)],
+                               n = 1}}),
+       ("compose by multiplication",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList [("integer (0..19)powers of tens", 0.0)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("end of year",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("between <time> and <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -3.1780538303479458,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -0.832909122935104),
+                                    ("hh:mmhh:mm", -0.832909122935104)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -3.7376696182833684,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.410986973710262),
+                                    ("minuteminute", -1.410986973710262),
+                                    ("minutehour", -1.410986973710262),
+                                    ("hh:mmintersect", -1.410986973710262)],
+                               n = 18}}),
+       ("<month> dd-dd (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4657359027997265,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>integer (numeric)integer (numeric)",
+                                     -2.740840023925201),
+                                    ("from|since|after <time>ordinal (digits)ordinal (digits)",
+                                     -2.740840023925201),
+                                    ("Julyinteger (numeric)integer (numeric)", -1.6422277352570913),
+                                    ("Augustordinal (digits)integer (numeric)",
+                                     -2.3353749158170367),
+                                    ("from|since|after <time>ordinal (digits)integer (numeric)",
+                                     -2.740840023925201),
+                                    ("month", -0.8690378470236094),
+                                    ("Augustordinal (digits)ordinal (digits)",
+                                     -2.3353749158170367)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("intersect by \",\", \"of\", \"from\" for year",
+        Classifier{okData =
+                     ClassData{prior = -8.701137698962981e-2,
+                               unseen = -3.5263605246161616,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Labor Daythis|last|next <cycle>", -2.803360380906535),
+                                    ("Administrative Professionals' Dayyear (latent)",
+                                     -2.803360380906535),
+                                    ("Black Fridaythis|last|next <cycle>", -2.803360380906535),
+                                    ("Martin Luther King's Daythis|last|next <cycle>",
+                                     -2.3978952727983707),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -2.803360380906535),
+                                    ("dayyear", -1.0116009116784799),
+                                    ("Thanksgiving Daythis|last|next <cycle>", -2.803360380906535),
+                                    ("Memorial Daythis|last|next <cycle>", -2.803360380906535),
+                                    ("intersectyear (latent)", -2.803360380906535),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -2.3978952727983707)],
+                               n = 11},
+                   koData =
+                     ClassData{prior = -2.4849066497880004, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Fridaythis|last|next <cycle>", -1.8718021769015913),
+                                    ("dayyear", -1.8718021769015913)],
+                               n = 1}}),
+       ("part of days",
+        Classifier{okData =
+                     ClassData{prior = -6.899287148695143e-2,
+                               unseen = -3.4011973816621555,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 28},
+                   koData =
+                     ClassData{prior = -2.70805020110221, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
        ("at the beginning|end of <week>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.330733340286331,
diff --git a/Duckling/Ranking/Classifiers/EN_XX.hs b/Duckling/Ranking/Classifiers/EN_XX.hs
--- a/Duckling/Ranking/Classifiers/EN_XX.hs
+++ b/Duckling/Ranking/Classifiers/EN_XX.hs
@@ -60,2888 +60,3093 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("Thursday",
         Classifier{okData =
-                     ClassData{prior = -9.53101798043249e-2,
-                               unseen = -3.4657359027997265,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 30},
-                   koData =
-                     ClassData{prior = -2.3978952727983707,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("integer (numeric)",
-        Classifier{okData =
-                     ClassData{prior = -0.6231370149872965, unseen = -5.645446897643238,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 281},
-                   koData =
-                     ClassData{prior = -0.7684302409804936,
-                               unseen = -5.5012582105447265,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 243}}),
-       ("<duration> hence|ago",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -3.784189633918261,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.563975538357343), ("day", -1.8152899666382492),
-                                    ("year", -2.662587827025453),
-                                    ("<integer> <unit-of-duration>", -1.0531499145913523),
-                                    ("a <unit-of-duration>", -2.662587827025453),
-                                    ("month", -2.662587827025453),
-                                    ("fortnight", -2.662587827025453)],
-                               n = 18},
-                   koData =
-                     ClassData{prior = -1.9459101490553135, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("year", -1.466337068793427),
-                                    ("<integer> <unit-of-duration>", -1.1786549963416462),
-                                    ("month", -1.8718021769015913)],
-                               n = 3}}),
-       ("noon|midnight|EOD|end of day",
-        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}}),
-       ("quarter to|till|before <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("noon|midnight|EOD|end of day", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<cycle> after|before <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)tomorrow", -1.6739764335716716),
-                                    ("dayday", -1.1631508098056809),
-                                    ("day (grain)yesterday", -1.6739764335716716)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -1.6739764335716716),
-                                    ("year (grain)Christmas", -2.0794415416798357),
-                                    ("dayday", -2.0794415416798357),
-                                    ("day (grain)intersect", -1.6739764335716716),
-                                    ("day (grain)Easter Sunday", -2.0794415416798357),
-                                    ("yearday", -2.0794415416798357)],
-                               n = 4}}),
-       ("Easter Monday",
-        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}}),
-       ("Navaratri",
-        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}}),
-       ("Martin Luther King's Day",
-        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}}),
-       ("integer (20..90)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Shemini Atzeret",
-        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}}),
-       ("Ramadan",
-        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}}),
-       ("Lazarus Saturday",
-        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}}),
-       ("intersect 2 numbers",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("compose by multiplicationinteger (0..19)",
-                                     -0.2231435513142097)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("powers of tensinteger (0..19)", -0.2231435513142097)],
-                               n = 3}}),
-       ("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,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.8109302162163288),
-                                    ("integer (numeric)time-of-day (latent)", -1.0986122886681098),
-                                    ("integer (20..90)time-of-day (latent)", -1.5040773967762742)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Yom HaShoah",
-        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-month> (ordinal or number) <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -1.3862943611198906, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)December", -2.1400661634962708),
-                                    ("ordinal (digits)February", -2.1400661634962708),
-                                    ("integer (numeric)April", -2.1400661634962708),
-                                    ("month", -1.4469189829363254)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -3.4011973816621555,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)October", -2.6741486494265287),
-                                    ("ordinal (digits)July", -2.6741486494265287),
-                                    ("integer (numeric)September", -2.268683541318364),
-                                    ("ordinal (digits)August", -2.6741486494265287),
-                                    ("integer (numeric)August", -2.6741486494265287),
-                                    ("ordinal (digits)April", -2.6741486494265287),
-                                    ("month", -1.0647107369924282),
-                                    ("integer (numeric)July", -2.268683541318364)],
-                               n = 9}}),
-       ("<time> <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -9.237332013101517e-2,
-                               unseen = -4.48863636973214,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("dayhour", -1.4816045409242156),
-                                    ("Mondayearly morning", -3.378724525810097),
-                                    ("time-of-day (latent)tonight", -3.378724525810097),
-                                    ("hourhour", -2.3978952727983707),
-                                    ("<time-of-day> o'clockin|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("todaypart of days", -3.784189633918261),
-                                    ("minutehour", -2.6855773452501515),
-                                    ("at <time-of-day>in|during the <part-of-day>",
-                                     -3.378724525810097),
-                                    ("time-of-day (latent)this <part-of-day>", -3.784189633918261),
-                                    ("Mondayin|during the <part-of-day>", -3.784189633918261),
-                                    ("intersectpart of days", -3.784189633918261),
-                                    ("intersectin|during the <part-of-day>", -3.784189633918261),
-                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("tomorrowpart of days", -2.3978952727983707),
-                                    ("hh:mmin|during the <part-of-day>", -3.0910424533583156),
-                                    ("time-of-day (latent)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("hhmm (latent)in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("yesterdaypart of days", -3.378724525810097),
-                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
-                                     -3.784189633918261),
-                                    ("Mondaypart of days", -3.784189633918261)],
-                               n = 31},
-                   koData =
-                     ClassData{prior = -2.4277482359480516,
-                               unseen = -3.4965075614664802,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("yearhour", -2.772588722239781),
-                                    ("monthhour", -2.772588722239781),
-                                    ("hourhour", -2.772588722239781),
-                                    ("year (latent)in|during the <part-of-day>",
-                                     -2.772588722239781),
-                                    ("Februaryin|during the <part-of-day>", -2.772588722239781),
-                                    ("time-of-day (latent)in|during the <part-of-day>",
-                                     -2.772588722239781)],
-                               n = 3}}),
-       ("today",
-        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}}),
-       ("mm/dd",
-        Classifier{okData =
-                     ClassData{prior = -1.2729656758128873,
-                               unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
-                   koData =
-                     ClassData{prior = -0.3285040669720361, unseen = -2.995732273553991,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 18}}),
-       ("at <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -8.961215868968717e-2,
-                               unseen = -4.948759890378168,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<time> timezone", -3.8430301339411947),
-                                    ("noon|midnight|EOD|end of day", -3.8430301339411947),
-                                    ("integer after|past <hour-of-day>", -3.8430301339411947),
-                                    ("half after|past <hour-of-day>", -4.248495242049359),
-                                    ("time-of-day (latent)", -1.6835458845878222),
-                                    ("hhmm (latent)", -3.5553480614894135),
-                                    ("<time-of-day> am|pm", -1.8061482066801546),
-                                    ("hh:mm", -3.332204510175204),
-                                    ("about|exactly <time-of-day>", -3.8430301339411947),
-                                    ("hour", -1.0704414117014134),
-                                    ("<time-of-day> sharp|exactly", -4.248495242049359),
-                                    ("minute", -2.05127066471314)],
-                               n = 64},
-                   koData =
-                     ClassData{prior = -2.456735772821304, unseen = -3.2188758248682006,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -1.2321436812926323),
-                                    ("hour", -1.2321436812926323)],
-                               n = 6}}),
-       ("December",
-        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}}),
-       ("absorption of , after named day",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("on <date>", -2.1972245773362196),
-                                    ("Wednesday", -2.6026896854443837),
-                                    ("Saturday", -2.6026896854443837),
-                                    ("Monday", -2.1972245773362196),
-                                    ("Friday", -1.9095425048844386), ("day", -0.8979415932059586),
-                                    ("Sunday", -2.6026896854443837)],
-                               n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("September",
-        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}}),
-       ("tonight",
-        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}}),
-       ("last|past|next <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -4.2626798770413155,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.456735772821304), ("second", -2.639057329615259),
-                                    ("day", -2.3025850929940455), ("year", -2.639057329615259),
-                                    ("<integer> <unit-of-duration>", -0.7827593392496325),
-                                    ("hour", -2.639057329615259), ("month", -2.639057329615259),
-                                    ("minute", -2.639057329615259)],
-                               n = 31},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("the ides of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("on <date>",
-        Classifier{okData =
-                     ClassData{prior = -0.13353139262452263,
-                               unseen = -4.204692619390966,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Thursday", -1.4816045409242156),
-                                    ("mm/dd", -3.4965075614664802),
-                                    ("absorption of , after named day", -3.0910424533583156),
-                                    ("intersect", -3.0910424533583156),
-                                    ("Saturday", -2.803360380906535),
-                                    ("Friday", -3.4965075614664802), ("day", -0.8574502318512216),
-                                    ("the <day-of-month> (ordinal)", -3.0910424533583156),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -2.803360380906535),
-                                    ("hour", -3.4965075614664802)],
-                               n = 28},
-                   koData =
-                     ClassData{prior = -2.0794415416798357,
-                               unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersect", -1.791759469228055), ("day", -1.2809338454620642),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -1.791759469228055)],
-                               n = 4}}),
-       ("integer (0..19)",
-        Classifier{okData =
-                     ClassData{prior = -0.11122563511022437,
-                               unseen = -3.970291913552122,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 51},
-                   koData =
-                     ClassData{prior = -2.2512917986064953,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
-       ("between <time-of-day> and <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -0.7884573603642702),
-                                    ("hh:mmhh:mm", -0.7884573603642702)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -0.7884573603642702),
-                                    ("minutehour", -0.7884573603642702)],
-                               n = 9}}),
-       ("Halloween",
-        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}}),
-       ("Passover",
-        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}}),
-       ("from <month> dd-dd (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Julyinteger (numeric)integer (numeric)", -1.6094379124341003),
-                                    ("Augustordinal (digits)integer (numeric)",
-                                     -1.6094379124341003),
-                                    ("month", -0.916290731874155),
-                                    ("Augustordinal (digits)ordinal (digits)",
-                                     -1.6094379124341003)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("October",
-        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}}),
-       ("from|since|after <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -1.6094379124341003, unseen = -4.04305126783455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("July", -3.332204510175204),
-                                    ("time-of-day (latent)", -2.4159137783010487),
-                                    ("<time-of-day> am|pm", -2.4159137783010487),
-                                    ("hh:mm", -2.4159137783010487), ("hour", -1.8281271133989299),
-                                    ("month", -2.9267394020670396), ("minute", -2.4159137783010487),
-                                    ("August", -3.332204510175204)],
-                               n = 14},
-                   koData =
-                     ClassData{prior = -0.2231435513142097, unseen = -4.948759890378168,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> to|till|before <hour-of-day>", -3.8430301339411947),
-                                    ("week", -4.248495242049359),
-                                    ("<day-of-month> (ordinal or number) <named-month>",
-                                     -4.248495242049359),
-                                    ("today", -4.248495242049359),
-                                    ("intersect", -2.3766930651477676),
-                                    ("second", -4.248495242049359), ("now", -3.332204510175204),
-                                    ("tomorrow", -3.8430301339411947),
-                                    ("this|last|next <cycle>", -4.248495242049359),
-                                    ("day", -1.8971199848858813),
-                                    ("time-of-day (latent)", -4.248495242049359),
-                                    ("<time-of-day> am|pm", -3.8430301339411947),
-                                    ("nograin", -3.332204510175204),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)",
-                                     -4.248495242049359),
-                                    ("Easter Sunday", -4.248495242049359),
-                                    ("Christmas", -3.5553480614894135),
-                                    ("hour", -2.995732273553991), ("month", -4.248495242049359),
-                                    ("<datetime> - <datetime> (interval)", -2.8622008809294686),
-                                    ("<time-of-day> - <time-of-day> (interval)",
-                                     -2.5437471498109336),
-                                    ("<named-month> <day-of-month> (non ordinal)",
-                                     -3.8430301339411947),
-                                    ("minute", -1.7635885922613588),
-                                    ("right now", -4.248495242049359),
-                                    ("<month> dd-dd (interval)", -3.5553480614894135),
-                                    ("dd-dd <month> (interval)", -3.8430301339411947)],
-                               n = 56}}),
-       ("month (grain)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.995732273553991,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 18},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<integer> more <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)minute (grain)", -0.6931471805599453),
-                                    ("minute", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time-of-day> o'clock",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("in|within|after <duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.17062551703076334,
-                               unseen = -4.653960350157523,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -3.258096538021482),
-                                    ("<integer> more <unit-of-duration>", -3.951243718581427),
-                                    ("three-quarters of an hour", -3.0349529867072724),
-                                    ("<integer> + '\"", -3.258096538021482),
-                                    ("number.number hours", -3.951243718581427),
-                                    ("second", -3.545778610473263), ("day", -3.258096538021482),
-                                    ("half an hour", -3.0349529867072724),
-                                    ("year", -3.951243718581427),
-                                    ("<integer> <unit-of-duration>", -1.5998684614179497),
-                                    ("a <unit-of-duration>", -3.0349529867072724),
-                                    ("quarter of an hour", -3.0349529867072724),
-                                    ("hour", -2.5649493574615367),
-                                    ("about|exactly <duration>", -3.951243718581427),
-                                    ("<integer> and an half hour", -3.951243718581427),
-                                    ("minute", -1.3121863889661687)],
-                               n = 43},
-                   koData =
-                     ClassData{prior = -1.8523840910444898,
-                               unseen = -3.5553480614894135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("quarter", -2.4277482359480516), ("year", -1.7346010553881064),
-                                    ("<integer> <unit-of-duration>", -1.7346010553881064),
-                                    ("a <unit-of-duration>", -2.1400661634962708),
-                                    ("month", -2.833213344056216)],
-                               n = 8}}),
-       ("January",
-        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}}),
-       ("three-quarters of an hour",
-        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}}),
-       ("Mattu Pongal",
-        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}}),
-       ("Wednesday",
-        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}}),
-       ("half after|past <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<integer> + '\"",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("half <integer> (UK style hour-of-day)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("July",
-        Classifier{okData =
-                     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}}),
-       ("hour (grain)",
-        Classifier{okData =
-                     ClassData{prior = -0.8209805520698302,
-                               unseen = -2.5649493574615367,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 11},
-                   koData =
-                     ClassData{prior = -0.579818495252942, unseen = -2.772588722239781,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 14}}),
-       ("Shavuot",
-        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> <duration> hence|ago",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.5649493574615367,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -1.3862943611198906),
-                                    ("Thanksgiving Day<integer> <unit-of-duration>",
-                                     -1.0986122886681098),
-                                    ("dayyear", -1.3862943611198906),
-                                    ("Diwali<integer> <unit-of-duration>", -1.791759469228055)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<ordinal> quarter",
-        Classifier{okData =
-                     ClassData{prior = -0.4700036292457356, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -1.1786549963416462),
-                                    ("ordinals (first..twentieth,thirtieth,...)quarter (grain)",
-                                     -1.466337068793427),
-                                    ("quarter", -0.7731898882334817)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -0.9808292530117262,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.8109302162163288),
-                                    ("quarter", -0.8109302162163288)],
-                               n = 3}}),
-       ("Boss's Day",
-        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}}),
-       ("Orthodox Easter Sunday",
-        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}}),
-       ("one twenty two",
-        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}}),
-       ("intersect",
-        Classifier{okData =
-                     ClassData{prior = -0.459704877045161, unseen = -6.704414354964107,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Navaratriyear (latent)", -6.010040932680917),
-                                    ("Ramadanyear (latent)", -6.010040932680917),
-                                    ("<datetime> - <datetime> (interval)on <date>",
-                                     -4.757277964185549),
-                                    ("Bhai Doojyear (latent)", -6.010040932680917),
-                                    ("<time-of-day> - <time-of-day> (interval)on <date>",
-                                     -4.757277964185549),
-                                    ("hourday", -4.305292840442492),
-                                    ("dayhour", -3.092270200596638),
-                                    ("Martin Luther King's Dayyear (latent)", -5.604575824572753),
-                                    ("Shemini Atzeretyear (latent)", -6.010040932680917),
-                                    ("daymonth", -5.316893752120972),
-                                    ("monthday", -5.604575824572753),
-                                    ("monthyear", -4.400603020246817),
-                                    ("Yom Ha'atzmautyear (latent)", -6.010040932680917),
-                                    ("Vijayadashamiyear (latent)", -6.010040932680917),
-                                    ("Thanksgiving Dayyear (latent)", -4.911428644012807),
-                                    ("Thai Pongalyear (latent)", -5.316893752120972),
-                                    ("Thiru Onamyear (latent)", -5.316893752120972),
-                                    ("Tuesdaythe <day-of-month> (ordinal)", -6.010040932680917),
-                                    ("from <datetime> - <datetime> (interval)July",
-                                     -6.010040932680917),
-                                    ("houryear", -5.316893752120972),
-                                    ("this|next <day-of-week>hh(:mm) - <time-of-day> am|pm",
-                                     -6.010040932680917),
-                                    ("Christmas<time-of-day> am|pm", -6.010040932680917),
-                                    ("last <day-of-week> of <time>year (latent)",
-                                     -6.010040932680917),
-                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -5.316893752120972),
-                                    ("<time-of-day> am|pmintersect", -4.757277964185549),
-                                    ("Octoberyear (latent)", -4.757277964185549),
-                                    ("intersect<time-of-day> am|pm", -6.010040932680917),
-                                    ("Mattu Pongalyear (latent)", -6.010040932680917),
-                                    ("Shavuotyear (latent)", -6.010040932680917),
-                                    ("Dhanterasin <named-month>|year", -6.010040932680917),
-                                    ("at <time-of-day>in|within|after <duration>",
-                                     -6.010040932680917),
-                                    ("Thursdayhh(:mm) - <time-of-day> am|pm", -6.010040932680917),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -5.604575824572753),
-                                    ("Marchyear (latent)", -6.010040932680917),
-                                    ("Sukkotyear (latent)", -5.604575824572753),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -6.010040932680917),
-                                    ("Clean Mondayyear (latent)", -5.604575824572753),
-                                    ("monthhour", -5.604575824572753),
-                                    ("todayat <time-of-day>", -6.010040932680917),
-                                    ("Thursday<time> timezone", -4.305292840442492),
-                                    ("this <time>hh(:mm) - <time-of-day> am|pm",
-                                     -6.010040932680917),
-                                    ("Palm SundaySunday", -5.604575824572753),
-                                    ("dayday", -3.812816355344698),
-                                    ("<time> <part-of-day>at <time-of-day>", -6.010040932680917),
-                                    ("mm/ddat <time-of-day>", -6.010040932680917),
-                                    ("tonightat <time-of-day>", -6.010040932680917),
-                                    ("<time-of-day> am|pmabsorption of , after named day",
-                                     -5.316893752120972),
-                                    ("today<time-of-day> am|pm", -6.010040932680917),
-                                    ("Februarythe <day-of-month> (ordinal)", -5.604575824572753),
-                                    ("at <time-of-day><time> <part-of-day>", -6.010040932680917),
-                                    ("mm/dd<time-of-day> am|pm", -6.010040932680917),
-                                    ("hourhour", -4.757277964185549),
-                                    ("<time-of-day> am|pmon <date>", -3.9951379121386528),
-                                    ("Wednesdaythis|last|next <cycle>", -6.010040932680917),
-                                    ("Lentyear (latent)", -6.010040932680917),
-                                    ("intersect<named-month> <day-of-month> (non ordinal)",
-                                     -4.505963535904644),
-                                    ("Boghiyear (latent)", -6.010040932680917),
-                                    ("dayyear", -2.011840231011719),
-                                    ("<time-of-day> o'clockin|during the <part-of-day>",
-                                     -6.010040932680917),
-                                    ("Thursdayat <time-of-day>", -5.604575824572753),
-                                    ("Islamic New Yearyear (latent)", -5.604575824572753),
-                                    ("Laylat al-Qadryear (latent)", -5.093750200806762),
-                                    ("Chhathin <named-month>|year", -6.010040932680917),
-                                    ("Vasant Panchamiin <named-month>|year", -6.010040932680917),
-                                    ("Diwaliin <named-month>|year", -6.010040932680917),
-                                    ("Shrove Tuesdayyear (latent)", -6.010040932680917),
-                                    ("<time-of-day> am|pmtomorrow", -5.316893752120972),
-                                    ("Yom Kippuryear (latent)", -6.010040932680917),
-                                    ("<part-of-day> of <time>year (latent)", -6.010040932680917),
-                                    ("minutehour", -5.093750200806762),
-                                    ("Kaanum Pongalyear (latent)", -5.604575824572753),
-                                    ("Maha Saptamiyear (latent)", -6.010040932680917),
-                                    ("at <time-of-day>in|during the <part-of-day>",
-                                     -5.604575824572753),
-                                    ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
-                                     -4.305292840442492),
-                                    ("for <duration> from <time>December", -6.010040932680917),
-                                    ("tomorrow<time-of-day> sharp|exactly", -6.010040932680917),
-                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
-                                     -5.093750200806762),
-                                    ("on <date><named-month> <day-of-month> (non ordinal)",
-                                     -5.604575824572753),
-                                    ("Pentecostyear (latent)", -6.010040932680917),
-                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.093750200806762),
-                                    ("Eid al-Fitryear (latent)", -6.010040932680917),
-                                    ("Mondayin|during the <part-of-day>", -6.010040932680917),
-                                    ("Raksha Bandhanyear (latent)", -6.010040932680917),
-                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.604575824572753),
-                                    ("Navaratriin <named-month>|year", -6.010040932680917),
-                                    ("Ashurayear (latent)", -6.010040932680917),
-                                    ("Chinese New Yearyear (latent)", -6.010040932680917),
-                                    ("Sundayyear (latent)", -6.010040932680917),
-                                    ("Lag BaOmeryear (latent)", -6.010040932680917),
-                                    ("last weekend of <named-month>year (latent)",
-                                     -6.010040932680917),
-                                    ("Eid al-Adhayear (latent)", -5.093750200806762),
-                                    ("intersectin|during the <part-of-day>", -6.010040932680917),
-                                    ("Christmasat <time-of-day>", -6.010040932680917),
-                                    ("Passoveryear (latent)", -6.010040932680917),
-                                    ("Lazarus Saturdayyear (latent)", -6.010040932680917),
-                                    ("<day-of-month> (ordinal or number) <named-month>year (latent)",
-                                     -6.010040932680917),
-                                    ("Yom HaShoahyear (latent)", -5.604575824572753),
-                                    ("Thursday<datetime> - <datetime> (interval)",
-                                     -5.093750200806762),
-                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
-                                     -6.010040932680917),
-                                    ("Thai Pongalin <named-month>|year", -6.010040932680917),
-                                    ("Septemberyear (latent)", -5.604575824572753),
-                                    ("mm/ddyear (latent)", -6.010040932680917),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -4.757277964185549),
-                                    ("Halloweenyear (latent)", -6.010040932680917),
-                                    ("from <time-of-day> - <time-of-day> (interval)on <date>",
-                                     -5.316893752120972),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
-                                     -5.093750200806762),
-                                    ("at <time-of-day>intersect", -5.604575824572753),
-                                    ("Rosh Hashanahyear (latent)", -6.010040932680917),
-                                    ("Dhanterasyear (latent)", -6.010040932680917),
-                                    ("Tu BiShvatyear (latent)", -6.010040932680917),
-                                    ("Holiyear (latent)", -5.316893752120972),
-                                    ("<time-of-day> - <time-of-day> (interval)tomorrow",
-                                     -6.010040932680917),
-                                    ("Holika Dahanyear (latent)", -5.316893752120972),
-                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -6.010040932680917),
-                                    ("dayminute", -3.3709836030656586),
-                                    ("Mawlidyear (latent)", -6.010040932680917),
-                                    ("from <datetime> - <datetime> (interval)on <date>",
-                                     -5.604575824572753),
-                                    ("<datetime> - <datetime> (interval)tomorrow",
-                                     -6.010040932680917),
-                                    ("Jumu'atul-Widayear (latent)", -5.093750200806762),
-                                    ("absorption of , after named dayintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -6.010040932680917),
-                                    ("minuteday", -2.3724547729545318),
-                                    ("absorption of , after named dayintersect",
-                                     -6.010040932680917),
-                                    ("intersectyear (latent)", -6.010040932680917),
-                                    ("Orthodox Easter Sundayyear (latent)", -6.010040932680917),
-                                    ("<ordinal> <cycle> of <time>year (latent)",
-                                     -6.010040932680917),
-                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
-                                     -6.010040932680917),
-                                    ("Boss's Dayyear (latent)", -5.604575824572753),
-                                    ("Tisha B'Avyear (latent)", -6.010040932680917),
-                                    ("Isra and Mi'rajyear (latent)", -5.093750200806762),
-                                    ("at <time-of-day>absorption of , after named day",
-                                     -6.010040932680917),
-                                    ("Christmasyear (latent)", -5.604575824572753),
-                                    ("Naraka Chaturdashiyear (latent)", -5.604575824572753),
-                                    ("at <time-of-day>on <date>", -4.911428644012807),
-                                    ("between <time-of-day> and <time-of-day> (interval)on <date>",
-                                     -4.400603020246817),
-                                    ("dayweek", -6.010040932680917),
-                                    ("Easter Sundayyear (latent)", -5.316893752120972),
-                                    ("Thursday<time-of-day> am|pm", -6.010040932680917),
-                                    ("weekyear", -5.604575824572753),
-                                    ("hh:mmin|during the <part-of-day>", -5.316893752120972),
-                                    ("<cycle> after|before <time><time-of-day> am|pm",
-                                     -5.604575824572753),
-                                    ("Hanukkahyear (latent)", -6.010040932680917),
-                                    ("February<time> <part-of-day>", -6.010040932680917),
-                                    ("Tuesdayin <named-month>|year", -6.010040932680917),
-                                    ("Great Lentyear (latent)", -6.010040932680917),
-                                    ("tomorrowat <time-of-day>", -5.316893752120972),
-                                    ("between <time> and <time>on <date>", -4.400603020246817),
-                                    ("Thursdayfrom|since|after <time-of-day>", -5.316893752120972),
-                                    ("last <cycle> of <time>year (latent)", -5.316893752120972),
-                                    ("at <time-of-day>tomorrow", -5.604575824572753),
-                                    ("tomorrow<time-of-day> am|pm", -6.010040932680917),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -6.010040932680917),
-                                    ("Diwaliyear (latent)", -6.010040932680917),
-                                    ("Black Fridayyear (latent)", -5.604575824572753),
-                                    ("in|during the <part-of-day>at <time-of-day>",
-                                     -6.010040932680917),
-                                    ("Chhathyear (latent)", -5.604575824572753),
-                                    ("Vasant Panchamiyear (latent)", -6.010040932680917),
-                                    ("Palm Sundayintersect", -6.010040932680917),
-                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
-                                     -6.010040932680917),
-                                    ("Februaryintersect", -6.010040932680917),
-                                    ("Simchat Torahyear (latent)", -6.010040932680917)],
-                               n = 305},
-                   koData =
-                     ClassData{prior = -0.9982331033604875, unseen = -6.331501849893691,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<time-of-day> - <time-of-day> (interval)on <date>",
-                                     -5.636573724962751),
-                                    ("hourday", -5.636573724962751),
-                                    ("<named-month> <day-of-month> (non ordinal)July",
-                                     -5.636573724962751),
-                                    ("dayhour", -3.1942266895935467),
-                                    ("daymonth", -3.5571321832829152),
-                                    ("monthday", -5.231108616854587),
-                                    ("monthyear", -4.383810756467383),
-                                    ("<time-of-day> am|pmyear (latent)", -5.231108616854587),
-                                    ("Thai Pongalyear (latent)", -4.943426544402806),
-                                    ("intersecthh:mm", -5.636573724962751),
-                                    ("from <datetime> - <datetime> (interval)July",
-                                     -5.636573724962751),
-                                    ("houryear", -4.720282993088596),
-                                    ("from <time-of-day> - <time-of-day> (interval)July",
-                                     -5.636573724962751),
-                                    ("until <time-of-day><time-of-day> am|pm", -5.636573724962751),
-                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -4.943426544402806),
-                                    ("<time-of-day> am|pmintersect", -4.383810756467383),
-                                    ("Octoberyear (latent)", -5.636573724962751),
-                                    ("from|since|after <time-of-day>year (latent)",
-                                     -4.383810756467383),
-                                    ("from|since|after <time-of-day>on <date>", -4.720282993088596),
-                                    ("July<day-of-month> (ordinal or number) <named-month>",
-                                     -5.636573724962751),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -4.383810756467383),
-                                    ("about|exactly <time-of-day>year (latent)",
-                                     -5.636573724962751),
-                                    ("absorption of , after named dayJuly", -5.231108616854587),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -4.720282993088596),
-                                    ("Clean Mondayyear (latent)", -5.636573724962751),
-                                    ("monthhour", -5.636573724962751),
-                                    ("hourmonth", -4.943426544402806),
-                                    ("todayat <time-of-day>", -5.636573724962751),
-                                    ("from|since|after <time-of-day>July", -5.636573724962751),
-                                    ("Mondayyear (latent)", -4.943426544402806),
-                                    ("dayday", -5.231108616854587),
-                                    ("mm/ddat <time-of-day>", -5.231108616854587),
-                                    ("<time-of-day> am|pmon <date>", -4.383810756467383),
-                                    ("dayyear", -2.66615925939305),
-                                    ("Thursdaymm/dd", -5.636573724962751),
-                                    ("New Year's Dayyear (latent)", -5.231108616854587),
-                                    ("Thursdayat <time-of-day>", -4.383810756467383),
-                                    ("<integer> to|till|before <hour-of-day>September",
-                                     -5.636573724962751),
-                                    ("Aprilyear (latent)", -5.636573724962751),
-                                    ("monthminute", -5.636573724962751),
-                                    ("<time-of-day> am|pmtomorrow", -5.636573724962751),
-                                    ("Thursdayhh:mm", -4.720282993088596),
-                                    ("August<day-of-month> (ordinal or number) <named-month>",
-                                     -5.636573724962751),
-                                    ("minutemonth", -3.844814255734696),
-                                    ("Sundayfrom|since|after <time-of-day>", -5.636573724962751),
-                                    ("week-endin <named-month>|year", -5.636573724962751),
-                                    ("Augustyear (latent)", -5.231108616854587),
-                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
-                                     -5.231108616854587),
-                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.231108616854587),
-                                    ("mm/dd<time-of-day> - <time-of-day> (interval)",
-                                     -5.231108616854587),
-                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
-                                     -5.636573724962751),
-                                    ("Sundayyear (latent)", -4.943426544402806),
-                                    ("Christmasat <time-of-day>", -5.636573724962751),
-                                    ("<duration> after|before|from <time>December",
-                                     -5.636573724962751),
-                                    ("yesterday<time-of-day> am|pm", -5.636573724962751),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
-                                     -4.720282993088596),
-                                    ("mm/ddyear (latent)", -5.636573724962751),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -5.231108616854587),
-                                    ("<named-month> <day-of-month> (non ordinal)August",
-                                     -5.636573724962751),
-                                    ("until <time-of-day>on <date>", -4.943426544402806),
-                                    ("at <time-of-day>intersect", -5.231108616854587),
-                                    ("hh:mmyear (latent)", -4.537961436294641),
-                                    ("Holiyear (latent)", -5.636573724962751),
-                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -5.636573724962751),
-                                    ("dayminute", -3.1516670751747506),
-                                    ("intersectSeptember", -4.132496328186477),
-                                    ("minuteday", -2.568520789829134),
-                                    ("absorption of , after named dayintersect",
-                                     -5.636573724962751),
-                                    ("Februaryin|during the <part-of-day>", -5.636573724962751),
-                                    ("hh:mmon <date>", -3.6216707044204863),
-                                    ("Saturdayyear (latent)", -5.636573724962751),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -5.636573724962751),
-                                    ("absorption of , after named daySeptember",
-                                     -4.720282993088596),
-                                    ("Naraka Chaturdashiyear (latent)", -5.636573724962751),
-                                    ("on <date>September", -5.231108616854587),
-                                    ("at <time-of-day>on <date>", -5.231108616854587),
-                                    ("in <named-month>|yearyear (latent)", -5.636573724962751),
-                                    ("dayweek", -5.636573724962751),
-                                    ("Easter Sundayyear (latent)", -5.231108616854587),
-                                    ("Thursday<time-of-day> am|pm", -5.231108616854587),
-                                    ("absorption of , after named dayFebruary", -4.720282993088596),
-                                    ("July<integer> to|till|before <hour-of-day>",
-                                     -5.636573724962751),
-                                    ("tomorrowat <time-of-day>", -5.636573724962751),
-                                    ("<integer> to|till|before <hour-of-day>July",
-                                     -5.636573724962751),
-                                    ("Thursdayfrom|since|after <time-of-day>", -4.027135812528651),
-                                    ("tomorrow<time-of-day> am|pm", -5.636573724962751),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -4.943426544402806),
-                                    ("Diwaliyear (latent)", -5.231108616854587),
-                                    ("Tuesdayfrom|since|after <time-of-day>", -5.636573724962751),
-                                    ("Fridayyear (latent)", -5.231108616854587),
-                                    ("minuteyear", -4.383810756467383)],
-                               n = 178}}),
-       ("one eleven",
-        Classifier{okData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},
-                   koData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("after lunch/work/school",
-        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}}),
-       ("early morning",
-        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}}),
-       ("in <number> (implicit minutes)",
-        Classifier{okData =
-                     ClassData{prior = -1.2685113254635072,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.3184537311185346),
-                                    ("integer (0..19)", -1.2992829841302609)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.33024168687057687,
-                               unseen = -3.258096538021482,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.1743533871447778),
-                                    ("integer (0..19)", -1.8325814637483102)],
-                               n = 23}}),
-       ("<ordinal> <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -1.791759469228055),
-                                    ("ordinal (digits)quarter (grain)year (latent)",
-                                     -2.1972245773362196),
-                                    ("quarteryear", -2.1972245773362196),
-                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)October",
-                                     -2.1972245773362196),
-                                    ("ordinal (digits)day (grain)this|last|next <cycle>",
-                                     -2.1972245773362196),
-                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
-                                     -2.1972245773362196),
-                                    ("weekmonth", -1.791759469228055),
-                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
-                                     -2.1972245773362196)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("year (grain)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4011973816621555,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 28},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("from <datetime> - <datetime> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -1.0116009116784799,
-                               unseen = -3.6375861597263857,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -2.001480000210124),
-                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal)",
-                                     -2.917770732084279),
-                                    ("hh:mmhh:mm", -2.001480000210124),
-                                    ("dayday", -2.512305623976115),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)<day-of-month> (ordinal)",
-                                     -2.917770732084279),
-                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.917770732084279),
-                                    ("hourhour", -2.512305623976115),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.917770732084279)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -0.45198512374305727,
-                               unseen = -3.912023005428146,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hourday", -3.1986731175506815),
-                                    ("dayhour", -2.793208009442517),
-                                    ("<day-of-month> (ordinal)time-of-day (latent)",
-                                     -3.1986731175506815),
-                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
-                                     -3.1986731175506815),
-                                    ("hh:mmtime-of-day (latent)", -2.2823823856765264),
-                                    ("minuteminute", -2.793208009442517),
-                                    ("time-of-day (latent)time-of-day (latent)",
-                                     -2.793208009442517),
-                                    ("dayday", -3.1986731175506815),
-                                    ("hourhour", -2.505525936990736),
-                                    ("dayyear", -3.1986731175506815),
-                                    ("minutehour", -2.2823823856765264),
-                                    ("hh:mmintersect", -2.793208009442517),
-                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal or number) <named-month>",
-                                     -3.1986731175506815),
-                                    ("time-of-day (latent)<time-of-day> am|pm",
-                                     -3.1986731175506815),
-                                    ("time-of-day (latent)<day-of-month> (ordinal or number) <named-month>",
-                                     -3.1986731175506815),
-                                    ("<named-month> <day-of-month> (non ordinal)time-of-day (latent)",
-                                     -3.1986731175506815)],
-                               n = 14}}),
-       ("Saturday",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.9459101490553135,
-                               unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("the <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week (grain)<named-month>|<named-day> <day-of-month> (ordinal)",
-                                     -1.7346010553881064),
-                                    ("weekmonth", -1.7346010553881064),
-                                    ("week (grain)October", -1.7346010553881064),
-                                    ("week (grain)<named-month> <day-of-month> (non ordinal)",
-                                     -1.7346010553881064),
-                                    ("weekday", -1.2237754316221157)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("number.number hours",
-        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}}),
-       ("from <time-of-day> - <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.4339872044851463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -1.6094379124341003),
-                                    ("hh:mmhh:mm", -1.6094379124341003),
-                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
-                                    ("hourhour", -2.3025850929940455),
-                                    ("hourminute", -2.3025850929940455),
-                                    ("time-of-day (latent)<time-of-day> sharp|exactly",
-                                     -2.70805020110221),
-                                    ("time-of-day (latent)hh:mm", -2.70805020110221),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -3.4339872044851463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -1.6094379124341003),
-                                    ("time-of-day (latent)time-of-day (latent)",
-                                     -2.0149030205422647),
-                                    ("hourhour", -1.791759469228055),
-                                    ("minutehour", -1.6094379124341003),
-                                    ("time-of-day (latent)<time-of-day> am|pm", -2.70805020110221)],
-                               n = 9}}),
-       ("integer 21..99",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)integer (numeric)", -0.6931471805599453),
-                                    ("integer (20..90)integer (0..19)", -0.6931471805599453)],
-                               n = 4}}),
-       ("Tisha B'Av",
-        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}}),
-       ("yyyy-mm-dd",
-        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}}),
-       ("year (latent)",
-        Classifier{okData =
-                     ClassData{prior = -0.16454938704815686,
-                               unseen = -4.852030263919617,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -4.839654086185021e-2),
-                                    ("intersect 2 numbers", -3.457892725338701)],
-                               n = 123},
-                   koData =
-                     ClassData{prior = -1.8856912890622586, unseen = -3.295836866004329,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -1.3121863889661687),
-                                    ("negative numbers", -0.6190392084062235),
-                                    ("compose by multiplication", -1.8718021769015913)],
-                               n = 22}}),
-       ("mm/dd/yyyy",
-        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}}),
-       ("Monday",
-        Classifier{okData =
-                     ClassData{prior = -0.3483066942682157, unseen = -2.639057329615259,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
-                   koData =
-                     ClassData{prior = -1.2237754316221157,
-                               unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
-       ("yesterday",
-        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}}),
-       ("<ordinal> quarter <year>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)year (latent)",
-                                     -0.6931471805599453),
-                                    ("quarteryear", -0.6931471805599453)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hh:mm:ss",
-        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}}),
-       ("Hanukkah",
-        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>",
-        Classifier{okData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("at <time-of-day>integer (20..90)", -1.3862943611198906),
-                                    ("hour", -0.9808292530117262),
-                                    ("at <time-of-day>integer (numeric)", -1.3862943611198906)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("about|exactly <time-of-day>integer (numeric)",
-                                     -1.0986122886681098),
-                                    ("hour", -1.0986122886681098)],
-                               n = 1}}),
-       ("nth <time> of <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.4700036292457356, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -0.9808292530117262),
-                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
-                                     -2.0794415416798357),
-                                    ("ordinals (first..twentieth,thirtieth,...)Wednesdayintersect",
-                                     -1.6739764335716716),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayOctober",
-                                     -1.6739764335716716)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -0.9808292530117262,
-                               unseen = -2.5649493574615367,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -1.0986122886681098),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdaySeptember",
-                                     -1.791759469228055),
-                                    ("ordinals (first..twentieth,thirtieth,...)WednesdayOctober",
-                                     -1.3862943611198906)],
-                               n = 3}}),
-       ("Valentine's Day",
-        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}}),
-       ("April",
-        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}}),
-       ("Maha Saptami",
-        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}}),
-       ("end of month",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("week (grain)",
-        Classifier{okData =
-                     ClassData{prior = -4.0821994520255166e-2,
-                               unseen = -4.304065093204169,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 72},
-                   koData =
-                     ClassData{prior = -3.2188758248682006,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("<part-of-day> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.0910424533583156,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("part of daysintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -2.3513752571634776),
-                                    ("part of daysintersect", -2.3513752571634776),
-                                    ("hourday", -0.9650808960435872),
-                                    ("part of daysthe <day-of-month> (ordinal)",
-                                     -2.3513752571634776),
-                                    ("part of daysthe <day-of-month> (number)",
-                                     -2.3513752571634776),
-                                    ("part of daysthis <time>", -2.3513752571634776),
-                                    ("part of daysChristmas", -1.9459101490553135)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("six thirty six a.m.",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -1.252762968495368),
-                                    ("one twenty two", -0.8472978603872037),
-                                    ("one eleven", -1.252762968495368)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Shrove Tuesday",
-        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}}),
-       ("now",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
-       ("<day-of-month> (ordinal or number) of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -0.13353139262452263,
-                               unseen = -3.0910424533583156,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)July", -2.3513752571634776),
-                                    ("ordinals (first..twentieth,thirtieth,...)March",
-                                     -2.3513752571634776),
-                                    ("ordinal (digits)February", -2.3513752571634776),
-                                    ("integer (numeric)February", -1.9459101490553135),
-                                    ("month", -0.9650808960435872),
-                                    ("ordinal (digits)March", -2.3513752571634776),
-                                    ("integer (numeric)July", -2.3513752571634776)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -2.0794415416798357,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)February", -1.5040773967762742),
-                                    ("month", -1.5040773967762742)],
-                               n = 1}}),
-       ("this <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.6931471805599453),
-                                    ("part of days", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Kaanum Pongal",
-        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}}),
-       ("Yom Kippur",
-        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}}),
-       ("powers of tens",
-        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}}),
-       ("Friday",
-        Classifier{okData =
-                     ClassData{prior = -0.3677247801253174,
-                               unseen = -2.3978952727983707,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},
-                   koData =
-                     ClassData{prior = -1.1786549963416462, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("in|during the <part-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -8.701137698962981e-2,
-                               unseen = -3.258096538021482,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("early morning", -2.5257286443082556),
-                                    ("hour", -0.7339691750802004),
-                                    ("part of days", -0.8209805520698302)],
-                               n = 11},
-                   koData =
-                     ClassData{prior = -2.4849066497880004, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour", -0.916290731874155),
-                                    ("part of days", -0.916290731874155)],
-                               n = 1}}),
-       ("tomorrow",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 17},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hh(:mm) - <time-of-day> am|pm",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.70805020110221,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("this|last|next <cycle>",
-        Classifier{okData =
-                     ClassData{prior = -7.598590697792199e-2,
-                               unseen = -5.093750200806762,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.1173044216802621),
-                                    ("month (grain)", -2.7850112422383386),
-                                    ("year (grain)", -2.6026896854443837),
-                                    ("week (grain)", -1.1173044216802621),
-                                    ("quarter", -3.4781584227982836), ("year", -2.6026896854443837),
-                                    ("month", -2.7850112422383386),
-                                    ("quarter (grain)", -3.4781584227982836)],
-                               n = 76},
-                   koData =
-                     ClassData{prior = -2.6149597780361984,
-                               unseen = -3.1354942159291497,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.4816045409242156),
-                                    ("week (grain)", -1.4816045409242156),
-                                    ("day", -1.9924301646902063),
-                                    ("day (grain)", -1.9924301646902063)],
-                               n = 6}}),
-       ("Simchat Torah",
-        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}}),
-       ("New Year's Eve",
-        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}}),
-       ("the <ordinal> <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)year (latent)",
-                                     -0.6931471805599453),
-                                    ("quarteryear", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Raksha Bandhan",
-        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}}),
-       ("Ashura",
-        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}}),
-       ("Palm Sunday",
-        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}}),
-       ("Eid al-Adha",
-        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}}),
-       ("by <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.70805020110221,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("noon|midnight|EOD|end of day", -1.9459101490553135),
-                                    ("time-of-day (latent)", -1.9459101490553135),
-                                    ("<time-of-day> am|pm", -1.9459101490553135),
-                                    ("hh:mm", -1.9459101490553135), ("hour", -1.540445040947149),
-                                    ("minute", -1.540445040947149)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("half an hour",
-        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}}),
-       ("the <day-of-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.2006706954621511,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinals (first..twentieth,thirtieth,...)",
-                                     -1.7047480922384253),
-                                    ("ordinal (digits)", -0.2006706954621511)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -1.7047480922384253,
-                               unseen = -1.6094379124341003,
-                               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,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Lag BaOmer",
-        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}}),
-       ("fractional number",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 17}}),
-       ("Sunday",
-        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}}),
-       ("Chinese New Year",
-        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}}),
-       ("February",
-        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}}),
-       ("minute (grain)",
-        Classifier{okData =
-                     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}}),
-       ("last|this|next <season>",
-        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}}),
-       ("the <ordinal> quarter",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
-                                    ("quarter", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -0.6931471805599453,
-                               unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
-                                    ("quarter", -0.6931471805599453)],
-                               n = 1}}),
-       ("time-of-day (latent)",
-        Classifier{okData =
-                     ClassData{prior = -0.5699145401359973, unseen = -4.290459441148391,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -0.11778303565638351),
-                                    ("integer (0..19)", -2.330755969960742)],
-                               n = 69},
-                   koData =
-                     ClassData{prior = -0.8337291311811348, unseen = -4.04305126783455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -9.352605801082348e-2),
-                                    ("integer (0..19)", -2.9267394020670396),
-                                    ("integer 21..99", -3.332204510175204)],
-                               n = 53}}),
-       ("beginning of year",
-        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}}),
-       ("last <day-of-week> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -0.916290731874155),
-                                    ("SundayMarch", -1.6094379124341003),
-                                    ("MondayMarch", -1.6094379124341003),
-                                    ("Sundayintersect", -1.6094379124341003)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<integer> <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.13036181786324358,
-                               unseen = -5.204006687076795,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.5594397016505672),
-                                    ("integer (0..19)year (grain)", -3.11905548958599),
-                                    ("integer (numeric)day (grain)", -2.8006017584674554),
-                                    ("integer (0..19)second (grain) ", -3.8122026701459353),
-                                    ("integer (0..19)hour (grain)", -3.11905548958599),
-                                    ("second", -3.4067375620377707),
-                                    ("integer (numeric)second (grain) ", -4.099884742597716),
-                                    ("integer (numeric)year (grain)", -3.11905548958599),
-                                    ("day", -2.4904468301636156), ("year", -2.4904468301636156),
-                                    ("integer (numeric)week (grain)", -3.11905548958599),
-                                    ("integer (0..19)month (grain)", -3.5890591188317256),
-                                    ("hour", -2.7135903814778253), ("month", -2.89591193827178),
-                                    ("integer (numeric)minute (grain)", -3.2525868822105126),
-                                    ("integer (0..19)minute (grain)", -3.11905548958599),
-                                    ("integer (numeric)month (grain)", -3.4067375620377707),
-                                    ("minute", -2.5594397016505672),
-                                    ("integer (numeric)hour (grain)", -3.5890591188317256),
-                                    ("integer (0..19)day (grain)", -3.5890591188317256),
-                                    ("integer (0..19)week (grain)", -3.2525868822105126)],
-                               n = 79},
-                   koData =
-                     ClassData{prior = -2.1019143975318944, unseen = -3.828641396489095,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("quarter", -3.1135153092103742), ("hour", -1.4087672169719492),
-                                    ("integer (numeric)hour (grain)", -1.4087672169719492),
-                                    ("integer (0..19)quarter (grain)", -3.1135153092103742)],
-                               n = 11}}),
-       ("hhmm (latent)",
-        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}}),
-       ("<time-of-day> am|pm",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809, unseen = -5.342334251964811,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer after|past <hour-of-day>", -3.951243718581427),
-                                    ("at <time-of-day>", -2.202043863772168),
-                                    ("from|since|after <time-of-day>", -3.7281001672672174),
-                                    ("<time-of-day> o'clock", -4.238925791033208),
-                                    ("half after|past <hour-of-day>", -4.238925791033208),
-                                    ("time-of-day (latent)", -1.7266201670570935),
-                                    ("hhmm (latent)", -4.6443908991413725),
-                                    ("hh:mm", -2.293015641977895),
-                                    ("quarter after|past <hour-of-day>", -4.6443908991413725),
-                                    ("about|exactly <time-of-day>", -4.6443908991413725),
-                                    ("until <time-of-day>", -3.951243718581427),
-                                    ("hour", -1.2104036946562264),
-                                    ("<time-of-day> sharp|exactly", -4.6443908991413725),
-                                    ("minute", -1.754019141245208)],
-                               n = 96},
-                   koData =
-                     ClassData{prior = -1.3862943611198906, unseen = -4.394449154672439,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> to|till|before <hour-of-day>", -3.283414346005772),
-                                    ("from|since|after <time-of-day>", -3.283414346005772),
-                                    ("<hour-of-day> <integer>", -3.6888794541139363),
-                                    ("time-of-day (latent)", -1.0498221244986778),
-                                    ("hour", -1.0147308046874075), ("minute", -2.772588722239781)],
-                               n = 32}}),
-       ("Yom Ha'atzmaut",
-        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}}),
-       ("from <day-of-month> (ordinal or number) to <day-of-month> (ordinal or number) <named-month> (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)ordinal (digits)July", -1.252762968495368),
-                                    ("integer (numeric)integer (numeric)July", -1.252762968495368),
-                                    ("month", -0.8472978603872037)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Thiru Onam",
-        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}}),
-       ("Thai Pongal",
-        Classifier{okData =
-                     ClassData{prior = -0.5596157879354228, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
-                   koData =
-                     ClassData{prior = -0.8472978603872037,
-                               unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Vijayadashami",
-        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}}),
-       ("Thanksgiving Day",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 17},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("part of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("a <unit-of-duration>",
-        Classifier{okData =
-                     ClassData{prior = -0.49247648509779407,
-                               unseen = -3.6109179126442243,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -2.1972245773362196),
-                                    ("year (grain)", -2.1972245773362196),
-                                    ("second", -2.890371757896165),
-                                    ("week (grain)", -2.1972245773362196),
-                                    ("day", -2.1972245773362196),
-                                    ("minute (grain)", -2.890371757896165),
-                                    ("year", -2.1972245773362196),
-                                    ("second (grain) ", -2.890371757896165),
-                                    ("minute", -2.890371757896165),
-                                    ("day (grain)", -2.1972245773362196)],
-                               n = 11},
-                   koData =
-                     ClassData{prior = -0.9444616088408514, unseen = -3.367295829986474,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hour (grain)", -1.7227665977411035),
-                                    ("quarter", -1.9459101490553135), ("hour", -1.7227665977411035),
-                                    ("quarter (grain)", -1.9459101490553135)],
-                               n = 7}}),
-       ("at the beginning|end of <year>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("year (latent)", -0.6931471805599453),
-                                    ("year", -0.6931471805599453)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Dhanteras",
-        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}}),
-       ("Tu BiShvat",
-        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}}),
-       ("Whit Monday",
-        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}}),
-       ("hh:mm",
-        Classifier{okData =
-                     ClassData{prior = -5.6352936551131744e-2,
-                               unseen = -4.2626798770413155,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 69},
-                   koData =
-                     ClassData{prior = -2.9041650800285006, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("Holi",
-        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}}),
-       ("Rosh Hashanah",
-        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}}),
-       ("Holika Dahan",
-        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}}),
-       ("quarter of an hour",
-        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}}),
-       ("second (grain) ",
-        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}}),
-       ("ordinals (first..twentieth,thirtieth,...)",
-        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}}),
-       ("Mawlid",
-        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}}),
-       ("Jumu'atul-Wida",
-        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}}),
-       ("quarter after|past <hour-of-day>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -0.6931471805599453),
-                                    ("hour", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("the <cycle> after|before <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)tomorrow", -1.252762968495368),
-                                    ("dayday", -0.8472978603872037),
-                                    ("day (grain)yesterday", -1.252762968495368)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("about|exactly <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -0.15415067982725836,
-                               unseen = -3.6109179126442243,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week", -1.791759469228055),
-                                    ("hh(:mm) - <time-of-day> am|pm", -2.890371757896165),
-                                    ("this|last|next <cycle>", -1.791759469228055),
-                                    ("day", -2.4849066497880004),
-                                    ("time-of-day (latent)", -2.890371757896165),
-                                    ("hhmm (latent)", -2.4849066497880004),
-                                    ("<time-of-day> am|pm", -2.890371757896165),
-                                    ("hour", -2.1972245773362196),
-                                    ("next <time>", -2.890371757896165),
-                                    ("this|next <day-of-week>", -2.890371757896165),
-                                    ("minute", -2.4849066497880004)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -1.9459101490553135, unseen = -2.833213344056216,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("mm/dd", -2.0794415416798357), ("day", -2.0794415416798357),
-                                    ("time-of-day (latent)", -2.0794415416798357),
-                                    ("hour", -2.0794415416798357)],
-                               n = 2}}),
-       ("Sukkot",
-        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> in <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.044522437723423,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("daymonth", -2.3025850929940455),
-                                    ("monthyear", -1.8971199848858813),
-                                    ("Marcha <unit-of-duration>", -2.3025850929940455),
-                                    ("March<integer> <unit-of-duration>", -2.3025850929940455),
-                                    ("Thanksgiving Daya <unit-of-duration>", -2.3025850929940455),
-                                    ("Thanksgiving Day<integer> <unit-of-duration>",
-                                     -1.8971199848858813),
-                                    ("Vijayadashami<integer> <unit-of-duration>",
-                                     -2.3025850929940455),
-                                    ("dayyear", -1.6094379124341003)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("World Vegan Day",
-        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}}),
-       ("intersect by \",\", \"of\", \"from\", \"'s\"",
-        Classifier{okData =
-                     ClassData{prior = -0.4700036292457356, unseen = -5.081404364984463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Wednesday<named-month> <day-of-month> (non ordinal)",
-                                     -4.382026634673881),
-                                    ("dayhour", -3.1292636661785136),
-                                    ("daymonth", -3.1292636661785136),
-                                    ("<named-month> <day-of-month> (non ordinal)Friday",
-                                     -4.382026634673881),
-                                    ("Friday<named-month> <day-of-month> (non ordinal)",
-                                     -3.6888794541139363),
-                                    ("Wednesdayintersect", -4.382026634673881),
-                                    ("Black Fridaythis|last|next <cycle>", -4.382026634673881),
-                                    ("<part-of-day> of <time>February", -4.382026634673881),
-                                    ("Saturday<time-of-day> am|pm", -4.382026634673881),
-                                    ("Martin Luther King's Daythis|last|next <cycle>",
-                                     -3.9765615265657175),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
-                                     -4.382026634673881),
-                                    ("on <date><time-of-day> am|pm", -4.382026634673881),
-                                    ("hourmonth", -4.382026634673881),
-                                    ("dayday", -2.5102244577722903),
-                                    ("the <day-of-month> (ordinal)February", -3.9765615265657175),
-                                    ("WednesdayOctober", -4.382026634673881),
-                                    ("Wednesdaythis|last|next <cycle>", -3.9765615265657175),
-                                    ("intersect<named-month> <day-of-month> (non ordinal)",
-                                     -3.4657359027997265),
-                                    ("dayyear", -2.8779492378976075),
-                                    ("Saturday<named-month> <day-of-month> (non ordinal)",
-                                     -4.382026634673881),
-                                    ("Thursdayhh:mm", -3.9765615265657175),
-                                    ("Thanksgiving Daythis|last|next <cycle>", -4.382026634673881),
-                                    ("on <date><named-month> <day-of-month> (non ordinal)",
-                                     -3.9765615265657175),
-                                    ("TuesdayOctober", -4.382026634673881),
-                                    ("the <day-of-month> (ordinal)March", -4.382026634673881),
-                                    ("Mondaythis|last|next <cycle>", -4.382026634673881),
-                                    ("Fridayintersect by \",\", \"of\", \"from\", \"'s\"",
-                                     -4.382026634673881),
-                                    ("Fridayintersect", -4.382026634673881),
-                                    ("Thursday<datetime> - <datetime> (interval)",
-                                     -3.6888794541139363),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -3.4657359027997265),
-                                    ("Tuesdaythis|last|next <cycle>", -4.382026634673881),
-                                    ("Sunday<named-month> <day-of-month> (non ordinal)",
-                                     -4.382026634673881),
-                                    ("dayminute", -2.995732273553991),
-                                    ("minuteday", -3.4657359027997265),
-                                    ("this|last|next <cycle>Sunday", -4.382026634673881),
-                                    ("intersectyear (latent)", -4.382026634673881),
-                                    ("Sundaythis|last|next <cycle>", -4.382026634673881),
-                                    ("weekday", -4.382026634673881),
-                                    ("dayweek", -3.283414346005772),
-                                    ("Thursday<time-of-day> am|pm", -4.382026634673881),
-                                    ("Monday<named-month> <day-of-month> (non ordinal)",
-                                     -3.9765615265657175),
-                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
-                                     -3.9765615265657175)],
-                               n = 50},
-                   koData =
-                     ClassData{prior = -0.9808292530117262, unseen = -4.795790545596741,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("week-endJuly", -4.0943445622221),
-                                    ("week-endOctober", -3.4011973816621555),
-                                    ("daymonth", -1.8971199848858813),
-                                    ("TuesdaySeptember", -4.0943445622221),
-                                    ("Wednesdayintersect", -4.0943445622221),
-                                    ("hourmonth", -2.995732273553991),
-                                    ("Fridaythis|last|next <cycle>", -4.0943445622221),
-                                    ("SundayFebruary", -4.0943445622221),
-                                    ("WednesdayOctober", -4.0943445622221),
-                                    ("week-endintersect", -4.0943445622221),
-                                    ("dayyear", -4.0943445622221),
-                                    ("FridayJuly", -3.6888794541139363),
-                                    ("FridaySeptember", -4.0943445622221),
-                                    ("WednesdayFebruary", -4.0943445622221),
-                                    ("minutemonth", -3.1780538303479458),
-                                    ("SundayMarch", -4.0943445622221),
-                                    ("MondayFebruary", -3.6888794541139363),
-                                    ("Fridayintersect", -4.0943445622221),
-                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
-                                     -3.6888794541139363),
-                                    ("dayminute", -3.4011973816621555),
-                                    ("SaturdaySeptember", -4.0943445622221),
-                                    ("intersectSeptember", -3.1780538303479458),
-                                    ("MondayMarch", -4.0943445622221),
-                                    ("on <date>September", -3.6888794541139363),
-                                    ("Tuesdayintersect", -4.0943445622221),
-                                    ("Sundayintersect", -4.0943445622221)],
-                               n = 30}}),
-       ("last <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.6286086594223742, unseen = -3.295836866004329,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Martin Luther King's Day", -2.5649493574615367),
-                                    ("day", -1.1786549963416462), ("Sunday", -2.5649493574615367),
-                                    ("Chinese New Year", -2.159484249353372),
-                                    ("Thanksgiving Day", -2.5649493574615367),
-                                    ("Easter Sunday", -2.5649493574615367),
-                                    ("hour", -2.5649493574615367), ("Tuesday", -2.5649493574615367),
-                                    ("week-end", -2.5649493574615367)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -0.7621400520468967,
-                               unseen = -3.2188758248682006,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Monday", -2.4849066497880004), ("day", -2.0794415416798357),
-                                    ("Sunday", -2.4849066497880004), ("hour", -1.3862943611198906),
-                                    ("week-end", -1.3862943611198906)],
-                               n = 7}}),
-       ("March",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.044522437723423,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 19},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<named-month>|<named-day> <day-of-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.2231435513142097, unseen = -3.258096538021482,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Octoberordinal (digits)", -2.120263536200091),
-                                    ("Thursdayordinal (digits)", -2.5257286443082556),
-                                    ("day", -2.120263536200091),
-                                    ("Augustordinal (digits)", -2.5257286443082556),
-                                    ("Marchordinals (first..twentieth,thirtieth,...)",
-                                     -2.120263536200091),
-                                    ("Tuesdayordinal (digits)", -2.5257286443082556),
-                                    ("month", -1.2729656758128873),
-                                    ("Marchordinal (digits)", -2.5257286443082556)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -1.6094379124341003, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("from|since|after <time-of-day>ordinal (digits)",
-                                     -1.8718021769015913),
-                                    ("Augustordinal (digits)", -1.8718021769015913),
-                                    ("month", -1.466337068793427)],
-                               n = 2}}),
-       ("Clean Monday",
-        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-month> (ordinal)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [("ordinal (digits)", 0.0)], n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Easter Sunday",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
-                   koData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
-       ("Christmas",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("until <time-of-day>",
-        Classifier{okData =
-                     ClassData{prior = -0.9808292530117262, unseen = -3.044522437723423,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("time-of-day (latent)", -2.3025850929940455),
-                                    ("<time-of-day> am|pm", -1.6094379124341003),
-                                    ("hh:mm", -1.8971199848858813), ("hour", -1.8971199848858813),
-                                    ("minute", -1.3862943611198906)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -0.4700036292457356, unseen = -3.367295829986474,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersect", -1.7227665977411035),
-                                    ("yesterday", -2.2335922215070942),
-                                    ("day", -2.2335922215070942), ("hh:mm", -1.7227665977411035),
-                                    ("hour", -2.639057329615259), ("minute", -1.252762968495368)],
-                               n = 10}}),
-       ("mm.dd.yyyy",
-        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}}),
-       ("Isra and Mi'raj",
-        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}}),
-       ("<duration> after|before|from <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -3.5553480614894135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("a <unit-of-duration>now", -2.833213344056216),
-                                    ("a <unit-of-duration>Christmas", -2.833213344056216),
-                                    ("dayday", -2.833213344056216),
-                                    ("<integer> <unit-of-duration>today", -2.833213344056216),
-                                    ("daysecond", -2.833213344056216),
-                                    ("a <unit-of-duration>right now", -2.833213344056216),
-                                    ("minutenograin", -2.833213344056216),
-                                    ("<integer> <unit-of-duration>Christmas", -2.833213344056216),
-                                    ("<integer> <unit-of-duration>Easter Sunday",
-                                     -2.833213344056216),
-                                    ("secondnograin", -2.833213344056216),
-                                    ("yearday", -2.1400661634962708),
-                                    ("daynograin", -2.833213344056216),
-                                    ("<integer> <unit-of-duration>now", -2.4277482359480516)],
-                               n = 8},
-                   koData =
-                     ClassData{prior = -1.0986122886681098, unseen = -3.295836866004329,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -2.5649493574615367),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal)",
-                                     -2.5649493574615367),
-                                    ("monthnograin", -2.5649493574615367),
-                                    ("dayday", -2.159484249353372),
-                                    ("<integer> <unit-of-duration>time-of-day (latent)",
-                                     -2.5649493574615367),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
-                                     -2.5649493574615367),
-                                    ("<integer> <unit-of-duration>now", -2.5649493574615367)],
-                               n = 4}}),
-       ("<day-of-month> (ordinal or number) of <month>",
-        Classifier{okData =
-                     ClassData{prior = -8.004270767353637e-2,
-                               unseen = -3.5263605246161616,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)July", -2.803360380906535),
-                                    ("ordinals (first..twentieth,thirtieth,...)March",
-                                     -2.803360380906535),
-                                    ("ordinal (digits)this|last|next <cycle>", -2.1102132003465894),
-                                    ("integer (numeric)this|last|next <cycle>",
-                                     -2.3978952727983707),
-                                    ("ordinal (digits)February", -2.803360380906535),
-                                    ("integer (numeric)February", -2.3978952727983707),
-                                    ("month", -0.9315582040049435),
-                                    ("ordinal (digits)March", -2.803360380906535),
-                                    ("integer (numeric)July", -2.803360380906535)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -2.5649493574615367,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)February", -1.7047480922384253),
-                                    ("month", -1.7047480922384253)],
-                               n = 1}}),
-       ("decimal number",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
-       ("Naraka Chaturdashi",
-        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}}),
-       ("beginning of month",
-        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}}),
-       ("next <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Martin Luther King's Day", -2.70805020110221),
-                                    ("Halloween", -2.70805020110221),
-                                    ("Wednesday", -2.70805020110221),
-                                    ("Boss's Day", -2.70805020110221),
-                                    ("Monday", -2.70805020110221), ("day", -1.0986122886681098),
-                                    ("Thanksgiving Day", -2.70805020110221),
-                                    ("March", -2.70805020110221), ("month", -2.70805020110221),
-                                    ("Tuesday", -2.0149030205422647)],
-                               n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.3978952727983707,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time-of-day> sharp|exactly",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.890371757896165,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("at <time-of-day>", -2.1400661634962708),
-                                    ("time-of-day (latent)", -2.1400661634962708),
-                                    ("hhmm (latent)", -2.1400661634962708),
-                                    ("<time-of-day> am|pm", -2.1400661634962708),
-                                    ("hh:mm", -2.1400661634962708), ("hour", -1.7346010553881064),
-                                    ("minute", -1.4469189829363254)],
-                               n = 5},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("in <named-month>|year",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -2.4423470353692043),
-                                    ("year (latent)", -1.0560526742493137),
-                                    ("year", -1.0560526742493137), ("March", -2.4423470353692043),
-                                    ("month", -2.03688192726104)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -1.3862943611198906,
-                               unseen = -2.4849066497880004,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -1.2992829841302609),
-                                    ("year (latent)", -1.7047480922384253),
-                                    ("year", -1.7047480922384253), ("month", -1.2992829841302609)],
-                               n = 3}}),
-       ("Islamic New Year",
-        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}}),
-       ("Lent",
-        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}}),
-       ("negative numbers",
-        Classifier{okData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0},
-                   koData =
-                     ClassData{prior = 0.0, unseen = -3.332204510175204,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("integer (numeric)", -7.696104113612832e-2),
-                                    ("integer (0..19)", -2.6026896854443837)],
-                               n = 25}}),
-       ("about|exactly <duration>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("half an hour", -0.6931471805599453),
-                                    ("minute", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("<time> before last|after next",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.639057329615259,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Wednesday", -1.8718021769015913),
-                                    ("Friday", -1.466337068793427), ("day", -1.1786549963416462),
-                                    ("March", -1.8718021769015913), ("month", -1.8718021769015913)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("by the end of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("this|last|next <cycle>", -0.6931471805599453),
-                                    ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("hhmm (military) am|pm",
-        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 = -0.3794896217049037, unseen = -4.304065093204169,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("intersecthh:mm", -3.1918471524802814),
-                                    ("intersect<time-of-day> am|pm", -3.1918471524802814),
-                                    ("minuteminute", -1.457246097092175),
-                                    ("hh:mmhh:mm", -2.093234863812172),
-                                    ("dayday", -3.1918471524802814),
-                                    ("hourhour", -2.093234863812172),
-                                    ("<named-month> <day-of-month> (non ordinal)<named-month> <day-of-month> (non ordinal)",
-                                     -3.1918471524802814),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
-                                     -3.1918471524802814),
-                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
-                                     -3.597312260588446),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -3.597312260588446),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.681021528714291),
-                                    ("from|since|after <time-of-day>hh:mm", -2.681021528714291)],
-                               n = 26},
-                   koData =
-                     ClassData{prior = -1.1526795099383855, unseen = -3.828641396489095,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<named-month> <day-of-month> (non ordinal)July",
-                                     -3.1135153092103742),
-                                    ("daymonth", -2.70805020110221),
-                                    ("from|since|after <time-of-day>intersect", -2.70805020110221),
-                                    ("<time-of-day> am|pmintersect", -3.1135153092103742),
-                                    ("hh:mm<time-of-day> am|pm", -2.70805020110221),
-                                    ("minuteminute", -1.8607523407150064),
-                                    ("hourhour", -2.70805020110221),
-                                    ("minutehour", -2.70805020110221),
-                                    ("hh:mmintersect", -2.1972245773362196),
-                                    ("<named-month> <day-of-month> (non ordinal)August",
-                                     -3.1135153092103742),
-                                    ("about|exactly <time-of-day><time-of-day> am|pm",
-                                     -3.1135153092103742)],
-                               n = 12}}),
-       ("Tuesday",
-        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}}),
-       ("New Year's Day",
-        Classifier{okData =
-                     ClassData{prior = -1.6094379124341003,
-                               unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
-                   koData =
-                     ClassData{prior = -0.2231435513142097,
-                               unseen = -2.3025850929940455,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 8}}),
-       ("fortnight",
-        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}}),
-       ("<integer> and an half hour",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Laylat al-Qadr",
-        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}}),
-       ("Boghi",
-        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}}),
-       ("at the beginning|end of <named-month>",
-        Classifier{okData =
-                     ClassData{prior = -0.2231435513142097,
-                               unseen = -2.5649493574615367,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("January", -1.3862943611198906),
-                                    ("April", -1.3862943611198906), ("month", -0.8754687373538999)],
-                               n = 4},
-                   koData =
-                     ClassData{prior = -1.6094379124341003,
-                               unseen = -1.9459101490553135,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("October", -1.0986122886681098),
-                                    ("month", -1.0986122886681098)],
-                               n = 1}}),
-       ("<time-of-day> - <time-of-day> (interval)",
-        Classifier{okData =
-                     ClassData{prior = -0.7375989431307791, unseen = -4.110873864173311,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -1.529395204760564),
-                                    ("hh:mmhh:mm", -1.8971199848858813),
-                                    ("<time-of-day> am|pmtime-of-day (latent)",
-                                     -2.4849066497880004),
-                                    ("hourhour", -1.6964492894237302),
-                                    ("from|since|after <time-of-day>time-of-day (latent)",
-                                     -3.4011973816621555),
-                                    ("from|since|after <time-of-day><time-of-day> am|pm",
-                                     -3.4011973816621555),
-                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.4849066497880004),
-                                    ("from|since|after <time-of-day>hh:mm", -2.4849066497880004)],
-                               n = 22},
-                   koData =
-                     ClassData{prior = -0.6505875661411494, unseen = -4.174387269895637,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("about|exactly <time-of-day>time-of-day (latent)",
-                                     -3.4657359027997265),
-                                    ("hh:mmtime-of-day (latent)", -1.7609878105613013),
-                                    ("hh:mm<time-of-day> am|pm", -3.0602707946915624),
-                                    ("<time-of-day> am|pmtime-of-day (latent)",
-                                     -3.4657359027997265),
-                                    ("at <time-of-day><time-of-day> am|pm", -3.4657359027997265),
-                                    ("hourhour", -2.2129729343043585),
-                                    ("minutehour", -1.2144441041932315),
-                                    ("about|exactly <time-of-day><time-of-day> am|pm",
-                                     -3.4657359027997265),
-                                    ("from|since|after <time-of-day>time-of-day (latent)",
-                                     -2.5494451709255714),
-                                    ("at <time-of-day>time-of-day (latent)", -3.0602707946915624),
-                                    ("<integer> to|till|before <hour-of-day>time-of-day (latent)",
-                                     -3.0602707946915624)],
-                               n = 24}}),
-       ("military spelled out numbers am|pm",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
-                               likelihoods =
-                                 HashMap.fromList [("integer (0..19)integer (20..90)", 0.0)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("winter",
-        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}}),
-       ("nth <time> after <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayday", -0.916290731874155),
-                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
-                                     -0.916290731874155)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayday", -0.916290731874155),
-                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayChristmas",
-                                     -0.916290731874155)],
-                               n = 1}}),
-       ("<named-month> <day-of-month> (non ordinal)",
-        Classifier{okData =
-                     ClassData{prior = -0.42121346507630353,
-                               unseen = -3.951243718581427,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Augustinteger (numeric)", -2.5455312716044354),
-                                    ("Marchinteger (numeric)", -2.833213344056216),
-                                    ("Aprilinteger (numeric)", -3.2386784521643803),
-                                    ("month", -0.8407831793660099),
-                                    ("Februaryinteger (numeric)", -1.9859154836690123),
-                                    ("Septemberinteger (numeric)", -2.833213344056216),
-                                    ("Octoberinteger (numeric)", -2.833213344056216),
-                                    ("Julyinteger (numeric)", -2.1400661634962708)],
-                               n = 21},
-                   koData =
-                     ClassData{prior = -1.067840630001356, unseen = -3.4657359027997265,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Augustinteger (numeric)", -2.3353749158170367),
-                                    ("Marchinteger (numeric)", -2.740840023925201),
-                                    ("Aprilinteger (numeric)", -2.740840023925201),
-                                    ("month", -0.9490805546971459),
-                                    ("from|since|after <time-of-day>integer (numeric)",
-                                     -2.3353749158170367),
-                                    ("Julyinteger (numeric)", -1.6422277352570913)],
-                               n = 11}}),
-       ("Diwali",
-        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}}),
-       ("last night",
-        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}}),
-       ("this|next <day-of-week>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.995732273553991,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Thursday", -2.2512917986064953),
-                                    ("Wednesday", -2.2512917986064953),
-                                    ("Monday", -1.845826690498331), ("day", -0.8649974374866046),
-                                    ("Tuesday", -1.55814461804655)],
-                               n = 7},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("ordinal (digits)",
-        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}}),
-       ("quarter (grain)",
-        Classifier{okData =
-                     ClassData{prior = -0.2876820724517809, unseen = -2.639057329615259,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
-                   koData =
-                     ClassData{prior = -1.3862943611198906, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
-       ("last <cycle> of <time>",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("day (grain)October", -1.791759469228055),
-                                    ("daymonth", -1.2809338454620642),
-                                    ("day (grain)intersect", -1.791759469228055),
-                                    ("weekmonth", -1.791759469228055),
-                                    ("week (grain)intersect", -2.1972245773362196),
-                                    ("week (grain)September", -2.1972245773362196)],
-                               n = 6},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Chhath",
-        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}}),
-       ("Vasant Panchami",
-        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-month>(ordinal) <named-month> year",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("ordinal (digits)April", -0.6931471805599453),
-                                    ("month", -0.6931471805599453)],
-                               n = 1},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("Black Friday",
-        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}}),
-       ("week-end",
-        Classifier{okData =
-                     ClassData{prior = -1.252762968495368, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
-                   koData =
-                     ClassData{prior = -0.3364722366212129,
-                               unseen = -1.9459101490553135,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
-       ("Great Lent",
-        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}}),
-       ("Maundy Thursday",
-        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 (grain)",
-        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}}),
-       ("right now",
-        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}}),
-       ("for <duration> from <time>",
-        Classifier{okData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -2.3025850929940455,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("<integer> <unit-of-duration><day-of-month> (ordinal)",
-                                     -1.5040773967762742),
-                                    ("dayday", -1.0986122886681098),
-                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
-                                     -1.5040773967762742)],
-                               n = 2},
-                   koData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -2.0794415416798357,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("dayhour", -1.252762968495368),
-                                    ("<integer> <unit-of-duration>time-of-day (latent)",
-                                     -1.252762968495368)],
-                               n = 1}}),
-       ("compose by multiplication",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
-                               likelihoods =
-                                 HashMap.fromList [("integer (0..19)powers of tens", 0.0)],
-                               n = 3},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("end of year",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("between <time> and <time>",
-        Classifier{okData =
-                     ClassData{prior = -1.0986122886681098,
-                               unseen = -3.1780538303479458,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("minuteminute", -0.832909122935104),
-                                    ("hh:mmhh:mm", -0.832909122935104)],
-                               n = 9},
-                   koData =
-                     ClassData{prior = -0.40546510810816444,
-                               unseen = -3.7376696182833684,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("hh:mmtime-of-day (latent)", -1.410986973710262),
-                                    ("minuteminute", -1.410986973710262),
-                                    ("minutehour", -1.410986973710262),
-                                    ("hh:mmintersect", -1.410986973710262)],
-                               n = 18}}),
-       ("<month> dd-dd (interval)",
-        Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4657359027997265,
-                               likelihoods =
-                                 HashMap.fromList
-                                   [("Julyinteger (numeric)integer (numeric)", -1.6422277352570913),
-                                    ("from|since|after <time-of-day>ordinal (digits)ordinal (digits)",
-                                     -2.740840023925201),
-                                    ("from|since|after <time-of-day>integer (numeric)integer (numeric)",
-                                     -2.740840023925201),
-                                    ("from|since|after <time-of-day>ordinal (digits)integer (numeric)",
-                                     -2.740840023925201),
-                                    ("Augustordinal (digits)integer (numeric)",
-                                     -2.3353749158170367),
-                                    ("month", -0.8690378470236094),
-                                    ("Augustordinal (digits)ordinal (digits)",
-                                     -2.3353749158170367)],
-                               n = 12},
-                   koData =
-                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
-                               likelihoods = HashMap.fromList [], n = 0}}),
-       ("part of days",
-        Classifier{okData =
-                     ClassData{prior = -3.509131981127006e-2,
-                               unseen = -3.4011973816621555,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 28},
-                   koData =
-                     ClassData{prior = -3.367295829986474, unseen = -1.0986122886681098,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+                     ClassData{prior = -8.961215868968717e-2,
+                               unseen = -3.5263605246161616,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 32},
+                   koData =
+                     ClassData{prior = -2.456735772821304, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("integer (numeric)",
+        Classifier{okData =
+                     ClassData{prior = -0.5921203661592374, unseen = -5.733341276897745,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 307},
+                   koData =
+                     ClassData{prior = -0.8055393675814524, unseen = -5.521460917862246,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 248}}),
+       ("<year> (bc|ad)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<duration> hence|ago",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -3.784189633918261,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.563975538357343), ("day", -1.8152899666382492),
+                                    ("year", -2.662587827025453),
+                                    ("<integer> <unit-of-duration>", -1.0531499145913523),
+                                    ("a <unit-of-duration>", -2.662587827025453),
+                                    ("month", -2.662587827025453),
+                                    ("fortnight", -2.662587827025453)],
+                               n = 18},
+                   koData =
+                     ClassData{prior = -1.9459101490553135, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year", -1.466337068793427),
+                                    ("<integer> <unit-of-duration>", -1.1786549963416462),
+                                    ("month", -1.8718021769015913)],
+                               n = 3}}),
+       ("noon|midnight|EOD|end of day",
+        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}}),
+       ("quarter to|till|before <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("noon|midnight|EOD|end of day", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<cycle> after|before <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)tomorrow", -1.6739764335716716),
+                                    ("dayday", -1.1631508098056809),
+                                    ("day (grain)yesterday", -1.6739764335716716)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -1.6739764335716716),
+                                    ("year (grain)Christmas", -2.0794415416798357),
+                                    ("dayday", -2.0794415416798357),
+                                    ("day (grain)intersect", -1.6739764335716716),
+                                    ("day (grain)Easter Sunday", -2.0794415416798357),
+                                    ("yearday", -2.0794415416798357)],
+                               n = 4}}),
+       ("Easter Monday",
+        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}}),
+       ("Navaratri",
+        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}}),
+       ("Martin Luther King's Day",
+        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}}),
+       ("integer (20..90)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Shemini Atzeret",
+        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}}),
+       ("Ramadan",
+        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}}),
+       ("Lazarus Saturday",
+        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}}),
+       ("intersect 2 numbers",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("compose by multiplicationinteger (0..19)",
+                                     -0.2231435513142097)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("powers of tensinteger (0..19)", -0.2231435513142097)],
+                               n = 3}}),
+       ("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}}),
+       ("from|since|after <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.5522794985941517, unseen = -4.248495242049359,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<day-of-month> (ordinal or number) <named-month>",
+                                     -3.5409593240373143),
+                                    ("July", -3.5409593240373143),
+                                    ("year (latent)", -3.1354942159291497),
+                                    ("day", -3.1354942159291497),
+                                    ("time-of-day (latent)", -2.624668592163159),
+                                    ("year", -3.1354942159291497),
+                                    ("<time-of-day> am|pm", -2.624668592163159),
+                                    ("hh:mm", -2.624668592163159),
+                                    ("<day-of-month> (ordinal)", -3.5409593240373143),
+                                    ("hour", -2.03688192726104), ("month", -3.1354942159291497),
+                                    ("minute", -2.624668592163159),
+                                    ("August", -3.5409593240373143)],
+                               n = 18},
+                   koData =
+                     ClassData{prior = -0.23795863709935042,
+                               unseen = -5.123963979403259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> to|till|before <hour-of-day>", -4.019381523748645),
+                                    ("week", -4.42484663185681),
+                                    ("<day-of-month> (ordinal or number) <named-month>",
+                                     -4.42484663185681),
+                                    ("today", -4.42484663185681),
+                                    ("intersect", -2.5530444549552183),
+                                    ("<time> for <duration>", -4.42484663185681),
+                                    ("second", -4.42484663185681), ("now", -3.508555899982655),
+                                    ("tomorrow", -4.019381523748645),
+                                    ("this|last|next <cycle>", -4.42484663185681),
+                                    ("day", -1.9399399820688095),
+                                    ("time-of-day (latent)", -2.6330871626287546),
+                                    ("<time-of-day> am|pm", -4.019381523748645),
+                                    ("nograin", -3.508555899982655),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)",
+                                     -4.42484663185681),
+                                    ("<day-of-month> (ordinal)", -4.019381523748645),
+                                    ("Easter Sunday", -4.42484663185681),
+                                    ("Christmas", -3.7316994512968646),
+                                    ("hour", -2.409943611314545), ("month", -4.42484663185681),
+                                    ("<datetime> - <datetime> (interval)", -3.172083663361442),
+                                    ("<time-of-day> - <time-of-day> (interval)",
+                                     -2.920769235080536),
+                                    ("<named-month> <day-of-month> (non ordinal)",
+                                     -4.019381523748645),
+                                    ("minute", -1.9399399820688095),
+                                    ("right now", -4.42484663185681),
+                                    ("<month> dd-dd (interval)", -3.7316994512968646),
+                                    ("part of days", -4.42484663185681),
+                                    ("dd-dd <month> (interval)", -4.019381523748645)],
+                               n = 67}}),
+       ("integer after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.8109302162163288),
+                                    ("integer (numeric)time-of-day (latent)", -1.0986122886681098),
+                                    ("integer (20..90)time-of-day (latent)", -1.5040773967762742)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<ordinal> last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4011973816621555,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)week (grain)year (latent)",
+                                     -2.268683541318364),
+                                    ("daymonth", -2.268683541318364),
+                                    ("ordinal (digits)day (grain)May", -2.6741486494265287),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.6741486494265287),
+                                    ("weekmonth", -1.7578579175523736),
+                                    ("ordinal (digits)week (grain)October", -2.6741486494265287),
+                                    ("ordinal (digits)week (grain)intersect", -2.6741486494265287),
+                                    ("ordinal (digits)week (grain)year (latent)",
+                                     -2.6741486494265287),
+                                    ("weekyear", -1.9810014688665833),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.6741486494265287),
+                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)May",
+                                     -2.6741486494265287)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Yom HaShoah",
+        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-month> (ordinal or number) <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -1.0296194171811581,
+                               unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)December", -1.6582280766035324),
+                                    ("ordinal (digits)February", -2.3513752571634776),
+                                    ("integer (numeric)April", -2.3513752571634776),
+                                    ("month", -1.252762968495368)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.4418327522790392,
+                               unseen = -3.4011973816621555,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)October", -2.6741486494265287),
+                                    ("ordinal (digits)July", -2.6741486494265287),
+                                    ("integer (numeric)September", -2.268683541318364),
+                                    ("ordinal (digits)August", -2.6741486494265287),
+                                    ("integer (numeric)August", -2.6741486494265287),
+                                    ("ordinal (digits)April", -2.6741486494265287),
+                                    ("month", -1.0647107369924282),
+                                    ("integer (numeric)July", -2.268683541318364)],
+                               n = 9}}),
+       ("<time> <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -9.237332013101517e-2,
+                               unseen = -4.48863636973214,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("dayhour", -1.4816045409242156),
+                                    ("Mondayearly morning", -3.378724525810097),
+                                    ("time-of-day (latent)tonight", -3.378724525810097),
+                                    ("hourhour", -2.3978952727983707),
+                                    ("<time-of-day> o'clockin|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("todaypart of days", -3.784189633918261),
+                                    ("minutehour", -2.6855773452501515),
+                                    ("at <time-of-day>in|during the <part-of-day>",
+                                     -3.378724525810097),
+                                    ("time-of-day (latent)this <part-of-day>", -3.784189633918261),
+                                    ("Mondayin|during the <part-of-day>", -3.784189633918261),
+                                    ("intersectpart of days", -3.784189633918261),
+                                    ("intersectin|during the <part-of-day>", -3.784189633918261),
+                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("tomorrowpart of days", -2.3978952727983707),
+                                    ("hh:mmin|during the <part-of-day>", -3.0910424533583156),
+                                    ("time-of-day (latent)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("hhmm (latent)in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("yesterdaypart of days", -3.378724525810097),
+                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
+                                     -3.784189633918261),
+                                    ("Mondaypart of days", -3.784189633918261)],
+                               n = 31},
+                   koData =
+                     ClassData{prior = -2.4277482359480516,
+                               unseen = -3.4965075614664802,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("yearhour", -2.772588722239781),
+                                    ("monthhour", -2.772588722239781),
+                                    ("hourhour", -2.772588722239781),
+                                    ("year (latent)in|during the <part-of-day>",
+                                     -2.772588722239781),
+                                    ("Februaryin|during the <part-of-day>", -2.772588722239781),
+                                    ("time-of-day (latent)in|during the <part-of-day>",
+                                     -2.772588722239781)],
+                               n = 3}}),
+       ("today",
+        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}}),
+       ("mm/dd",
+        Classifier{okData =
+                     ClassData{prior = -1.2729656758128873,
+                               unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
+                   koData =
+                     ClassData{prior = -0.3285040669720361, unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18}}),
+       ("at <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -8.4557388028063e-2, unseen = -5.003946305945459,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time> timezone", -3.898599985096005),
+                                    ("noon|midnight|EOD|end of day", -3.898599985096005),
+                                    ("integer after|past <hour-of-day>", -3.898599985096005),
+                                    ("half after|past <hour-of-day>", -4.304065093204169),
+                                    ("time-of-day (latent)", -1.6650077635889111),
+                                    ("hhmm (latent)", -3.6109179126442243),
+                                    ("<time-of-day> am|pm", -1.7783364488959144),
+                                    ("hh:mm", -3.3877743613300146),
+                                    ("about|exactly <time-of-day>", -3.898599985096005),
+                                    ("hour", -1.0459685551826876),
+                                    ("<time-of-day> sharp|exactly", -4.304065093204169),
+                                    ("minute", -2.10684051586795)],
+                               n = 68},
+                   koData =
+                     ClassData{prior = -2.512305623976115, unseen = -3.2188758248682006,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -1.2321436812926323),
+                                    ("hour", -1.2321436812926323)],
+                               n = 6}}),
+       ("December",
+        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}}),
+       ("absorption of , after named day",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.332204510175204,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("on <date>", -2.1972245773362196),
+                                    ("Wednesday", -2.6026896854443837),
+                                    ("Saturday", -2.6026896854443837),
+                                    ("Monday", -2.1972245773362196),
+                                    ("Friday", -1.9095425048844386), ("day", -0.8979415932059586),
+                                    ("Sunday", -2.6026896854443837)],
+                               n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("September",
+        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}}),
+       ("tonight",
+        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}}),
+       ("last|past|next <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -4.2626798770413155,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.456735772821304), ("second", -2.639057329615259),
+                                    ("day", -2.3025850929940455), ("year", -2.639057329615259),
+                                    ("<integer> <unit-of-duration>", -0.7827593392496325),
+                                    ("hour", -2.639057329615259), ("month", -2.639057329615259),
+                                    ("minute", -2.639057329615259)],
+                               n = 31},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the ides of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("on <date>",
+        Classifier{okData =
+                     ClassData{prior = -0.13353139262452263,
+                               unseen = -4.204692619390966,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Thursday", -1.4816045409242156),
+                                    ("mm/dd", -3.4965075614664802),
+                                    ("absorption of , after named day", -3.0910424533583156),
+                                    ("intersect", -3.0910424533583156),
+                                    ("Saturday", -2.803360380906535),
+                                    ("Friday", -3.4965075614664802), ("day", -0.8574502318512216),
+                                    ("the <day-of-month> (ordinal)", -3.0910424533583156),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -2.803360380906535),
+                                    ("hour", -3.4965075614664802)],
+                               n = 28},
+                   koData =
+                     ClassData{prior = -2.0794415416798357,
+                               unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersect", -1.791759469228055), ("day", -1.2809338454620642),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -1.791759469228055)],
+                               n = 4}}),
+       ("integer (0..19)",
+        Classifier{okData =
+                     ClassData{prior = -0.11122563511022437,
+                               unseen = -3.970291913552122,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 51},
+                   koData =
+                     ClassData{prior = -2.2512917986064953,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
+       ("between <time-of-day> and <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -0.7884573603642702),
+                                    ("hh:mmhh:mm", -0.7884573603642702)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -0.7884573603642702),
+                                    ("minutehour", -0.7884573603642702)],
+                               n = 9}}),
+       ("Halloween",
+        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}}),
+       ("Passover",
+        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}}),
+       ("from <month> dd-dd (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Julyinteger (numeric)integer (numeric)", -1.6094379124341003),
+                                    ("Augustordinal (digits)integer (numeric)",
+                                     -1.6094379124341003),
+                                    ("month", -0.916290731874155),
+                                    ("Augustordinal (digits)ordinal (digits)",
+                                     -1.6094379124341003)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("October",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("month (grain)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> more <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)minute (grain)", -0.6931471805599453),
+                                    ("minute", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time-of-day> o'clock",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Vesak",
+        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}}),
+       ("Earth Hour",
+        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}}),
+       ("in|within|after <duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.16362942378180204,
+                               unseen = -4.700480365792417,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -3.305053521109253),
+                                    ("<integer> more <unit-of-duration>", -3.9982007016691985),
+                                    ("three-quarters of an hour", -3.0819099697950434),
+                                    ("<integer> + '\"", -3.305053521109253),
+                                    ("number.number hours", -3.9982007016691985),
+                                    ("second", -3.592735593561034),
+                                    ("half a <time-grain>", -3.0819099697950434),
+                                    ("day", -3.305053521109253), ("year", -3.9982007016691985),
+                                    ("<integer> <unit-of-duration>", -1.6468254445057207),
+                                    ("a <unit-of-duration>", -3.0819099697950434),
+                                    ("quarter of an hour", -3.0819099697950434),
+                                    ("hour", -2.6119063405493077),
+                                    ("about|exactly <duration>", -3.9982007016691985),
+                                    ("half an hour (abbrev).", -3.592735593561034),
+                                    ("<integer> and an half hour", -3.9982007016691985),
+                                    ("minute", -1.2901505005669882)],
+                               n = 45},
+                   koData =
+                     ClassData{prior = -1.890850371872286, unseen = -3.58351893845611,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("quarter", -2.456735772821304), ("year", -1.7635885922613588),
+                                    ("<integer> <unit-of-duration>", -1.7635885922613588),
+                                    ("a <unit-of-duration>", -2.169053700369523),
+                                    ("month", -2.8622008809294686)],
+                               n = 8}}),
+       ("January",
+        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}}),
+       ("three-quarters of an hour",
+        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}}),
+       ("Mattu Pongal",
+        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}}),
+       ("Wednesday",
+        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}}),
+       ("half after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> + '\"",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("half <integer> (UK style hour-of-day)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("July",
+        Classifier{okData =
+                     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}}),
+       ("hour (grain)",
+        Classifier{okData =
+                     ClassData{prior = -0.48550781578170077,
+                               unseen = -2.890371757896165,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 16},
+                   koData =
+                     ClassData{prior = -0.9555114450274363,
+                               unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10}}),
+       ("Shavuot",
+        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> <duration> hence|ago",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.3862943611198906),
+                                    ("Thanksgiving Day<integer> <unit-of-duration>",
+                                     -1.0986122886681098),
+                                    ("dayyear", -1.3862943611198906),
+                                    ("Diwali<integer> <unit-of-duration>", -1.791759469228055)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<ordinal> quarter",
+        Classifier{okData =
+                     ClassData{prior = -0.4700036292457356, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -1.1786549963416462),
+                                    ("ordinals (first..twentieth,thirtieth,...)quarter (grain)",
+                                     -1.466337068793427),
+                                    ("quarter", -0.7731898882334817)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.9808292530117262,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.8109302162163288),
+                                    ("quarter", -0.8109302162163288)],
+                               n = 3}}),
+       ("Boss's Day",
+        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}}),
+       ("Orthodox Easter Sunday",
+        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}}),
+       ("one twenty two",
+        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}}),
+       ("May",
+        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}}),
+       ("intersect",
+        Classifier{okData =
+                     ClassData{prior = -0.472396929151576, unseen = -6.734591659972948,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Navaratriyear (latent)", -6.040254711277414),
+                                    ("Ramadanyear (latent)", -6.040254711277414),
+                                    ("<datetime> - <datetime> (interval)on <date>",
+                                     -4.787491742782046),
+                                    ("Bhai Doojyear (latent)", -6.040254711277414),
+                                    ("<time-of-day> - <time-of-day> (interval)on <date>",
+                                     -4.787491742782046),
+                                    ("hourday", -4.335506619038989),
+                                    ("dayhour", -3.236894330370879),
+                                    ("Martin Luther King's Dayyear (latent)", -5.634789603169249),
+                                    ("Shemini Atzeretyear (latent)", -6.040254711277414),
+                                    ("daymonth", -5.123963979403259),
+                                    ("monthday", -5.634789603169249),
+                                    ("monthyear", -4.248495242049359),
+                                    ("Yom Ha'atzmautyear (latent)", -6.040254711277414),
+                                    ("Vijayadashamiyear (latent)", -6.040254711277414),
+                                    ("Thanksgiving Dayyear (latent)", -4.941642422609305),
+                                    ("Thai Pongalyear (latent)", -5.3471075307174685),
+                                    ("Thiru Onamyear (latent)", -5.3471075307174685),
+                                    ("Tuesdaythe <day-of-month> (ordinal)", -6.040254711277414),
+                                    ("from <datetime> - <datetime> (interval)July",
+                                     -6.040254711277414),
+                                    ("houryear", -5.3471075307174685),
+                                    ("this|next <day-of-week>hh(:mm) - <time-of-day> am|pm",
+                                     -6.040254711277414),
+                                    ("Christmas<time-of-day> am|pm", -6.040254711277414),
+                                    ("last <day-of-week> of <time>year (latent)",
+                                     -6.040254711277414),
+                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.3471075307174685),
+                                    ("<time-of-day> am|pmintersect", -4.787491742782046),
+                                    ("Earth Houryear (latent)", -6.040254711277414),
+                                    ("Octoberyear (latent)", -4.53617731450114),
+                                    ("intersect<time-of-day> am|pm", -6.040254711277414),
+                                    ("Mattu Pongalyear (latent)", -6.040254711277414),
+                                    ("Shavuotyear (latent)", -6.040254711277414),
+                                    ("Dhanterasin <named-month>|year", -6.040254711277414),
+                                    ("at <time-of-day>in|within|after <duration>",
+                                     -6.040254711277414),
+                                    ("Thursdayhh(:mm) - <time-of-day> am|pm", -6.040254711277414),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -5.634789603169249),
+                                    ("Marchyear (latent)", -6.040254711277414),
+                                    ("Sukkotyear (latent)", -5.634789603169249),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -6.040254711277414),
+                                    ("Clean Mondayyear (latent)", -5.634789603169249),
+                                    ("monthhour", -5.634789603169249),
+                                    ("todayat <time-of-day>", -6.040254711277414),
+                                    ("Thursday<time> timezone", -4.335506619038989),
+                                    ("from|since|after <time>December", -6.040254711277414),
+                                    ("this <time>hh(:mm) - <time-of-day> am|pm",
+                                     -6.040254711277414),
+                                    ("Palm SundaySunday", -5.634789603169249),
+                                    ("dayday", -3.8430301339411947),
+                                    ("<time> <part-of-day>at <time-of-day>", -6.040254711277414),
+                                    ("mm/ddat <time-of-day>", -6.040254711277414),
+                                    ("tonightat <time-of-day>", -6.040254711277414),
+                                    ("<time-of-day> am|pmabsorption of , after named day",
+                                     -5.3471075307174685),
+                                    ("today<time-of-day> am|pm", -6.040254711277414),
+                                    ("Februarythe <day-of-month> (ordinal)", -5.634789603169249),
+                                    ("at <time-of-day><time> <part-of-day>", -6.040254711277414),
+                                    ("mm/dd<time-of-day> am|pm", -6.040254711277414),
+                                    ("hourhour", -4.787491742782046),
+                                    ("<time-of-day> am|pmon <date>", -4.02535169073515),
+                                    ("Wednesdaythis|last|next <cycle>", -6.040254711277414),
+                                    ("Lentyear (latent)", -6.040254711277414),
+                                    ("intersect<named-month> <day-of-month> (non ordinal)",
+                                     -4.53617731450114),
+                                    ("Boghiyear (latent)", -6.040254711277414),
+                                    ("dayyear", -1.9972034434428638),
+                                    ("Thursdayfrom|since|after <time>", -5.634789603169249),
+                                    ("<time-of-day> o'clockin|during the <part-of-day>",
+                                     -6.040254711277414),
+                                    ("Thursdayat <time-of-day>", -5.634789603169249),
+                                    ("Islamic New Yearyear (latent)", -5.634789603169249),
+                                    ("Laylat al-Qadryear (latent)", -5.123963979403259),
+                                    ("Chhathin <named-month>|year", -6.040254711277414),
+                                    ("Vasant Panchamiin <named-month>|year", -6.040254711277414),
+                                    ("Diwaliin <named-month>|year", -6.040254711277414),
+                                    ("Shrove Tuesdayyear (latent)", -6.040254711277414),
+                                    ("intersect by \",\", \"of\", \"from\" for year<time-of-day> am|pm",
+                                     -5.3471075307174685),
+                                    ("<time-of-day> am|pmtomorrow", -5.3471075307174685),
+                                    ("Yom Kippuryear (latent)", -6.040254711277414),
+                                    ("<part-of-day> of <time>year (latent)", -6.040254711277414),
+                                    ("minutehour", -5.123963979403259),
+                                    ("Kaanum Pongalyear (latent)", -5.634789603169249),
+                                    ("Maha Saptamiyear (latent)", -6.040254711277414),
+                                    ("at <time-of-day>in|during the <part-of-day>",
+                                     -5.634789603169249),
+                                    ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
+                                     -4.335506619038989),
+                                    ("for <duration> from <time>December", -6.040254711277414),
+                                    ("tomorrow<time-of-day> sharp|exactly", -6.040254711277414),
+                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
+                                     -5.123963979403259),
+                                    ("on <date><named-month> <day-of-month> (non ordinal)",
+                                     -5.634789603169249),
+                                    ("Pentecostyear (latent)", -6.040254711277414),
+                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.123963979403259),
+                                    ("Eid al-Fitryear (latent)", -6.040254711277414),
+                                    ("Mondayin|during the <part-of-day>", -6.040254711277414),
+                                    ("Raksha Bandhanyear (latent)", -6.040254711277414),
+                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.634789603169249),
+                                    ("Navaratriin <named-month>|year", -6.040254711277414),
+                                    ("Ashurayear (latent)", -6.040254711277414),
+                                    ("Chinese New Yearyear (latent)", -6.040254711277414),
+                                    ("Sundayyear (latent)", -6.040254711277414),
+                                    ("Lag BaOmeryear (latent)", -6.040254711277414),
+                                    ("last weekend of <named-month>year (latent)",
+                                     -6.040254711277414),
+                                    ("Eid al-Adhayear (latent)", -5.123963979403259),
+                                    ("intersectin|during the <part-of-day>", -6.040254711277414),
+                                    ("Christmasat <time-of-day>", -6.040254711277414),
+                                    ("Passoveryear (latent)", -6.040254711277414),
+                                    ("Lazarus Saturdayyear (latent)", -6.040254711277414),
+                                    ("<day-of-month> (ordinal or number) <named-month>year (latent)",
+                                     -6.040254711277414),
+                                    ("Yom HaShoahyear (latent)", -5.634789603169249),
+                                    ("Thursday<datetime> - <datetime> (interval)",
+                                     -5.634789603169249),
+                                    ("<day-of-month> (ordinal or number) of <named-month>in|during the <part-of-day>",
+                                     -6.040254711277414),
+                                    ("Thai Pongalin <named-month>|year", -6.040254711277414),
+                                    ("Septemberyear (latent)", -5.634789603169249),
+                                    ("mm/ddyear (latent)", -6.040254711277414),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -4.787491742782046),
+                                    ("Halloweenyear (latent)", -6.040254711277414),
+                                    ("<ordinal> last <cycle> of <time>year (latent)",
+                                     -5.634789603169249),
+                                    ("from <time-of-day> - <time-of-day> (interval)on <date>",
+                                     -5.3471075307174685),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"<time-of-day> am|pm",
+                                     -6.040254711277414),
+                                    ("at <time-of-day>intersect", -5.634789603169249),
+                                    ("Rosh Hashanahyear (latent)", -5.3471075307174685),
+                                    ("Dhanterasyear (latent)", -6.040254711277414),
+                                    ("Tu BiShvatyear (latent)", -6.040254711277414),
+                                    ("Holiyear (latent)", -5.3471075307174685),
+                                    ("<time-of-day> - <time-of-day> (interval)tomorrow",
+                                     -6.040254711277414),
+                                    ("Holika Dahanyear (latent)", -5.3471075307174685),
+                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -6.040254711277414),
+                                    ("dayminute", -3.4011973816621555),
+                                    ("Mawlidyear (latent)", -6.040254711277414),
+                                    ("from <datetime> - <datetime> (interval)on <date>",
+                                     -5.634789603169249),
+                                    ("<datetime> - <datetime> (interval)tomorrow",
+                                     -6.040254711277414),
+                                    ("Jumu'atul-Widayear (latent)", -5.123963979403259),
+                                    ("minuteday", -2.402668551551028),
+                                    ("absorption of , after named dayintersect",
+                                     -6.040254711277414),
+                                    ("intersectyear (latent)", -6.040254711277414),
+                                    ("Orthodox Easter Sundayyear (latent)", -6.040254711277414),
+                                    ("<ordinal> <cycle> of <time>year (latent)",
+                                     -6.040254711277414),
+                                    ("the <day-of-month> (ordinal)in|during the <part-of-day>",
+                                     -6.040254711277414),
+                                    ("Boss's Dayyear (latent)", -5.634789603169249),
+                                    ("Global Youth Service Dayyear (latent)", -6.040254711277414),
+                                    ("Tisha B'Avyear (latent)", -6.040254711277414),
+                                    ("Isra and Mi'rajyear (latent)", -5.123963979403259),
+                                    ("at <time-of-day>absorption of , after named day",
+                                     -6.040254711277414),
+                                    ("Christmasyear (latent)", -5.634789603169249),
+                                    ("Naraka Chaturdashiyear (latent)", -5.634789603169249),
+                                    ("at <time-of-day>on <date>", -4.941642422609305),
+                                    ("between <time-of-day> and <time-of-day> (interval)on <date>",
+                                     -4.430816798843313),
+                                    ("dayweek", -6.040254711277414),
+                                    ("Easter Sundayyear (latent)", -5.3471075307174685),
+                                    ("weekyear", -4.941642422609305),
+                                    ("hh:mmin|during the <part-of-day>", -5.3471075307174685),
+                                    ("<cycle> after|before <time><time-of-day> am|pm",
+                                     -5.634789603169249),
+                                    ("Hanukkahyear (latent)", -5.3471075307174685),
+                                    ("February<time> <part-of-day>", -6.040254711277414),
+                                    ("Tuesdayin <named-month>|year", -6.040254711277414),
+                                    ("Great Lentyear (latent)", -6.040254711277414),
+                                    ("tomorrowat <time-of-day>", -5.3471075307174685),
+                                    ("between <time> and <time>on <date>", -4.430816798843313),
+                                    ("absorption of , after named dayintersect by \",\", \"of\", \"from\" for year",
+                                     -6.040254711277414),
+                                    ("last <cycle> of <time>year (latent)", -5.3471075307174685),
+                                    ("at <time-of-day>tomorrow", -5.634789603169249),
+                                    ("tomorrow<time-of-day> am|pm", -6.040254711277414),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -6.040254711277414),
+                                    ("Diwaliyear (latent)", -6.040254711277414),
+                                    ("Black Fridayyear (latent)", -5.634789603169249),
+                                    ("the <ordinal> last <cycle> of <time>year (latent)",
+                                     -6.040254711277414),
+                                    ("in|during the <part-of-day>at <time-of-day>",
+                                     -6.040254711277414),
+                                    ("Chhathyear (latent)", -5.634789603169249),
+                                    ("Vasant Panchamiyear (latent)", -6.040254711277414),
+                                    ("Palm Sundayintersect", -6.040254711277414),
+                                    ("<day-of-month> (ordinal or number) of <month>in|during the <part-of-day>",
+                                     -6.040254711277414),
+                                    ("Februaryintersect", -6.040254711277414),
+                                    ("Simchat Torahyear (latent)", -6.040254711277414),
+                                    ("minuteyear", -6.040254711277414)],
+                               n = 313},
+                   koData =
+                     ClassData{prior = -0.9768531046320869, unseen = -6.385194398997726,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day> - <time-of-day> (interval)on <date>",
+                                     -4.774068722449905),
+                                    ("hourday", -4.774068722449905),
+                                    ("<named-month> <day-of-month> (non ordinal)July",
+                                     -5.69035945432406),
+                                    ("dayhour", -3.125410096862524),
+                                    ("Tuesdayfrom|since|after <time>", -5.69035945432406),
+                                    ("daymonth", -3.5502932908277893),
+                                    ("monthday", -5.284894346215896),
+                                    ("monthyear", -4.437596485828692),
+                                    ("<time-of-day> am|pmyear (latent)", -5.284894346215896),
+                                    ("Thai Pongalyear (latent)", -4.997212273764115),
+                                    ("intersecthh:mm", -5.69035945432406),
+                                    ("from <datetime> - <datetime> (interval)July",
+                                     -5.69035945432406),
+                                    ("houryear", -4.774068722449905),
+                                    ("from <time-of-day> - <time-of-day> (interval)July",
+                                     -5.69035945432406),
+                                    ("<time-of-day> am|pmintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -4.997212273764115),
+                                    ("<time-of-day> am|pmintersect", -4.437596485828692),
+                                    ("until <time>on <date>", -4.997212273764115),
+                                    ("Octoberyear (latent)", -5.69035945432406),
+                                    ("July<day-of-month> (ordinal or number) <named-month>",
+                                     -5.69035945432406),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -4.437596485828692),
+                                    ("about|exactly <time-of-day>year (latent)", -5.69035945432406),
+                                    ("absorption of , after named dayJuly", -5.284894346215896),
+                                    ("from|since|after <time>July", -5.69035945432406),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -4.774068722449905),
+                                    ("Clean Mondayyear (latent)", -5.69035945432406),
+                                    ("monthhour", -5.69035945432406),
+                                    ("hourmonth", -4.774068722449905),
+                                    ("todayat <time-of-day>", -5.69035945432406),
+                                    ("from|since|after <time>December", -5.69035945432406),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -5.69035945432406),
+                                    ("Mondayyear (latent)", -4.997212273764115),
+                                    ("dayday", -5.284894346215896),
+                                    ("mm/ddat <time-of-day>", -5.284894346215896),
+                                    ("<time-of-day> am|pmon <date>", -4.437596485828692),
+                                    ("dayyear", -2.719944988754359),
+                                    ("Thursdaymm/dd", -5.69035945432406),
+                                    ("New Year's Dayyear (latent)", -5.284894346215896),
+                                    ("Thursdayfrom|since|after <time>", -3.9856113620856353),
+                                    ("Thursdayat <time-of-day>", -4.437596485828692),
+                                    ("<integer> to|till|before <hour-of-day>September",
+                                     -5.69035945432406),
+                                    ("Aprilyear (latent)", -5.69035945432406),
+                                    ("monthminute", -5.69035945432406),
+                                    ("<time-of-day> am|pmtomorrow", -5.69035945432406),
+                                    ("Thursdayhh:mm", -4.774068722449905),
+                                    ("August<day-of-month> (ordinal or number) <named-month>",
+                                     -5.69035945432406),
+                                    ("minutemonth", -3.898599985096005),
+                                    ("week-endin <named-month>|year", -5.69035945432406),
+                                    ("Augustyear (latent)", -5.284894346215896),
+                                    ("Thursdayfrom <datetime> - <datetime> (interval)",
+                                     -5.284894346215896),
+                                    ("Thursdayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.284894346215896),
+                                    ("mm/dd<time-of-day> - <time-of-day> (interval)",
+                                     -5.284894346215896),
+                                    ("tomorrowfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.69035945432406),
+                                    ("Sundayyear (latent)", -4.997212273764115),
+                                    ("Christmasat <time-of-day>", -5.69035945432406),
+                                    ("from|since|after <time>year (latent)", -4.437596485828692),
+                                    ("<duration> after|before|from <time>December",
+                                     -5.69035945432406),
+                                    ("yesterday<time-of-day> am|pm", -5.69035945432406),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
+                                     -5.69035945432406),
+                                    ("mm/ddyear (latent)", -5.69035945432406),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -4.997212273764115),
+                                    ("<named-month> <day-of-month> (non ordinal)August",
+                                     -5.69035945432406),
+                                    ("at <time-of-day>intersect", -5.284894346215896),
+                                    ("hh:mmyear (latent)", -4.591747165655951),
+                                    ("Holiyear (latent)", -5.69035945432406),
+                                    ("until <time><time-of-day> am|pm", -5.69035945432406),
+                                    ("at <time-of-day>intersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -5.69035945432406),
+                                    ("dayminute", -3.164630810015805),
+                                    ("intersectSeptember", -4.186282057547786),
+                                    ("minuteday", -2.6223065191904436),
+                                    ("absorption of , after named dayintersect", -5.69035945432406),
+                                    ("Februaryin|during the <part-of-day>", -5.69035945432406),
+                                    ("hh:mmon <date>", -3.6754564337817954),
+                                    ("Saturdayyear (latent)", -5.69035945432406),
+                                    ("from|since|after <time>on <date>", -4.774068722449905),
+                                    ("absorption of , after named daySeptember",
+                                     -4.774068722449905),
+                                    ("Naraka Chaturdashiyear (latent)", -5.69035945432406),
+                                    ("on <date>September", -5.284894346215896),
+                                    ("at <time-of-day>on <date>", -5.284894346215896),
+                                    ("in <named-month>|yearyear (latent)", -5.69035945432406),
+                                    ("dayweek", -5.69035945432406),
+                                    ("Easter Sundayyear (latent)", -5.284894346215896),
+                                    ("Thursday<time-of-day> am|pm", -4.997212273764115),
+                                    ("weekyear", -5.284894346215896),
+                                    ("<named-month> <day-of-month> (non ordinal)until <time>",
+                                     -5.69035945432406),
+                                    ("intersect by \",\", \"of\", \"from\" for yearhh:mm",
+                                     -4.997212273764115),
+                                    ("Sundayfrom|since|after <time>", -5.69035945432406),
+                                    ("absorption of , after named dayFebruary", -4.774068722449905),
+                                    ("July<integer> to|till|before <hour-of-day>",
+                                     -5.69035945432406),
+                                    ("tomorrowat <time-of-day>", -5.69035945432406),
+                                    ("<integer> to|till|before <hour-of-day>July",
+                                     -5.69035945432406),
+                                    ("last <cycle> of <time>year (latent)", -5.284894346215896),
+                                    ("tomorrow<time-of-day> am|pm", -5.69035945432406),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -4.997212273764115),
+                                    ("Diwaliyear (latent)", -5.284894346215896),
+                                    ("<time-of-day> - <time-of-day> (interval)July",
+                                     -5.69035945432406),
+                                    ("Fridayyear (latent)", -5.284894346215896),
+                                    ("minuteyear", -4.437596485828692)],
+                               n = 189}}),
+       ("one eleven",
+        Classifier{okData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1},
+                   koData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("after lunch/work/school",
+        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}}),
+       ("early morning",
+        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}}),
+       ("in <number> (implicit minutes)",
+        Classifier{okData =
+                     ClassData{prior = -1.2992829841302609,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.3184537311185346),
+                                    ("integer (0..19)", -1.2992829841302609)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.3184537311185346, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.1670540846631662),
+                                    ("integer (0..19)", -1.8718021769015913)],
+                               n = 24}}),
+       ("<ordinal> <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.791759469228055),
+                                    ("ordinal (digits)quarter (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("quarteryear", -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)day (grain)October",
+                                     -2.1972245773362196),
+                                    ("ordinal (digits)day (grain)this|last|next <cycle>",
+                                     -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.1972245773362196),
+                                    ("weekmonth", -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.1972245773362196)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("year (grain)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4011973816621555,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 28},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("from <datetime> - <datetime> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -1.0116009116784799,
+                               unseen = -3.6375861597263857,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -2.001480000210124),
+                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal)",
+                                     -2.917770732084279),
+                                    ("hh:mmhh:mm", -2.001480000210124),
+                                    ("dayday", -2.512305623976115),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)<day-of-month> (ordinal)",
+                                     -2.917770732084279),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.917770732084279),
+                                    ("hourhour", -2.512305623976115),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.917770732084279)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -0.45198512374305727,
+                               unseen = -3.912023005428146,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hourday", -3.1986731175506815),
+                                    ("dayhour", -2.793208009442517),
+                                    ("<day-of-month> (ordinal)time-of-day (latent)",
+                                     -3.1986731175506815),
+                                    ("<named-month>|<named-day> <day-of-month> (ordinal)year (latent)",
+                                     -3.1986731175506815),
+                                    ("hh:mmtime-of-day (latent)", -2.2823823856765264),
+                                    ("minuteminute", -2.793208009442517),
+                                    ("time-of-day (latent)time-of-day (latent)",
+                                     -2.793208009442517),
+                                    ("dayday", -3.1986731175506815),
+                                    ("hourhour", -2.505525936990736),
+                                    ("dayyear", -3.1986731175506815),
+                                    ("minutehour", -2.2823823856765264),
+                                    ("hh:mmintersect", -2.793208009442517),
+                                    ("<day-of-month> (ordinal)<day-of-month> (ordinal or number) <named-month>",
+                                     -3.1986731175506815),
+                                    ("time-of-day (latent)<time-of-day> am|pm",
+                                     -3.1986731175506815),
+                                    ("time-of-day (latent)<day-of-month> (ordinal or number) <named-month>",
+                                     -3.1986731175506815),
+                                    ("<named-month> <day-of-month> (non ordinal)time-of-day (latent)",
+                                     -3.1986731175506815)],
+                               n = 14}}),
+       ("Saturday",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.9459101490553135,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("the <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week (grain)<named-month>|<named-day> <day-of-month> (ordinal)",
+                                     -1.7346010553881064),
+                                    ("weekmonth", -1.7346010553881064),
+                                    ("week (grain)October", -1.7346010553881064),
+                                    ("week (grain)<named-month> <day-of-month> (non ordinal)",
+                                     -1.7346010553881064),
+                                    ("weekday", -1.2237754316221157)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("number.number hours",
+        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}}),
+       ("from <time-of-day> - <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -1.6094379124341003),
+                                    ("hh:mmhh:mm", -1.6094379124341003),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
+                                    ("hourhour", -2.3025850929940455),
+                                    ("hourminute", -2.3025850929940455),
+                                    ("time-of-day (latent)<time-of-day> sharp|exactly",
+                                     -2.70805020110221),
+                                    ("time-of-day (latent)hh:mm", -2.70805020110221),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.6094379124341003),
+                                    ("time-of-day (latent)time-of-day (latent)",
+                                     -2.0149030205422647),
+                                    ("hourhour", -1.791759469228055),
+                                    ("minutehour", -1.6094379124341003),
+                                    ("time-of-day (latent)<time-of-day> am|pm", -2.70805020110221)],
+                               n = 9}}),
+       ("integer 21..99",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)integer (numeric)", -0.6931471805599453),
+                                    ("integer (20..90)integer (0..19)", -0.6931471805599453)],
+                               n = 4}}),
+       ("Global Youth Service Day",
+        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}}),
+       ("Tisha B'Av",
+        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}}),
+       ("yyyy-mm-dd",
+        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}}),
+       ("year (latent)",
+        Classifier{okData =
+                     ClassData{prior = -0.15822400521489416,
+                               unseen = -4.976733742420574,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -4.255961441879589e-2),
+                                    ("intersect 2 numbers", -3.58351893845611)],
+                               n = 140},
+                   koData =
+                     ClassData{prior = -1.9218125974762528, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -1.1349799328389845),
+                                    ("negative numbers", -0.6931471805599453),
+                                    ("compose by multiplication", -1.9459101490553135)],
+                               n = 24}}),
+       ("mm/dd/yyyy",
+        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}}),
+       ("<time> for <duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -1.0296194171811581),
+                                    ("intersect<integer> <unit-of-duration>", -1.9459101490553135),
+                                    ("<day-of-month> (ordinal or number) <named-month><integer> <unit-of-duration>",
+                                     -1.540445040947149),
+                                    ("from|since|after <time><integer> <unit-of-duration>",
+                                     -1.9459101490553135)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("monthday", -1.2039728043259361),
+                                    ("December<integer> <unit-of-duration>", -1.2039728043259361)],
+                               n = 2}}),
+       ("Monday",
+        Classifier{okData =
+                     ClassData{prior = -0.3483066942682157, unseen = -2.639057329615259,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
+                   koData =
+                     ClassData{prior = -1.2237754316221157,
+                               unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
+       ("yesterday",
+        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}}),
+       ("<ordinal> quarter <year>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)year (latent)",
+                                     -0.6931471805599453),
+                                    ("quarteryear", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("hh:mm:ss",
+        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}}),
+       ("Hanukkah",
+        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}}),
+       ("<hour-of-day> <integer>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>integer (20..90)", -1.3862943611198906),
+                                    ("hour", -0.9808292530117262),
+                                    ("at <time-of-day>integer (numeric)", -1.3862943611198906)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("about|exactly <time-of-day>integer (numeric)",
+                                     -1.0986122886681098),
+                                    ("hour", -1.0986122886681098)],
+                               n = 1}}),
+       ("nth <time> of <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.4700036292457356, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -0.9808292530117262),
+                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
+                                     -2.0794415416798357),
+                                    ("ordinals (first..twentieth,thirtieth,...)Wednesdayintersect",
+                                     -1.6739764335716716),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayOctober",
+                                     -1.6739764335716716)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.9808292530117262,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.0986122886681098),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdaySeptember",
+                                     -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)WednesdayOctober",
+                                     -1.3862943611198906)],
+                               n = 3}}),
+       ("half a <time-grain>",
+        Classifier{okData =
+                     ClassData{prior = -0.1823215567939546,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -1.791759469228055, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1}}),
+       ("Valentine's Day",
+        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}}),
+       ("April",
+        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}}),
+       ("Maha Saptami",
+        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}}),
+       ("end of month",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("week (grain)",
+        Classifier{okData =
+                     ClassData{prior = -3.822121282019774e-2,
+                               unseen = -4.3694478524670215,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 77},
+                   koData =
+                     ClassData{prior = -3.283414346005772, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("<part-of-day> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("part of daysintersect by \",\", \"of\", \"from\", \"'s\"",
+                                     -2.3513752571634776),
+                                    ("part of daysintersect", -2.3513752571634776),
+                                    ("hourday", -0.9650808960435872),
+                                    ("part of daysthe <day-of-month> (ordinal)",
+                                     -2.3513752571634776),
+                                    ("part of daysthe <day-of-month> (number)",
+                                     -2.3513752571634776),
+                                    ("part of daysthis <time>", -2.3513752571634776),
+                                    ("part of daysChristmas", -1.9459101490553135)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("from <time> for <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.6931471805599453),
+                                    ("<day-of-month> (ordinal or number) <named-month><integer> <unit-of-duration>",
+                                     -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("six thirty six a.m.",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -1.252762968495368),
+                                    ("one twenty two", -0.8472978603872037),
+                                    ("one eleven", -1.252762968495368)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Shrove Tuesday",
+        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}}),
+       ("now",
+        Classifier{okData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
+       ("<day-of-month> (ordinal or number) of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -0.13353139262452263,
+                               unseen = -3.0910424533583156,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)July", -2.3513752571634776),
+                                    ("ordinals (first..twentieth,thirtieth,...)March",
+                                     -2.3513752571634776),
+                                    ("ordinal (digits)February", -2.3513752571634776),
+                                    ("integer (numeric)February", -1.9459101490553135),
+                                    ("month", -0.9650808960435872),
+                                    ("ordinal (digits)March", -2.3513752571634776),
+                                    ("integer (numeric)July", -2.3513752571634776)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -2.0794415416798357,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)February", -1.5040773967762742),
+                                    ("month", -1.5040773967762742)],
+                               n = 1}}),
+       ("this <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.6931471805599453),
+                                    ("part of days", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Kaanum Pongal",
+        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}}),
+       ("Yom Kippur",
+        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}}),
+       ("powers of tens",
+        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}}),
+       ("Friday",
+        Classifier{okData =
+                     ClassData{prior = -0.3677247801253174,
+                               unseen = -2.3978952727983707,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 9},
+                   koData =
+                     ClassData{prior = -1.1786549963416462, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("in|during the <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -8.701137698962981e-2,
+                               unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("early morning", -2.5257286443082556),
+                                    ("hour", -0.7339691750802004),
+                                    ("part of days", -0.8209805520698302)],
+                               n = 11},
+                   koData =
+                     ClassData{prior = -2.4849066497880004, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.916290731874155),
+                                    ("part of days", -0.916290731874155)],
+                               n = 1}}),
+       ("tomorrow",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 17},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("hh(:mm) - <time-of-day> am|pm",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("this|last|next <cycle>",
+        Classifier{okData =
+                     ClassData{prior = -0.15790302944580878,
+                               unseen = -5.093750200806762,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.1173044216802621),
+                                    ("month (grain)", -2.7850112422383386),
+                                    ("year (grain)", -2.6026896854443837),
+                                    ("week (grain)", -1.1173044216802621),
+                                    ("quarter", -3.4781584227982836), ("year", -2.6026896854443837),
+                                    ("month", -2.7850112422383386),
+                                    ("quarter (grain)", -3.4781584227982836)],
+                               n = 76},
+                   koData =
+                     ClassData{prior = -1.9236870122706031,
+                               unseen = -3.6109179126442243,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.2809338454620642),
+                                    ("week (grain)", -1.2809338454620642),
+                                    ("day", -1.9740810260220096),
+                                    ("day (grain)", -1.9740810260220096)],
+                               n = 13}}),
+       ("Simchat Torah",
+        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}}),
+       ("New Year's Eve",
+        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}}),
+       ("the <ordinal> <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)year (latent)",
+                                     -0.6931471805599453),
+                                    ("quarteryear", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Raksha Bandhan",
+        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}}),
+       ("Ashura",
+        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}}),
+       ("Palm Sunday",
+        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}}),
+       ("Eid al-Adha",
+        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}}),
+       ("by <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("noon|midnight|EOD|end of day", -1.9459101490553135),
+                                    ("time-of-day (latent)", -1.9459101490553135),
+                                    ("<time-of-day> am|pm", -1.9459101490553135),
+                                    ("hh:mm", -1.9459101490553135), ("hour", -1.540445040947149),
+                                    ("minute", -1.540445040947149)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the <day-of-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.5108256237659907,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)",
+                                     -1.7047480922384253),
+                                    ("ordinal (digits)", -0.2006706954621511)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.916290731874155, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)",
+                                     -0.9808292530117262),
+                                    ("ordinal (digits)", -0.4700036292457356)],
+                               n = 6}}),
+       ("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,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Lag BaOmer",
+        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}}),
+       ("fractional number",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 17}}),
+       ("Sunday",
+        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}}),
+       ("Chinese New Year",
+        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}}),
+       ("February",
+        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}}),
+       ("minute (grain)",
+        Classifier{okData =
+                     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}}),
+       ("last|this|next <season>",
+        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}}),
+       ("the <ordinal> quarter",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
+                                    ("quarter", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.6931471805599453),
+                                    ("quarter", -0.6931471805599453)],
+                               n = 1}}),
+       ("time-of-day (latent)",
+        Classifier{okData =
+                     ClassData{prior = -0.635159922909596, unseen = -4.31748811353631,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.11441035117774422),
+                                    ("integer (0..19)", -2.3581549441488563)],
+                               n = 71},
+                   koData =
+                     ClassData{prior = -0.7547050735593787, unseen = -4.204692619390966,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -7.878087785311434e-2),
+                                    ("integer (0..19)", -3.0910424533583156),
+                                    ("integer 21..99", -3.4965075614664802)],
+                               n = 63}}),
+       ("beginning of year",
+        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}}),
+       ("last <day-of-week> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -0.916290731874155),
+                                    ("SundayMarch", -1.6094379124341003),
+                                    ("MondayMarch", -1.6094379124341003),
+                                    ("Sundayintersect", -1.6094379124341003)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.1273394223766015, unseen = -5.225746673713201,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.581298495463066),
+                                    ("integer (0..19)year (grain)", -3.1409142833984887),
+                                    ("integer (numeric)day (grain)", -2.655406467616788),
+                                    ("integer (0..19)second (grain) ", -3.834061463958434),
+                                    ("integer (0..19)hour (grain)", -3.1409142833984887),
+                                    ("second", -3.42859635585027),
+                                    ("integer (numeric)second (grain) ", -4.121743536410215),
+                                    ("integer (numeric)year (grain)", -3.1409142833984887),
+                                    ("day", -2.3871424810221087), ("year", -2.512305623976115),
+                                    ("integer (numeric)week (grain)", -3.1409142833984887),
+                                    ("integer (0..19)month (grain)", -3.6109179126442243),
+                                    ("hour", -2.7354491752903245), ("month", -2.917770732084279),
+                                    ("integer (numeric)minute (grain)", -3.2744456760230114),
+                                    ("integer (0..19)minute (grain)", -3.1409142833984887),
+                                    ("integer (numeric)month (grain)", -3.42859635585027),
+                                    ("minute", -2.581298495463066),
+                                    ("integer (numeric)hour (grain)", -3.6109179126442243),
+                                    ("integer (0..19)day (grain)", -3.6109179126442243),
+                                    ("integer (0..19)week (grain)", -3.2744456760230114)],
+                               n = 81},
+                   koData =
+                     ClassData{prior = -2.12389330425067, unseen = -3.828641396489095,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("quarter", -3.1135153092103742), ("hour", -1.4087672169719492),
+                                    ("integer (numeric)hour (grain)", -1.4087672169719492),
+                                    ("integer (0..19)quarter (grain)", -3.1135153092103742)],
+                               n = 11}}),
+       ("hhmm (latent)",
+        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}}),
+       ("<time-of-day> am|pm",
+        Classifier{okData =
+                     ClassData{prior = -0.2546422183735807, unseen = -5.37989735354046,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>", -3.765840495250065),
+                                    ("integer after|past <hour-of-day>", -3.9889840465642745),
+                                    ("at <time-of-day>", -2.1564025828159643),
+                                    ("<time-of-day> o'clock", -4.276666119016055),
+                                    ("half after|past <hour-of-day>", -4.276666119016055),
+                                    ("time-of-day (latent)", -1.7117167615545186),
+                                    ("hhmm (latent)", -4.68213122712422),
+                                    ("hh:mm", -2.330755969960742),
+                                    ("quarter after|past <hour-of-day>", -4.68213122712422),
+                                    ("until <time>", -3.9889840465642745),
+                                    ("about|exactly <time-of-day>", -4.68213122712422),
+                                    ("hour", -1.1856236656577395),
+                                    ("<time-of-day> sharp|exactly", -4.68213122712422),
+                                    ("minute", -1.791759469228055)],
+                               n = 100},
+                   koData =
+                     ClassData{prior = -1.492516574375198, unseen = -4.31748811353631,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> to|till|before <hour-of-day>", -3.20545280453606),
+                                    ("from|since|after <time>", -3.20545280453606),
+                                    ("<hour-of-day> <integer>", -3.6109179126442243),
+                                    ("time-of-day (latent)", -1.085189268335969),
+                                    ("hour", -1.0459685551826876), ("minute", -2.6946271807700692)],
+                               n = 29}}),
+       ("Yom Ha'atzmaut",
+        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}}),
+       ("from <day-of-month> (ordinal or number) to <day-of-month> (ordinal or number) <named-month> (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)ordinal (digits)July", -1.252762968495368),
+                                    ("integer (numeric)integer (numeric)July", -1.252762968495368),
+                                    ("month", -0.8472978603872037)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Thiru Onam",
+        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}}),
+       ("Thai Pongal",
+        Classifier{okData =
+                     ClassData{prior = -0.5596157879354228, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
+                   koData =
+                     ClassData{prior = -0.8472978603872037,
+                               unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Vijayadashami",
+        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}}),
+       ("Thanksgiving Day",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 17},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("part of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("March", -0.6931471805599453), ("month", -0.6931471805599453)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("a <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.49247648509779407,
+                               unseen = -3.6109179126442243,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.1972245773362196),
+                                    ("year (grain)", -2.1972245773362196),
+                                    ("second", -2.890371757896165),
+                                    ("week (grain)", -2.1972245773362196),
+                                    ("day", -2.1972245773362196),
+                                    ("minute (grain)", -2.890371757896165),
+                                    ("year", -2.1972245773362196),
+                                    ("second (grain) ", -2.890371757896165),
+                                    ("minute", -2.890371757896165),
+                                    ("day (grain)", -2.1972245773362196)],
+                               n = 11},
+                   koData =
+                     ClassData{prior = -0.9444616088408514, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour (grain)", -1.7227665977411035),
+                                    ("quarter", -1.9459101490553135), ("hour", -1.7227665977411035),
+                                    ("quarter (grain)", -1.9459101490553135)],
+                               n = 7}}),
+       ("at the beginning|end of <year>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year (latent)", -0.6931471805599453),
+                                    ("year", -0.6931471805599453)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Dhanteras",
+        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}}),
+       ("Tu BiShvat",
+        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}}),
+       ("Whit Monday",
+        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}}),
+       ("hh:mm",
+        Classifier{okData =
+                     ClassData{prior = -5.6352936551131744e-2,
+                               unseen = -4.2626798770413155,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 69},
+                   koData =
+                     ClassData{prior = -2.9041650800285006, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("Holi",
+        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}}),
+       ("Rosh Hashanah",
+        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}}),
+       ("<integer> <named-day> ago|back",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)Thursday", -0.6931471805599453),
+                                    ("day", -0.6931471805599453)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Holika Dahan",
+        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}}),
+       ("quarter of an hour",
+        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}}),
+       ("second (grain) ",
+        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}}),
+       ("ordinals (first..twentieth,thirtieth,...)",
+        Classifier{okData =
+                     ClassData{prior = -5.406722127027582e-2,
+                               unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 18},
+                   koData =
+                     ClassData{prior = -2.9444389791664407,
+                               unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("Mawlid",
+        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}}),
+       ("Jumu'atul-Wida",
+        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}}),
+       ("quarter after|past <hour-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("until <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.1786549963416462, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("year (latent)", -2.159484249353372),
+                                    ("time-of-day (latent)", -2.5649493574615367),
+                                    ("year", -2.159484249353372),
+                                    ("<time-of-day> am|pm", -1.8718021769015913),
+                                    ("hh:mm", -2.159484249353372), ("hour", -2.159484249353372),
+                                    ("minute", -1.6486586255873816)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -0.3677247801253174,
+                               unseen = -3.8501476017100584,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersect", -2.2192034840549946),
+                                    ("yesterday", -2.7300291078209855),
+                                    ("day", -2.7300291078209855),
+                                    ("time-of-day (latent)", -1.6314168191528755),
+                                    ("hh:mm", -2.2192034840549946), ("hour", -1.5260563034950494),
+                                    ("minute", -1.749199854809259)],
+                               n = 18}}),
+       ("the <cycle> after|before <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)tomorrow", -1.252762968495368),
+                                    ("dayday", -0.8472978603872037),
+                                    ("day (grain)yesterday", -1.252762968495368)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("about|exactly <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -3.6109179126442243,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.791759469228055),
+                                    ("hh(:mm) - <time-of-day> am|pm", -2.890371757896165),
+                                    ("this|last|next <cycle>", -1.791759469228055),
+                                    ("day", -2.4849066497880004),
+                                    ("time-of-day (latent)", -2.890371757896165),
+                                    ("hhmm (latent)", -2.4849066497880004),
+                                    ("<time-of-day> am|pm", -2.890371757896165),
+                                    ("hour", -2.1972245773362196),
+                                    ("next <time>", -2.890371757896165),
+                                    ("this|next <day-of-week>", -2.890371757896165),
+                                    ("minute", -2.4849066497880004)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -1.9459101490553135, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("mm/dd", -2.0794415416798357), ("day", -2.0794415416798357),
+                                    ("time-of-day (latent)", -2.0794415416798357),
+                                    ("hour", -2.0794415416798357)],
+                               n = 2}}),
+       ("Sukkot",
+        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> in <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.044522437723423,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -2.3025850929940455),
+                                    ("monthyear", -1.8971199848858813),
+                                    ("Marcha <unit-of-duration>", -2.3025850929940455),
+                                    ("March<integer> <unit-of-duration>", -2.3025850929940455),
+                                    ("Thanksgiving Daya <unit-of-duration>", -2.3025850929940455),
+                                    ("Thanksgiving Day<integer> <unit-of-duration>",
+                                     -1.8971199848858813),
+                                    ("Vijayadashami<integer> <unit-of-duration>",
+                                     -2.3025850929940455),
+                                    ("dayyear", -1.6094379124341003)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("World Vegan Day",
+        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}}),
+       ("intersect by \",\", \"of\", \"from\", \"'s\"",
+        Classifier{okData =
+                     ClassData{prior = -0.5389965007326869, unseen = -4.948759890378168,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Wednesday<named-month> <day-of-month> (non ordinal)",
+                                     -4.248495242049359),
+                                    ("dayhour", -3.8430301339411947),
+                                    ("daymonth", -2.995732273553991),
+                                    ("<named-month> <day-of-month> (non ordinal)Friday",
+                                     -4.248495242049359),
+                                    ("Friday<named-month> <day-of-month> (non ordinal)",
+                                     -3.5553480614894135),
+                                    ("Wednesdayintersect", -4.248495242049359),
+                                    ("Black Fridaythis|last|next <cycle>", -4.248495242049359),
+                                    ("<part-of-day> of <time>February", -4.248495242049359),
+                                    ("Saturday<time-of-day> am|pm", -4.248495242049359),
+                                    ("Martin Luther King's Daythis|last|next <cycle>",
+                                     -3.8430301339411947),
+                                    ("on <date><time-of-day> am|pm", -4.248495242049359),
+                                    ("hourmonth", -4.248495242049359),
+                                    ("Fridayintersect by \",\", \"of\", \"from\" for year",
+                                     -4.248495242049359),
+                                    ("dayday", -2.3766930651477676),
+                                    ("the <day-of-month> (ordinal)February", -3.8430301339411947),
+                                    ("WednesdayOctober", -4.248495242049359),
+                                    ("Wednesdaythis|last|next <cycle>", -3.8430301339411947),
+                                    ("intersect<named-month> <day-of-month> (non ordinal)",
+                                     -3.332204510175204),
+                                    ("dayyear", -3.332204510175204),
+                                    ("Saturday<named-month> <day-of-month> (non ordinal)",
+                                     -4.248495242049359),
+                                    ("Thursdayhh:mm", -3.8430301339411947),
+                                    ("Thanksgiving Daythis|last|next <cycle>", -4.248495242049359),
+                                    ("on <date><named-month> <day-of-month> (non ordinal)",
+                                     -3.8430301339411947),
+                                    ("TuesdayOctober", -4.248495242049359),
+                                    ("the <day-of-month> (ordinal)March", -4.248495242049359),
+                                    ("Mondaythis|last|next <cycle>", -4.248495242049359),
+                                    ("Fridayintersect", -4.248495242049359),
+                                    ("Thursday<datetime> - <datetime> (interval)",
+                                     -3.8430301339411947),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -3.8430301339411947),
+                                    ("Tuesdaythis|last|next <cycle>", -4.248495242049359),
+                                    ("Sunday<named-month> <day-of-month> (non ordinal)",
+                                     -4.248495242049359),
+                                    ("dayminute", -2.8622008809294686),
+                                    ("minuteday", -3.332204510175204),
+                                    ("this|last|next <cycle>Sunday", -4.248495242049359),
+                                    ("Sundaythis|last|next <cycle>", -4.248495242049359),
+                                    ("weekday", -4.248495242049359),
+                                    ("dayweek", -3.1498829533812494),
+                                    ("Monday<named-month> <day-of-month> (non ordinal)",
+                                     -3.8430301339411947)],
+                               n = 42},
+                   koData =
+                     ClassData{prior = -0.8754687373538999, unseen = -4.762173934797756,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week-endJuly", -4.060443010546419),
+                                    ("week-endOctober", -3.367295829986474),
+                                    ("daymonth", -1.8632184332102),
+                                    ("TuesdaySeptember", -4.060443010546419),
+                                    ("Wednesdayintersect", -4.060443010546419),
+                                    ("hourmonth", -2.9618307218783095),
+                                    ("Fridaythis|last|next <cycle>", -4.060443010546419),
+                                    ("SundayFebruary", -4.060443010546419),
+                                    ("WednesdayOctober", -4.060443010546419),
+                                    ("week-endintersect", -4.060443010546419),
+                                    ("dayyear", -4.060443010546419),
+                                    ("FridayJuly", -3.654977902438255),
+                                    ("FridaySeptember", -4.060443010546419),
+                                    ("WednesdayFebruary", -4.060443010546419),
+                                    ("minutemonth", -3.144152278672264),
+                                    ("SundayMarch", -4.060443010546419),
+                                    ("MondayFebruary", -3.654977902438255),
+                                    ("Fridayintersect", -4.060443010546419),
+                                    ("Thursday<time-of-day> - <time-of-day> (interval)",
+                                     -3.654977902438255),
+                                    ("dayminute", -3.367295829986474),
+                                    ("SaturdaySeptember", -4.060443010546419),
+                                    ("intersectSeptember", -3.144152278672264),
+                                    ("MondayMarch", -4.060443010546419),
+                                    ("on <date>September", -3.654977902438255),
+                                    ("Tuesdayintersect", -4.060443010546419),
+                                    ("Sundayintersect", -4.060443010546419)],
+                               n = 30}}),
+       ("last <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.6286086594223742, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Martin Luther King's Day", -2.5649493574615367),
+                                    ("day", -1.1786549963416462), ("Sunday", -2.5649493574615367),
+                                    ("Chinese New Year", -2.159484249353372),
+                                    ("Thanksgiving Day", -2.5649493574615367),
+                                    ("Easter Sunday", -2.5649493574615367),
+                                    ("hour", -2.5649493574615367), ("Tuesday", -2.5649493574615367),
+                                    ("week-end", -2.5649493574615367)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -0.7621400520468967,
+                               unseen = -3.2188758248682006,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Monday", -2.4849066497880004), ("day", -2.0794415416798357),
+                                    ("Sunday", -2.4849066497880004), ("hour", -1.3862943611198906),
+                                    ("week-end", -1.3862943611198906)],
+                               n = 7}}),
+       ("March",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.044522437723423,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 19},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<named-month>|<named-day> <day-of-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.2231435513142097, unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Octoberordinal (digits)", -2.120263536200091),
+                                    ("Thursdayordinal (digits)", -2.5257286443082556),
+                                    ("day", -2.120263536200091),
+                                    ("Augustordinal (digits)", -2.5257286443082556),
+                                    ("Marchordinals (first..twentieth,thirtieth,...)",
+                                     -2.120263536200091),
+                                    ("Tuesdayordinal (digits)", -2.5257286443082556),
+                                    ("month", -1.2729656758128873),
+                                    ("Marchordinal (digits)", -2.5257286443082556)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -1.6094379124341003, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>ordinal (digits)",
+                                     -1.8718021769015913),
+                                    ("Augustordinal (digits)", -1.8718021769015913),
+                                    ("month", -1.466337068793427)],
+                               n = 2}}),
+       ("Clean Monday",
+        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-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("ordinal (digits)", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Easter Sunday",
+        Classifier{okData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
+       ("Christmas",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("mm.dd.yyyy",
+        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}}),
+       ("Isra and Mi'raj",
+        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}}),
+       ("<duration> after|before|from <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -3.5553480614894135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("a <unit-of-duration>now", -2.833213344056216),
+                                    ("a <unit-of-duration>Christmas", -2.833213344056216),
+                                    ("dayday", -2.833213344056216),
+                                    ("<integer> <unit-of-duration>today", -2.833213344056216),
+                                    ("daysecond", -2.833213344056216),
+                                    ("a <unit-of-duration>right now", -2.833213344056216),
+                                    ("minutenograin", -2.833213344056216),
+                                    ("<integer> <unit-of-duration>Christmas", -2.833213344056216),
+                                    ("<integer> <unit-of-duration>Easter Sunday",
+                                     -2.833213344056216),
+                                    ("secondnograin", -2.833213344056216),
+                                    ("yearday", -2.1400661634962708),
+                                    ("daynograin", -2.833213344056216),
+                                    ("<integer> <unit-of-duration>now", -2.4277482359480516)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -1.0986122886681098, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -2.5649493574615367),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal)",
+                                     -2.5649493574615367),
+                                    ("monthnograin", -2.5649493574615367),
+                                    ("dayday", -2.159484249353372),
+                                    ("<integer> <unit-of-duration>time-of-day (latent)",
+                                     -2.5649493574615367),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
+                                     -2.5649493574615367),
+                                    ("<integer> <unit-of-duration>now", -2.5649493574615367)],
+                               n = 4}}),
+       ("<day-of-month> (ordinal or number) of <month>",
+        Classifier{okData =
+                     ClassData{prior = -8.004270767353637e-2,
+                               unseen = -3.5263605246161616,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)July", -2.803360380906535),
+                                    ("ordinals (first..twentieth,thirtieth,...)March",
+                                     -2.803360380906535),
+                                    ("ordinal (digits)this|last|next <cycle>", -2.1102132003465894),
+                                    ("integer (numeric)this|last|next <cycle>",
+                                     -2.3978952727983707),
+                                    ("ordinal (digits)February", -2.803360380906535),
+                                    ("integer (numeric)February", -2.3978952727983707),
+                                    ("month", -0.9315582040049435),
+                                    ("ordinal (digits)March", -2.803360380906535),
+                                    ("integer (numeric)July", -2.803360380906535)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -2.5649493574615367,
+                               unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)February", -1.7047480922384253),
+                                    ("month", -1.7047480922384253)],
+                               n = 1}}),
+       ("decimal number",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 3}}),
+       ("Naraka Chaturdashi",
+        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}}),
+       ("beginning of month",
+        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}}),
+       ("next <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Martin Luther King's Day", -2.70805020110221),
+                                    ("Halloween", -2.70805020110221),
+                                    ("Wednesday", -2.70805020110221),
+                                    ("Boss's Day", -2.70805020110221),
+                                    ("Monday", -2.70805020110221), ("day", -1.0986122886681098),
+                                    ("Thanksgiving Day", -2.70805020110221),
+                                    ("March", -2.70805020110221), ("month", -2.70805020110221),
+                                    ("Tuesday", -2.0149030205422647)],
+                               n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.3978952727983707,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time-of-day> sharp|exactly",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>", -2.1400661634962708),
+                                    ("time-of-day (latent)", -2.1400661634962708),
+                                    ("hhmm (latent)", -2.1400661634962708),
+                                    ("<time-of-day> am|pm", -2.1400661634962708),
+                                    ("hh:mm", -2.1400661634962708), ("hour", -1.7346010553881064),
+                                    ("minute", -1.4469189829363254)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("in <named-month>|year",
+        Classifier{okData =
+                     ClassData{prior = -0.2719337154836418,
+                               unseen = -3.6635616461296463,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<year> (bc|ad)", -1.845826690498331),
+                                    ("October", -2.9444389791664407),
+                                    ("year (latent)", -1.3350010667323402),
+                                    ("year", -0.9295359586241757), ("March", -2.9444389791664407),
+                                    ("month", -2.538973871058276)],
+                               n = 16},
+                   koData =
+                     ClassData{prior = -1.4350845252893227, unseen = -2.833213344056216,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("October", -1.6739764335716716),
+                                    ("year (latent)", -1.3862943611198906),
+                                    ("year", -1.3862943611198906), ("month", -1.6739764335716716)],
+                               n = 5}}),
+       ("Islamic New Year",
+        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}}),
+       ("Lent",
+        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}}),
+       ("negative numbers",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -3.332204510175204,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -7.696104113612832e-2),
+                                    ("integer (0..19)", -2.6026896854443837)],
+                               n = 25}}),
+       ("about|exactly <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("half a <time-grain>", -0.6931471805599453),
+                                    ("minute", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time> before last|after next",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Wednesday", -1.8718021769015913),
+                                    ("Friday", -1.466337068793427), ("day", -1.1786549963416462),
+                                    ("March", -1.8718021769015913), ("month", -1.8718021769015913)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("by the end of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("this|last|next <cycle>", -0.6931471805599453),
+                                    ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("half an hour (abbrev).",
+        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}}),
+       ("hhmm (military) am|pm",
+        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 = -0.5596157879354228, unseen = -4.127134385045092,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersecthh:mm", -3.012261575505202),
+                                    ("from|since|after <time>hh:mm", -2.501435951739211),
+                                    ("minuteminute", -1.2776605201170952),
+                                    ("hh:mmhh:mm", -1.9136492868370918),
+                                    ("dayday", -3.012261575505202),
+                                    ("hourhour", -3.012261575505202),
+                                    ("<named-month> <day-of-month> (non ordinal)<named-month> <day-of-month> (non ordinal)",
+                                     -3.012261575505202),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"hh:mm",
+                                     -3.012261575505202),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -3.012261575505202)],
+                               n = 20},
+                   koData =
+                     ClassData{prior = -0.8472978603872037, unseen = -3.951243718581427,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hourday", -3.2386784521643803),
+                                    ("<named-month> <day-of-month> (non ordinal)July",
+                                     -3.2386784521643803),
+                                    ("daymonth", -2.833213344056216),
+                                    ("<time-of-day> am|pmintersect", -3.2386784521643803),
+                                    ("hh:mm<time-of-day> am|pm", -2.833213344056216),
+                                    ("minuteminute", -1.9859154836690123),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.2386784521643803),
+                                    ("dayday", -3.2386784521643803),
+                                    ("from|since|after <time><day-of-month> (ordinal or number) <named-month>",
+                                     -2.833213344056216),
+                                    ("hourhour", -2.5455312716044354),
+                                    ("minutehour", -2.833213344056216),
+                                    ("hh:mmintersect", -2.322387720290225),
+                                    ("<named-month> <day-of-month> (non ordinal)August",
+                                     -3.2386784521643803),
+                                    ("about|exactly <time-of-day><time-of-day> am|pm",
+                                     -3.2386784521643803),
+                                    ("from|since|after <time>intersect", -2.833213344056216)],
+                               n = 15}}),
+       ("Tuesday",
+        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}}),
+       ("New Year's Day",
+        Classifier{okData =
+                     ClassData{prior = -1.6094379124341003,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                   koData =
+                     ClassData{prior = -0.2231435513142097,
+                               unseen = -2.3025850929940455,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 8}}),
+       ("fortnight",
+        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}}),
+       ("<integer> and an half hour",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Laylat al-Qadr",
+        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}}),
+       ("Boghi",
+        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}}),
+       ("at the beginning|end of <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -0.2231435513142097,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("January", -1.3862943611198906),
+                                    ("April", -1.3862943611198906), ("month", -0.8754687373538999)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -1.6094379124341003,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("October", -1.0986122886681098),
+                                    ("month", -1.0986122886681098)],
+                               n = 1}}),
+       ("<time-of-day> - <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -1.0296194171811581, unseen = -4.110873864173311,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>hh:mm", -2.4849066497880004),
+                                    ("minuteminute", -1.529395204760564),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.4011973816621555),
+                                    ("hh:mmhh:mm", -1.8971199848858813),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -2.70805020110221),
+                                    ("hourhour", -1.8971199848858813),
+                                    ("from|since|after <time>time-of-day (latent)",
+                                     -3.4011973816621555),
+                                    ("<time-of-day> am|pm<time-of-day> am|pm", -2.70805020110221)],
+                               n = 20},
+                   koData =
+                     ClassData{prior = -0.4418327522790392, unseen = -4.532599493153256,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("about|exactly <time-of-day>time-of-day (latent)",
+                                     -3.828641396489095),
+                                    ("until <time>time-of-day (latent)", -2.575878427993727),
+                                    ("hh:mmtime-of-day (latent)", -2.12389330425067),
+                                    ("hh:mm<time-of-day> am|pm", -3.4231762883809305),
+                                    ("from|since|after <time><time-of-day> am|pm",
+                                     -3.828641396489095),
+                                    ("<time-of-day> am|pmtime-of-day (latent)", -3.828641396489095),
+                                    ("at <time-of-day><time-of-day> am|pm", -3.828641396489095),
+                                    ("hourhour", -1.6314168191528755),
+                                    ("from|since|after <time><integer> to|till|before <hour-of-day>",
+                                     -3.828641396489095),
+                                    ("hourminute", -3.828641396489095),
+                                    ("minutehour", -1.5773495978825998),
+                                    ("until <time><time-of-day> am|pm", -3.4231762883809305),
+                                    ("about|exactly <time-of-day><time-of-day> am|pm",
+                                     -3.828641396489095),
+                                    ("from|since|after <time>time-of-day (latent)",
+                                     -2.575878427993727),
+                                    ("at <time-of-day>time-of-day (latent)", -3.4231762883809305),
+                                    ("<integer> to|till|before <hour-of-day>time-of-day (latent)",
+                                     -3.4231762883809305)],
+                               n = 36}}),
+       ("military spelled out numbers am|pm",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods =
+                                 HashMap.fromList [("integer (0..19)integer (20..90)", 0.0)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("winter",
+        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}}),
+       ("nth <time> after <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.916290731874155),
+                                    ("ordinals (first..twentieth,thirtieth,...)Tuesdayintersect",
+                                     -0.916290731874155)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.916290731874155),
+                                    ("ordinals (first..twentieth,thirtieth,...)TuesdayChristmas",
+                                     -0.916290731874155)],
+                               n = 1}}),
+       ("<named-month> <day-of-month> (non ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -0.42121346507630353,
+                               unseen = -3.951243718581427,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Augustinteger (numeric)", -2.5455312716044354),
+                                    ("Marchinteger (numeric)", -2.833213344056216),
+                                    ("Aprilinteger (numeric)", -3.2386784521643803),
+                                    ("month", -0.8407831793660099),
+                                    ("Februaryinteger (numeric)", -1.9859154836690123),
+                                    ("Septemberinteger (numeric)", -2.833213344056216),
+                                    ("Octoberinteger (numeric)", -2.833213344056216),
+                                    ("Julyinteger (numeric)", -2.1400661634962708)],
+                               n = 21},
+                   koData =
+                     ClassData{prior = -1.067840630001356, unseen = -3.4657359027997265,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Augustinteger (numeric)", -2.3353749158170367),
+                                    ("Marchinteger (numeric)", -2.740840023925201),
+                                    ("Aprilinteger (numeric)", -2.740840023925201),
+                                    ("month", -0.9490805546971459),
+                                    ("from|since|after <time>integer (numeric)",
+                                     -2.3353749158170367),
+                                    ("Julyinteger (numeric)", -1.6422277352570913)],
+                               n = 11}}),
+       ("Diwali",
+        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}}),
+       ("last night",
+        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}}),
+       ("this|next <day-of-week>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Thursday", -2.2512917986064953),
+                                    ("Wednesday", -2.2512917986064953),
+                                    ("Monday", -1.845826690498331), ("day", -0.8649974374866046),
+                                    ("Tuesday", -1.55814461804655)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("ordinal (digits)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.784189633918261,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 42},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("quarter (grain)",
+        Classifier{okData =
+                     ClassData{prior = -0.2876820724517809, unseen = -2.639057329615259,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 12},
+                   koData =
+                     ClassData{prior = -1.3862943611198906, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4}}),
+       ("last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.916290731874155, unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)October", -1.9924301646902063),
+                                    ("daymonth", -1.4816045409242156),
+                                    ("day (grain)intersect", -1.9924301646902063),
+                                    ("weekmonth", -1.9924301646902063),
+                                    ("week (grain)intersect", -2.3978952727983707),
+                                    ("week (grain)September", -2.3978952727983707)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -0.5108256237659907, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -2.2335922215070942),
+                                    ("day (grain)May", -2.2335922215070942),
+                                    ("week (grain)year (latent)", -1.9459101490553135),
+                                    ("weekmonth", -1.7227665977411035),
+                                    ("week (grain)October", -2.2335922215070942),
+                                    ("weekyear", -1.9459101490553135),
+                                    ("week (grain)intersect", -2.2335922215070942)],
+                               n = 9}}),
+       ("Chhath",
+        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}}),
+       ("Vasant Panchami",
+        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-month>(ordinal) <named-month> year",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)April", -0.6931471805599453),
+                                    ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("the <ordinal> last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..twentieth,thirtieth,...)week (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("daymonth", -2.1972245773362196),
+                                    ("ordinal (digits)day (grain)May", -2.1972245773362196),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)intersect",
+                                     -2.1972245773362196),
+                                    ("weekmonth", -1.791759469228055),
+                                    ("ordinal (digits)week (grain)year (latent)",
+                                     -2.1972245773362196),
+                                    ("weekyear", -1.791759469228055),
+                                    ("ordinals (first..twentieth,thirtieth,...)week (grain)October",
+                                     -2.1972245773362196)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Black Friday",
+        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}}),
+       ("week-end",
+        Classifier{okData =
+                     ClassData{prior = -1.252762968495368, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                   koData =
+                     ClassData{prior = -0.3364722366212129,
+                               unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
+       ("Great Lent",
+        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}}),
+       ("Maundy Thursday",
+        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 (grain)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 29},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("right now",
+        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}}),
+       ("for <duration> from <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> <unit-of-duration><day-of-month> (ordinal)",
+                                     -1.5040773967762742),
+                                    ("dayday", -1.0986122886681098),
+                                    ("<integer> <unit-of-duration><day-of-month> (ordinal or number) <named-month>",
+                                     -1.5040773967762742)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -1.252762968495368),
+                                    ("<integer> <unit-of-duration>time-of-day (latent)",
+                                     -1.252762968495368)],
+                               n = 1}}),
+       ("compose by multiplication",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList [("integer (0..19)powers of tens", 0.0)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("end of year",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("between <time> and <time>",
+        Classifier{okData =
+                     ClassData{prior = -1.0986122886681098,
+                               unseen = -3.1780538303479458,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -0.832909122935104),
+                                    ("hh:mmhh:mm", -0.832909122935104)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -3.7376696182833684,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.410986973710262),
+                                    ("minuteminute", -1.410986973710262),
+                                    ("minutehour", -1.410986973710262),
+                                    ("hh:mmintersect", -1.410986973710262)],
+                               n = 18}}),
+       ("<month> dd-dd (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.4657359027997265,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("from|since|after <time>integer (numeric)integer (numeric)",
+                                     -2.740840023925201),
+                                    ("from|since|after <time>ordinal (digits)ordinal (digits)",
+                                     -2.740840023925201),
+                                    ("Julyinteger (numeric)integer (numeric)", -1.6422277352570913),
+                                    ("Augustordinal (digits)integer (numeric)",
+                                     -2.3353749158170367),
+                                    ("from|since|after <time>ordinal (digits)integer (numeric)",
+                                     -2.740840023925201),
+                                    ("month", -0.8690378470236094),
+                                    ("Augustordinal (digits)ordinal (digits)",
+                                     -2.3353749158170367)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("intersect by \",\", \"of\", \"from\" for year",
+        Classifier{okData =
+                     ClassData{prior = -0.11778303565638351,
+                               unseen = -3.2188758248682006,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Black Fridaythis|last|next <cycle>", -2.4849066497880004),
+                                    ("Martin Luther King's Daythis|last|next <cycle>",
+                                     -2.0794415416798357),
+                                    ("intersect by \",\", \"of\", \"from\", \"'s\"year (latent)",
+                                     -2.4849066497880004),
+                                    ("dayyear", -0.9808292530117262),
+                                    ("Thanksgiving Daythis|last|next <cycle>", -2.4849066497880004),
+                                    ("intersectyear (latent)", -2.4849066497880004),
+                                    ("<named-month> <day-of-month> (non ordinal)year (latent)",
+                                     -2.0794415416798357)],
+                               n = 8},
+                   koData =
+                     ClassData{prior = -2.1972245773362196,
+                               unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Fridaythis|last|next <cycle>", -1.6094379124341003),
+                                    ("dayyear", -1.6094379124341003)],
+                               n = 1}}),
+       ("part of days",
+        Classifier{okData =
+                     ClassData{prior = -6.899287148695143e-2,
+                               unseen = -3.4011973816621555,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 28},
+                   koData =
+                     ClassData{prior = -2.70805020110221, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
        ("at the beginning|end of <week>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.330733340286331,
diff --git a/Duckling/Ranking/Classifiers/NL_BE.hs b/Duckling/Ranking/Classifiers/NL_BE.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/Ranking/Classifiers/NL_BE.hs
@@ -0,0 +1,1834 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+-----------------------------------------------------------------
+-- Auto-generated by regenClassifiers
+--
+-- DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+--  @generated
+-----------------------------------------------------------------
+{-# LANGUAGE OverloadedStrings #-}
+module Duckling.Ranking.Classifiers.NL_BE (classifiers) where
+import Data.String
+import Prelude
+import qualified Data.HashMap.Strict as HashMap
+import Duckling.Ranking.Types
+
+classifiers :: Classifiers
+classifiers
+  = HashMap.fromList
+      [("Kerstmis",
+        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}}),
+       ("<time> timezone",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day>  o'clock", -1.6094379124341003),
+                                    ("hh:mm", -1.2039728043259361), ("hour", -1.6094379124341003),
+                                    ("minute", -1.2039728043259361)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("integer (numeric)",
+        Classifier{okData =
+                     ClassData{prior = -0.7090205297162354, unseen = -4.844187086458591,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 125},
+                   koData =
+                     ClassData{prior = -0.6775218626568645, unseen = -4.875197323201151,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 129}}),
+       ("exactly <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day>  o'clock", -1.252762968495368),
+                                    ("time-of-day (latent)", -1.252762968495368),
+                                    ("hour", -0.8472978603872037)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<duration> hence|ago",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.55814461804655), ("day", -1.845826690498331),
+                                    ("year", -2.2512917986064953),
+                                    ("<integer> <unit-of-duration>", -0.8649974374866046),
+                                    ("month", -2.2512917986064953)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("thursday",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("integer (20..90)",
+        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}}),
+       ("<time> <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -0.15415067982725836,
+                               unseen = -5.030437921392435,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day>  o'clockmorning", -3.077970371790963),
+                                    ("until <time-of-day>afternoon", -4.330733340286331),
+                                    ("dayhour", -2.9444389791664407),
+                                    ("todayevening", -4.330733340286331),
+                                    ("on <date>evening", -3.925268232178167),
+                                    ("thursdaymorning", -4.330733340286331),
+                                    ("intersectevening", -2.384823191231018),
+                                    ("tomorrowafternoon", -3.925268232178167),
+                                    ("half to|till|before <integer> (hour-of-day)afternoon",
+                                     -4.330733340286331),
+                                    ("hourhour", -1.1737329191362178),
+                                    ("<day-of-month> (non ordinal) <named-month>morning",
+                                     -3.925268232178167),
+                                    ("at <time-of-day>afternoon", -4.330733340286331),
+                                    ("todayafternoon", -4.330733340286331),
+                                    ("<time-of-day>  o'clockafternoon", -3.2321210516182215),
+                                    ("<time-of-day>  o'clocknight", -4.330733340286331),
+                                    ("until <time-of-day>morning", -3.925268232178167),
+                                    ("minutehour", -2.9444389791664407),
+                                    ("<time-of-day> am|pmmorning", -3.925268232178167),
+                                    ("hh:mmmorning", -3.925268232178167),
+                                    ("about <time-of-day>evening", -4.330733340286331),
+                                    ("<time-of-day>  o'clockevening", -3.6375861597263857),
+                                    ("<hour-of-day> <integer> (as relative minutes)afternoon",
+                                     -3.925268232178167),
+                                    ("intersectmorning", -3.077970371790963),
+                                    ("about <time-of-day>afternoon", -4.330733340286331),
+                                    ("hh:mmafternoon", -4.330733340286331),
+                                    ("on <date>morning", -3.925268232178167),
+                                    ("at <time-of-day>morning", -4.330733340286331)],
+                               n = 60},
+                   koData =
+                     ClassData{prior = -1.9459101490553135, unseen = -3.970291913552122,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day>  o'clockmorning", -3.258096538021482),
+                                    ("yearhour", -3.258096538021482),
+                                    ("intersectevening", -2.5649493574615367),
+                                    ("monthhour", -2.8526314299133175),
+                                    ("hourhour", -1.8718021769015913),
+                                    ("year (latent)afternoon", -3.258096538021482),
+                                    ("Februarymorning", -2.8526314299133175),
+                                    ("<time-of-day>  o'clockevening", -3.258096538021482),
+                                    ("time-of-day (latent)afternoon", -2.8526314299133175)],
+                               n = 10}}),
+       ("dd/mm",
+        Classifier{okData =
+                     ClassData{prior = -0.4307829160924542, unseen = -2.70805020110221,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 13},
+                   koData =
+                     ClassData{prior = -1.0498221244986778,
+                               unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7}}),
+       ("today",
+        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}}),
+       ("at <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -0.19237189264745613, unseen = -4.31748811353631,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day>  o'clock", -1.739115735742633),
+                                    ("half to|till|before <integer> (hour-of-day)",
+                                     -3.6109179126442243),
+                                    ("about <time-of-day>", -2.6946271807700692),
+                                    ("time-of-day (latent)", -1.906169820405799),
+                                    ("hh:mm", -2.512305623976115), ("hour", -1.0082282271998406),
+                                    ("minute", -2.2246235515243336),
+                                    ("<hour-of-day> <integer> (as relative minutes)",
+                                     -3.6109179126442243)],
+                               n = 33},
+                   koData =
+                     ClassData{prior = -1.742969305058623, unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day>  o'clock", -2.3978952727983707),
+                                    ("time-of-day (latent)", -1.1451323043030026),
+                                    ("hour", -1.0116009116784799)],
+                               n = 7}}),
+       ("absorption of , after named day",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.995732273553991,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("wednesday", -2.2512917986064953),
+                                    ("monday", -1.845826690498331), ("friday", -1.55814461804655),
+                                    ("day", -0.8649974374866046), ("sunday", -2.2512917986064953)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("September",
+        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}}),
+       ("on <date>",
+        Classifier{okData =
+                     ClassData{prior = -0.19845093872383832,
+                               unseen = -4.574710978503383,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("thursday", -3.1780538303479458),
+                                    ("<time> <part-of-day>", -2.9549102790337356),
+                                    ("dd/mm", -2.9549102790337356),
+                                    ("saturday", -3.871201010907891),
+                                    ("intersect", -1.4733057381095205),
+                                    ("<day-of-month>(ordinal) <named-month>", -3.871201010907891),
+                                    ("friday", -3.871201010907891), ("day", -1.7311348474116202),
+                                    ("hh:mm", -3.871201010907891),
+                                    ("<day-of-month> (ordinal)", -3.1780538303479458),
+                                    ("hour", -1.7311348474116202),
+                                    ("<datetime> - <datetime> (interval)", -3.871201010907891),
+                                    ("<day-of-month> (non ordinal) <named-month>",
+                                     -3.871201010907891),
+                                    ("minute", -2.2617630984737906)],
+                               n = 41},
+                   koData =
+                     ClassData{prior = -1.7147984280919266,
+                               unseen = -3.4965075614664802,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersect", -1.2685113254635072), ("day", -2.772588722239781),
+                                    ("<day-of-month> (ordinal)", -2.772588722239781),
+                                    ("hour", -2.367123614131617), ("minute", -1.5198257537444133)],
+                               n = 9}}),
+       ("integer (0..19)",
+        Classifier{okData =
+                     ClassData{prior = -5.5569851154810765e-2,
+                               unseen = -3.6109179126442243,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 35},
+                   koData =
+                     ClassData{prior = -2.917770732084279, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
+       ("between <time-of-day> and <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -1.0986122886681098),
+                                    ("hh:mmhh:mm", -1.0986122886681098)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.0986122886681098),
+                                    ("minutehour", -1.0986122886681098)],
+                               n = 1}}),
+       ("Halloween",
+        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}}),
+       ("between <datetime> and <datetime> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -1.0986122886681098),
+                                    ("hh:mmhh:mm", -1.0986122886681098)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453,
+                               unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.0986122886681098),
+                                    ("minutehour", -1.0986122886681098)],
+                               n = 1}}),
+       ("October",
+        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}}),
+       ("month (grain)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("on a named-day",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("thursday", -1.252762968495368),
+                                    ("saturday", -1.9459101490553135),
+                                    ("friday", -1.9459101490553135), ("day", -0.8472978603872037)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("yesterday/tomorrow night",
+        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}}),
+       ("wednesday",
+        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}}),
+       ("<time-of-day>  o'clock",
+        Classifier{okData =
+                     ClassData{prior = -0.14107859825990549,
+                               unseen = -4.955827057601261,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("exactly <time-of-day>", -4.255612709818223),
+                                    ("at <time-of-day>", -2.3838105329166317),
+                                    ("about <time-of-day>", -2.8693183486983322),
+                                    ("time-of-day (latent)", -1.259880436264232),
+                                    ("quarter after|past <integer> (hour-of-day)",
+                                     -4.255612709818223),
+                                    ("until <time-of-day>", -3.339321977944068),
+                                    ("hour", -0.7591051483517427), ("minute", -4.255612709818223),
+                                    ("after <time-of-day>", -3.8501476017100584)],
+                               n = 66},
+                   koData =
+                     ClassData{prior = -2.0281482472922856,
+                               unseen = -3.4011973816621555,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>", -2.6741486494265287),
+                                    ("time-of-day (latent)", -1.0647107369924282),
+                                    ("hour", -0.9694005571881036)],
+                               n = 10}}),
+       ("<integer> + '\"",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.9459101490553135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.40546510810816444),
+                                    ("integer (0..19)", -1.0986122886681098)],
+                               n = 4}}),
+       ("July",
+        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}}),
+       ("hour (grain)",
+        Classifier{okData =
+                     ClassData{prior = -1.9661128563728327,
+                               unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
+                   koData =
+                     ClassData{prior = -0.15082288973458366,
+                               unseen = -3.8066624897703196,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 43}}),
+       ("<ordinal> quarter",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..19th)quarter (grain)", -0.916290731874155),
+                                    ("quarter", -0.916290731874155)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)quarter (grain)", -0.916290731874155),
+                                    ("quarter", -0.916290731874155)],
+                               n = 1}}),
+       ("saturday",
+        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}}),
+       ("intersect",
+        Classifier{okData =
+                     ClassData{prior = -0.29944691403136736,
+                               unseen = -6.180016653652572,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("last <cycle>sunday", -5.484796933490655),
+                                    ("Koningsdagyear", -5.484796933490655),
+                                    ("hourday", -4.386184644822546),
+                                    ("on a named-day<day-of-month> (non ordinal) <named-month>",
+                                     -5.484796933490655),
+                                    ("<day-of-month> (non ordinal) <named-month><time-of-day>  o'clock",
+                                     -5.484796933490655),
+                                    ("dayhour", -2.3493027175615055),
+                                    ("daymonth", -4.5685062016165),
+                                    ("next <cycle>friday", -5.484796933490655),
+                                    ("monthyear", -3.8753590210565547),
+                                    ("friday<day-of-month> (non ordinal) <named-month>",
+                                     -5.079331825382491),
+                                    ("yearhour", -5.484796933490655),
+                                    ("intersect<time-of-day>  o'clock", -4.791649752930709),
+                                    ("tuesdaythis <cycle>", -5.484796933490655),
+                                    ("on a named-dayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -5.079331825382491),
+                                    ("saturday<time-of-day>  o'clock", -5.484796933490655),
+                                    ("absorption of , after named daydd/mm/yyyy",
+                                     -5.079331825382491),
+                                    ("<time-of-day> am|pmintersect", -5.484796933490655),
+                                    ("intersect<time> <part-of-day>", -4.791649752930709),
+                                    ("Marchyear", -5.484796933490655),
+                                    ("saturdayat <time-of-day>", -5.079331825382491),
+                                    ("saturday<time> <part-of-day>", -5.079331825382491),
+                                    ("dd/mm<time-of-day>  o'clock", -5.484796933490655),
+                                    ("on a named-dayat <time-of-day>", -4.791649752930709),
+                                    ("today<time-of-day>  o'clock", -5.484796933490655),
+                                    ("at <time-of-day>on a named-day", -5.484796933490655),
+                                    ("on a named-daybetween <datetime> and <datetime> (interval)",
+                                     -5.484796933490655),
+                                    ("intersect by ','year", -5.484796933490655),
+                                    ("on <date><time-of-day>  o'clock", -4.791649752930709),
+                                    ("next <cycle>monday", -5.484796933490655),
+                                    ("on a named-daybetween <time-of-day> and <time-of-day> (interval)",
+                                     -5.484796933490655),
+                                    ("exactly <time-of-day>tomorrow", -5.484796933490655),
+                                    ("on a named-day<time> <part-of-day>", -5.079331825382491),
+                                    ("monthhour", -4.5685062016165),
+                                    ("on <date>between <datetime> and <datetime> (interval)",
+                                     -5.484796933490655),
+                                    ("last <day-of-week> of <time>year", -5.484796933490655),
+                                    ("on a named-day<time-of-day>  o'clock", -5.484796933490655),
+                                    ("next <cycle>March", -5.484796933490655),
+                                    ("todayat <time-of-day>", -4.791649752930709),
+                                    ("on <date>between <time-of-day> and <time-of-day> (interval)",
+                                     -5.484796933490655),
+                                    ("on <date>at <time-of-day>", -4.791649752930709),
+                                    ("thursday<time> timezone", -5.079331825382491),
+                                    ("on <date>about <time-of-day>", -4.791649752930709),
+                                    ("dayday", -3.1822118404966093),
+                                    ("on <date><time> <part-of-day>", -4.5685062016165),
+                                    ("dd/mmabout <time-of-day>", -5.079331825382491),
+                                    ("<day-of-month> (ordinal)intersect", -5.484796933490655),
+                                    ("hourhour", -4.386184644822546),
+                                    ("saturday<day-of-month> (non ordinal) <named-month>",
+                                     -5.484796933490655),
+                                    ("thursdayat <time-of-day>", -5.484796933490655),
+                                    ("today/tomorrow/yesterday afternoon<hour-of-day> <integer> (as relative minutes)",
+                                     -5.079331825382491),
+                                    ("intersect<day-of-month> (non ordinal) <named-month>",
+                                     -4.386184644822546),
+                                    ("dayyear", -3.405355391810819),
+                                    ("tuesdayafter <duration>", -5.484796933490655),
+                                    ("tomorrow<time-of-day>  o'clock", -5.484796933490655),
+                                    ("<time-of-day>  o'clocktomorrow", -4.791649752930709),
+                                    ("<day-of-month> (non ordinal) <named-month>intersect",
+                                     -5.484796933490655),
+                                    ("thursdaybetween <time-of-day> and <time-of-day> (interval)",
+                                     -5.484796933490655),
+                                    ("thursdaybetween <datetime> and <datetime> (interval)",
+                                     -5.484796933490655),
+                                    ("<day-of-month>(ordinal) <named-month>year",
+                                     -5.484796933490655),
+                                    ("<day-of-month> (ordinal)tuesday", -5.484796933490655),
+                                    ("hourminute", -4.791649752930709),
+                                    ("thursdayhh:mm", -5.484796933490655),
+                                    ("this <cycle>wednesday", -5.484796933490655),
+                                    ("absorption of , after named day<named-month> <day-of-month> (non ordinal)",
+                                     -5.484796933490655),
+                                    ("<day-of-month> (non ordinal) <named-month><time> <part-of-day>",
+                                     -5.079331825382491),
+                                    ("on <date><day-of-month> (non ordinal) <named-month>",
+                                     -5.484796933490655),
+                                    ("Aprilabout <time-of-day>", -5.484796933490655),
+                                    ("thursdayfrom <datetime> - <datetime> (interval)",
+                                     -5.484796933490655),
+                                    ("<day-of-month> (ordinal)February", -5.484796933490655),
+                                    ("thursdayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -4.791649752930709),
+                                    ("absorption of , after named day<day-of-month> (non ordinal) <named-month>",
+                                     -4.5685062016165),
+                                    ("today/tomorrow/yesterday evening<time-of-day>  o'clock",
+                                     -5.484796933490655),
+                                    ("fridayintersect", -4.791649752930709),
+                                    ("on <date><time-of-day> - <time-of-day> (interval)",
+                                     -5.484796933490655),
+                                    ("on <date><datetime> - <datetime> (interval)",
+                                     -5.484796933490655),
+                                    ("this <cycle>monday", -5.484796933490655),
+                                    ("April<time-of-day>  o'clock", -5.484796933490655),
+                                    ("next <cycle>wednesday", -5.484796933490655),
+                                    ("hh:mmintersect", -5.079331825382491),
+                                    ("thursday<datetime> - <datetime> (interval)",
+                                     -5.079331825382491),
+                                    ("<day-of-month> (ordinal)July", -5.484796933490655),
+                                    ("thursday<time-of-day> - <time-of-day> (interval)",
+                                     -5.079331825382491),
+                                    ("yearmonth", -5.484796933490655),
+                                    ("at <time-of-day>intersect", -5.079331825382491),
+                                    ("on <date>from <time-of-day> - <time-of-day> (interval)",
+                                     -5.079331825382491),
+                                    ("<time> <part-of-day>from <time-of-day> - <time-of-day> (interval)",
+                                     -5.484796933490655),
+                                    ("dayminute", -2.7767467323884447),
+                                    ("<time> <part-of-day>from <datetime> - <datetime> (interval)",
+                                     -5.484796933490655),
+                                    ("intersectyear", -4.791649752930709),
+                                    ("<time-of-day> am|pmsaturday", -5.484796933490655),
+                                    ("<ordinal> <cycle> of <time>year", -5.484796933490655),
+                                    ("minuteday", -3.2875723561544357),
+                                    ("absorption of , after named dayintersect",
+                                     -5.484796933490655),
+                                    ("Julyyear", -5.484796933490655),
+                                    ("year<time-of-day>  o'clock", -5.484796933490655),
+                                    ("Octoberyear", -4.386184644822546),
+                                    ("hh:mmon <date>", -5.079331825382491),
+                                    ("today/tomorrow/yesterday afternoonat <time-of-day>",
+                                     -5.484796933490655),
+                                    ("dd/mmyear", -5.484796933490655),
+                                    ("tuesdayin <duration>", -5.484796933490655),
+                                    ("Septemberyear", -5.079331825382491),
+                                    ("at <time-of-day>on <date>", -5.079331825382491),
+                                    ("absorption of , after named daydd/mm", -5.079331825382491),
+                                    ("intersectintersect", -5.484796933490655),
+                                    ("hh:mmon a named-day", -5.484796933490655),
+                                    ("weekday", -4.098502572370764),
+                                    ("dayweek", -4.791649752930709),
+                                    ("weekyear", -5.079331825382491),
+                                    ("on <date>February", -5.484796933490655),
+                                    ("Kerstmisyear", -5.484796933490655),
+                                    ("<month> dd-dd (interval)year", -5.484796933490655),
+                                    ("tomorrowat <time-of-day>", -5.079331825382491),
+                                    ("next <cycle>tuesday", -5.484796933490655),
+                                    ("monday<day-of-month> (non ordinal) <named-month>",
+                                     -5.484796933490655),
+                                    ("at <time-of-day>tomorrow", -5.484796933490655),
+                                    ("monday<named-month> <day-of-month> (non ordinal)",
+                                     -5.484796933490655),
+                                    ("<day-of-month> (non ordinal) <named-month>about <time-of-day>",
+                                     -5.484796933490655),
+                                    ("on a named-day<time-of-day> - <time-of-day> (interval)",
+                                     -5.484796933490655),
+                                    ("today/tomorrow/yesterday eveningat <time-of-day>",
+                                     -5.079331825382491),
+                                    ("last <cycle> of <time>year", -5.079331825382491),
+                                    ("on a named-day<datetime> - <datetime> (interval)",
+                                     -5.484796933490655),
+                                    ("<day-of-month> (non ordinal) <named-month>year",
+                                     -4.5685062016165),
+                                    ("April<time> <part-of-day>", -5.079331825382491)],
+                               n = 169},
+                   koData =
+                     ClassData{prior = -1.3518081850487211, unseen = -5.572154032177765,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<named-month> <day-of-month> (non ordinal)July",
+                                     -4.875197323201151),
+                                    ("dayhour", -3.488902962081261),
+                                    ("on a named-dayafter <time-of-day>", -4.875197323201151),
+                                    ("July<day-of-month> (non ordinal) <named-month>",
+                                     -4.875197323201151),
+                                    ("daymonth", -3.9589065913269965),
+                                    ("monthday", -4.4697322150929875),
+                                    ("monthyear", -3.776585034533042),
+                                    ("yearhour", -4.875197323201151),
+                                    ("intersect<time-of-day>  o'clock", -4.875197323201151),
+                                    ("on a named-dayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -4.4697322150929875),
+                                    ("<day-of-month> (ordinal)wednesday", -4.4697322150929875),
+                                    ("Julyintersect", -4.875197323201151),
+                                    ("thursdayafter <time-of-day>", -4.875197323201151),
+                                    ("intersect<time> <part-of-day>", -4.875197323201151),
+                                    ("Marchyear", -4.875197323201151),
+                                    ("<day-of-month> (ordinal)year", -4.875197323201151),
+                                    ("on a named-dayat <time-of-day>", -4.875197323201151),
+                                    ("on a named-daybetween <datetime> and <datetime> (interval)",
+                                     -4.875197323201151),
+                                    ("tuesdayafter <time-of-day>", -4.875197323201151),
+                                    ("on a named-daybetween <time-of-day> and <time-of-day> (interval)",
+                                     -4.875197323201151),
+                                    ("monthhour", -3.9589065913269965),
+                                    ("on <date>between <datetime> and <datetime> (interval)",
+                                     -4.875197323201151),
+                                    ("todayat <time-of-day>", -4.875197323201151),
+                                    ("on <date>between <time-of-day> and <time-of-day> (interval)",
+                                     -4.875197323201151),
+                                    ("on <date>at <time-of-day>", -4.875197323201151),
+                                    ("on <date>about <time-of-day>", -4.875197323201151),
+                                    ("dayday", -3.776585034533042),
+                                    ("hourhour", -4.182050142641207),
+                                    ("thursdayat <time-of-day>", -4.875197323201151),
+                                    ("dayyear", -4.182050142641207),
+                                    ("thursdaybetween <time-of-day> and <time-of-day> (interval)",
+                                     -4.875197323201151),
+                                    ("thursdaybetween <datetime> and <datetime> (interval)",
+                                     -4.875197323201151),
+                                    ("<day-of-month> (ordinal)tuesday", -4.4697322150929875),
+                                    ("thursdayhh:mm", -4.4697322150929875),
+                                    ("Aprilabout <time-of-day>", -4.875197323201151),
+                                    ("thursdayfrom <datetime> - <datetime> (interval)",
+                                     -4.875197323201151),
+                                    ("Aprilyear", -4.875197323201151),
+                                    ("thursdayfrom <time-of-day> - <time-of-day> (interval)",
+                                     -4.182050142641207),
+                                    ("mondayFebruary", -4.875197323201151),
+                                    ("on <date><time-of-day> - <time-of-day> (interval)",
+                                     -4.875197323201151),
+                                    ("yearuntil <time-of-day>", -4.4697322150929875),
+                                    ("thursday<time-of-day> - <time-of-day> (interval)",
+                                     -4.4697322150929875),
+                                    ("<named-month> <day-of-month> (non ordinal)August",
+                                     -4.875197323201151),
+                                    ("August<day-of-month> (non ordinal) <named-month>",
+                                     -4.875197323201151),
+                                    ("on <date>from <time-of-day> - <time-of-day> (interval)",
+                                     -4.4697322150929875),
+                                    ("dayminute", -2.3902906734131513),
+                                    ("thursday<part-of-day> of <time>", -4.875197323201151),
+                                    ("Julyyear", -4.4697322150929875),
+                                    ("Octoberyear", -4.875197323201151),
+                                    ("today/tomorrow/yesterday afternoonat <time-of-day>",
+                                     -4.4697322150929875),
+                                    ("year<time> <part-of-day>", -4.875197323201151),
+                                    ("today/tomorrow/yesterday afternoon<time-of-day>  o'clock",
+                                     -4.875197323201151),
+                                    ("yearday", -4.4697322150929875),
+                                    ("absorption of , after named dayFebruary", -4.875197323201151),
+                                    ("<day-of-month> (non ordinal) <named-month>about <time-of-day>",
+                                     -4.875197323201151),
+                                    ("after <time-of-day>year", -4.875197323201151),
+                                    ("on a named-day<time-of-day> - <time-of-day> (interval)",
+                                     -4.875197323201151),
+                                    ("on <date>after <time-of-day>", -4.875197323201151),
+                                    ("<day-of-month> (non ordinal) <named-month>year",
+                                     -4.875197323201151)],
+                               n = 59}}),
+       ("<ordinal> <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.7047480922384253),
+                                    ("ordinals (first..19th)week (grain)intersect",
+                                     -1.7047480922384253),
+                                    ("weekmonth", -1.2992829841302609),
+                                    ("ordinals (first..19th)day (grain)October",
+                                     -1.7047480922384253),
+                                    ("ordinals (first..19th)week (grain)October",
+                                     -1.7047480922384253)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("year (grain)",
+        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}}),
+       ("from <datetime> - <datetime> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -2.995732273553991,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dd/mm/yyyydd/mm", -2.2512917986064953),
+                                    ("minuteminute", -2.2512917986064953),
+                                    ("time-of-day (latent)time-of-day (latent)",
+                                     -2.2512917986064953),
+                                    ("hh:mmhh:mm", -2.2512917986064953),
+                                    ("dayday", -1.845826690498331),
+                                    ("dd/mm/yyyydd/mm/yyyy", -2.2512917986064953),
+                                    ("hourhour", -2.2512917986064953)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -1.0986122886681098, unseen = -2.772588722239781,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayhour", -2.0149030205422647),
+                                    ("hh:mmtime-of-day (latent)", -2.0149030205422647),
+                                    ("minutehour", -2.0149030205422647),
+                                    ("dd/mm/yyyytime-of-day (latent)", -2.0149030205422647)],
+                               n = 2}}),
+       ("after tomorrow",
+        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}}),
+       ("next <cycle>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.466337068793427),
+                                    ("month (grain)", -2.5649493574615367),
+                                    ("year (grain)", -2.159484249353372),
+                                    ("week (grain)", -1.466337068793427),
+                                    ("quarter", -2.5649493574615367), ("year", -2.159484249353372),
+                                    ("month", -2.5649493574615367),
+                                    ("quarter (grain)", -2.5649493574615367)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("from <time-of-day> - <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.5596157879354228, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -1.252762968495368),
+                                    ("time-of-day (latent)time-of-day (latent)",
+                                     -1.9459101490553135),
+                                    ("hh:mmhh:mm", -1.252762968495368),
+                                    ("hourhour", -1.9459101490553135)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -0.8472978603872037,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.0986122886681098),
+                                    ("minutehour", -1.0986122886681098)],
+                               n = 3}}),
+       ("yyyy-mm-dd",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("year (latent)",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 1}}),
+       ("couple",
+        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.3025850929940455,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 8},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("yesterday",
+        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> quarter <year>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("quarteryear", -0.6931471805599453),
+                                    ("ordinal (digits)quarter (grain)year", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("today/tomorrow/yesterday morning",
+        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}}),
+       ("after lunch",
+        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}}),
+       ("monday",
+        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}}),
+       ("quarter to|till|before <integer> (hour-of-day)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Allerheiligen",
+        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}}),
+       ("nth <time> of <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.5596157879354228, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.0296194171811581),
+                                    ("ordinals (first..19th)tuesdayOctober", -1.9459101490553135),
+                                    ("ordinals (first..19th)wednesdayintersect",
+                                     -1.540445040947149),
+                                    ("ordinals (first..19th)tuesdayintersect",
+                                     -1.9459101490553135)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -0.8472978603872037,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.0986122886681098),
+                                    ("ordinals (first..19th)wednesdayOctober", -1.3862943611198906),
+                                    ("ordinals (first..19th)tuesdaySeptember", -1.791759469228055)],
+                               n = 3}}),
+       ("the <day-of-month> (non ordinal)",
+        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}}),
+       ("April",
+        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}}),
+       ("today/tomorrow/yesterday evening",
+        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}}),
+       ("week (grain)",
+        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}}),
+       ("<part-of-day> of <time>",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hourhour", -0.6931471805599453),
+                                    ("morningtime-of-day (latent)", -0.6931471805599453)],
+                               n = 1}}),
+       ("Vaderdag",
+        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}}),
+       ("now",
+        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}}),
+       ("number,number uur",
+        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}}),
+       ("this <part-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("afternoon", -1.252762968495368),
+                                    ("hour", -0.8472978603872037), ("evening", -1.252762968495368)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<day-of-month>(ordinal) <named-month>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)July", -1.252762968495368),
+                                    ("ordinal (digits)February", -1.252762968495368),
+                                    ("month", -0.8472978603872037)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("numbers prefix with -, negative or minus",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -9.53101798043249e-2),
+                                    ("fractional number", -2.3978952727983707)],
+                               n = 20}}),
+       ("Nieuwjaarsdag",
+        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}}),
+       ("tomorrow",
+        Classifier{okData =
+                     ClassData{prior = -0.2876820724517809,
+                               unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6},
+                   koData =
+                     ClassData{prior = -1.3862943611198906,
+                               unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 2}}),
+       ("friday",
+        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}}),
+       ("half to|till|before <integer> (hour-of-day)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("half an hour",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("fractional number",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -2.0794415416798357,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 6}}),
+       ("afternoon",
+        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}}),
+       ("February",
+        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}}),
+       ("this <cycle>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.4816045409242156),
+                                    ("year (grain)", -2.3978952727983707),
+                                    ("week (grain)", -1.4816045409242156),
+                                    ("day", -2.3978952727983707), ("quarter", -2.3978952727983707),
+                                    ("year", -2.3978952727983707),
+                                    ("quarter (grain)", -2.3978952727983707),
+                                    ("day (grain)", -2.3978952727983707)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("minute (grain)",
+        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}}),
+       ("night",
+        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}}),
+       ("sunday",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("about <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.58351893845611,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day>  o'clock", -1.4759065198095778),
+                                    ("time-of-day (latent)", -1.4759065198095778),
+                                    ("quarter after|past <integer> (hour-of-day)",
+                                     -2.8622008809294686),
+                                    ("hour", -0.8472978603872037), ("minute", -2.8622008809294686)],
+                               n = 15},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("time-of-day (latent)",
+        Classifier{okData =
+                     ClassData{prior = -0.3925617032722565, unseen = -4.02535169073515,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.24613306953890846),
+                                    ("integer (0..19)", -1.6094379124341003)],
+                               n = 52},
+                   koData =
+                     ClassData{prior = -1.1249295969854831, unseen = -3.367295829986474,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)", -0.2411620568168881),
+                                    ("integer (0..19)", -1.9459101490553135),
+                                    ("couple", -2.639057329615259)],
+                               n = 25}}),
+       ("year",
+        Classifier{okData =
+                     ClassData{prior = -0.19105523676270922,
+                               unseen = -3.044522437723423,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 19},
+                   koData =
+                     ClassData{prior = -1.749199854809259, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("integer (numeric)", 0.0)],
+                               n = 4}}),
+       ("last <day-of-week> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3978952727983707,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -0.916290731874155),
+                                    ("sundayMarch", -1.6094379124341003),
+                                    ("mondayMarch", -1.6094379124341003),
+                                    ("sundayintersect", -1.6094379124341003)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> <unit-of-duration>",
+        Classifier{okData =
+                     ClassData{prior = -1.207415148516909, unseen = -4.406719247264253,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.315007612992603),
+                                    ("integer (0..19)year (grain)", -3.295836866004329),
+                                    ("integer (numeric)day (grain)", -2.7850112422383386),
+                                    ("couplehour (grain)", -3.7013019741124937),
+                                    ("integer (0..19)second (grain) ", -3.7013019741124937),
+                                    ("integer (0..19)hour (grain)", -3.0081547935525483),
+                                    ("second", -3.7013019741124937),
+                                    ("integer (numeric)year (grain)", -3.7013019741124937),
+                                    ("day", -2.7850112422383386), ("year", -3.0081547935525483),
+                                    ("integer (numeric)week (grain)", -3.295836866004329),
+                                    ("integer (0..19)month (grain)", -3.7013019741124937),
+                                    ("hour", -2.6026896854443837), ("month", -3.7013019741124937),
+                                    ("integer (numeric)minute (grain)", -2.4485390056171257),
+                                    ("integer (0..19)minute (grain)", -3.295836866004329),
+                                    ("minute", -2.1972245773362196),
+                                    ("integer (numeric)hour (grain)", -3.7013019741124937),
+                                    ("integer (0..19)week (grain)", -2.6026896854443837)],
+                               n = 29},
+                   koData =
+                     ClassData{prior = -0.3552032733272762, unseen = -5.075173815233827,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -3.6826098411003407),
+                                    ("integer (0..19)year (grain)", -3.970291913552122),
+                                    ("integer (numeric)day (grain)", -3.6826098411003407),
+                                    ("integer (0..19)second (grain) ", -4.375757021660286),
+                                    ("integer (0..19)hour (grain)", -2.871679624884012),
+                                    ("second", -3.6826098411003407),
+                                    ("integer (numeric)second (grain) ", -3.970291913552122),
+                                    ("integer (numeric)year (grain)", -3.970291913552122),
+                                    ("day", -3.2771447329921766), ("year", -3.459466289786131),
+                                    ("integer (numeric)week (grain)", -3.970291913552122),
+                                    ("integer (0..19)month (grain)", -3.970291913552122),
+                                    ("hour", -1.2402628057311365), ("month", -3.459466289786131),
+                                    ("integer (numeric)minute (grain)", -3.970291913552122),
+                                    ("integer (0..19)minute (grain)", -3.970291913552122),
+                                    ("integer (numeric)month (grain)", -3.970291913552122),
+                                    ("minute", -3.459466289786131),
+                                    ("coupleday (grain)", -4.375757021660286),
+                                    ("integer (numeric)hour (grain)", -1.4313180424938456),
+                                    ("integer (0..19)day (grain)", -4.375757021660286),
+                                    ("integer (0..19)week (grain)", -4.375757021660286)],
+                               n = 68}}),
+       ("ordinals (first..19th)",
+        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}}),
+       ("<time-of-day> am|pm",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("time-of-day (latent)", -1.7047480922384253),
+                                    ("hh:mm", -1.7047480922384253),
+                                    ("until <time-of-day>", -1.7047480922384253),
+                                    ("hour", -1.2992829841302609), ("minute", -1.7047480922384253)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<duration> after <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("yearday", -0.6931471805599453),
+                                    ("<integer> <unit-of-duration>Kerstmis", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("today/tomorrow/yesterday afternoon",
+        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}}),
+       ("hh:mm",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.6888794541139363,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 38},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("quarter after|past <integer> (hour-of-day)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day>  o'clock", -1.5040773967762742),
+                                    ("time-of-day (latent)", -1.0986122886681098),
+                                    ("hour", -0.8109302162163288)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<duration> before <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("minuteminute", -1.3862943611198906),
+                                    ("<integer> <unit-of-duration>time-of-day (latent)",
+                                     -1.3862943611198906),
+                                    ("minutehour", -1.3862943611198906),
+                                    ("<integer> <unit-of-duration>half to|till|before <integer> (hour-of-day)",
+                                     -1.3862943611198906)],
+                               n = 2},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("quarter of an hour",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("intersect by ','",
+        Classifier{okData =
+                     ClassData{prior = -8.701137698962981e-2,
+                               unseen = -3.5553480614894135,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("wednesday<day-of-month> (non ordinal) <named-month>",
+                                     -2.833213344056216),
+                                    ("friday<day-of-month> (non ordinal) <named-month>",
+                                     -2.833213344056216),
+                                    ("dayday", -1.128465251817791), ("dayyear", -2.833213344056216),
+                                    ("fridaydd/mm", -2.4277482359480516),
+                                    ("fridaydd/mm/yyyy", -2.4277482359480516),
+                                    ("fridayintersect", -2.833213344056216),
+                                    ("sunday<named-month> <day-of-month> (non ordinal)",
+                                     -2.833213344056216),
+                                    ("monday<day-of-month> (non ordinal) <named-month>",
+                                     -2.4277482359480516),
+                                    ("<named-month> <day-of-month> (non ordinal)year",
+                                     -2.833213344056216)],
+                               n = 11},
+                   koData =
+                     ClassData{prior = -2.4849066497880004, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("daymonth", -1.9459101490553135),
+                                    ("sundayFebruary", -1.9459101490553135)],
+                               n = 1}}),
+       ("second (grain) ",
+        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}}),
+       ("last <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day", -0.8109302162163288), ("sunday", -1.5040773967762742),
+                                    ("tuesday", -1.0986122886681098)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("EOM|End of month",
+        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}}),
+       ("March",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.1972245773362196,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<day-of-month> (ordinal)",
+        Classifier{okData =
+                     ClassData{prior = -1.2809338454620642,
+                               unseen = -2.0794415416798357,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..19th)", -0.8472978603872037),
+                                    ("ordinal (digits)", -0.5596157879354228)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.325422400434628, unseen = -2.772588722239781,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinals (first..19th)", -0.6286086594223742),
+                                    ("ordinal (digits)", -0.7621400520468967)],
+                               n = 13}}),
+       ("Valentijnsdag",
+        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}}),
+       ("until <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -0.40546510810816444,
+                               unseen = -3.7376696182833684,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time> <part-of-day>", -2.327277705584417),
+                                    ("<time-of-day>  o'clock", -2.1041341542702074),
+                                    ("time-of-day (latent)", -1.9218125974762528),
+                                    ("<time-of-day> am|pm", -3.0204248861443626),
+                                    ("EOM|End of month", -3.0204248861443626),
+                                    ("hour", -1.074514737089049), ("month", -3.0204248861443626)],
+                               n = 14},
+                   koData =
+                     ClassData{prior = -1.0986122886681098, unseen = -3.332204510175204,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dd/mm", -2.6026896854443837),
+                                    ("dd/mm/yyyy", -2.6026896854443837),
+                                    ("half to|till|before <integer> (hour-of-day)",
+                                     -2.1972245773362196),
+                                    ("day", -2.1972245773362196), ("hh:mm", -1.9095425048844386),
+                                    ("minute", -1.5040773967762742)],
+                               n = 7}}),
+       ("after <duration>",
+        Classifier{okData =
+                     ClassData{prior = -0.10536051565782628,
+                               unseen = -3.258096538021482,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.120263536200091), ("second", -2.5257286443082556),
+                                    ("day", -2.5257286443082556),
+                                    ("<integer> <unit-of-duration>", -1.0216512475319814),
+                                    ("hour", -1.8325814637483102), ("minute", -2.120263536200091),
+                                    ("<integer> kwartier", -2.5257286443082556)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -2.3025850929940455,
+                               unseen = -2.3025850929940455,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> <unit-of-duration>", -1.5040773967762742),
+                                    ("hour", -1.5040773967762742)],
+                               n = 1}}),
+       ("evening",
+        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}}),
+       ("decimal number",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
+       ("<time-of-day> until",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day>  o'clock", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("next <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("wednesday", -1.8718021769015913),
+                                    ("monday", -1.466337068793427), ("day", -1.1786549963416462),
+                                    ("hour", -1.8718021769015913),
+                                    ("week-end", -1.8718021769015913)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("last <cycle>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -1.540445040947149),
+                                    ("month (grain)", -1.9459101490553135),
+                                    ("year (grain)", -1.9459101490553135),
+                                    ("week (grain)", -1.540445040947149),
+                                    ("year", -1.9459101490553135), ("month", -1.9459101490553135)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("Sinterklaas",
+        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}}),
+       ("next n <cycle>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.828641396489095,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -3.1135153092103742),
+                                    ("integer (0..19)year (grain)", -3.1135153092103742),
+                                    ("integer (numeric)day (grain)", -3.1135153092103742),
+                                    ("integer (0..19)second (grain) ", -3.1135153092103742),
+                                    ("second", -3.1135153092103742),
+                                    ("integer (numeric)year (grain)", -3.1135153092103742),
+                                    ("day", -2.4203681286504293), ("year", -2.70805020110221),
+                                    ("integer (numeric)week (grain)", -3.1135153092103742),
+                                    ("integer (0..19)month (grain)", -3.1135153092103742),
+                                    ("hour", -2.70805020110221), ("month", -2.70805020110221),
+                                    ("integer (numeric)minute (grain)", -3.1135153092103742),
+                                    ("integer (0..19)minute (grain)", -3.1135153092103742),
+                                    ("integer (numeric)month (grain)", -3.1135153092103742),
+                                    ("minute", -2.70805020110221),
+                                    ("coupleday (grain)", -3.1135153092103742),
+                                    ("integer (numeric)hour (grain)", -2.70805020110221),
+                                    ("integer (0..19)day (grain)", -3.1135153092103742)],
+                               n = 13},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.995732273553991,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("tuesday",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 10},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("about|exactly <duration>",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> <unit-of-duration>", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1}}),
+       ("Koningsdag",
+        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}}),
+       ("by the end of <time>",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("half to|till|before <integer> (hour-of-day)",
+                                     -1.7346010553881064),
+                                    ("time-of-day (latent)", -1.4469189829363254),
+                                    ("hh:mm", -2.1400661634962708), ("hour", -1.4469189829363254),
+                                    ("minute", -1.4469189829363254)],
+                               n = 6}}),
+       ("in <duration>",
+        Classifier{okData =
+                     ClassData{prior = -4.652001563489282e-2,
+                               unseen = -3.970291913552122,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.5649493574615367), ("second", -3.258096538021482),
+                                    ("number,number uur", -3.258096538021482),
+                                    ("day", -2.8526314299133175), ("year", -3.258096538021482),
+                                    ("<integer> <unit-of-duration>", -1.006804739414987),
+                                    ("hour", -2.159484249353372),
+                                    ("<integer> and an half hour", -3.258096538021482),
+                                    ("minute", -1.6486586255873816),
+                                    ("<integer> kwartier", -3.258096538021482)],
+                               n = 21},
+                   koData =
+                     ClassData{prior = -3.0910424533583156,
+                               unseen = -2.5649493574615367,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<integer> <unit-of-duration>", -1.791759469228055),
+                                    ("hour", -1.791759469228055)],
+                               n = 1}}),
+       ("<datetime> - <datetime> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.2076393647782445,
+                               unseen = -3.6375861597263857,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("intersecthh:mm", -2.001480000210124),
+                                    ("on <date>hh:mm", -2.917770732084279),
+                                    ("at <time-of-day>hh:mm", -2.917770732084279),
+                                    ("minuteminute", -1.213022639845854),
+                                    ("hh:mmhh:mm", -2.001480000210124),
+                                    ("dayday", -2.2246235515243336),
+                                    ("<named-month> <day-of-month> (non ordinal)<named-month> <day-of-month> (non ordinal)",
+                                     -2.512305623976115),
+                                    ("dd/mmdd/mm", -2.917770732084279)],
+                               n = 13},
+                   koData =
+                     ClassData{prior = -1.6739764335716716, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<named-month> <day-of-month> (non ordinal)July",
+                                     -2.1400661634962708),
+                                    ("daymonth", -1.7346010553881064),
+                                    ("minuteminute", -2.1400661634962708),
+                                    ("hh:mmhh:mm", -2.1400661634962708),
+                                    ("<named-month> <day-of-month> (non ordinal)August",
+                                     -2.1400661634962708)],
+                               n = 3}}),
+       ("<integer> and an half hour",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("integer (0..19)", 0.0)], n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("relative minutes to|till|before|after <integer> (time-of-day)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -1.2992829841302609),
+                                    ("integer (numeric)half to|till|before <integer> (hour-of-day)",
+                                     -1.7047480922384253),
+                                    ("integer (numeric)time-of-day (latent)", -1.7047480922384253),
+                                    ("integer (20..90)time-of-day (latent)", -1.7047480922384253),
+                                    ("minute", -1.7047480922384253)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time-of-day> - <time-of-day> (interval)",
+        Classifier{okData =
+                     ClassData{prior = -0.9808292530117262,
+                               unseen = -2.9444389791664407,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>hh:mm", -2.1972245773362196),
+                                    ("minuteminute", -0.9444616088408514),
+                                    ("hh:mmhh:mm", -1.0986122886681098)],
+                               n = 6},
+                   koData =
+                     ClassData{prior = -0.4700036292457356, unseen = -3.295836866004329,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hh:mmtime-of-day (latent)", -1.1786549963416462),
+                                    ("minuteminute", -2.159484249353372),
+                                    ("hh:mmhh:mm", -2.159484249353372),
+                                    ("minutehour", -1.0608719606852628),
+                                    ("at <time-of-day>time-of-day (latent)", -2.5649493574615367)],
+                               n = 10}}),
+       ("winter",
+        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}}),
+       ("last n <cycle>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.713572066704308,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -2.5902671654458267),
+                                    ("integer (0..19)year (grain)", -2.995732273553991),
+                                    ("integer (numeric)day (grain)", -2.5902671654458267),
+                                    ("second", -2.5902671654458267),
+                                    ("integer (numeric)second (grain) ", -2.5902671654458267),
+                                    ("integer (numeric)year (grain)", -2.995732273553991),
+                                    ("day", -2.5902671654458267), ("year", -2.5902671654458267),
+                                    ("integer (numeric)week (grain)", -2.995732273553991),
+                                    ("integer (0..19)month (grain)", -2.995732273553991),
+                                    ("month", -2.5902671654458267),
+                                    ("integer (numeric)minute (grain)", -2.995732273553991),
+                                    ("integer (0..19)minute (grain)", -2.995732273553991),
+                                    ("integer (numeric)month (grain)", -2.995732273553991),
+                                    ("minute", -2.5902671654458267),
+                                    ("integer (0..19)week (grain)", -2.995732273553991)],
+                               n = 12},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -2.833213344056216,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("nth <time> after <time>",
+        Classifier{okData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.916290731874155),
+                                    ("ordinals (first..19th)tuesdayintersect", -0.916290731874155)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -0.6931471805599453, unseen = -1.791759469228055,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("dayday", -0.916290731874155),
+                                    ("ordinals (first..19th)tuesdayKerstmis", -0.916290731874155)],
+                               n = 1}}),
+       ("<named-month> <day-of-month> (non ordinal)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -3.1780538303479458,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Augustinteger (numeric)", -1.749199854809259),
+                                    ("Aprilinteger (numeric)", -2.4423470353692043),
+                                    ("month", -0.832909122935104),
+                                    ("Februaryinteger (numeric)", -1.749199854809259),
+                                    ("Julyinteger (numeric)", -2.03688192726104)],
+                               n = 9},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<day-of-month> (non ordinal) <named-month>",
+        Classifier{okData =
+                     ClassData{prior = -0.3448404862917295,
+                               unseen = -3.7612001156935624,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)September", -2.639057329615259),
+                                    ("integer (numeric)April", -2.639057329615259),
+                                    ("integer (numeric)August", -3.044522437723423),
+                                    ("integer (numeric)February", -1.6582280766035324),
+                                    ("month", -0.8472978603872037),
+                                    ("integer (numeric)July", -2.639057329615259),
+                                    ("integer (numeric)March", -2.3513752571634776)],
+                               n = 17},
+                   koData =
+                     ClassData{prior = -1.2321436812926323,
+                               unseen = -3.1354942159291497,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("integer (numeric)August", -2.3978952727983707),
+                                    ("month", -1.0116009116784799),
+                                    ("integer (numeric)October", -2.3978952727983707),
+                                    ("integer (numeric)July", -1.2992829841302609)],
+                               n = 7}}),
+       ("this|next <day-of-week>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("wednesday", -1.8718021769015913),
+                                    ("monday", -0.9555114450274363), ("day", -0.7731898882334817)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<time-of-day> after",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("<time-of-day>  o'clock", -0.6931471805599453),
+                                    ("hour", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("ordinal (digits)",
+        Classifier{okData =
+                     ClassData{prior = -0.8109302162163288, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
+                   koData =
+                     ClassData{prior = -0.587786664902119, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 5}}),
+       ("quarter (grain)",
+        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}}),
+       ("last <cycle> of <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.70805020110221,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day (grain)October", -1.9459101490553135),
+                                    ("daymonth", -1.540445040947149),
+                                    ("day (grain)intersect", -1.9459101490553135),
+                                    ("weekmonth", -1.540445040947149),
+                                    ("week (grain)intersect", -1.9459101490553135),
+                                    ("week (grain)September", -1.9459101490553135)],
+                               n = 4},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<day-of-month>(ordinal) <named-month> year",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("ordinal (digits)July", -0.6931471805599453),
+                                    ("month", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("morning",
+        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}}),
+       ("week-end",
+        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}}),
+       ("Oudjaar",
+        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}}),
+       ("after <time-of-day>",
+        Classifier{okData =
+                     ClassData{prior = -0.587786664902119, unseen = -2.995732273553991,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("at <time-of-day>", -1.845826690498331),
+                                    ("<time-of-day>  o'clock", -1.845826690498331),
+                                    ("time-of-day (latent)", -2.2512917986064953),
+                                    ("hour", -1.1526795099383855)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -0.8109302162163288, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("Kerstmis", -1.7346010553881064),
+                                    ("intersect", -2.1400661634962708),
+                                    ("day", -1.4469189829363254), ("hh:mm", -2.1400661634962708),
+                                    ("minute", -2.1400661634962708)],
+                               n = 4}}),
+       ("day (grain)",
+        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}}),
+       ("Moederdag",
+        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}}),
+       ("<month> dd-dd (interval)",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.639057329615259,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("October", -1.8718021769015913), ("July", -0.9555114450274363),
+                                    ("month", -0.7731898882334817)],
+                               n = 5},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("summer",
+        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.0, unseen = -2.890371757896165,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("hour", -0.7537718023763802),
+                                    ("at <time-of-day>integer (numeric)", -2.1400661634962708),
+                                    ("<time-of-day>  o'clockinteger (numeric)",
+                                     -0.8873031950009028)],
+                               n = 7},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.3862943611198906,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("<integer> kwartier",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("integer (0..19)", 0.0)], n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("this <time>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -2.4849066497880004,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("day", -1.2992829841302609), ("hour", -1.7047480922384253),
+                                    ("winter", -1.7047480922384253),
+                                    ("week-end", -1.7047480922384253),
+                                    ("summer", -1.7047480922384253)],
+                               n = 3},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("within <duration>",
+        Classifier{okData =
+                     ClassData{prior = 0.0, unseen = -1.6094379124341003,
+                               likelihoods =
+                                 HashMap.fromList
+                                   [("week", -0.6931471805599453),
+                                    ("<integer> <unit-of-duration>", -0.6931471805599453)],
+                               n = 1},
+                   koData =
+                     ClassData{prior = -infinity, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [], n = 0}}),
+       ("before yesterday",
+        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}}),
+       ("August",
+        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}})]
diff --git a/Duckling/Ranking/Classifiers/NL_NL.hs b/Duckling/Ranking/Classifiers/NL_NL.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/Ranking/Classifiers/NL_NL.hs
@@ -0,0 +1,22 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+-----------------------------------------------------------------
+-- Auto-generated by regenClassifiers
+--
+-- DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+--  @generated
+-----------------------------------------------------------------
+{-# LANGUAGE OverloadedStrings #-}
+module Duckling.Ranking.Classifiers.NL_NL (classifiers) where
+import Data.String
+import Prelude
+import qualified Data.HashMap.Strict as HashMap
+import Duckling.Ranking.Types
+
+classifiers :: Classifiers
+classifiers = HashMap.fromList []
diff --git a/Duckling/Ranking/Classifiers/ZH_CN.hs b/Duckling/Ranking/Classifiers/ZH_CN.hs
--- a/Duckling/Ranking/Classifiers/ZH_CN.hs
+++ b/Duckling/Ranking/Classifiers/ZH_CN.hs
@@ -54,6 +54,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\22269\38469\28040\36153\32773\26435\30410\26085",
+        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}}),
+       ("\24314\20891\33410",
+        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}}),
        ("today",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -1.3862943611198906,
@@ -146,12 +160,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\20803\26086",
+        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}}),
        ("intersect",
         Classifier{okData =
                      ClassData{prior = -0.3519764231571781, unseen = -4.983606621708336,
                                likelihoods =
                                  HashMap.fromList
-                                   [("children's day<part-of-day> <dim time>", -3.367295829986474),
+                                   [("\20799\31461\33410<part-of-day> <dim time>",
+                                     -3.367295829986474),
                                     ("year (numeric with year symbol)<named-month> <day-of-month>",
                                      -1.7578579175523736),
                                     ("dayday", -1.6094379124341003),
@@ -169,7 +191,8 @@
                      ClassData{prior = -1.215022640512521, unseen = -4.276666119016055,
                                likelihoods =
                                  HashMap.fromList
-                                   [("children's day<part-of-day> <dim time>", -2.065455299705096),
+                                   [("\20799\31461\33410<part-of-day> <dim time>",
+                                     -2.065455299705096),
                                     ("dayhour", -2.653241964607215),
                                     ("daymonth", -2.1832383353614793),
                                     ("year (numeric with year symbol)February", -3.164067588373206),
@@ -254,8 +277,8 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("evening|night",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                     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}}),
@@ -342,13 +365,6 @@
                      ClassData{prior = -0.5625269981428811,
                                unseen = -3.9318256327243257,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 49}}),
-       ("valentine's day",
-        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}}),
        ("year (numeric with year symbol)",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -2.772588722239781,
@@ -364,6 +380,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\24858\20154\33410",
+        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}}),
        ("numbers prefix with -, negative or minus",
         Classifier{okData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
@@ -393,6 +416,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\28595\38376\22238\24402\32426\24565\26085",
+        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}}),
        ("next <day-of-week>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -3.1780538303479458,
@@ -474,17 +504,18 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<dim time> <part-of-day>",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -4.248495242049359,
+                     ClassData{prior = 0.0, unseen = -4.31748811353631,
                                likelihoods =
                                  HashMap.fromList
-                                   [("dayhour", -0.7375989431307791),
-                                    ("national dayevening|night", -3.1354942159291497),
-                                    ("<named-month> <day-of-month>morning", -1.1895840668738362),
-                                    ("children's dayafternoon", -3.1354942159291497),
-                                    ("Mondaymorning", -2.03688192726104)],
-                               n = 32},
+                                   [("dayhour", -0.7487170317147561),
+                                    ("national dayevening|night", -3.20545280453606),
+                                    ("<named-month> <day-of-month>morning", -1.2595426554807467),
+                                    ("\24773\20154\33410evening|night", -3.20545280453606),
+                                    ("\20799\31461\33410afternoon", -3.20545280453606),
+                                    ("Mondaymorning", -2.10684051586795)],
+                               n = 34},
                    koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<part-of-day> <dim time>",
         Classifier{okData =
@@ -560,6 +591,13 @@
                                    [("<integer> (latent time-of-day)", -0.916290731874155),
                                     ("hour", -0.916290731874155)],
                                n = 3}}),
+       ("number suffix: \19975",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
        ("relative minutes after|past <integer> (hour-of-day)",
         Classifier{okData =
                      ClassData{prior = -0.6931471805599453,
@@ -581,13 +619,6 @@
                                      -1.3862943611198906),
                                     ("hour", -0.7801585575495751)],
                                n = 10}}),
-       ("army's day",
-        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}}),
        ("intersect by \",\"",
         Classifier{okData =
                      ClassData{prior = -0.2231435513142097, unseen = -4.110873864173311,
@@ -636,6 +667,13 @@
                                     ("hour", -2.2617630984737906), ("month", -2.772588722239781),
                                     ("minute", -2.772588722239781)],
                                n = 20}}),
+       ("\22307\35806\33410",
+        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}}),
        ("last <time>",
         Classifier{okData =
                      ClassData{prior = -1.2286654169163076,
@@ -667,6 +705,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\22919\22899\33410",
+        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}}),
        ("next <time>",
         Classifier{okData =
                      ClassData{prior = -1.6486586255873816, unseen = -2.890371757896165,
@@ -705,20 +750,6 @@
                                    [("week", -0.8362480242006186),
                                     ("week (grain)", -0.8362480242006186)],
                                n = 12}}),
-       ("christmas",
-        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}}),
-       ("new year's day",
-        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}}),
        ("next n <cycle>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.61512051684126,
@@ -743,20 +774,27 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -2.833213344056216,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("Tuesday",
+       ("\19975\22307\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.295836866004329,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 25},
+                     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}}),
-       ("children's day",
+       ("\20799\31461\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
+                     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}}),
+       ("Tuesday",
+        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}}),
        ("<named-month> <day-of-month>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -5.231108616854587,
@@ -781,14 +819,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -2.3978952727983707,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\21171\21160\33410",
+        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}}),
        ("integer (0..10)",
         Classifier{okData =
-                     ClassData{prior = -0.38372512147175847,
-                               unseen = -5.236441962829949,
+                     ClassData{prior = -0.4090429294560484, unseen = -5.236441962829949,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 186},
                    koData =
-                     ClassData{prior = -1.143563676530376, unseen = -4.48863636973214,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 87}}),
+                     ClassData{prior = -1.0914948208992459, unseen = -4.564348191467836,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 94}}),
        ("last n <cycle>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.605170185988091,
@@ -871,24 +915,17 @@
                    koData =
                      ClassData{prior = -2.772588722239781, unseen = -1.0986122886681098,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("labor day",
-        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}}),
-       ("women's day",
+       ("<number>\20010/\20491",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
+                               likelihoods = HashMap.fromList [("integer (0..10)", 0.0)], n = 29},
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("<number>\20010/\20491",
+       ("\24773\20154\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
-                               likelihoods = HashMap.fromList [("integer (0..10)", 0.0)], n = 29},
+                     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}}),
diff --git a/Duckling/Ranking/Classifiers/ZH_HK.hs b/Duckling/Ranking/Classifiers/ZH_HK.hs
--- a/Duckling/Ranking/Classifiers/ZH_HK.hs
+++ b/Duckling/Ranking/Classifiers/ZH_HK.hs
@@ -54,6 +54,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\22269\38469\28040\36153\32773\26435\30410\26085",
+        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}}),
+       ("\24314\20891\33410",
+        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}}),
        ("today",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -1.3862943611198906,
@@ -146,12 +160,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\20803\26086",
+        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}}),
        ("intersect",
         Classifier{okData =
                      ClassData{prior = -0.3519764231571781, unseen = -4.983606621708336,
                                likelihoods =
                                  HashMap.fromList
-                                   [("children's day<part-of-day> <dim time>", -3.367295829986474),
+                                   [("\20799\31461\33410<part-of-day> <dim time>",
+                                     -3.367295829986474),
                                     ("year (numeric with year symbol)<named-month> <day-of-month>",
                                      -1.7578579175523736),
                                     ("dayday", -1.6094379124341003),
@@ -169,7 +191,8 @@
                      ClassData{prior = -1.215022640512521, unseen = -4.276666119016055,
                                likelihoods =
                                  HashMap.fromList
-                                   [("children's day<part-of-day> <dim time>", -2.065455299705096),
+                                   [("\20799\31461\33410<part-of-day> <dim time>",
+                                     -2.065455299705096),
                                     ("dayhour", -2.653241964607215),
                                     ("daymonth", -2.1832383353614793),
                                     ("year (numeric with year symbol)February", -3.164067588373206),
@@ -254,8 +277,8 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("evening|night",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                     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}}),
@@ -342,13 +365,6 @@
                      ClassData{prior = -0.5625269981428811,
                                unseen = -3.9318256327243257,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 49}}),
-       ("valentine's day",
-        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}}),
        ("year (numeric with year symbol)",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -2.772588722239781,
@@ -364,6 +380,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\24858\20154\33410",
+        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}}),
        ("numbers prefix with -, negative or minus",
         Classifier{okData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
@@ -393,6 +416,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\28595\38376\22238\24402\32426\24565\26085",
+        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}}),
        ("next <day-of-week>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -3.1780538303479458,
@@ -474,17 +504,18 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<dim time> <part-of-day>",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -4.248495242049359,
+                     ClassData{prior = 0.0, unseen = -4.31748811353631,
                                likelihoods =
                                  HashMap.fromList
-                                   [("dayhour", -0.7375989431307791),
-                                    ("national dayevening|night", -3.1354942159291497),
-                                    ("<named-month> <day-of-month>morning", -1.1895840668738362),
-                                    ("children's dayafternoon", -3.1354942159291497),
-                                    ("Mondaymorning", -2.03688192726104)],
-                               n = 32},
+                                   [("dayhour", -0.7487170317147561),
+                                    ("national dayevening|night", -3.20545280453606),
+                                    ("<named-month> <day-of-month>morning", -1.2595426554807467),
+                                    ("\24773\20154\33410evening|night", -3.20545280453606),
+                                    ("\20799\31461\33410afternoon", -3.20545280453606),
+                                    ("Mondaymorning", -2.10684051586795)],
+                               n = 34},
                    koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<part-of-day> <dim time>",
         Classifier{okData =
@@ -560,6 +591,13 @@
                                    [("<integer> (latent time-of-day)", -0.916290731874155),
                                     ("hour", -0.916290731874155)],
                                n = 3}}),
+       ("number suffix: \19975",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
        ("relative minutes after|past <integer> (hour-of-day)",
         Classifier{okData =
                      ClassData{prior = -0.6931471805599453,
@@ -581,13 +619,6 @@
                                      -1.3862943611198906),
                                     ("hour", -0.7801585575495751)],
                                n = 10}}),
-       ("army's day",
-        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}}),
        ("intersect by \",\"",
         Classifier{okData =
                      ClassData{prior = -0.2231435513142097, unseen = -4.110873864173311,
@@ -636,6 +667,13 @@
                                     ("hour", -2.2617630984737906), ("month", -2.772588722239781),
                                     ("minute", -2.772588722239781)],
                                n = 20}}),
+       ("\22307\35806\33410",
+        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}}),
        ("last <time>",
         Classifier{okData =
                      ClassData{prior = -1.2286654169163076,
@@ -667,6 +705,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\22919\22899\33410",
+        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}}),
        ("next <time>",
         Classifier{okData =
                      ClassData{prior = -1.6486586255873816, unseen = -2.890371757896165,
@@ -705,20 +750,6 @@
                                    [("week", -0.8362480242006186),
                                     ("week (grain)", -0.8362480242006186)],
                                n = 12}}),
-       ("christmas",
-        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}}),
-       ("new year's day",
-        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}}),
        ("next n <cycle>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.61512051684126,
@@ -743,20 +774,27 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -2.833213344056216,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("Tuesday",
+       ("\19975\22307\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.295836866004329,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 25},
+                     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}}),
-       ("children's day",
+       ("\20799\31461\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
+                     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}}),
+       ("Tuesday",
+        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}}),
        ("<named-month> <day-of-month>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -5.231108616854587,
@@ -781,14 +819,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -2.3978952727983707,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\21171\21160\33410",
+        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}}),
        ("integer (0..10)",
         Classifier{okData =
-                     ClassData{prior = -0.38372512147175847,
-                               unseen = -5.236441962829949,
+                     ClassData{prior = -0.4090429294560484, unseen = -5.236441962829949,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 186},
                    koData =
-                     ClassData{prior = -1.143563676530376, unseen = -4.48863636973214,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 87}}),
+                     ClassData{prior = -1.0914948208992459, unseen = -4.564348191467836,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 94}}),
        ("last n <cycle>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.605170185988091,
@@ -871,24 +915,17 @@
                    koData =
                      ClassData{prior = -2.772588722239781, unseen = -1.0986122886681098,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("labor day",
-        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}}),
-       ("women's day",
+       ("<number>\20010/\20491",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
+                               likelihoods = HashMap.fromList [("integer (0..10)", 0.0)], n = 29},
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("<number>\20010/\20491",
+       ("\24773\20154\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
-                               likelihoods = HashMap.fromList [("integer (0..10)", 0.0)], n = 29},
+                     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}}),
diff --git a/Duckling/Ranking/Classifiers/ZH_MO.hs b/Duckling/Ranking/Classifiers/ZH_MO.hs
--- a/Duckling/Ranking/Classifiers/ZH_MO.hs
+++ b/Duckling/Ranking/Classifiers/ZH_MO.hs
@@ -54,6 +54,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\22269\38469\28040\36153\32773\26435\30410\26085",
+        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}}),
+       ("\24314\20891\33410",
+        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}}),
        ("today",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -1.3862943611198906,
@@ -146,12 +160,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\20803\26086",
+        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}}),
        ("intersect",
         Classifier{okData =
                      ClassData{prior = -0.3519764231571781, unseen = -4.983606621708336,
                                likelihoods =
                                  HashMap.fromList
-                                   [("children's day<part-of-day> <dim time>", -3.367295829986474),
+                                   [("\20799\31461\33410<part-of-day> <dim time>",
+                                     -3.367295829986474),
                                     ("year (numeric with year symbol)<named-month> <day-of-month>",
                                      -1.7578579175523736),
                                     ("dayday", -1.6094379124341003),
@@ -169,7 +191,8 @@
                      ClassData{prior = -1.215022640512521, unseen = -4.276666119016055,
                                likelihoods =
                                  HashMap.fromList
-                                   [("children's day<part-of-day> <dim time>", -2.065455299705096),
+                                   [("\20799\31461\33410<part-of-day> <dim time>",
+                                     -2.065455299705096),
                                     ("dayhour", -2.653241964607215),
                                     ("daymonth", -2.1832383353614793),
                                     ("year (numeric with year symbol)February", -3.164067588373206),
@@ -254,8 +277,8 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("evening|night",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                     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}}),
@@ -342,13 +365,6 @@
                      ClassData{prior = -0.5625269981428811,
                                unseen = -3.9318256327243257,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 49}}),
-       ("valentine's day",
-        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}}),
        ("year (numeric with year symbol)",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -2.772588722239781,
@@ -364,6 +380,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\24858\20154\33410",
+        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}}),
        ("numbers prefix with -, negative or minus",
         Classifier{okData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
@@ -393,6 +416,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\28595\38376\22238\24402\32426\24565\26085",
+        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}}),
        ("next <day-of-week>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -3.1780538303479458,
@@ -474,17 +504,18 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<dim time> <part-of-day>",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -4.248495242049359,
+                     ClassData{prior = 0.0, unseen = -4.31748811353631,
                                likelihoods =
                                  HashMap.fromList
-                                   [("dayhour", -0.7375989431307791),
-                                    ("national dayevening|night", -3.1354942159291497),
-                                    ("<named-month> <day-of-month>morning", -1.1895840668738362),
-                                    ("children's dayafternoon", -3.1354942159291497),
-                                    ("Mondaymorning", -2.03688192726104)],
-                               n = 32},
+                                   [("dayhour", -0.7487170317147561),
+                                    ("national dayevening|night", -3.20545280453606),
+                                    ("<named-month> <day-of-month>morning", -1.2595426554807467),
+                                    ("\24773\20154\33410evening|night", -3.20545280453606),
+                                    ("\20799\31461\33410afternoon", -3.20545280453606),
+                                    ("Mondaymorning", -2.10684051586795)],
+                               n = 34},
                    koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<part-of-day> <dim time>",
         Classifier{okData =
@@ -560,6 +591,13 @@
                                    [("<integer> (latent time-of-day)", -0.916290731874155),
                                     ("hour", -0.916290731874155)],
                                n = 3}}),
+       ("number suffix: \19975",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
        ("relative minutes after|past <integer> (hour-of-day)",
         Classifier{okData =
                      ClassData{prior = -0.6931471805599453,
@@ -581,13 +619,6 @@
                                      -1.3862943611198906),
                                     ("hour", -0.7801585575495751)],
                                n = 10}}),
-       ("army's day",
-        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}}),
        ("intersect by \",\"",
         Classifier{okData =
                      ClassData{prior = -0.2231435513142097, unseen = -4.110873864173311,
@@ -636,6 +667,13 @@
                                     ("hour", -2.2617630984737906), ("month", -2.772588722239781),
                                     ("minute", -2.772588722239781)],
                                n = 20}}),
+       ("\22307\35806\33410",
+        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}}),
        ("last <time>",
         Classifier{okData =
                      ClassData{prior = -1.2286654169163076,
@@ -667,6 +705,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\22919\22899\33410",
+        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}}),
        ("next <time>",
         Classifier{okData =
                      ClassData{prior = -1.6486586255873816, unseen = -2.890371757896165,
@@ -705,20 +750,6 @@
                                    [("week", -0.8362480242006186),
                                     ("week (grain)", -0.8362480242006186)],
                                n = 12}}),
-       ("christmas",
-        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}}),
-       ("new year's day",
-        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}}),
        ("next n <cycle>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.61512051684126,
@@ -743,20 +774,27 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -2.833213344056216,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("Tuesday",
+       ("\19975\22307\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.295836866004329,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 25},
+                     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}}),
-       ("children's day",
+       ("\20799\31461\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
+                     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}}),
+       ("Tuesday",
+        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}}),
        ("<named-month> <day-of-month>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -5.231108616854587,
@@ -781,14 +819,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -2.3978952727983707,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\21171\21160\33410",
+        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}}),
        ("integer (0..10)",
         Classifier{okData =
-                     ClassData{prior = -0.38372512147175847,
-                               unseen = -5.236441962829949,
+                     ClassData{prior = -0.4090429294560484, unseen = -5.236441962829949,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 186},
                    koData =
-                     ClassData{prior = -1.143563676530376, unseen = -4.48863636973214,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 87}}),
+                     ClassData{prior = -1.0914948208992459, unseen = -4.564348191467836,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 94}}),
        ("last n <cycle>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.605170185988091,
@@ -871,24 +915,17 @@
                    koData =
                      ClassData{prior = -2.772588722239781, unseen = -1.0986122886681098,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("labor day",
-        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}}),
-       ("women's day",
+       ("<number>\20010/\20491",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
+                               likelihoods = HashMap.fromList [("integer (0..10)", 0.0)], n = 29},
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("<number>\20010/\20491",
+       ("\24773\20154\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
-                               likelihoods = HashMap.fromList [("integer (0..10)", 0.0)], n = 29},
+                     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}}),
diff --git a/Duckling/Ranking/Classifiers/ZH_TW.hs b/Duckling/Ranking/Classifiers/ZH_TW.hs
--- a/Duckling/Ranking/Classifiers/ZH_TW.hs
+++ b/Duckling/Ranking/Classifiers/ZH_TW.hs
@@ -54,6 +54,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\22269\38469\28040\36153\32773\26435\30410\26085",
+        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}}),
+       ("\24314\20891\33410",
+        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}}),
        ("today",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -1.3862943611198906,
@@ -146,12 +160,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\20803\26086",
+        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}}),
        ("intersect",
         Classifier{okData =
                      ClassData{prior = -0.3519764231571781, unseen = -4.983606621708336,
                                likelihoods =
                                  HashMap.fromList
-                                   [("children's day<part-of-day> <dim time>", -3.367295829986474),
+                                   [("\20799\31461\33410<part-of-day> <dim time>",
+                                     -3.367295829986474),
                                     ("year (numeric with year symbol)<named-month> <day-of-month>",
                                      -1.7578579175523736),
                                     ("dayday", -1.6094379124341003),
@@ -169,7 +191,8 @@
                      ClassData{prior = -1.215022640512521, unseen = -4.276666119016055,
                                likelihoods =
                                  HashMap.fromList
-                                   [("children's day<part-of-day> <dim time>", -2.065455299705096),
+                                   [("\20799\31461\33410<part-of-day> <dim time>",
+                                     -2.065455299705096),
                                     ("dayhour", -2.653241964607215),
                                     ("daymonth", -2.1832383353614793),
                                     ("year (numeric with year symbol)February", -3.164067588373206),
@@ -254,8 +277,8 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("evening|night",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                     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}}),
@@ -342,13 +365,6 @@
                      ClassData{prior = -0.5625269981428811,
                                unseen = -3.9318256327243257,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 49}}),
-       ("valentine's day",
-        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}}),
        ("year (numeric with year symbol)",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -2.772588722239781,
@@ -364,6 +380,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\24858\20154\33410",
+        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}}),
        ("numbers prefix with -, negative or minus",
         Classifier{okData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
@@ -393,6 +416,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\28595\38376\22238\24402\32426\24565\26085",
+        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}}),
        ("next <day-of-week>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -3.1780538303479458,
@@ -474,17 +504,18 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<dim time> <part-of-day>",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -4.248495242049359,
+                     ClassData{prior = 0.0, unseen = -4.31748811353631,
                                likelihoods =
                                  HashMap.fromList
-                                   [("dayhour", -0.7375989431307791),
-                                    ("national dayevening|night", -3.1354942159291497),
-                                    ("<named-month> <day-of-month>morning", -1.1895840668738362),
-                                    ("children's dayafternoon", -3.1354942159291497),
-                                    ("Mondaymorning", -2.03688192726104)],
-                               n = 32},
+                                   [("dayhour", -0.7487170317147561),
+                                    ("national dayevening|night", -3.20545280453606),
+                                    ("<named-month> <day-of-month>morning", -1.2595426554807467),
+                                    ("\24773\20154\33410evening|night", -3.20545280453606),
+                                    ("\20799\31461\33410afternoon", -3.20545280453606),
+                                    ("Mondaymorning", -2.10684051586795)],
+                               n = 34},
                    koData =
-                     ClassData{prior = -infinity, unseen = -1.791759469228055,
+                     ClassData{prior = -infinity, unseen = -1.9459101490553135,
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<part-of-day> <dim time>",
         Classifier{okData =
@@ -560,6 +591,13 @@
                                    [("<integer> (latent time-of-day)", -0.916290731874155),
                                     ("hour", -0.916290731874155)],
                                n = 3}}),
+       ("number suffix: \19975",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
        ("relative minutes after|past <integer> (hour-of-day)",
         Classifier{okData =
                      ClassData{prior = -0.6931471805599453,
@@ -581,13 +619,6 @@
                                      -1.3862943611198906),
                                     ("hour", -0.7801585575495751)],
                                n = 10}}),
-       ("army's day",
-        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}}),
        ("intersect by \",\"",
         Classifier{okData =
                      ClassData{prior = -0.2231435513142097, unseen = -4.110873864173311,
@@ -636,6 +667,13 @@
                                     ("hour", -2.2617630984737906), ("month", -2.772588722239781),
                                     ("minute", -2.772588722239781)],
                                n = 20}}),
+       ("\22307\35806\33410",
+        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}}),
        ("last <time>",
         Classifier{okData =
                      ClassData{prior = -1.2286654169163076,
@@ -667,6 +705,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\22919\22899\33410",
+        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}}),
        ("next <time>",
         Classifier{okData =
                      ClassData{prior = -1.6486586255873816, unseen = -2.890371757896165,
@@ -705,20 +750,6 @@
                                    [("week", -0.8362480242006186),
                                     ("week (grain)", -0.8362480242006186)],
                                n = 12}}),
-       ("christmas",
-        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}}),
-       ("new year's day",
-        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}}),
        ("next n <cycle>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.61512051684126,
@@ -743,20 +774,27 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -2.833213344056216,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("Tuesday",
+       ("\19975\22307\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.295836866004329,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 25},
+                     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}}),
-       ("children's day",
+       ("\20799\31461\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
+                     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}}),
+       ("Tuesday",
+        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}}),
        ("<named-month> <day-of-month>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -5.231108616854587,
@@ -781,14 +819,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -2.3978952727983707,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\21171\21160\33410",
+        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}}),
        ("integer (0..10)",
         Classifier{okData =
-                     ClassData{prior = -0.38372512147175847,
-                               unseen = -5.236441962829949,
+                     ClassData{prior = -0.4090429294560484, unseen = -5.236441962829949,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 186},
                    koData =
-                     ClassData{prior = -1.143563676530376, unseen = -4.48863636973214,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 87}}),
+                     ClassData{prior = -1.0914948208992459, unseen = -4.564348191467836,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 94}}),
        ("last n <cycle>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.605170185988091,
@@ -871,24 +915,17 @@
                    koData =
                      ClassData{prior = -2.772588722239781, unseen = -1.0986122886681098,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("labor day",
-        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}}),
-       ("women's day",
+       ("<number>\20010/\20491",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
+                               likelihoods = HashMap.fromList [("integer (0..10)", 0.0)], n = 29},
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("<number>\20010/\20491",
+       ("\24773\20154\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
-                               likelihoods = HashMap.fromList [("integer (0..10)", 0.0)], n = 29},
+                     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}}),
diff --git a/Duckling/Ranking/Classifiers/ZH_XX.hs b/Duckling/Ranking/Classifiers/ZH_XX.hs
--- a/Duckling/Ranking/Classifiers/ZH_XX.hs
+++ b/Duckling/Ranking/Classifiers/ZH_XX.hs
@@ -54,6 +54,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\22269\38469\28040\36153\32773\26435\30410\26085",
+        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}}),
+       ("\24314\20891\33410",
+        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}}),
        ("today",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -1.3862943611198906,
@@ -139,12 +153,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\20803\26086",
+        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}}),
        ("intersect",
         Classifier{okData =
                      ClassData{prior = -0.3519764231571781, unseen = -4.983606621708336,
                                likelihoods =
                                  HashMap.fromList
-                                   [("children's day<part-of-day> <dim time>", -3.367295829986474),
+                                   [("\20799\31461\33410<part-of-day> <dim time>",
+                                     -3.367295829986474),
                                     ("year (numeric with year symbol)<named-month> <day-of-month>",
                                      -1.7578579175523736),
                                     ("dayday", -1.6094379124341003),
@@ -162,7 +184,8 @@
                      ClassData{prior = -1.215022640512521, unseen = -4.276666119016055,
                                likelihoods =
                                  HashMap.fromList
-                                   [("children's day<part-of-day> <dim time>", -2.065455299705096),
+                                   [("\20799\31461\33410<part-of-day> <dim time>",
+                                     -2.065455299705096),
                                     ("dayhour", -2.653241964607215),
                                     ("daymonth", -2.1832383353614793),
                                     ("year (numeric with year symbol)February", -3.164067588373206),
@@ -245,6 +268,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("evening|night",
+        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}}),
        ("Monday",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -3.258096538021482,
@@ -328,13 +358,6 @@
                      ClassData{prior = -0.5625269981428811,
                                unseen = -3.9318256327243257,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 49}}),
-       ("valentine's day",
-        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}}),
        ("year (numeric with year symbol)",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -2.772588722239781,
@@ -350,6 +373,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\24858\20154\33410",
+        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}}),
        ("numbers prefix with -, negative or minus",
         Classifier{okData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
@@ -379,6 +409,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\28595\38376\22238\24402\32426\24565\26085",
+        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}}),
        ("next <day-of-week>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -3.1780538303479458,
@@ -460,16 +497,17 @@
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<dim time> <part-of-day>",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -4.174387269895637,
+                     ClassData{prior = 0.0, unseen = -4.248495242049359,
                                likelihoods =
                                  HashMap.fromList
-                                   [("dayhour", -0.7248958788745256),
-                                    ("<named-month> <day-of-month>morning", -1.114360645636249),
-                                    ("children's dayafternoon", -3.0602707946915624),
-                                    ("Mondaymorning", -1.9616585060234524)],
-                               n = 30},
+                                   [("dayhour", -0.7375989431307791),
+                                    ("<named-month> <day-of-month>morning", -1.1895840668738362),
+                                    ("\24773\20154\33410evening|night", -3.1354942159291497),
+                                    ("\20799\31461\33410afternoon", -3.1354942159291497),
+                                    ("Mondaymorning", -2.03688192726104)],
+                               n = 32},
                    koData =
-                     ClassData{prior = -infinity, unseen = -1.6094379124341003,
+                     ClassData{prior = -infinity, unseen = -1.791759469228055,
                                likelihoods = HashMap.fromList [], n = 0}}),
        ("<part-of-day> <dim time>",
         Classifier{okData =
@@ -545,6 +583,13 @@
                                    [("<integer> (latent time-of-day)", -0.916290731874155),
                                     ("hour", -0.916290731874155)],
                                n = 3}}),
+       ("number suffix: \19975",
+        Classifier{okData =
+                     ClassData{prior = -infinity, unseen = -0.6931471805599453,
+                               likelihoods = HashMap.fromList [], n = 0},
+                   koData =
+                     ClassData{prior = 0.0, unseen = -1.0986122886681098,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
        ("relative minutes after|past <integer> (hour-of-day)",
         Classifier{okData =
                      ClassData{prior = -0.6931471805599453,
@@ -566,13 +611,6 @@
                                      -1.3862943611198906),
                                     ("hour", -0.7801585575495751)],
                                n = 10}}),
-       ("army's day",
-        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}}),
        ("intersect by \",\"",
         Classifier{okData =
                      ClassData{prior = -0.2231435513142097, unseen = -4.110873864173311,
@@ -621,6 +659,13 @@
                                     ("hour", -2.2617630984737906), ("month", -2.772588722239781),
                                     ("minute", -2.772588722239781)],
                                n = 20}}),
+       ("\22307\35806\33410",
+        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}}),
        ("last <time>",
         Classifier{okData =
                      ClassData{prior = -1.2286654169163076,
@@ -652,6 +697,13 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\22919\22899\33410",
+        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}}),
        ("next <time>",
         Classifier{okData =
                      ClassData{prior = -1.6486586255873816, unseen = -2.890371757896165,
@@ -690,20 +742,6 @@
                                    [("week", -0.8362480242006186),
                                     ("week (grain)", -0.8362480242006186)],
                                n = 12}}),
-       ("christmas",
-        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}}),
-       ("new year's day",
-        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}}),
        ("next n <cycle>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.61512051684126,
@@ -728,20 +766,27 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -2.833213344056216,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("Tuesday",
+       ("\19975\22307\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.295836866004329,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 25},
+                     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}}),
-       ("children's day",
+       ("\20799\31461\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.791759469228055,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 4},
+                     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}}),
+       ("Tuesday",
+        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}}),
        ("<named-month> <day-of-month>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -5.231108616854587,
@@ -766,14 +811,20 @@
                    koData =
                      ClassData{prior = -infinity, unseen = -2.3978952727983707,
                                likelihoods = HashMap.fromList [], n = 0}}),
+       ("\21171\21160\33410",
+        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}}),
        ("integer (0..10)",
         Classifier{okData =
-                     ClassData{prior = -0.38372512147175847,
-                               unseen = -5.236441962829949,
+                     ClassData{prior = -0.4090429294560484, unseen = -5.236441962829949,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 186},
                    koData =
-                     ClassData{prior = -1.143563676530376, unseen = -4.48863636973214,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 87}}),
+                     ClassData{prior = -1.0914948208992459, unseen = -4.564348191467836,
+                               likelihoods = HashMap.fromList [("", 0.0)], n = 94}}),
        ("last n <cycle>",
         Classifier{okData =
                      ClassData{prior = 0.0, unseen = -4.605170185988091,
@@ -856,24 +907,17 @@
                    koData =
                      ClassData{prior = -2.772588722239781, unseen = -1.0986122886681098,
                                likelihoods = HashMap.fromList [("", 0.0)], n = 1}}),
-       ("labor day",
-        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}}),
-       ("women's day",
+       ("<number>\20010/\20491",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -1.3862943611198906,
-                               likelihoods = HashMap.fromList [("", 0.0)], n = 2},
+                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
+                               likelihoods = HashMap.fromList [("integer (0..10)", 0.0)], n = 29},
                    koData =
                      ClassData{prior = -infinity, unseen = -0.6931471805599453,
                                likelihoods = HashMap.fromList [], n = 0}}),
-       ("<number>\20010/\20491",
+       ("\24773\20154\33410",
         Classifier{okData =
-                     ClassData{prior = 0.0, unseen = -3.4339872044851463,
-                               likelihoods = HashMap.fromList [("integer (0..10)", 0.0)], n = 29},
+                     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}}),
diff --git a/Duckling/Region.hs b/Duckling/Region.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/Region.hs
@@ -0,0 +1,47 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE NoRebindableSyntax #-}
+
+module Duckling.Region
+  ( Region(..)
+  ) where
+
+import Data.Hashable
+import GHC.Generics
+import Prelude
+import TextShow (TextShow)
+import qualified TextShow as TS
+
+-- | ISO 3166-1 alpha-2 Country code (includes regions and territories).
+-- See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
+data Region
+  = AU
+  | BE
+  | BZ
+  | CA
+  | CN
+  | GB
+  | HK
+  | IE
+  | IN
+  | JM
+  | MO
+  | NL
+  | NZ
+  | PH
+  | TT
+  | TW
+  | US
+  | ZA
+  deriving (Bounded, Enum, Eq, Generic, Hashable, Ord, Read, Show)
+
+instance TextShow Region where
+  showb = TS.fromString . show
diff --git a/Duckling/Rules/EN.hs b/Duckling/Rules/EN.hs
--- a/Duckling/Rules/EN.hs
+++ b/Duckling/Rules/EN.hs
@@ -21,6 +21,18 @@
 import Duckling.Locale
 import Duckling.Types
 import qualified Duckling.AmountOfMoney.EN.Rules as AmountOfMoney
+import qualified Duckling.AmountOfMoney.EN.AU.Rules as AmountOfMoneyAU
+import qualified Duckling.AmountOfMoney.EN.BZ.Rules as AmountOfMoneyBZ
+import qualified Duckling.AmountOfMoney.EN.CA.Rules as AmountOfMoneyCA
+import qualified Duckling.AmountOfMoney.EN.GB.Rules as AmountOfMoneyGB
+import qualified Duckling.AmountOfMoney.EN.IE.Rules as AmountOfMoneyIE
+import qualified Duckling.AmountOfMoney.EN.IN.Rules as AmountOfMoneyIN
+import qualified Duckling.AmountOfMoney.EN.JM.Rules as AmountOfMoneyJM
+import qualified Duckling.AmountOfMoney.EN.NZ.Rules as AmountOfMoneyNZ
+import qualified Duckling.AmountOfMoney.EN.PH.Rules as AmountOfMoneyPH
+import qualified Duckling.AmountOfMoney.EN.TT.Rules as AmountOfMoneyTT
+import qualified Duckling.AmountOfMoney.EN.US.Rules as AmountOfMoneyUS
+import qualified Duckling.AmountOfMoney.EN.ZA.Rules as AmountOfMoneyZA
 import qualified Duckling.Distance.EN.Rules as Distance
 import qualified Duckling.Duration.EN.Rules as Duration
 import qualified Duckling.Email.EN.Rules as Email
@@ -49,6 +61,18 @@
 defaultRules dim             = langRules dim
 
 localeRules :: Region -> Some Dimension -> [Rule]
+localeRules AU (This AmountOfMoney) = AmountOfMoneyAU.rules
+localeRules BZ (This AmountOfMoney) = AmountOfMoneyBZ.rules
+localeRules CA (This AmountOfMoney) = AmountOfMoneyCA.rules
+localeRules GB (This AmountOfMoney) = AmountOfMoneyGB.rules
+localeRules IE (This AmountOfMoney) = AmountOfMoneyIE.rules
+localeRules IN (This AmountOfMoney) = AmountOfMoneyIN.rules
+localeRules JM (This AmountOfMoney) = AmountOfMoneyJM.rules
+localeRules NZ (This AmountOfMoney) = AmountOfMoneyNZ.rules
+localeRules PH (This AmountOfMoney) = AmountOfMoneyPH.rules
+localeRules TT (This AmountOfMoney) = AmountOfMoneyTT.rules
+localeRules US (This AmountOfMoney) = AmountOfMoneyUS.rules
+localeRules ZA (This AmountOfMoney) = AmountOfMoneyZA.rules
 localeRules AU (This Time) = TimeAU.rules
 localeRules BZ (This Time) = TimeBZ.rules
 localeRules CA (This Time) = TimeCA.rules
diff --git a/Duckling/Rules/HI.hs b/Duckling/Rules/HI.hs
--- a/Duckling/Rules/HI.hs
+++ b/Duckling/Rules/HI.hs
@@ -19,6 +19,8 @@
 import Duckling.Types
 import qualified Duckling.Numeral.HI.Rules as Numeral
 import qualified Duckling.Ordinal.HI.Rules as Ordinal
+import qualified Duckling.Duration.HI.Rules as Duration
+import qualified Duckling.TimeGrain.HI.Rules as TimeGrain
 
 defaultRules :: Some Dimension -> [Rule]
 defaultRules = langRules
@@ -30,7 +32,7 @@
 langRules :: Some Dimension -> [Rule]
 langRules (This AmountOfMoney) = []
 langRules (This Distance) = []
-langRules (This Duration) = []
+langRules (This Duration) = Duration.rules
 langRules (This Numeral) = Numeral.rules
 langRules (This Email) = []
 langRules (This Ordinal) = Ordinal.rules
@@ -39,7 +41,7 @@
 langRules (This RegexMatch) = []
 langRules (This Temperature) = []
 langRules (This Time) = []
-langRules (This TimeGrain) = []
+langRules (This TimeGrain) = TimeGrain.rules
 langRules (This Url) = []
 langRules (This Volume) = []
 langRules (This (CustomDimension dim)) = dimLangRules HI dim
diff --git a/Duckling/Rules/NL.hs b/Duckling/Rules/NL.hs
--- a/Duckling/Rules/NL.hs
+++ b/Duckling/Rules/NL.hs
@@ -8,13 +8,14 @@
 
 {-# LANGUAGE GADTs #-}
 
-
 module Duckling.Rules.NL
   ( defaultRules
   , langRules
   , localeRules
   ) where
 
+import Prelude
+
 import Duckling.Dimensions.Types
 import Duckling.Locale
 import Duckling.Types
@@ -24,14 +25,18 @@
 import qualified Duckling.Numeral.NL.Rules as Numeral
 import qualified Duckling.Ordinal.NL.Rules as Ordinal
 import qualified Duckling.Time.NL.Rules as Time
+import qualified Duckling.Time.NL.BE.Rules as TimeBE
+import qualified Duckling.Time.NL.NL.Rules as TimeNL
 import qualified Duckling.TimeGrain.NL.Rules as TimeGrain
 import qualified Duckling.Volume.NL.Rules as Volume
 
 defaultRules :: Some Dimension -> [Rule]
-defaultRules = langRules
+defaultRules dim@(This Time) = TimeNL.rulesBackwardCompatible ++ langRules dim
+defaultRules dim = langRules dim
 
 localeRules :: Region -> Some Dimension -> [Rule]
 localeRules region (This (CustomDimension dim)) = dimLocaleRules region dim
+localeRules BE (This Time) = TimeBE.rules
 localeRules _ _ = []
 
 langRules :: Some Dimension -> [Rule]
diff --git a/Duckling/Rules/ZH.hs b/Duckling/Rules/ZH.hs
--- a/Duckling/Rules/ZH.hs
+++ b/Duckling/Rules/ZH.hs
@@ -22,6 +22,7 @@
 import qualified Duckling.Distance.ZH.Rules as Distance
 import qualified Duckling.Numeral.ZH.Rules as Numeral
 import qualified Duckling.Ordinal.ZH.Rules as Ordinal
+import qualified Duckling.Quantity.ZH.Rules as Quantity
 import qualified Duckling.Temperature.ZH.Rules as Temperature
 import qualified Duckling.Time.ZH.Rules as Time
 import qualified Duckling.Time.ZH.CN.Rules as TimeCN
@@ -49,7 +50,7 @@
 langRules (This Numeral) = Numeral.rules
 langRules (This Ordinal) = Ordinal.rules
 langRules (This PhoneNumber) = []
-langRules (This Quantity) = []
+langRules (This Quantity) = Quantity.rules
 langRules (This RegexMatch) = []
 langRules (This Temperature) = Temperature.rules
 langRules (This Time) = Time.rules
diff --git a/Duckling/Temperature/AR/Corpus.hs b/Duckling/Temperature/AR/Corpus.hs
--- a/Duckling/Temperature/AR/Corpus.hs
+++ b/Duckling/Temperature/AR/Corpus.hs
@@ -25,23 +25,23 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37° سلزيوس"
              , "37 ° سلزيوس"
              , "37 درجة سلزيوس"
              , "سبع وثلاثون سلزيوس"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70° فهرنهايت"
              , "70 درجة فهرنهايت"
              , "سبعون فهرنهايت"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45 درجة"
              , "45 درجه مئوية"
              ]
-  , examples (TemperatureValue Degree (-2))
+  , examples (simple Degree (-2))
              [ "-2°"
              , "- 2 درجة"
              , "درجتين تحت الصفر"
diff --git a/Duckling/Temperature/AR/Rules.hs b/Duckling/Temperature/AR/Rules.hs
--- a/Duckling/Temperature/AR/Rules.hs
+++ b/Duckling/Temperature/AR/Rules.hs
@@ -7,6 +7,7 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Temperature.AR.Rules
@@ -27,10 +28,10 @@
 ruleTemperatureDegrees = Rule
   { name = "<latent temp> degrees"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "(درج([ةه]|ات)( مئوي[ةه])?)|°"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Degree td
       _ -> Nothing
@@ -42,20 +43,17 @@
   , pattern =
     [ regex "درجت(ين|ان)"
     ]
-  , prod = \_ -> Just . Token Temperature $ TemperatureData
-      { TTemperature.unit = Nothing
-      , TTemperature.value = 2
-      }
+  , prod = \_ -> Just . Token Temperature $ valueOnly 2
   }
 
 ruleTemperatureCelsius :: Rule
 ruleTemperatureCelsius = Rule
   { name = "<temp> Celsius"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "(درج([ةه]|ات) )?سي?لي?[سز]ي?وس"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
     (Token Temperature td:_) -> Just . Token Temperature $
       withUnit TTemperature.Celsius td
     _ -> Nothing
@@ -65,10 +63,10 @@
 ruleTemperatureFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "(درج([ةه]|ات) )?ف(ا|ي)?هرنها?يت"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
     (Token Temperature td:_) -> Just . Token Temperature $
       withUnit TTemperature.Fahrenheit td
     _ -> Nothing
@@ -78,15 +76,15 @@
 ruleTemperatureBelowZero = Rule
   { name = "<temp> below zero"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "تحت الصفر"
     ]
-  , prod = \tokens -> case tokens of
-      (Token Temperature td@TemperatureData {TTemperature.value = v}:
+  , prod = \case
+      (Token Temperature td@TemperatureData {TTemperature.value = Just v}:
        _) -> case TTemperature.unit td of
         Nothing -> Just . Token Temperature . withUnit TTemperature.Degree $
-          td {TTemperature.value = - v}
-        _ -> Just . Token Temperature $ td {TTemperature.value = - v}
+          td {TTemperature.value = Just (- v)}
+        _ -> Just . Token Temperature $ td {TTemperature.value = Just (- v)}
       _ -> Nothing
   }
 
diff --git a/Duckling/Temperature/EN/Corpus.hs b/Duckling/Temperature/EN/Corpus.hs
--- a/Duckling/Temperature/EN/Corpus.hs
+++ b/Duckling/Temperature/EN/Corpus.hs
@@ -23,7 +23,7 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "37 ° celsius"
              , "37 degrees Celsius"
@@ -31,21 +31,42 @@
              , "37 degrees Celsius"
              , "thirty seven celsius"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "70 ° Fahrenheit"
              , "70 degrees F"
              , "seventy Fahrenheit"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45 degrees"
              , "45 deg."
              ]
-  , examples (TemperatureValue Degree (-2))
+  , examples (simple Degree (-2))
              [ "-2°"
              , "- 2 degrees"
              , "2 degrees below zero"
              , "2 below zero"
+             ]
+  , examples (between Degree (30, 40))
+             [ "between 30 and 40 degrees"
+             , "from 30 degrees to 40 degrees"
+             ]
+  , examples (between Celsius (30, 40))
+             [ "between 30 and 40 celsius"
+             , "from 30 celsius and 40 celsius"
+             , "between 30 and 40 degrees celsius"
+             , "from 30 degrees celsius to 40 degrees celsius"
+             , "30-40 degrees celsius"
+             ]
+    , examples (above Degree 40)
+             [ "over 40 degrees"
+             , "at least 40 degrees"
+             , "more than 40 degrees"
+             ]
+    , examples (under Degree 40)
+             [ "under 40 degrees"
+             , "less than 40 degrees"
+             , "lower than 40 degrees"
              ]
   ]
diff --git a/Duckling/Temperature/EN/Rules.hs b/Duckling/Temperature/EN/Rules.hs
--- a/Duckling/Temperature/EN/Rules.hs
+++ b/Duckling/Temperature/EN/Rules.hs
@@ -7,6 +7,7 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Temperature.EN.Rules
@@ -19,7 +20,7 @@
 
 import Duckling.Dimensions.Types
 import Duckling.Temperature.Helpers
-import Duckling.Temperature.Types (TemperatureData(..))
+import Duckling.Temperature.Types (TemperatureData(..), unitsAreCompatible)
 import Duckling.Types
 import qualified Duckling.Temperature.Types as TTemperature
 
@@ -27,10 +28,10 @@
 ruleTemperatureDegrees = Rule
   { name = "<latent temp> degrees"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "(deg(ree?)?s?\\.?)|°"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Degree td
       _ -> Nothing
@@ -40,10 +41,10 @@
 ruleTemperatureCelsius = Rule
   { name = "<temp> Celsius"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "c(el[cs]?(ius)?)?\\.?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Celsius td
       _ -> Nothing
@@ -53,10 +54,10 @@
 ruleTemperatureFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "f(ah?rh?eh?n(h?eit)?)?\\.?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Fahrenheit td
       _ -> Nothing
@@ -66,22 +67,96 @@
 ruleTemperatureBelowZero = Rule
   { name = "<temp> below zero"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "below zero"
     ]
-  , prod = \tokens -> case tokens of
-      (Token Temperature td@TemperatureData {TTemperature.value = v}:
+  , prod = \case
+      (Token Temperature td@TemperatureData {TTemperature.value = Just v}:
        _) -> case TTemperature.unit td of
         Nothing -> Just . Token Temperature . withUnit TTemperature.Degree $
-          td {TTemperature.value = - v}
-        _ -> Just . Token Temperature $ td {TTemperature.value = - v}
+          td {TTemperature.value = Just (- v)}
+        _ -> Just . Token Temperature $ td {TTemperature.value = Just (- v)}
       _ -> Nothing
   }
 
+ruleIntervalBetween :: Rule
+ruleIntervalBetween = Rule
+  { name = "between|from <temp> and|to <temp>"
+  , pattern =
+    [ regex "between|from"
+    , Predicate isSimpleTemperature
+    , regex "to|and"
+    , Predicate isSimpleTemperature
+    ]
+  , prod = \case
+      (_:
+       Token Temperature TemperatureData
+        {TTemperature.unit = u1 , TTemperature.value = Just from}:
+       _:
+       Token Temperature TemperatureData
+        {TTemperature.unit = Just u2, TTemperature.value = Just to}:
+       _) | from < to && unitsAreCompatible u1 u2 ->
+        Just . Token Temperature . withInterval (from, to) $ unitOnly u2
+      _ -> Nothing
+  }
+
+ruleIntervalDash :: Rule
+ruleIntervalDash = Rule
+  { name = "<temp> - <temp>"
+  , pattern =
+    [ Predicate isSimpleTemperature
+    , regex "-"
+    , Predicate isSimpleTemperature
+    ]
+  , prod = \case
+      (Token Temperature TemperatureData
+        {TTemperature.unit = u1, TTemperature.value = Just from}:
+       _:
+       Token Temperature TemperatureData
+        {TTemperature.unit = Just u2, TTemperature.value = Just to}:
+       _) | from < to && unitsAreCompatible u1 u2 ->
+        Just . Token Temperature . withInterval (from, to) $ unitOnly u2
+      _ -> Nothing
+  }
+
+ruleIntervalMax :: Rule
+ruleIntervalMax = Rule
+  { name = "under/less/lower/no more than <temp>"
+  , pattern =
+    [ regex "under|(less|lower|not? more) than"
+    , Predicate isSimpleTemperature
+    ]
+  , prod = \case
+      (_:
+       Token Temperature TemperatureData{TTemperature.value = Just to,
+                                         TTemperature.unit = Just u}:
+       _) -> Just . Token Temperature . withMax to $ unitOnly u
+      _ -> Nothing
+  }
+
+ruleIntervalMin :: Rule
+ruleIntervalMin = Rule
+  { name = "over/above/at least/more than <temp>"
+  , pattern =
+    [ regex "over|above|at least|more than"
+    , Predicate isSimpleTemperature
+    ]
+  , prod = \case
+      (_:
+       Token Temperature TemperatureData{TTemperature.value = Just from,
+                                         TTemperature.unit = Just u}:
+       _) -> Just . Token Temperature . withMin from $ unitOnly u
+      _ -> Nothing
+  }
+
 rules :: [Rule]
 rules =
   [ ruleTemperatureDegrees
   , ruleTemperatureCelsius
   , ruleTemperatureFahrenheit
   , ruleTemperatureBelowZero
+  , ruleIntervalBetween
+  , ruleIntervalDash
+  , ruleIntervalMin
+  , ruleIntervalMax
   ]
diff --git a/Duckling/Temperature/ES/Corpus.hs b/Duckling/Temperature/ES/Corpus.hs
--- a/Duckling/Temperature/ES/Corpus.hs
+++ b/Duckling/Temperature/ES/Corpus.hs
@@ -24,7 +24,7 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "37 ° celsius"
              , "37 grados Celsius"
@@ -33,17 +33,17 @@
              , "37 centígrados"
              , "37 grados centígrados"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "70 ° Fahrenheit"
              , "70 grados F"
              , "setenta Fahrenheit"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45 grados"
              ]
-  , examples (TemperatureValue Degree (-10))
+  , examples (simple Degree (-10))
              [ "-10°"
              , "- diez grados"
              , "10 bajo cero"
diff --git a/Duckling/Temperature/ES/Rules.hs b/Duckling/Temperature/ES/Rules.hs
--- a/Duckling/Temperature/ES/Rules.hs
+++ b/Duckling/Temperature/ES/Rules.hs
@@ -7,6 +7,7 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Temperature.ES.Rules
@@ -25,10 +26,10 @@
 ruleLatentTempTemp = Rule
   { name = "<latent temp> temp"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "(grados?)|°"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Degree td
       _ -> Nothing
@@ -38,10 +39,10 @@
 ruleTempCelsius = Rule
   { name = "<temp> Celsius"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "(cent(i|í)grados?|c(el[cs]?(ius)?)?\\.?)"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Celsius td
       _ -> Nothing
@@ -51,10 +52,10 @@
 ruleTempFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "f(ah?reh?n(h?eit)?)?\\.?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Fahrenheit td
       _ -> Nothing
@@ -64,15 +65,15 @@
 ruleLatentTempTempBajoCero = Rule
   { name = "<latent temp> temp bajo cero"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "bajo cero"
     ]
-  , prod = \tokens -> case tokens of
-      (Token Temperature td@TemperatureData{TTemperature.value = v}:_) ->
+  , prod = \case
+      (Token Temperature td@TemperatureData{TTemperature.value = Just v}:_) ->
         case TTemperature.unit td of
           Nothing -> Just . Token Temperature . withUnit TTemperature.Degree $
-            td {TTemperature.value = - v}
-          _ -> Just . Token Temperature $ td {TTemperature.value = - v}
+            td {TTemperature.value = Just (- v)}
+          _ -> Just . Token Temperature $ td {TTemperature.value = Just (- v)}
       _ -> Nothing
   }
 
diff --git a/Duckling/Temperature/FR/Corpus.hs b/Duckling/Temperature/FR/Corpus.hs
--- a/Duckling/Temperature/FR/Corpus.hs
+++ b/Duckling/Temperature/FR/Corpus.hs
@@ -24,7 +24,7 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "37 ° celsius"
              , "37 degres Celsius"
@@ -33,18 +33,18 @@
              , "37 degré C"
              , "trente sept celsius"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "70 ° Fahrenheit"
              , "70 degrès F"
              , "soixante-dix Fahrenheit"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45 degrés"
              , "45 deg."
              ]
-  , examples (TemperatureValue Degree (-10))
+  , examples (simple Degree (-10))
              [ "-10°"
              , "- 10 degres"
              , "10 degres en dessous de zero"
diff --git a/Duckling/Temperature/FR/Rules.hs b/Duckling/Temperature/FR/Rules.hs
--- a/Duckling/Temperature/FR/Rules.hs
+++ b/Duckling/Temperature/FR/Rules.hs
@@ -7,6 +7,7 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Temperature.FR.Rules
@@ -25,10 +26,10 @@
 ruleLatentTempDegrees = Rule
   { name = "<latent temp> degrees"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "(deg(r(é|e|è))?s?\\.?)|°"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Degree td
       _ -> Nothing
@@ -38,10 +39,10 @@
 ruleTempCelsius = Rule
   { name = "<temp> Celsius"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "c(el[cs]?(ius)?)?\\.?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Celsius td
       _ -> Nothing
@@ -51,10 +52,10 @@
 ruleTempFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "f(ah?reh?n(h?eit)?)?\\.?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Fahrenheit td
       _ -> Nothing
@@ -64,15 +65,15 @@
 ruleLatentTempEnDessousDeZero = Rule
   { name = "<latent temp> en dessous de zero"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "en dessous de (0|z(é|e)ro)"
     ]
-  , prod = \tokens -> case tokens of
-      (Token Temperature td@TemperatureData{TTemperature.value = v}:_) ->
+  , prod = \case
+      (Token Temperature td@TemperatureData{TTemperature.value = Just v}:_) ->
         case TTemperature.unit td of
           Nothing -> Just . Token Temperature . withUnit TTemperature.Degree $
-            td {TTemperature.value = - v}
-          _ -> Just . Token Temperature $ td {TTemperature.value = - v}
+            td {TTemperature.value = Just (- v)}
+          _ -> Just . Token Temperature $ td {TTemperature.value = Just (- v)}
       _ -> Nothing
   }
 
diff --git a/Duckling/Temperature/GA/Corpus.hs b/Duckling/Temperature/GA/Corpus.hs
--- a/Duckling/Temperature/GA/Corpus.hs
+++ b/Duckling/Temperature/GA/Corpus.hs
@@ -24,23 +24,23 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "37 ° celsius"
              , "37 céimeanna Celsius"
              , "37 céimeanna C"
              , "37 céimeanna ceinteagrád"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "70 ° Fahrenheit"
              , "70 céimeanna F"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45 céimeanna"
              ]
-  , examples (TemperatureValue Degree (-10))
+  , examples (simple Degree (-10))
              [ "-10°"
              , "- 10 céimeanna"
              , "10 céimeanna faoi bhun náid"
diff --git a/Duckling/Temperature/GA/Rules.hs b/Duckling/Temperature/GA/Rules.hs
--- a/Duckling/Temperature/GA/Rules.hs
+++ b/Duckling/Temperature/GA/Rules.hs
@@ -7,6 +7,7 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Temperature.GA.Rules
@@ -25,10 +26,10 @@
 ruleLatentTempCim = Rule
   { name = "<latent temp> céim"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "g?ch?(é|e)im(e(anna)?)?|°"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Degree td
       _ -> Nothing
@@ -38,10 +39,10 @@
 ruleTempCelsius = Rule
   { name = "<temp> Celsius"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "ceinteagr(á|a)d|c(el[cs]?(ius)?)?\\.?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Celsius td
       _ -> Nothing
@@ -51,10 +52,10 @@
 ruleTempFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "f(ah?reh?n(h?eit)?)?\\.?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Fahrenheit td
       _ -> Nothing
@@ -64,15 +65,15 @@
 ruleLatentTempFaoiBhunNid = Rule
   { name = "<latent temp> faoi bhun náid"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "faoi bhun (0|n(a|á)id)"
     ]
-  , prod = \tokens -> case tokens of
-      (Token Temperature td@TemperatureData{TTemperature.value = v}:_) ->
+  , prod = \case
+      (Token Temperature td@TemperatureData{TTemperature.value = Just v}:_) ->
         case TTemperature.unit td of
           Nothing -> Just . Token Temperature . withUnit TTemperature.Degree $
-            td {TTemperature.value = - v}
-          _ -> Just . Token Temperature $ td {TTemperature.value = - v}
+            td {TTemperature.value = Just (- v)}
+          _ -> Just . Token Temperature $ td {TTemperature.value = Just (- v)}
       _ -> Nothing
   }
 
diff --git a/Duckling/Temperature/HR/Corpus.hs b/Duckling/Temperature/HR/Corpus.hs
--- a/Duckling/Temperature/HR/Corpus.hs
+++ b/Duckling/Temperature/HR/Corpus.hs
@@ -23,7 +23,7 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "37 ° celzija"
              , "37 stupnjeva Celzija"
@@ -31,13 +31,13 @@
              , "37 stupnjeva Celzija"
              , "trideset sedam celzija"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "70 ° Fahrenheit"
              , "70 stupnjeva F"
              , "sedamdeset Fahrenheit"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45 stupnjeva"
              , "45 deg."
diff --git a/Duckling/Temperature/HR/Rules.hs b/Duckling/Temperature/HR/Rules.hs
--- a/Duckling/Temperature/HR/Rules.hs
+++ b/Duckling/Temperature/HR/Rules.hs
@@ -24,7 +24,7 @@
 ruleLatentTempStupnjevi = Rule
   { name = "<latent temp> stupnjevi"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "deg\\.?|stupa?nj((ev)?a)?|°"
     ]
   , prod = \tokens -> case tokens of
@@ -37,7 +37,7 @@
 ruleTempCelzij = Rule
   { name = "<temp> Celzij"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "c(elz?(ija?)?)?\\.?"
     ]
   , prod = \tokens -> case tokens of
@@ -50,7 +50,7 @@
 ruleTempFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "f(ah?rh?eh?n(h?eit)?)?\\.?"
     ]
   , prod = \tokens -> case tokens of
diff --git a/Duckling/Temperature/Helpers.hs b/Duckling/Temperature/Helpers.hs
--- a/Duckling/Temperature/Helpers.hs
+++ b/Duckling/Temperature/Helpers.hs
@@ -8,10 +8,17 @@
 
 {-# LANGUAGE GADTs #-}
 
-
 module Duckling.Temperature.Helpers
   ( isLatent
+  , isValueOnly
+  , isSimpleTemperature
   , withUnit
+  , withInterval
+  , withValue
+  , valueOnly
+  , unitOnly
+  , withMin
+  , withMax
   ) where
 
 import Data.Maybe
@@ -30,8 +37,65 @@
   True
 isLatent _ = False
 
+isValueOnly :: Bool -> Predicate
+isValueOnly allowDegree (Token Temperature TemperatureData
+                         { TTemperature.unit = u, TTemperature.value = Just _
+                         , TTemperature.minValue = Nothing
+                         , TTemperature.maxValue = Nothing})
+      = isNothing u || (allowDegree && u == Just TTemperature.Degree)
+isValueOnly _ _ = False
+
+isSimpleTemperature :: Predicate
+isSimpleTemperature (Token Temperature TemperatureData
+                      {TTemperature.value = Just _}) = True
+isSimpleTemperature _ = False
+
 -- -----------------------------------------------------------------
 -- Production
 
 withUnit :: TTemperature.TemperatureUnit -> TemperatureData -> TemperatureData
 withUnit u td = td {TTemperature.unit = Just u}
+
+withInterval :: (Int, Int) -> TemperatureData -> TemperatureData
+withInterval (from, to) td = td
+  { TTemperature.value = Nothing
+  , TTemperature.minValue = Just from
+  , TTemperature.maxValue = Just to
+  }
+
+withValue :: Int -> TemperatureData -> TemperatureData
+withValue v td = td
+  { TTemperature.value = Just v
+  , TTemperature.minValue = Nothing
+  , TTemperature.maxValue = Nothing
+  }
+
+valueOnly :: Int -> TemperatureData
+valueOnly v = TemperatureData
+  { TTemperature.unit = Nothing
+  , TTemperature.value = Just v
+  , TTemperature.minValue = Nothing
+  , TTemperature.maxValue = Nothing
+  }
+
+unitOnly :: TTemperature.TemperatureUnit -> TemperatureData
+unitOnly u = TemperatureData
+  { TTemperature.unit = Just u
+  , TTemperature.value = Nothing
+  , TTemperature.minValue = Nothing
+  , TTemperature.maxValue = Nothing
+  }
+
+withMax :: Int -> TemperatureData -> TemperatureData
+withMax v td = td
+  { TTemperature.value = Nothing
+  , TTemperature.minValue = Nothing
+  , TTemperature.maxValue = Just v
+  }
+
+withMin :: Int -> TemperatureData -> TemperatureData
+withMin v td = td
+  { TTemperature.value = Nothing
+  , TTemperature.minValue = Just v
+  , TTemperature.maxValue = Nothing
+  }
diff --git a/Duckling/Temperature/IT/Corpus.hs b/Duckling/Temperature/IT/Corpus.hs
--- a/Duckling/Temperature/IT/Corpus.hs
+++ b/Duckling/Temperature/IT/Corpus.hs
@@ -23,7 +23,7 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "37 ° celsius"
              , "37 ° centigradi"
@@ -32,21 +32,21 @@
              , "trentasette celsius"
              , "trentasette gradi centigradi"
              ]
-  , examples (TemperatureValue Celsius 1)
+  , examples (simple Celsius 1)
              [ "1 grado centigrado"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "70 ° Fahrenheit"
              , "70 gradi F"
              , "70 gradi Fahreneit"
              , "settanta Fahrenheit"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45 gradi"
              ]
-  , examples (TemperatureValue Degree 1)
+  , examples (simple Degree 1)
              [ "1 grado"
              ]
   ]
diff --git a/Duckling/Temperature/IT/Rules.hs b/Duckling/Temperature/IT/Rules.hs
--- a/Duckling/Temperature/IT/Rules.hs
+++ b/Duckling/Temperature/IT/Rules.hs
@@ -24,7 +24,7 @@
 ruleLatentTempDegrees = Rule
   { name = "<latent temp> degrees"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "(grad[io]?\\.?)|°"
     ]
   , prod = \tokens -> case tokens of
@@ -37,7 +37,7 @@
 ruleTempCelcius = Rule
   { name = "<temp> Celcius"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "(c((el[cs]?(ius)?)|(entigrad[io]))?\\.?)"
     ]
   , prod = \tokens -> case tokens of
@@ -50,7 +50,7 @@
 ruleTempFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "f(ah?rh?eh?n(h?eit)?)?\\.?"
     ]
   , prod = \tokens -> case tokens of
diff --git a/Duckling/Temperature/JA/Corpus.hs b/Duckling/Temperature/JA/Corpus.hs
--- a/Duckling/Temperature/JA/Corpus.hs
+++ b/Duckling/Temperature/JA/Corpus.hs
@@ -24,17 +24,17 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "摂氏37°"
              , "摂氏37度"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "華氏70°"
              , "華氏70度"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45度"
              ]
diff --git a/Duckling/Temperature/JA/Rules.hs b/Duckling/Temperature/JA/Rules.hs
--- a/Duckling/Temperature/JA/Rules.hs
+++ b/Duckling/Temperature/JA/Rules.hs
@@ -24,7 +24,7 @@
 ruleLatentTempDegrees = Rule
   { name = "<latent temp> degrees"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "度|°"
     ]
   , prod = \tokens -> case tokens of
@@ -37,7 +37,7 @@
 ruleTempCelcius = Rule
   { name = "<temp> Celcius"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "摂氏(°|度)|(°)C"
     ]
   , prod = \tokens -> case tokens of
@@ -51,7 +51,7 @@
   { name = "Celcius <temp>"
   , pattern =
     [ regex "摂氏"
-    , dimension Temperature
+    , Predicate $ isValueOnly True
     , regex "度|°"
     ]
   , prod = \tokens -> case tokens of
@@ -64,7 +64,7 @@
 ruleTempFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "華氏(°|度)|(°)F"
     ]
   , prod = \tokens -> case tokens of
@@ -78,7 +78,7 @@
   { name = "Fahrenheit <temp>"
   , pattern =
     [ regex "華氏"
-    , dimension Temperature
+    , Predicate $ isValueOnly True
     , regex "度|°"
     ]
   , prod = \tokens -> case tokens of
diff --git a/Duckling/Temperature/KO/Corpus.hs b/Duckling/Temperature/KO/Corpus.hs
--- a/Duckling/Temperature/KO/Corpus.hs
+++ b/Duckling/Temperature/KO/Corpus.hs
@@ -24,17 +24,17 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "섭씨37°"
              , "섭씨37도"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "화씨70°"
              , "화씨70도"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45도"
              ]
diff --git a/Duckling/Temperature/KO/Rules.hs b/Duckling/Temperature/KO/Rules.hs
--- a/Duckling/Temperature/KO/Rules.hs
+++ b/Duckling/Temperature/KO/Rules.hs
@@ -24,7 +24,7 @@
 ruleLatentTempDegrees = Rule
   { name = "<latent temp> degrees"
   , pattern =
-    [ Predicate isLatent
+    [ Predicate $ isValueOnly False
     , regex "도|°"
     ]
   , prod = \tokens -> case tokens of
@@ -38,7 +38,7 @@
   { name = "섭씨 <temp>"
   , pattern =
     [ regex "섭씨"
-    , dimension Temperature
+    , Predicate $ isValueOnly True
     ]
   , prod = \tokens -> case tokens of
       (_:Token Temperature td:_) -> Just . Token Temperature $
@@ -50,7 +50,7 @@
 ruleTempC = Rule
   { name = "<temp> °C"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "c"
     ]
   , prod = \tokens -> case tokens of
@@ -64,7 +64,7 @@
   { name = "화씨 <temp>"
   , pattern =
     [ regex "화씨"
-    , dimension Temperature
+    , Predicate $ isValueOnly True
     ]
   , prod = \tokens -> case tokens of
       (_:Token Temperature td:_) -> Just . Token Temperature $
@@ -76,7 +76,7 @@
 ruleTempF = Rule
   { name = "<temp> °F"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "f"
     ]
   , prod = \tokens -> case tokens of
diff --git a/Duckling/Temperature/PT/Corpus.hs b/Duckling/Temperature/PT/Corpus.hs
--- a/Duckling/Temperature/PT/Corpus.hs
+++ b/Duckling/Temperature/PT/Corpus.hs
@@ -24,7 +24,7 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "37 ° celsius"
              , "37 graus Celsius"
@@ -33,17 +33,17 @@
              , "37 centígrados"
              , "37 graus centigrados"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "70 ° Fahrenheit"
              , "70 graus F"
              , "setenta Fahrenheit"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45 graus"
              ]
-  , examples (TemperatureValue Degree (-10))
+  , examples (simple Degree (-10))
              [ "-10°"
              , "- dez graus"
              , "10 abaixo de zero"
diff --git a/Duckling/Temperature/PT/Rules.hs b/Duckling/Temperature/PT/Rules.hs
--- a/Duckling/Temperature/PT/Rules.hs
+++ b/Duckling/Temperature/PT/Rules.hs
@@ -7,6 +7,7 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Temperature.PT.Rules
@@ -25,10 +26,10 @@
 ruleLatentTempTemp = Rule
   { name = "<latent temp> temp"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "(graus?)|°"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Degree td
       _ -> Nothing
@@ -38,10 +39,10 @@
 ruleTempCelsius = Rule
   { name = "<temp> Celsius"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "(cent(i|í)grados?|c(el[cs]?(ius)?)?\\.?)"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Celsius td
       _ -> Nothing
@@ -51,10 +52,10 @@
 ruleTempFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "f(ah?reh?n(h?eit)?)?\\.?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Fahrenheit td
       _ -> Nothing
@@ -64,15 +65,15 @@
 ruleLatentTempTempAbaixoDeZero = Rule
   { name = "<latent temp> temp abaixo de zero"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "((graus?)|°)?( abaixo (de)? zero)"
     ]
-  , prod = \tokens -> case tokens of
-      (Token Temperature td@TemperatureData{TTemperature.value = v}:_) ->
+  , prod = \case
+      (Token Temperature td@TemperatureData{TTemperature.value = Just v}:_) ->
         case TTemperature.unit td of
           Nothing -> Just . Token Temperature . withUnit TTemperature.Degree $
-            td {TTemperature.value = - v}
-          _ -> Just . Token Temperature $ td {TTemperature.value = - v}
+            td {TTemperature.value = Just (- v)}
+          _ -> Just . Token Temperature $ td {TTemperature.value = Just (- v)}
       _ -> Nothing
   }
 
diff --git a/Duckling/Temperature/RO/Corpus.hs b/Duckling/Temperature/RO/Corpus.hs
--- a/Duckling/Temperature/RO/Corpus.hs
+++ b/Duckling/Temperature/RO/Corpus.hs
@@ -9,10 +9,11 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Temperature.RO.Corpus
-  ( corpus ) where
+  ( corpus
+  ) where
 
-import Prelude
 import Data.String
+import Prelude
 
 import Duckling.Locale
 import Duckling.Resolve
@@ -24,22 +25,25 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "37 ° celsius"
              , "37 grade Celsius"
              , "treizeci si sapte celsius"
              , "37 grade Celsius"
+             , "37 de grade de Celsius"
              , "treizeci si sapte celsius"
+             , "treizeci si sapte de celsius"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "70 ° Fahrenheit"
              , "70 grade F"
              , "saptezeci Fahrenheit"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45 grade"
+             , "45 de grade"
              ]
   ]
diff --git a/Duckling/Temperature/RO/Rules.hs b/Duckling/Temperature/RO/Rules.hs
--- a/Duckling/Temperature/RO/Rules.hs
+++ b/Duckling/Temperature/RO/Rules.hs
@@ -7,27 +7,29 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Temperature.RO.Rules
-  ( rules ) where
+  ( rules
+  ) where
 
-import Prelude
 import Data.String
+import Prelude
 
 import Duckling.Dimensions.Types
 import Duckling.Temperature.Helpers
-import qualified Duckling.Temperature.Types as TTemperature
 import Duckling.Types
+import qualified Duckling.Temperature.Types as TTemperature
 
 ruleLatentTempGrade :: Rule
 ruleLatentTempGrade = Rule
   { name = "<latent temp> grade"
   , pattern =
-    [ dimension Temperature
-    , regex "(grade)|°"
+    [ Predicate $ isValueOnly False
+    , regex "(de )?(grade)|°"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Degree td
       _ -> Nothing
@@ -37,10 +39,10 @@
 ruleTempCelcius = Rule
   { name = "<temp> Celcius"
   , pattern =
-    [ dimension Temperature
-    , regex "c(el[cs]?(ius)?)?\\.?"
+    [ Predicate $ isValueOnly True
+    , regex "(de )?c(el[cs]?(ius)?)?\\.?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Celsius td
       _ -> Nothing
@@ -50,10 +52,10 @@
 ruleTempFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
-    , regex "f(ah?rh?eh?n(h?eit)?)?\\.?"
+    [ Predicate $ isValueOnly True
+    , regex "(de )?f(ah?rh?eh?n(h?eit)?)?\\.?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Temperature td:_) -> Just . Token Temperature $
         withUnit TTemperature.Fahrenheit td
       _ -> Nothing
diff --git a/Duckling/Temperature/Rules.hs b/Duckling/Temperature/Rules.hs
--- a/Duckling/Temperature/Rules.hs
+++ b/Duckling/Temperature/Rules.hs
@@ -7,6 +7,7 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Temperature.Rules
@@ -17,10 +18,11 @@
 import Prelude
 
 import Duckling.Dimensions.Types
-import qualified Duckling.Numeral.Types as TNumeral
+import Duckling.Temperature.Helpers
 import Duckling.Temperature.Types (TemperatureData (..))
-import qualified Duckling.Temperature.Types as TTemperature
 import Duckling.Types
+import qualified Duckling.Numeral.Types as TNumeral
+import qualified Duckling.Temperature.Types as TTemperature
 
 ruleNumeralAsTemp :: Rule
 ruleNumeralAsTemp = Rule
@@ -28,12 +30,9 @@
   , pattern =
     [ dimension Numeral
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Numeral nd:_) ->
-        Just . Token Temperature $ TemperatureData
-          { TTemperature.unit = Nothing
-          , TTemperature.value = floor $ TNumeral.value nd
-          }
+        Just . Token Temperature $ valueOnly $ floor $ TNumeral.value nd
       _ -> Nothing
   }
 
diff --git a/Duckling/Temperature/TR/Corpus.hs b/Duckling/Temperature/TR/Corpus.hs
--- a/Duckling/Temperature/TR/Corpus.hs
+++ b/Duckling/Temperature/TR/Corpus.hs
@@ -23,7 +23,7 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "37 ° santigrat"
              , "37 derece C"
@@ -31,7 +31,7 @@
              , "37 derece santigrat"
              , "otuz yedi santigrat"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "70 ° Fahrenhayt"
              , "70 ° Fahrenayt"
@@ -40,12 +40,12 @@
              , "70 F"
              , "yetmiş fahrenayt"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45 derece"
              , "kırk beş derece"
              ]
-  , examples (TemperatureValue Degree (-2))
+  , examples (simple Degree (-2))
              [ "-2°"
              , "- 2 derece"
              , "sıfırın altında 2°"
diff --git a/Duckling/Temperature/TR/Rules.hs b/Duckling/Temperature/TR/Rules.hs
--- a/Duckling/Temperature/TR/Rules.hs
+++ b/Duckling/Temperature/TR/Rules.hs
@@ -7,6 +7,7 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Temperature.TR.Rules
@@ -26,10 +27,10 @@
 ruleTemperatureDegrees = Rule
   { name = "<latent temp> degrees"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "derece|°"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
     (Token Temperature td:_) -> Just . Token Temperature $
       withUnit TTemperature.Degree td
     _ -> Nothing
@@ -39,10 +40,10 @@
 ruleTemperatureCelsius = Rule
   { name = "<temp> Celsius"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "c|santigrat"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
     (Token Temperature td:_) -> Just . Token Temperature $
       withUnit TTemperature.Celsius td
     _ -> Nothing
@@ -52,10 +53,10 @@
 ruleTemperatureFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "f(ahrenh?ayt)?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
     (Token Temperature td:_) -> Just . Token Temperature $
       withUnit TTemperature.Fahrenheit td
     _ -> Nothing
@@ -66,14 +67,14 @@
   { name = "below zero <temp>"
   , pattern =
     [ regex "s\305f\305r\305n alt\305nda"
-    , dimension Temperature
+    , Predicate $ isValueOnly True
     ]
-  , prod = \tokens -> case tokens of
-      (_:Token Temperature td@TemperatureData{TTemperature.value = v}:_) ->
+  , prod = \case
+      (_:Token Temperature td@TemperatureData{TTemperature.value = Just v}:_) ->
         case TTemperature.unit td of
           Nothing -> Just . Token Temperature . withUnit TTemperature.Degree $
-            td {TTemperature.value = - v}
-          _ -> Just . Token Temperature $ td {TTemperature.value = - v}
+            td {TTemperature.value = Just (- v)}
+          _ -> Just . Token Temperature $ td {TTemperature.value = Just (- v)}
       _ -> Nothing
   }
 
@@ -81,15 +82,15 @@
 ruleTemperatureBelowZeroReverse = Rule
   { name = "<temp> below zero"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "s\305f\305r\305n alt\305nda"
     ]
-  , prod = \tokens -> case tokens of
-      (Token Temperature td@TemperatureData{TTemperature.value = v}:_) ->
+  , prod = \case
+      (Token Temperature td@TemperatureData{TTemperature.value = Just v}:_) ->
         case TTemperature.unit td of
           Nothing -> Just . Token Temperature . withUnit TTemperature.Degree $
-            td {TTemperature.value = - v}
-          _ -> Just . Token Temperature $ td {TTemperature.value = - v}
+            td {TTemperature.value = Just (- v)}
+          _ -> Just . Token Temperature $ td {TTemperature.value = Just (- v)}
       _ -> Nothing
   }
 
diff --git a/Duckling/Temperature/Types.hs b/Duckling/Temperature/Types.hs
--- a/Duckling/Temperature/Types.hs
+++ b/Duckling/Temperature/Types.hs
@@ -19,9 +19,10 @@
 import Data.Aeson
 import Data.Hashable
 import Data.Text (Text)
-import qualified Data.Text as Text
 import GHC.Generics
 import Prelude
+import qualified Data.HashMap.Strict as H
+import qualified Data.Text as Text
 
 import Duckling.Resolve (Resolve(..))
 
@@ -33,24 +34,86 @@
   toJSON = String . Text.toLower . Text.pack . show
 
 data TemperatureData = TemperatureData
-  { unit :: Maybe TemperatureUnit
-  , value :: Int
+  { unit     :: Maybe TemperatureUnit
+  , value    :: Maybe Int
+  , minValue :: Maybe Int
+  , maxValue :: Maybe Int
   } deriving (Eq, Generic, Hashable, Show, Ord, NFData)
 
 instance Resolve TemperatureData where
   type ResolvedValue TemperatureData = TemperatureValue
   resolve _ _ TemperatureData {unit = Nothing} = Nothing
-  resolve _ _ TemperatureData {unit = Just unit, value} =
-    Just (TemperatureValue {vUnit = unit, vValue = value}, False)
+  resolve _ _ TemperatureData {unit = Just unit, value = Just value} =
+    Just (simple unit value, False)
+  resolve _ _ TemperatureData {unit = Just unit, minValue = Just from
+                              , maxValue = Just to} =
+    Just (between unit (from, to), False)
+  resolve _ _ TemperatureData {unit = Just unit, minValue = Just from} =
+    Just (above unit from, False)
+  resolve _ _ TemperatureData {unit = Just unit, maxValue = Just to} =
+    Just (under unit to, False)
+  resolve _ _ _ = Nothing
 
-data TemperatureValue = TemperatureValue
+data IntervalDirection = Above | Under
+  deriving (Eq, Generic, Hashable, Ord, Show, NFData)
+
+data SingleValue = SingleValue
   { vUnit :: TemperatureUnit
   , vValue :: Int
-  } deriving (Eq, Show)
+  }
+  deriving (Eq, Show)
 
+instance ToJSON SingleValue where
+  toJSON (SingleValue unit value) = object
+    [ "value" .= value
+    , "unit"  .= unit
+    ]
+
+data TemperatureValue
+  = SimpleValue SingleValue
+  | IntervalValue (SingleValue, SingleValue)
+  | OpenIntervalValue (SingleValue, IntervalDirection)
+  deriving (Show, Eq)
+
 instance ToJSON TemperatureValue where
-  toJSON (TemperatureValue unit value) = object
-    [ "type" .= ("value" :: Text)
-    , "value" .= value
-    , "unit" .= unit
+  toJSON (SimpleValue value) = case toJSON value of
+    Object o -> Object $ H.insert "type" (toJSON ("value" :: Text)) o
+    _        -> Object H.empty
+  toJSON (IntervalValue (from, to)) = object
+    [ "type" .= ("interval" :: Text)
+    , "from" .= toJSON from
+    , "to"   .= toJSON to
     ]
+  toJSON (OpenIntervalValue (from, Above)) = object
+    [ "type" .= ("interval" :: Text)
+    , "from" .= toJSON from
+    ]
+  toJSON (OpenIntervalValue (to, Under)) = object
+    [ "type" .= ("interval" :: Text)
+    , "to"   .= toJSON to
+    ]
+
+-- -----------------------------------------------------------------
+-- Value helpers
+
+simple :: TemperatureUnit -> Int -> TemperatureValue
+simple u v = SimpleValue $ single u v
+
+between :: TemperatureUnit -> (Int, Int) -> TemperatureValue
+between u (from, to) = IntervalValue (single u from, single u to)
+
+above :: TemperatureUnit -> Int -> TemperatureValue
+above = openInterval Above
+
+under :: TemperatureUnit -> Int -> TemperatureValue
+under = openInterval Under
+
+openInterval :: IntervalDirection -> TemperatureUnit -> Int -> TemperatureValue
+openInterval direction u v = OpenIntervalValue (single u v, direction)
+
+single :: TemperatureUnit -> Int -> SingleValue
+single u v = SingleValue {vUnit = u, vValue = v}
+
+unitsAreCompatible :: Maybe TemperatureUnit -> TemperatureUnit -> Bool
+unitsAreCompatible (Just u1) u2 = u1 == u2
+unitsAreCompatible Nothing _ = True
diff --git a/Duckling/Temperature/ZH/Corpus.hs b/Duckling/Temperature/ZH/Corpus.hs
--- a/Duckling/Temperature/ZH/Corpus.hs
+++ b/Duckling/Temperature/ZH/Corpus.hs
@@ -24,7 +24,7 @@
 
 allExamples :: [Example]
 allExamples = concat
-  [ examples (TemperatureValue Celsius 37)
+  [ examples (simple Celsius 37)
              [ "37°C"
              , "摄氏37°"
              , "攝氏37°"
@@ -35,7 +35,7 @@
              , "37摄氏度"
              , "37攝氏度"
              ]
-  , examples (TemperatureValue Fahrenheit 70)
+  , examples (simple Fahrenheit 70)
              [ "70°F"
              , "华氏70°"
              , "華氏70°"
@@ -46,7 +46,7 @@
              , "70华氏度"
              , "70華氏度"
              ]
-  , examples (TemperatureValue Degree 45)
+  , examples (simple Degree 45)
              [ "45°"
              , "45度"
              ]
diff --git a/Duckling/Temperature/ZH/Rules.hs b/Duckling/Temperature/ZH/Rules.hs
--- a/Duckling/Temperature/ZH/Rules.hs
+++ b/Duckling/Temperature/ZH/Rules.hs
@@ -24,7 +24,7 @@
 ruleLatentTempDegrees = Rule
   { name = "<latent temp> degrees"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly False
     , regex "度|°"
     ]
   , prod = \tokens -> case tokens of
@@ -37,7 +37,7 @@
 ruleTempCelcius = Rule
   { name = "<temp> Celcius"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "(摄|攝)氏(°|度)|(°)C"
     ]
   , prod = \tokens -> case tokens of
@@ -51,7 +51,7 @@
   { name = "Celcius <temp>"
   , pattern =
     [ regex "(摄|攝)氏"
-    , dimension Temperature
+    , Predicate $ isValueOnly True
     , regex "度|°"
     ]
   , prod = \tokens -> case tokens of
@@ -64,7 +64,7 @@
 ruleTempFahrenheit = Rule
   { name = "<temp> Fahrenheit"
   , pattern =
-    [ dimension Temperature
+    [ Predicate $ isValueOnly True
     , regex "(华|華)氏(°|度)|(°)F"
     ]
   , prod = \tokens -> case tokens of
@@ -78,7 +78,7 @@
   { name = "Fahrenheit <temp>"
   , pattern =
     [ regex "(华|華)氏"
-    , dimension Temperature
+    , Predicate $ isValueOnly True
     , regex "度|°"
     ]
   , prod = \tokens -> case tokens of
diff --git a/Duckling/Time/Computed.hs b/Duckling/Time/Computed.hs
--- a/Duckling/Time/Computed.hs
+++ b/Duckling/Time/Computed.hs
@@ -7,9 +7,10 @@
 
 module Duckling.Time.Computed
   ( chanukah, chineseNewYear, dhanteras, easterSunday, eidalAdha, eidalFitr
-  , lagBaOmer, mawlid, muharram, navaratri, orthodoxEaster, passover, rajab
-  , rakshaBandhan, ramadan, roshHashana, thaiPongal, thiruOnam, tishaBAv
-  , tuBishvat, vasantPanchami, yomHaatzmaut
+  , globalYouthServiceDay, lagBaOmer, mawlid, muharram, navaratri
+  , orthodoxEaster, passover, rajab, rakshaBandhan, ramadan, roshHashana
+  , thaiPongal, thiruOnam, tishaBAv, tuBishvat, vasantPanchami, vesak
+  , yomHaatzmaut
   ) where
 
 import Data.Maybe
@@ -1568,4 +1569,56 @@
   , (2028, 1, 31)
   , (2029, 1, 19)
   , (2030, 2, 7)
+  ]
+
+globalYouthServiceDay :: TimeData
+globalYouthServiceDay = computedDays globalYouthServiceDay'
+
+globalYouthServiceDay' :: [TimeObject]
+globalYouthServiceDay' = mapMaybe toTimeObjectM
+  [ (2012, 4, 20)
+  , (2013, 4, 26)
+  , (2014, 4, 11)
+  , (2015, 4, 17)
+  , (2016, 4, 15)
+  , (2017, 4, 21)
+  , (2018, 4, 20)
+  ]
+
+vesak :: TimeData
+vesak = computedDays vesak'
+
+vesak' :: [TimeObject]
+vesak' = mapMaybe toTimeObjectM
+  [ (2000, 5, 18)
+  , (2001, 5, 7)
+  , (2002, 5, 26)
+  , (2003, 5, 15)
+  , (2004, 5, 4)
+  , (2005, 5, 23)
+  , (2006, 5, 12)
+  , (2007, 5, 31)
+  , (2008, 5, 19)
+  , (2009, 5, 8)
+  , (2010, 5, 27)
+  , (2011, 5, 17)
+  , (2012, 5, 5)
+  , (2013, 5, 24)
+  , (2014, 5, 14)
+  , (2015, 5, 3)
+  , (2016, 5, 21)
+  , (2017, 5, 10)
+  , (2018, 5, 29)
+  , (2019, 5, 18)
+  , (2020, 5, 7)
+  , (2021, 5, 26)
+  , (2022, 5, 15)
+  , (2023, 5, 5)
+  , (2024, 5, 23)
+  , (2025, 5, 12)
+  , (2026, 5, 31)
+  , (2027, 5, 20)
+  , (2028, 5, 8)
+  , (2029, 5, 27)
+  , (2030, 5, 17)
   ]
diff --git a/Duckling/Time/DA/Corpus.hs b/Duckling/Time/DA/Corpus.hs
--- a/Duckling/Time/DA/Corpus.hs
+++ b/Duckling/Time/DA/Corpus.hs
@@ -42,12 +42,11 @@
              ]
   , examples (datetime (2013, 2, 18, 0, 0, 0) Day)
              [ "mandag"
-             , "man."
              , "på mandag"
              ]
   , examples (datetime (2013, 2, 18, 0, 0, 0) Day)
              [ "Mandag den 18. februar"
-             , "Man, 18 februar"
+             , "Mandag, 18 februar"
              ]
   , examples (datetime (2013, 2, 19, 0, 0, 0) Day)
              [ "tirsdag"
@@ -144,7 +143,6 @@
              ]
   , examples (datetime (2013, 2, 18, 0, 0, 0) Day)
              [ "Mandag, Feb 18"
-             , "Man, februar 18"
              ]
   , examples (datetime (2013, 2, 11, 0, 0, 0) Week)
              [ "denne uge"
diff --git a/Duckling/Time/DA/Rules.hs b/Duckling/Time/DA/Rules.hs
--- a/Duckling/Time/DA/Rules.hs
+++ b/Duckling/Time/DA/Rules.hs
@@ -11,7 +11,8 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Time.DA.Rules
-  ( rules ) where
+  ( rules
+  ) where
 
 import Data.Text (Text)
 import Prelude
@@ -30,13 +31,14 @@
 
 ruleDaysOfWeek :: [Rule]
 ruleDaysOfWeek = mkRuleDaysOfWeek
-  [ ( "Monday"   , "mandag|man\\.?"           )
-  , ( "Tuesday"  , "tirsdag|tirs?\\.?"        )
-  , ( "Wednesday", "onsdag|ons\\.?"           )
-  , ( "Thursday" , "torsdag|tors?\\.?"        )
-  , ( "Friday"   , "fredag|fre\\.?"           )
-  , ( "Saturday" , "lørdag|lør\\.?" )
-  , ( "Sunday"   , "søndag|søn\\.?" )
+  -- 'man' is a common Danish word ('you'), leading to false positives
+  [ ( "Monday"   , "mandag"            )
+  , ( "Tuesday"  , "tirsdag|tirs?\\.?" )
+  , ( "Wednesday", "onsdag|ons\\.?"    )
+  , ( "Thursday" , "torsdag|tors?\\.?" )
+  , ( "Friday"   , "fredag|fre\\.?"    )
+  , ( "Saturday" , "lørdag|lør\\.?"    )
+  , ( "Sunday"   , "søndag|søn\\.?"    )
   ]
 
 ruleMonths :: [Rule]
diff --git a/Duckling/Time/DE/Rules.hs b/Duckling/Time/DE/Rules.hs
--- a/Duckling/Time/DE/Rules.hs
+++ b/Duckling/Time/DE/Rules.hs
@@ -1291,19 +1291,6 @@
       _ -> Nothing
   }
 
-ruleTimeofdayAmpm :: Rule
-ruleTimeofdayAmpm = Rule
-  { name = "<time-of-day> am|pm"
-  , pattern =
-    [ Predicate isATimeOfDay
-    , regex "([ap])\\.?m\\.?(?:[\\s'\"-_{}\\[\\]()]|$)"
-    ]
-  , prod = \tokens -> case tokens of
-      (Token Time td:Token RegexMatch (GroupMatch (ap:_)):_) ->
-        tt $ timeOfDayAMPM (Text.toLower ap == "a") td
-      _ -> Nothing
-  }
-
 ruleHalfIntegerGermanStyleHourofday :: Rule
 ruleHalfIntegerGermanStyleHourofday = Rule
   { name = "half <integer> (german style hour-of-day)"
@@ -1712,7 +1699,6 @@
   , ruleTimeAfterNext
   , ruleTimeBeforeLast
   , ruleTimePartofday
-  , ruleTimeofdayAmpm
   , ruleTimeofdayApproximately
   , ruleTimeofdayLatent
   , ruleTimeofdayOclock
diff --git a/Duckling/Time/EN/AU/Corpus.hs b/Duckling/Time/EN/AU/Corpus.hs
--- a/Duckling/Time/EN/AU/Corpus.hs
+++ b/Duckling/Time/EN/AU/Corpus.hs
@@ -104,4 +104,16 @@
   , examples (datetimeHoliday (2019, 5, 27, 0, 0, 0) Day "Reconciliation Day")
              [ "reconciliation day 2019"
              ]
+  , examples (datetimeIntervalHoliday ((2013, 8, 9, 0, 0, 0), (2013, 8, 19, 0, 0, 0)) Day "Royal Queensland Show")
+             [ "ekka"
+             , "royal national agricultural show"
+             ]
+  , examples (datetimeHoliday (2018, 8, 15, 0, 0, 0) Day "Royal Queensland Show Day")
+             [ "ekka day 2018"
+             , "RNA Show Day 2018"
+             , "Royal Queensland Show Day in five years"
+             ]
+  , examples (datetimeHoliday (2013, 5, 3, 0, 0, 0) Day "Administrative Professionals' Day")
+             [ "admin day"
+             ]
   ]
diff --git a/Duckling/Time/EN/AU/Rules.hs b/Duckling/Time/EN/AU/Rules.hs
--- a/Duckling/Time/EN/AU/Rules.hs
+++ b/Duckling/Time/EN/AU/Rules.hs
@@ -88,7 +88,7 @@
   -- Fixed day/week/month, year over year
   , ( "Adelaide Cup", "adelaide cup", nthDOWOfMonth 2 1 3 )
   , ( "Administrative Professionals' Day"
-    , "(admin(istrative professionals'?)|secretaries'?) day"
+    , "(administrative professional|secretarie|admin)('?s'?)? day"
     , nthDOWOfMonth 1 5 5 )
   , ( "Canberra Day", "canberra day", nthDOWOfMonth 2 1 3 )
   , ( "Eight Hours Day", "eight hours day", nthDOWOfMonth 2 1 3 )
@@ -128,6 +128,29 @@
   , ( "Royal Hobart Regatta", "royal hobart regatta"
     , let end = nthDOWOfMonth 2 1 2
       in interval TTime.Open (cycleNthAfter False TG.Day (- 2) end) end )
+
+  -- Other
+  -- Wednesday of the Royal Queensland Show
+  -- Starts on the first Friday of August if it's not before August 5th
+  -- Otherwise on the second Friday of August
+  , ( "Royal Queensland Show Day"
+    , "(royal (national agricultural|queensland)|rna) show day|ekka day"
+    , let tentative = nthDOWOfMonth 1 5 8
+          alternative = nthDOWOfMonth 2 5 8
+      in do
+        forbidden <- interval TTime.Open (monthDay 8 1) (monthDay 8 4)
+        start <- intersectWithReplacement forbidden tentative alternative
+        return $ cycleNthAfter False TG.Day 5 start )
+  -- Starts on the first Friday of August if it's not before August 5th
+  -- Otherwise on the second Friday of August
+  , ( "Royal Queensland Show"
+    , "ekka|(royal (national agricultural|queensland)|rna) show"
+    , let tentative = nthDOWOfMonth 1 5 8
+          alternative = nthDOWOfMonth 2 5 8
+      in do
+        forbidden <- interval TTime.Open (monthDay 8 1) (monthDay 8 4)
+        start <- intersectWithReplacement forbidden tentative alternative
+        interval TTime.Open start $ cycleNthAfter False TG.Day 9 start )
   ]
 
 ruleComputedHolidays :: [Rule]
diff --git a/Duckling/Time/EN/CA/Corpus.hs b/Duckling/Time/EN/CA/Corpus.hs
--- a/Duckling/Time/EN/CA/Corpus.hs
+++ b/Duckling/Time/EN/CA/Corpus.hs
@@ -143,4 +143,11 @@
              [ "Groundhog day"
              , "groundhogs day"
              ]
+  , examples (datetimeHoliday (2010, 4, 21, 0, 0, 0) Day "Administrative Professionals' Day")
+             [ "administrative professionals' day 2010"
+             ]
+  , examples (datetimeHoliday (2019, 4, 24, 0, 0, 0) Day "Administrative Professionals' Day")
+             [ "admin day 2019"
+             , "secretaries day in six years"
+             ]
   ]
diff --git a/Duckling/Time/EN/CA/Rules.hs b/Duckling/Time/EN/CA/Rules.hs
--- a/Duckling/Time/EN/CA/Rules.hs
+++ b/Duckling/Time/EN/CA/Rules.hs
@@ -23,6 +23,7 @@
 import Duckling.Time.Helpers
 import Duckling.Time.Types (TimeData (..))
 import Duckling.Types
+import qualified Duckling.TimeGrain.Types as TG
 
 -- Although one can see both MMDD and DDMM in Canada,
 -- there is no direct way to implement this today. Let's fallback to MMDD (US).
@@ -122,6 +123,14 @@
   -- Closest Monday to June 24th
   , ( "Discovery Day", "discovery\\s+day"
     , predNthClosest 0 (dayOfWeek 1) (monthDay 6 24) )
+
+  -- Wednesday of the last full week of April, where a full week starts on
+  -- Sunday and ends on Saturday.
+  , ( "Administrative Professionals' Day"
+    , "(administrative professional|secretarie|admin)('?s'?)? day"
+    , cycleNthAfter False TG.Day (-3) $
+        predNthAfter (-1) (dayOfWeek 6) (monthDay 5 1)
+    )
   ]
 
 rules :: [Rule]
diff --git a/Duckling/Time/EN/Corpus.hs b/Duckling/Time/EN/Corpus.hs
--- a/Duckling/Time/EN/Corpus.hs
+++ b/Duckling/Time/EN/Corpus.hs
@@ -102,6 +102,9 @@
       , "at 650-650-6500"
       , "two sixty a m"
       , "Pay ABC 2000"
+      , "4a"
+      , "4a."
+      , "A4 A5"
       ]
 
 latentCorpus :: Corpus
@@ -114,7 +117,11 @@
                  ]
       , examples (datetime (2013, 2, 12, 7, 0, 0) Hour)
                  [ "7"
+                 , "7a"
                  ]
+      , examples (datetime (2013, 2, 12, 19, 0, 0) Hour)
+                 [ "7p"
+                 ]
       --, examples (datetime (1954, 1, 1, 0, 0, 0) Year)
       --           [ "1954"
       --           ]
@@ -331,6 +338,17 @@
              [ "next year"
              , "next yr"
              ]
+  , examples (datetime (2014, 1, 1, 0, 0, 0) Year)
+             [ "in 2014 A.D.",
+               "in 2014 AD"
+             ]
+  , examples (datetime (-2014, 1, 1, 0, 0, 0) Year)
+             [ "in 2014 B.C.",
+               "in 2014 BC"
+             ]
+  , examples (datetime (14, 1, 1, 0, 0, 0) Year)
+             [ "in 14 a.d."
+             ]
   , examples (datetime (2013, 2, 10, 0, 0, 0) Day)
              [ "last sunday"
              , "sunday from last week"
@@ -386,6 +404,19 @@
   , examples (datetime (2014, 10, 6, 0, 0, 0) Week)
              [ "first week of october 2014"
              ]
+  , examples (datetime (2018, 12, 10, 0, 0, 0) Week)
+             [ "third last week of 2018"
+             , "the third last week of 2018"
+             , "the 3rd last week of 2018"
+             ]
+  , examples (datetime (2018, 10, 15, 0, 0, 0) Week)
+             [ "2nd last week of October 2018"
+             , "the second last week of October 2018"
+             ]
+  , examples (datetime (2013, 5, 27, 0, 0, 0) Day)
+             [ "fifth last day of May"
+             , "the 5th last day of May"
+             ]
   , examples (datetime (2013, 10, 7, 0, 0, 0) Week)
              [ "the week of october 6th"
              ]
@@ -439,6 +470,8 @@
              , "3ish pm"
              , "3pm approximately"
              , "at about 3pm"
+             , "at 3p"
+             , "at 3p."
              ]
   , examples (datetime (2013, 2, 12, 15, 15, 0) Minute)
              [ "at 15 past 3pm"
@@ -592,6 +625,10 @@
              , "one week ago"
              , "1 week ago"
              ]
+  , examples (datetime (2013, 1, 31, 0, 0, 0) Day)
+             [ "2 thursdays back"
+             , "2 thursdays ago"
+             ]
   , examples (datetime (2013, 1, 22, 0, 0, 0) Day)
              [ "three weeks ago"
              ]
@@ -628,6 +665,8 @@
              ]
   , examples (datetimeInterval ((2013, 12, 18, 0, 0, 0), (2013, 12, 29, 0, 0, 0)) Day)
              [ "for 10 days from 18th Dec"
+             , "from 18th Dec for 10 days"
+             , "18th Dec for 10 days"
              ]
   , examples (datetimeInterval ((2013, 6, 21, 0, 0, 0), (2013, 9, 24, 0, 0, 0)) Day)
              [ "this Summer"
@@ -1005,6 +1044,14 @@
              , "from 2 pm"
              , "since 2pm"
              ]
+  , examples (datetimeOpenInterval After (2014, 1, 1, 0, 0, 0) Year)
+             [ "anytime after 2014"
+             , "since 2014"
+             ]
+  , examples (datetimeOpenInterval Before (2014, 1, 1, 0, 0, 0) Year)
+             [ "sometimes before 2014"
+             , "through 2014"
+             ]
   , examples (datetimeOpenInterval After (2013, 2, 17, 4, 0, 0) Hour)
              [ "after 5 days"
              ]
@@ -1247,9 +1294,13 @@
              ]
   , examples (datetimeIntervalHoliday ((2018, 9, 9, 0, 0, 0), (2018, 9, 12, 0, 0, 0)) Day "Rosh Hashanah")
              [ "rosh hashanah 2018"
+             , "rosh hashana 2018"
+             , "rosh hashanna 2018"
              ]
   , examples (datetimeIntervalHoliday ((2018, 12, 2, 0, 0, 0), (2018, 12, 10, 0, 0, 0)) Day "Hanukkah")
              [ "Chanukah 2018"
+             , "hanukah 2018"
+             , "hannukkah 2018"
              ]
   , examples (datetimeIntervalHoliday ((2018, 3, 30, 0, 0, 0), (2018, 4, 8, 0, 0, 0)) Day "Passover")
              [ "passover 2018"
@@ -1383,5 +1434,21 @@
              [ "holi 2019"
              , "dhulandi 2019"
              , "phagwah 2019"
+             ]
+  , examples (datetimeIntervalHoliday ((2013, 4, 26, 0, 0, 0), (2013, 4, 29, 0, 0, 0)) Day "Global Youth Service Day")
+             [ "GYSD 2013"
+             , "global youth service day"
+             ]
+  , examples (datetimeHoliday (2013, 5, 24, 0, 0, 0) Day "Vesak")
+             [ "vesak"
+             , "vaisakha"
+             , "Buddha day"
+             , "Buddha Purnima"
+             ]
+  , examples (datetimeIntervalHoliday ((2013, 3, 23, 20, 30, 0), (2013, 3, 23, 21, 31, 0)) Minute "Earth Hour")
+             [ "earth hour"
+             ]
+  , examples (datetimeIntervalHoliday ((2016, 3, 19, 20, 30, 0), (2016, 3, 19, 21, 31, 0)) Minute "Earth Hour")
+             [ "earth hour 2016"
              ]
   ]
diff --git a/Duckling/Time/EN/NZ/Corpus.hs b/Duckling/Time/EN/NZ/Corpus.hs
--- a/Duckling/Time/EN/NZ/Corpus.hs
+++ b/Duckling/Time/EN/NZ/Corpus.hs
@@ -92,4 +92,7 @@
              [ "labour day of last year"
              , "Labour Day 2012"
              ]
+  , examples (datetimeHoliday (2013, 4, 17, 0, 0, 0) Day "Administrative Professionals' Day")
+             [ "admin day"
+             ]
   ]
diff --git a/Duckling/Time/EN/NZ/Rules.hs b/Duckling/Time/EN/NZ/Rules.hs
--- a/Duckling/Time/EN/NZ/Rules.hs
+++ b/Duckling/Time/EN/NZ/Rules.hs
@@ -80,7 +80,7 @@
 
   -- Fixed day/week/month, year over year
   , ( "Administrative Professionals' Day"
-    , "(admin(istrative professionals'?)|secretaries'?) day"
+    , "(administrative professional|secretarie|admin)('?s'?)? day"
     , nthDOWOfMonth 3 3 4 )
   , ( "Father's Day", "father'?s?'? day", nthDOWOfMonth 1 7 9 )
   , ( "Labour Day", "labour day", nthDOWOfMonth 4 1 10 )
diff --git a/Duckling/Time/EN/Rules.hs b/Duckling/Time/EN/Rules.hs
--- a/Duckling/Time/EN/Rules.hs
+++ b/Duckling/Time/EN/Rules.hs
@@ -24,7 +24,7 @@
 import Duckling.Dimensions.Types
 import Duckling.Duration.Helpers (duration)
 import Duckling.Duration.Types (DurationData (..))
-import Duckling.Numeral.Helpers (parseInt)
+import Duckling.Numeral.Helpers (isNatural, parseInt)
 import Duckling.Numeral.Types (NumeralData (..))
 import Duckling.Ordinal.Types (OrdinalData (..))
 import Duckling.Regex.Types
@@ -57,7 +57,7 @@
   , pattern =
     [ Predicate isNotLatent
     , regex "of|from|for|'s|,"
-    , Predicate $ or . sequence [isNotLatent, isGrainOfTime TG.Year]
+    , Predicate isNotLatent
     ]
   , prod = \tokens -> case tokens of
       (Token Time td1:_:Token Time td2:_) ->
@@ -65,6 +65,20 @@
       _ -> Nothing
   }
 
+ruleIntersectYear :: Rule
+ruleIntersectYear = Rule
+  { name = "intersect by \",\", \"of\", \"from\" for year"
+  , pattern =
+    [ Predicate isNotLatent
+    , regex "of|from|,"
+    , Predicate $ isGrainOfTime TG.Year
+    ]
+  , prod = \tokens -> case tokens of
+      (Token Time td1:_:Token Time td2:_) ->
+        Token Time . notLatent <$> intersect td1 td2
+      _ -> Nothing
+  }
+
 ruleAbsorbOnTime :: Rule
 ruleAbsorbOnTime = Rule
   { name = "on <date>"
@@ -324,6 +338,20 @@
       _ -> Nothing
   }
 
+ruleYearADBC :: Rule
+ruleYearADBC = Rule
+  { name = "<year> (bc|ad)"
+  , pattern =
+    [ Predicate $ isIntegerBetween (-10000) 10000
+    , regex "(a\\.?d\\.?|b\\.?c\\.?)"
+    ]
+  , prod = \case
+    (token:Token RegexMatch (GroupMatch (ab:_)):_) -> do
+      y <- getIntValue token
+      tt . yearADBC $ if Text.head (Text.toLower ab) == 'b' then -y else y
+    _ -> Nothing
+  }
+
 ruleDOMLatent :: Rule
 ruleDOMLatent = Rule
   { name = "<day-of-month> (ordinal)"
@@ -574,9 +602,12 @@
   { name = "<time-of-day> am|pm"
   , pattern =
     [ Predicate isATimeOfDay
-    , regex "(in the )?([ap])(\\s|\\.)?m?\\.?"
+    , regex "(in the )?([ap])(\\s|\\.)?(m?)\\.?"
     ]
   , prod = \tokens -> case tokens of
+      (Token Time td@TimeData {TTime.latent = True}:
+       Token RegexMatch (GroupMatch (_:ap:_:"":_)):_) ->
+        tt . mkLatent $ timeOfDayAMPM (Text.toLower ap == "a") td
       (Token Time td:Token RegexMatch (GroupMatch (_:ap:_)):_) ->
         tt $ timeOfDayAMPM (Text.toLower ap == "a") td
       _ -> Nothing
@@ -1162,39 +1193,39 @@
       _ -> Nothing
   }
 
-ruleIntervalUntilTOD :: Rule
-ruleIntervalUntilTOD = Rule
-  { name = "until <time-of-day>"
+ruleIntervalUntilTime :: Rule
+ruleIntervalUntilTime = Rule
+  { name = "until <time>"
   , pattern =
     [ regex "(anytime |sometimes? )?(before|(un)?til(l)?|through|up to)"
     , dimension Time
     ]
   , prod = \tokens -> case tokens of
-      (_:Token Time td:_) -> tt $ withDirection TTime.Before td
+      (_:Token Time td:_) -> tt . withDirection TTime.Before $ notLatent td
       _ -> Nothing
   }
 
-ruleIntervalAfterFromSinceTOD :: Rule
-ruleIntervalAfterFromSinceTOD = Rule
-  { name = "from|since|after <time-of-day>"
+ruleIntervalAfterFromSinceTime :: Rule
+ruleIntervalAfterFromSinceTime = Rule
+  { name = "from|since|after <time>"
   , pattern =
     [ regex "from|since|(anytime |sometimes? )?after"
     , dimension Time
     ]
   , prod = \tokens -> case tokens of
-      (_:Token Time td:_) -> tt $ withDirection TTime.After td
+      (_:Token Time td:_) -> tt . withDirection TTime.After $ notLatent td
       _ -> Nothing
   }
 
 ruleDaysOfWeek :: [Rule]
 ruleDaysOfWeek = mkRuleDaysOfWeek
-  [ ( "Monday"   , "monday|mon\\.?"         )
-  , ( "Tuesday"  , "tuesday|tues?\\.?"      )
-  , ( "Wednesday", "wed?nesday|wed\\.?"     )
-  , ( "Thursday" , "thursday|thu(rs?)?\\.?" )
-  , ( "Friday"   , "friday|fri\\.?"         )
-  , ( "Saturday" , "saturday|sat\\.?"       )
-  , ( "Sunday"   , "sunday|sun\\.?"         )
+  [ ( "Monday"   , "mondays?|mon\\.?"         )
+  , ( "Tuesday"  , "tuesdays?|tues?\\.?"      )
+  , ( "Wednesday", "wed?nesdays?|wed\\.?"     )
+  , ( "Thursday" , "thursdays?|thu(rs?)?\\.?" )
+  , ( "Friday"   , "fridays?|fri\\.?"         )
+  , ( "Saturday" , "saturdays?|sat\\.?"       )
+  , ( "Sunday"   , "sundays?|sun\\.?"         )
   ]
 
 ruleMonths :: [Rule]
@@ -1553,6 +1584,10 @@
   , ( "World Philosophy Day", "world philosophy day", nthDOWOfMonth 3 4 11 )
   , ( "World Religion Day", "world religion day", nthDOWOfMonth 3 7 1 )
   , ( "World Sight Day", "world sight day", nthDOWOfMonth 2 4 10 )
+
+  -- Other
+  , ( "Boss's Day", "boss'?s?( day)?"
+    , predNthClosest 0 weekday (monthDay 10 16) )
   ]
 
 ruleComputedHolidays :: [Rule]
@@ -1662,6 +1697,8 @@
     , cycleNthAfter False TG.Day 9 navaratri )
   -- 15th day of Shevat
   , ( "Tu BiShvat", "tu b[i']shvat", tuBishvat )
+  -- day of the full moon in May in the Gregorian calendar
+  , ( "Vesak", "v(e|ai)sak(ha)?|buddha (day|purnima)", vesak )
   , ( "Yom Ha'atzmaut", "yom ha'?atzmaut", yomHaatzmaut )
   , ( "Yom HaShoah"
     , "yom hashoah|yom hazikaron lashoah ve-lag'vurah|holocaust (remembrance )?day"
@@ -1669,19 +1706,19 @@
   , ( "Yom Kippur", "yom\\s+kippur", cycleNthAfter False TG.Day 9 roshHashana )
   , ( "Whit Monday", "(pentecost|whit)\\s+monday|monday of the holy spirit"
     , cycleNthAfter False TG.Day 50 easterSunday )
-
-  -- Other
-  , ( "Boss's Day", "boss'?s?( day)?"
-    , predNthClosest 0 weekday (monthDay 10 16) )
   ]
 
 ruleComputedHolidays' :: [Rule]
 ruleComputedHolidays' = mkRuleHolidays'
-  [ ( "Great Lent", "great\\s+(fast|lent)"
+  [ ( "Global Youth Service Day", "global youth service day|gysd"
+    , let start = globalYouthServiceDay
+          end = cycleNthAfter False TG.Day 2 globalYouthServiceDay
+        in interval TTime.Open start end )
+  , ( "Great Lent", "great\\s+(fast|lent)"
     , let start = cycleNthAfter False TG.Day (-48) orthodoxEaster
           end = cycleNthAfter False TG.Day (-9) orthodoxEaster
         in interval TTime.Open start end )
-  , ( "Hanukkah", "c?hanukk?ah"
+  , ( "Hanukkah", "c?hann?ukk?ah"
     , let start = chanukah
           end = cycleNthAfter False TG.Day 7 chanukah
         in interval TTime.Open start end )
@@ -1701,7 +1738,7 @@
     , let start = ramadan
           end = cycleNthAfter False TG.Day (-1) eidalFitr
         in interval TTime.Open start end )
-  , ( "Rosh Hashanah", "rosh hashanah|yom teruah"
+  , ( "Rosh Hashanah", "rosh hashann?ah?|yom teruah"
     , let start = roshHashana
           end = cycleNthAfter False TG.Day 2 roshHashana
         in interval TTime.Open start end )
@@ -1713,6 +1750,18 @@
     , let start = cycleNthAfter False TG.Day 14 roshHashana
           end = cycleNthAfter False TG.Day 22 roshHashana
         in interval TTime.Open start end )
+
+  -- Other
+  -- Last Saturday of March unless it falls on Holy Saturday
+  -- In which case it's the Saturday before
+  , ( "Earth Hour", "earth hour"
+    , let holySaturday = cycleNthAfter False TG.Day (-1) easterSunday
+          tentative = predLastOf (dayOfWeek 6) (month 3)
+          alternative = cycleNthAfter False TG.Day (-7) tentative
+        in do
+          day <- intersectWithReplacement holySaturday tentative alternative
+          start <- intersect day $ hourMinute True 20 30
+          interval TTime.Closed start $ cycleNthAfter False TG.Minute 60 start )
   ]
 
 ruleCycleThisLastNext :: Rule
@@ -1804,6 +1853,23 @@
       _ -> Nothing
   }
 
+ruleCycleLastOrdinalOfTime :: Rule
+ruleCycleLastOrdinalOfTime = Rule
+  { name = "<ordinal> last <cycle> of <time>"
+  , pattern =
+    [ dimension Ordinal
+    , regex "last"
+    , dimension TimeGrain
+    , regex "of|in|from"
+    , dimension Time
+    ]
+  , prod = \tokens -> case tokens of
+      (token:_:Token TimeGrain grain:_:Token Time td:_) -> do
+        n <- getIntValue token
+        tt . cycleNthAfter True grain (-n) . cycleNthAfter True (timeGrain td) 1 $ td
+      _ -> Nothing
+  }
+
 ruleCycleTheOrdinalOfTime :: Rule
 ruleCycleTheOrdinalOfTime = Rule
   { name = "the <ordinal> <cycle> of <time>"
@@ -1821,6 +1887,24 @@
       _ -> Nothing
   }
 
+ruleCycleTheLastOrdinalOfTime :: Rule
+ruleCycleTheLastOrdinalOfTime = Rule
+  { name = "the <ordinal> last <cycle> of <time>"
+  , pattern =
+    [ regex "the"
+    , dimension Ordinal
+    , regex "last"
+    , dimension TimeGrain
+    , regex "of|in|from"
+    , dimension Time
+    ]
+  , prod = \tokens -> case tokens of
+      (_:token:_:Token TimeGrain grain:_:Token Time td:_) -> do
+        n <- getIntValue token
+        tt . cycleNthAfter True grain (-n) . cycleNthAfter True (timeGrain td) 1 $ td
+      _ -> Nothing
+  }
+
 ruleCycleTheOfTime :: Rule
 ruleCycleTheOfTime = Rule
   { name = "the <cycle> of <time>"
@@ -1952,6 +2036,20 @@
       _ -> Nothing
   }
 
+ruleNDOWago :: Rule
+ruleNDOWago = Rule
+  { name = "<integer> <named-day> ago|back"
+  , pattern =
+    [ Predicate isNatural
+    , Predicate isADayOfWeek
+    , regex "ago|back"
+    ]
+  , prod = \tokens -> case tokens of
+      (Token Numeral NumeralData{TNumeral.value = v}:Token Time td:_) ->
+        tt $ predNth (- (floor v)) False td
+      _ -> Nothing
+  }
+
 ruleDurationHenceAgo :: Rule
 ruleDurationHenceAgo = Rule
   { name = "<duration> hence|ago"
@@ -2046,6 +2144,35 @@
       _ -> Nothing
 }
 
+ruleIntervalTimeForDuration :: Rule
+ruleIntervalTimeForDuration = Rule
+  { name = "<time> for <duration>"
+  , pattern =
+    [ Predicate isNotLatent
+    , regex "for"
+    , dimension Duration
+    ]
+  , prod = \tokens -> case tokens of
+      (Token Time td1:_:Token Duration dd:_) ->
+        Token Time <$> interval TTime.Open td1 (durationAfter dd td1)
+      _ -> Nothing
+}
+
+ruleIntervalFromTimeForDuration :: Rule
+ruleIntervalFromTimeForDuration = Rule
+  { name = "from <time> for <duration>"
+  , pattern =
+    [ regex "(from|starting|beginning|after|starting from)"
+    , Predicate isNotLatent
+    , regex "for"
+    , dimension Duration
+    ]
+  , prod = \tokens -> case tokens of
+      (_:Token Time td1:_:Token Duration dd:_) ->
+        Token Time <$> interval TTime.Open td1 (durationAfter dd td1)
+      _ -> Nothing
+}
+
 ruleTimezone :: Rule
 ruleTimezone = Rule
   { name = "<time> timezone"
@@ -2064,6 +2191,7 @@
 rules =
   [ ruleIntersect
   , ruleIntersectOf
+  , ruleIntersectYear
   , ruleAbsorbOnTime
   , ruleAbsorbOnADOW
   , ruleAbsorbInMonthYear
@@ -2082,6 +2210,7 @@
   , ruleNthTimeAfterTime
   , ruleTheNthTimeAfterTime
   , ruleYearLatent
+  , ruleYearADBC
   , ruleTheDOMNumeral
   , ruleTheDOMOrdinal
   , ruleDOMLatent
@@ -2138,14 +2267,16 @@
   , ruleIntervalTODBetween
   , ruleIntervalBy
   , ruleIntervalByTheEndOf
-  , ruleIntervalUntilTOD
-  , ruleIntervalAfterFromSinceTOD
+  , ruleIntervalUntilTime
+  , ruleIntervalAfterFromSinceTime
   , ruleCycleTheAfterBeforeTime
   , ruleCycleThisLastNext
   , ruleDOMOfTimeMonth
   , ruleCycleAfterBeforeTime
   , ruleCycleOrdinalOfTime
+  , ruleCycleLastOrdinalOfTime
   , ruleCycleTheOrdinalOfTime
+  , ruleCycleTheLastOrdinalOfTime
   , ruleCycleTheOfTime
   , ruleCycleOrdinalAfterTime
   , ruleCycleTheOrdinalAfterTime
@@ -2154,11 +2285,14 @@
   , ruleCycleOrdinalQuarterYear
   , ruleDurationInWithinAfter
   , ruleDurationLastNext
+  , ruleNDOWago
   , ruleDurationHenceAgo
   , ruleDayDurationHenceAgo
   , ruleDayInDuration
   , ruleDurationAfterBeforeTime
   , ruleIntervalForDurationFrom
+  , ruleIntervalFromTimeForDuration
+  , ruleIntervalTimeForDuration
   , ruleInNumeral
   , ruleTimezone
   , rulePartOfMonth
diff --git a/Duckling/Time/EN/US/Corpus.hs b/Duckling/Time/EN/US/Corpus.hs
--- a/Duckling/Time/EN/US/Corpus.hs
+++ b/Duckling/Time/EN/US/Corpus.hs
@@ -141,4 +141,56 @@
              [ "Groundhog day"
              , "groundhogs day"
              ]
+  , examples (datetimeHoliday (2011, 4, 15, 0, 0, 0) Day "Emancipation Day")
+             [ "emancipation day 2011"
+             ]
+  , examples (datetimeHoliday (2012, 4, 16, 0, 0, 0) Day "Emancipation Day")
+             [ "emancipation day 2012"
+             ]
+  , examples (datetimeHoliday (2017, 4, 17, 0, 0, 0) Day "Emancipation Day")
+             [ "emancipation day 2017"
+             ]
+  , examples (datetimeHoliday (2011, 4, 18, 0, 0, 0) Day "Tax Day")
+             [ "tax day 2011"
+             , "tax day two years ago"
+             ]
+  , examples (datetimeHoliday (2012, 4, 17, 0, 0, 0) Day "Tax Day")
+             [ "tax day 2012"
+             , "tax day last year"
+             ]
+  , examples (datetimeHoliday (2013, 4, 15, 0, 0, 0) Day "Tax Day")
+             [ "next tax day"
+             , "tax day 2013"
+             ]
+  , examples (datetimeHoliday (2017, 4, 18, 0, 0, 0) Day "Tax Day")
+             [ "tax day 2017"
+             , "tax day in 4 years"
+             ]
+  , examples (datetimeHoliday (2013, 4, 10, 0, 0, 0) Day "Siblings Day")
+             [ "siblings day"
+             , "national sibling day"
+             ]
+  , examples (datetimeHoliday (2016, 4, 27, 0, 0, 0) Day "Administrative Professionals' Day")
+             [ "administrative professionals' day 2016"
+             , "administrative professionals day 2016"
+             , "administrative professional day 2016"
+             , "administrative professional's day of 2016"
+             , "secretaries' day 2016"
+             , "admins day 2016"
+             ]
+  , examples (datetimeHoliday (2010, 4, 21, 0, 0, 0) Day "Administrative Professionals' Day")
+             [ "administrative professionals' day 2010"
+             ]
+  , examples (datetimeHoliday (2019, 4, 24, 0, 0, 0) Day "Administrative Professionals' Day")
+             [ "administrative professionals' day 2019"
+             ]
+  , examples (datetimeIntervalHoliday ((2013, 4, 26, 0, 0, 0), (2013, 4, 29, 0, 0, 0)) Day "Global Youth Service Day")
+             [ "national youth service day"
+             ]
+  , examples (datetimeIntervalHoliday ((2018, 5, 20, 0, 0, 0), (2018, 5, 27, 0, 0, 0)) Day "Emergency Medical Services Week")
+             [ "ems week 2018"
+             ]
+  , examples (datetimeHoliday (2018, 5, 23, 0, 0, 0) Day "Emergency Medical Services for Children Day")
+             [ "emsc day 2018"
+             ]
   ]
diff --git a/Duckling/Time/EN/US/Rules.hs b/Duckling/Time/EN/US/Rules.hs
--- a/Duckling/Time/EN/US/Rules.hs
+++ b/Duckling/Time/EN/US/Rules.hs
@@ -21,6 +21,7 @@
 import Duckling.Dimensions.Types
 import Duckling.Numeral.Helpers (parseInt)
 import Duckling.Regex.Types
+import Duckling.Time.Computed
 import Duckling.Time.Helpers
 import Duckling.Time.Types (TimeData (..))
 import Duckling.Types
@@ -98,7 +99,6 @@
   , ( "D-Day", "d\\-day", monthDay 6 6 )
   , ( "Day After Christmas Day", "day after christmas day", monthDay 12 26 )
   , ( "Elizabeth Peratrovich Day", "elizabeth peratrovich day", monthDay 2 16 )
-  , ( "Emancipation Day", "emancipation day", monthDay 4 16 )
   , ( "Evacuation Day", "evacuation day", monthDay 3 17 )
   , ( "Father Damien Day", "father damien day", monthDay 4 15 )
   , ( "Feast of Our Lady of Guadalupe", "feast of our lady of guadalupe", monthDay 12 12 )
@@ -142,6 +142,7 @@
   , ( "San Jacinto Day", "san jacinto day", monthDay 4 21 )
   , ( "Self-Injury Awareness Day", "self\\-injury awareness day", monthDay 3 1 )
   , ( "Senior Citizens Day", "senior citizens day", monthDay 8 21 )
+  , ( "Siblings Day", "(national )?sibling'?s?'? day", monthDay 4 10 )
   , ( "St Nicholas' Day", "st\\.? nicholas'? day", monthDay 12 6 )
   , ( "St. David's Day", "st\\.? david'?s day", monthDay 3 1 )
   , ( "Statehood Day", "statehood day", monthDay 6 1 )
@@ -230,14 +231,54 @@
     , "(george )?washington'?s? (birth)?day|president'?s?'? day|daisy gatson bates'? day"
     , nthDOWOfMonth 3 1 2
     )
+
+  -- Wednesday of the last full week of April, where a full week starts on
+  -- Sunday and ends on Saturday.
+  , ( "Administrative Professionals' Day"
+    , "(administrative professional|secretarie|admin)('?s'?)? day"
+    , cycleNthAfter False TG.Day (-3) $
+        predNthAfter (-1) (dayOfWeek 6) (monthDay 5 1) )
+  -- Wednesday of the 3rd full week in May, starting on a Sunday
+  , ( "Emergency Medical Services for Children Day"
+    , "(national )?(emsc|emergency medical services for children) day"
+    , cycleNthAfter False TG.Day 3 $ predNthAfter 2 (dayOfWeek 7) (monthDay 5 1)
+    )
+
+  -- Other
+  , ( "Emancipation Day", "emancipation day"
+    , predNthClosest 0 weekday $ monthDay 4 16 )
   ]
 
 rulePeriodicHolidays' :: [Rule]
 rulePeriodicHolidays' = mkRuleHolidays'
   -- Fixed dates, year over year
   [ ( "Kwanzaa", "kwanzaa", interval TTime.Open (monthDay 12 26) (monthDay 1 1) )
+
+  -- 3rd full week in May, starting on a Sunday
+  , ( "Emergency Medical Services Week"
+    , "(national )?(ems|emergency medical services) week"
+    , let start = predNthAfter 2 (dayOfWeek 7) (monthDay 5 1)
+          end = cycleNthAfter False TG.Day 6 start
+      in interval TTime.Open start end )
+
+  -- Other
+  -- First weekday on or after April 15 if different than Emancipation Day
+  -- Otherwise, first weekday following Emancipation Day
+  , ( "Tax Day", "tax day"
+    , let emancipationDay = predNthClosest 0 weekday $ monthDay 4 16
+          tentative = predNthAfter 0 weekday $ monthDay 4 15
+          alternative = predNthAfter 1 weekday emancipationDay
+      in intersectWithReplacement emancipationDay tentative alternative )
   ]
 
+ruleComputedHolidays' :: [Rule]
+ruleComputedHolidays' = mkRuleHolidays'
+  [ ( "Global Youth Service Day", "national youth service day"
+    , let start = globalYouthServiceDay
+          end = cycleNthAfter False TG.Day 2 globalYouthServiceDay
+        in interval TTime.Open start end )
+  ]
+
 rulesBackwardCompatible :: [Rule]
 rulesBackwardCompatible =
   [ ruleMMDD
@@ -250,3 +291,4 @@
 rules = rulesBackwardCompatible
   ++ rulePeriodicHolidays
   ++ rulePeriodicHolidays'
+  ++ ruleComputedHolidays'
diff --git a/Duckling/Time/EN/ZA/Corpus.hs b/Duckling/Time/EN/ZA/Corpus.hs
--- a/Duckling/Time/EN/ZA/Corpus.hs
+++ b/Duckling/Time/EN/ZA/Corpus.hs
@@ -97,4 +97,7 @@
              [ "heroes' day"
              , "kruger day"
              ]
+  , examples (datetimeHoliday (2013, 9, 4, 0, 0, 0) Day "Administrative Professionals' Day")
+             [ "admin day"
+             ]
   ]
diff --git a/Duckling/Time/EN/ZA/Rules.hs b/Duckling/Time/EN/ZA/Rules.hs
--- a/Duckling/Time/EN/ZA/Rules.hs
+++ b/Duckling/Time/EN/ZA/Rules.hs
@@ -82,6 +82,9 @@
   , ( "Workers' Day", "workers'? day", monthDay 5 1 )
 
   -- Fixed day/week/month, year over year
+  , ( "Administrative Professionals' Day"
+    , "(administrative professional|secretarie|admin)('?s'?)? day"
+    , nthDOWOfMonth 1 3 9 )
   , ( "Father's Day", "father'?s?'? day", nthDOWOfMonth 3 7 6 )
   , ( "Mother's Day", "mother'?s?'? day", nthDOWOfMonth 2 7 5 )
   , ( "Thanksgiving Day", "thanks?giving( day)?", nthDOWOfMonth 4 4 11 )
diff --git a/Duckling/Time/Helpers.hs b/Duckling/Time/Helpers.hs
--- a/Duckling/Time/Helpers.hs
+++ b/Duckling/Time/Helpers.hs
@@ -24,7 +24,7 @@
   , month, monthDay, notLatent, now, nthDOWOfMonth, partOfDay, predLastOf
   , predNth, predNthAfter, predNthClosest, season, second, timeOfDayAMPM
   , weekday, weekend, withDirection, year, yearMonthDay, tt, durationIntervalAgo
-  , inDurationInterval
+  , inDurationInterval, intersectWithReplacement, yearADBC
     -- Other
   , getIntValue, timeComputed
   -- Rule constructors
@@ -32,6 +32,7 @@
   , mkRuleSeasons, mkRuleHolidays, mkRuleHolidays'
   ) where
 
+import Control.Applicative ((<|>))
 import Data.Maybe
 import Data.Ord (comparing)
 import Data.Text (Text)
@@ -58,6 +59,7 @@
   , mkYearPredicate
   , mkIntersectPredicate
   , mkTimeIntervalsPredicate
+  , mkReplaceIntersectPredicate
   , runPredicate
   , AMPM(..)
   )
@@ -114,7 +116,6 @@
 timeMonth :: Int -> TTime.Predicate
 timeMonth n = mkMonthPredicate n
 
--- | Converts 2-digits to a year between 1950 and 2050
 timeYear :: Int -> TTime.Predicate
 timeYear n = mkYearPredicate n
 
@@ -226,6 +227,11 @@
 timeCompose :: TTime.Predicate -> TTime.Predicate -> TTime.Predicate
 timeCompose pred1 pred2 = mkIntersectPredicate pred1 pred2
 
+timeComposeWithReplacement
+  :: TTime.Predicate -> TTime.Predicate -> TTime.Predicate -> TTime.Predicate
+timeComposeWithReplacement pred1 pred2 pred3 =
+  mkReplaceIntersectPredicate pred1 pred2 pred3
+
 addDuration :: DurationData -> TTime.TimeObject -> TTime.TimeObject
 addDuration (DurationData n g) t = TTime.timePlus t g $ toInteger n
 
@@ -350,27 +356,33 @@
       | TTime.isEmptyPredicate pred -> Nothing
     res -> Just res
 
+intersectWithReplacement :: TimeData -> TimeData -> TimeData -> Maybe TimeData
+intersectWithReplacement
+  (TimeData pred1 _ g1 _ _ _ _ h1)
+  (TimeData pred2 _ g2 _ _ _ _ h2)
+  (TimeData pred3 _ g3 _ _ _ _ h3)
+  | g1 == g2 && g2 == g3 = Just $ TTime.timedata'
+    { TTime.timePred = timeComposeWithReplacement pred1 pred2 pred3
+    , TTime.timeGrain = g1
+    , TTime.direction = Nothing
+    , TTime.holiday = h1 <|> h2 <|> h3
+    }
+  | otherwise = Nothing
+
 intersect' :: (TimeData, TimeData) -> TimeData
 intersect' (TimeData pred1 _ g1 _ _ d1 _ h1, TimeData pred2 _ g2 _ _ d2 _ h2)
   | g1 < g2 = TTime.timedata'
     { TTime.timePred = timeCompose pred1 pred2
     , TTime.timeGrain = g1
-    , TTime.direction = dir
-    , TTime.holiday = hol
+    , TTime.direction = d1 <|> d2
+    , TTime.holiday = h1 <|> h2
     }
   | otherwise = TTime.timedata'
     { TTime.timePred = timeCompose pred2 pred1
     , TTime.timeGrain = g2
-    , TTime.direction = dir
-    , TTime.holiday = hol
+    , TTime.direction = d1 <|> d2
+    , TTime.holiday = h1 <|> h2
     }
-  where
-    dir = case catMaybes [d1, d2] of
-      [] -> Nothing
-      (x:_) -> Just x
-    hol = case catMaybes [h1, h2] of
-      [] -> Nothing
-      (h:_) -> Just h
 
 now :: TimeData
 now = td {TTime.timeGrain = TG.NoGrain}
@@ -404,8 +416,15 @@
 month n = form TTime.Month {TTime.month = n} $ TTime.timedata'
   {TTime.timePred = timeMonth n, TTime.timeGrain = TG.Month}
 
+-- | Converts 2-digits to a year between 1950 and 2050
 year :: Int -> TimeData
-year n = TTime.timedata' {TTime.timePred = timeYear n, TTime.timeGrain = TG.Year}
+year n = TTime.timedata'{TTime.timePred = timeYear y, TTime.timeGrain = TG.Year}
+  where
+    y = if n <= 99 then mod (n + 50) 100 + 2000 - 50 else n
+
+yearADBC :: Int -> TimeData
+yearADBC n =
+  TTime.timedata'{TTime.timePred = timeYear n, TTime.timeGrain = TG.Year}
 
 yearMonthDay :: Int -> Int -> Int -> TimeData
 yearMonthDay y m d = intersect' (intersect' (year y, month m), dayOfMonth d)
diff --git a/Duckling/Time/NL/BE/Corpus.hs b/Duckling/Time/NL/BE/Corpus.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/Time/NL/BE/Corpus.hs
@@ -0,0 +1,27 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.Time.NL.BE.Corpus
+  ( allExamples
+  ) where
+
+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
+
+allExamples :: [Example]
+allExamples = concat
+  [ examples (datetimeHoliday (2013, 12, 6, 0, 0, 0) Day "Sinterklaas")
+             [ "Sinterklaas"
+             ]
+  ]
diff --git a/Duckling/Time/NL/BE/Rules.hs b/Duckling/Time/NL/BE/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/Time/NL/BE/Rules.hs
@@ -0,0 +1,26 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE NoRebindableSyntax #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.Time.NL.BE.Rules
+  ( rules
+  ) where
+
+import Duckling.Time.Helpers
+import Duckling.Types
+
+ruleHolidays :: [Rule]
+ruleHolidays = mkRuleHolidays
+  [ ( "Sinterklaas", "sinterklaas", monthDay 12 6 )
+  ]
+
+rules :: [Rule]
+rules = ruleHolidays
diff --git a/Duckling/Time/NL/Corpus.hs b/Duckling/Time/NL/Corpus.hs
--- a/Duckling/Time/NL/Corpus.hs
+++ b/Duckling/Time/NL/Corpus.hs
@@ -10,6 +10,7 @@
 
 module Duckling.Time.NL.Corpus
   ( corpus
+  , defaultCorpus
   , negativeCorpus
   ) where
 
@@ -29,6 +30,17 @@
 corpus :: Corpus
 corpus = (context, testOptions, allExamples)
 
+defaultCorpus :: Corpus
+defaultCorpus = (context, testOptions, allExamples ++ custom)
+  where
+    custom = concat
+      [ examples (datetimeHoliday (2013, 12, 5, 0, 0, 0) Day "Sinterklaas")
+                 [ "Sinterklaas"
+                 , "Pakjesavond"
+                 , "Sinterklaasavond"
+                 ]
+      ]
+
 negativeCorpus :: NegativeCorpus
 negativeCorpus = (context, testOptions, examples)
   where
@@ -449,11 +461,6 @@
              ]
   , examples (datetimeHoliday (2013, 11, 1, 0, 0, 0) Day "Allerheiligen")
              [ "Allerheiligen"
-             ]
-  , examples (datetimeHoliday (2013, 12, 5, 0, 0, 0) Day "Sinterklaas")
-             [ "Sinterklaas"
-             , "Pakjesavond"
-             , "Sinterklaasavond"
              ]
   , examples (datetimeInterval ((2013, 2, 12, 18, 0, 0), (2013, 2, 13, 0, 0, 0)) Hour)
              [ "vanavond"
diff --git a/Duckling/Time/NL/NL/Rules.hs b/Duckling/Time/NL/NL/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/Time/NL/NL/Rules.hs
@@ -0,0 +1,23 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE NoRebindableSyntax #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.Time.NL.NL.Rules
+  ( rulesBackwardCompatible
+  ) where
+
+import Duckling.Time.Helpers
+import Duckling.Types
+
+rulesBackwardCompatible :: [Rule]
+rulesBackwardCompatible = mkRuleHolidays
+  [ ( "Sinterklaas", "sinterklaas(avond)?|pakjesavond", monthDay 12 5 )
+  ]
diff --git a/Duckling/Time/NL/Rules.hs b/Duckling/Time/NL/Rules.hs
--- a/Duckling/Time/NL/Rules.hs
+++ b/Duckling/Time/NL/Rules.hs
@@ -81,30 +81,17 @@
 
 ruleHolidays :: [Rule]
 ruleHolidays = mkRuleHolidays
-  [ ( "Nieuwjaarsdag"      , "nieuwjaars?(dag)?"
-    , monthDay  1  1 )
-  , ( "Valentijnsdag"     , "valentijns?(dag)?"
-    , monthDay  2 14 )
-  , ( "Halloween"       , "hall?oween?"
-    , monthDay 10 31 )
-  , ( "Koningsdag"      , "konings?dag"
-    , monthDay  4 27 )
-  , ( "Allerheiligen"       , "allerheiligen?|aller heiligen?"
-    , monthDay 11  1 )
-  , ( "Sinterklaas"         , "sinterklaas(avond)?|pakjesavond"
-    , monthDay 12  5 )
-  , ( "Kerstavond"       , "kerstavond"
-    , monthDay 12 24 )
-  , ( "Tweede Kerstdag", "tweede kerstdag"
-    , monthDay 12 26 )
-  , ( "Kerstmis"           , "kerstmis|(eerste )?kerstdag|kerst"
-    , monthDay 12 25 )
-  , ( "Oudjaar"      , "oudjaar|oudejaars?avond"
-    , monthDay 12 31 )
-  , ( "Moederdag"        , "moederdag"
-    , nthDOWOfMonth 2 7 5 )
-  , ( "Vaderdag"        , "vaderdag"
-    , nthDOWOfMonth 3 7 6 )
+  [ ( "Nieuwjaarsdag", "nieuwjaars?(dag)?", monthDay  1  1 )
+  , ( "Valentijnsdag", "valentijns?(dag)?", monthDay  2 14 )
+  , ( "Halloween", "hall?oween?", monthDay 10 31 )
+  , ( "Koningsdag", "konings?dag", monthDay  4 27 )
+  , ( "Allerheiligen", "allerheiligen?|aller heiligen?", monthDay 11  1 )
+  , ( "Kerstavond", "kerstavond", monthDay 12 24 )
+  , ( "Tweede Kerstdag", "tweede kerstdag", monthDay 12 26 )
+  , ( "Kerstmis", "kerstmis|(eerste )?kerstdag|kerst", monthDay 12 25 )
+  , ( "Oudjaar", "oudjaar|oudejaars?avond", monthDay 12 31 )
+  , ( "Moederdag", "moederdag", nthDOWOfMonth 2 7 5 )
+  , ( "Vaderdag", "vaderdag", nthDOWOfMonth 3 7 6 )
   ]
 
 ruleRelativeMinutesToOrAfterIntegerPartOfDay :: Rule
diff --git a/Duckling/Time/Types.hs b/Duckling/Time/Types.hs
--- a/Duckling/Time/Types.hs
+++ b/Duckling/Time/Types.hs
@@ -16,9 +16,7 @@
 
 module Duckling.Time.Types where
 
-import Control.Arrow ((***))
 import Control.DeepSeq
-import Control.Monad (join)
 import Data.Aeson
 import Data.Foldable (find)
 import Data.Hashable
@@ -237,6 +235,7 @@
     }
   | IntersectPredicate Predicate Predicate
   | TimeIntervalsPredicate TimeIntervalType Predicate Predicate
+  | ReplaceIntersectPredicate Predicate Predicate Predicate
   deriving Show
 
 {-# ANN runPredicate ("HLint: ignore Use foldr1OrError" :: String) #-}
@@ -265,6 +264,8 @@
   runIntersectPredicate pred1 pred2
 runPredicate (TimeIntervalsPredicate ty pred1 pred2) =
   runTimeIntervalsPredicate ty pred1 pred2
+runPredicate (ReplaceIntersectPredicate pred1 pred2 pred3) =
+  runReplaceIntersectPredicate pred1 pred2 pred3
 
 -- Don't use outside this module, use a smart constructor
 emptyTimeDatePredicate :: Predicate
@@ -332,6 +333,10 @@
     | otherwise = Nothing
 mkIntersectPredicate pred1 pred2 = IntersectPredicate pred1 pred2
 
+mkReplaceIntersectPredicate :: Predicate -> Predicate -> Predicate -> Predicate
+mkReplaceIntersectPredicate pred1 pred2 pred3 =
+  ReplaceIntersectPredicate pred1 pred2 pred3
+
 mkTimeIntervalsPredicate
   :: TimeIntervalType -> Predicate -> Predicate -> Predicate
 mkTimeIntervalsPredicate _ a@EmptyPredicate{} _ = a
@@ -541,7 +546,6 @@
         then rounded
         else timePlus rounded TG.Year 1
 
--- | Converts 2-digits to a year between 1950 and 2050
 runYearPredicate :: Int -> SeriesPredicate
 runYearPredicate n = series
   where
@@ -552,13 +556,48 @@
     where
       Time.UTCTime day _ = start t
       (tyear, _, _) = Time.toGregorian day
-      year = toInteger $ if n <= 99 then mod (n + 50) 100 + 2000 - 50 else n
+      year = toInteger n
       y = timePlus (timeRound t TG.Year) TG.Year $ year - tyear
 
 -- Limits how deep into lists of segments to look
 safeMax :: Int
 safeMax = 10
 
+runReplaceIntersectPredicate
+  :: Predicate -> Predicate -> Predicate -> SeriesPredicate
+runReplaceIntersectPredicate pred1 pred2 pred3 = runComposeWithReplacement
+  (runPredicate pred1) (runPredicate pred2) (runPredicate pred3)
+
+-- If pred1 intersects with pred2, returns pred3 otherwise pred2
+-- Caveat: only works if all predicates are aligned (e.g. once a year)
+runComposeWithReplacement
+  :: SeriesPredicate -> SeriesPredicate -> SeriesPredicate -> SeriesPredicate
+runComposeWithReplacement pred1 pred2 pred3 = series
+  where
+  series nowTime context = (backward, forward)
+    where
+    (past1, future1) = pred1 nowTime context
+    (past2, future2) = pred2 nowTime context
+    (past3, future3) = pred3 nowTime context
+
+    computeSerie :: [[TimeObject]] -> [TimeObject]
+    computeSerie [tokens1,tokens2,tokens3] =
+      zipWith3 (\token1 token2 token3 -> case timeIntersect token1 token2 of
+        Just _ -> token3
+        Nothing -> token2
+      ) tokens1 tokens2 tokens3
+    computeSerie _ = []
+
+    backwardBounded =
+      takeWhile (\t -> timeStartsBeforeTheEndOf (minTime context) t)
+      . take safeMax
+    forwardBounded =
+      takeWhile (\t -> timeStartsBeforeTheEndOf t (maxTime context))
+      . take safeMax
+
+    backward = computeSerie $ map backwardBounded [past1, past2, past3]
+    forward = computeSerie $ map forwardBounded [future1, future2, future3]
+
 runIntersectPredicate :: Predicate -> Predicate -> SeriesPredicate
 runIntersectPredicate pred1 pred2 =
   runCompose (runPredicate pred1) (runPredicate pred2)
@@ -676,7 +715,7 @@
 timezoneOffset (Time.TimeZone t _ _) = Text.concat [sign, hh, ":", mm]
   where
     (sign, t') = if t < 0 then ("-", negate t) else ("+", t)
-    (hh, mm) = join (***) (pad 2) $ divMod t' 60
+    (hh, mm) = both (pad 2) $ divMod t' 60
 
 -- | Return a RFC3339 formatted time, e.g. "2013-02-12T04:30:00.000-02:00".
 -- | Backward-compatible with Duckling: fraction of second is milli and padded.
diff --git a/Duckling/Time/ZH/Corpus.hs b/Duckling/Time/ZH/Corpus.hs
--- a/Duckling/Time/ZH/Corpus.hs
+++ b/Duckling/Time/ZH/Corpus.hs
@@ -461,39 +461,65 @@
              , "今晚8點"
              , "今晚八點"
              ]
-  , examples (datetime (2014, 1, 1, 0, 0, 0) Day)
+  , examples (datetimeHoliday (2014, 1, 1, 0, 0, 0) Day "元旦")
              [ "元旦"
              , "元旦节"
              , "元旦節"
-             ]
-  , examples (datetime (2013, 2, 14, 0, 0, 0) Day)
-             [ "情人节"
-             , "情人節"
+             , "阳历新年"
              ]
-  , examples (datetime (2013, 3, 8, 0, 0, 0) Day)
+  , examples (datetimeHoliday (2013, 3, 8, 0, 0, 0) Day "妇女节")
              [ "妇女节"
              , "婦女節"
              ]
-  , examples (datetime (2013, 5, 1, 0, 0, 0) Day)
+  , examples (datetimeHoliday (2013, 5, 1, 0, 0, 0) Day "劳动节")
              [ "劳动节"
              , "勞動節"
+             , "五一国际劳动节"
              ]
-  , examples (datetime (2013, 6, 1, 0, 0, 0) Day)
+  , examples (datetimeHoliday (2013, 6, 1, 0, 0, 0) Day "儿童节")
              [ "儿童节"
              , "兒童節"
+             , "国际儿童节"
              ]
-  , examples (datetime (2013, 8, 1, 0, 0, 0) Day)
+  , examples (datetimeHoliday (2013, 8, 1, 0, 0, 0) Day "建军节")
              [ "建军节"
+             , "八一建軍節"
              , "建軍節"
              ]
-  , examples (datetime (2013, 12, 25, 0, 0, 0) Day)
+  , examples (datetimeHoliday (2013, 12, 25, 0, 0, 0) Day "圣诞节")
              [ "圣诞"
              , "聖誕"
              , "圣诞节"
              , "聖誕節"
              ]
-  , examples (datetime (2013, 6, 1, 15, 15, 0) Minute)
+  , examples (datetimeHoliday (2013, 4, 1, 0, 0, 0) Day "愚人节")
+             [ "愚人节"
+             , "愚人節"
+             ]
+  , examples (datetimeHoliday (2013, 10, 31, 0, 0, 0) Day "万圣节")
+             [ "万圣节"
+             , "萬聖節"
+             ]
+  , examples (datetimeHoliday (2013, 12, 20, 0, 0, 0) Day "澳门回归纪念日")
+             [ "澳门回归纪念日"
+             , "澳門回歸紀念日"
+             ]
+  , examples (datetimeHoliday (2013, 2, 14, 0, 0, 0) Day "情人节")
+             [ "情人节"
+             , "情人節"
+             , "圣瓦伦丁节"
+             ]
+  , examples (datetimeHoliday (2013, 3, 15, 0, 0, 0) Day "国际消费者权益日")
+             [ "国际消费者权益日"
+             , "国际消費者權益日"
+             , "三一五"
+             ]
+  , examples (datetimeHoliday (2013, 6, 1, 15, 15, 0) Minute "儿童节")
              [ "儿童节下午三点十五"
              , "兒童節下午三點十五"
+             ]
+  , examples (datetimeIntervalHoliday ((2013, 2, 14, 18, 0, 0), (2013, 2, 15, 0, 0, 0)) Hour "情人节")
+             [ "情人节晚上"
+             , "情人節晚上"
              ]
   ]
diff --git a/Duckling/Time/ZH/Rules.hs b/Duckling/Time/ZH/Rules.hs
--- a/Duckling/Time/ZH/Rules.hs
+++ b/Duckling/Time/ZH/Rules.hs
@@ -207,15 +207,6 @@
       _ -> Nothing
   }
 
-ruleValentinesDay :: Rule
-ruleValentinesDay = Rule
-  { name = "valentine's day"
-  , pattern =
-    [ regex "情人(节|節)"
-    ]
-  , prod = \_ -> tt $ monthDay 2 14
-  }
-
 ruleHhmmTimeofday :: Rule
 ruleHhmmTimeofday = Rule
   { name = "hh:mm (time-of-day)"
@@ -258,15 +249,6 @@
       _ -> Nothing
   }
 
-ruleNewYearsDay :: Rule
-ruleNewYearsDay = Rule
-  { name = "new year's day"
-  , pattern =
-    [ regex "元旦(节|節)?"
-    ]
-  , prod = \_ -> tt $ monthDay 1 1
-  }
-
 ruleLastTime :: Rule
 ruleLastTime = Rule
   { name = "last <time>"
@@ -372,15 +354,6 @@
   , prod = \_ -> tt . cycleNth TG.Day $ - 2
   }
 
-ruleLaborDay :: Rule
-ruleLaborDay = Rule
-  { name = "labor day"
-  , pattern =
-    [ regex "劳动节|勞動節"
-    ]
-  , prod = \_ -> tt $ monthDay 5 1
-  }
-
 ruleNextCycle :: Rule
 ruleNextCycle = Rule
   { name = "next <cycle>"
@@ -740,15 +713,6 @@
   , prod = \_ -> tt . cycleNth TG.Day $ - 1
   }
 
-ruleChristmas :: Rule
-ruleChristmas = Rule
-  { name = "christmas"
-  , pattern =
-    [ regex "(圣诞|聖誕)(节|節)?"
-    ]
-  , prod = \_ -> tt $ monthDay 12 25
-  }
-
 ruleLastNight :: Rule
 ruleLastNight = Rule
   { name = "last night"
@@ -774,15 +738,6 @@
       _ -> Nothing
   }
 
-ruleArmysDay :: Rule
-ruleArmysDay = Rule
-  { name = "army's day"
-  , pattern =
-    [ regex "建(军节|軍節)"
-    ]
-  , prod = \_ -> tt $ monthDay 8 1
-  }
-
 ruleNamedmonthDayofmonth :: Rule
 ruleNamedmonthDayofmonth = Rule
   { name = "<named-month> <day-of-month>"
@@ -847,15 +802,6 @@
       Token Time . partOfDay <$> intersect td1 td2
   }
 
-ruleChildrensDay :: Rule
-ruleChildrensDay = Rule
-  { name = "children's day"
-  , pattern =
-    [ regex "(儿|兒)童(节|節)"
-    ]
-  , prod = \_ -> tt $ monthDay 6 1
-  }
-
 ruleThisYear :: Rule
 ruleThisYear = Rule
   { name = "this year"
@@ -877,15 +823,6 @@
       _ -> Nothing
   }
 
-ruleWomensDay :: Rule
-ruleWomensDay = Rule
-  { name = "women's day"
-  , pattern =
-    [ regex "(妇|婦)女(节|節)"
-    ]
-  , prod = \_ -> tt $ monthDay 3 8
-  }
-
 ruleEveningnight :: Rule
 ruleEveningnight = Rule
   { name = "evening|night"
@@ -977,13 +914,70 @@
   , ( "December", "十二月(份)?" )
   ]
 
+rulePeriodicHolidays :: [Rule]
+rulePeriodicHolidays = mkRuleHolidays
+  -- Fixed dates, year over year
+  [ ( "中国共产党的生日", "中(国共产党诞|國共產黨誕)生日|(党|黨)的生日", monthDay 7 1 )
+  , ( "愚人节", "愚人(节|節)", monthDay 4 1 )
+  , ( "建军节", "(中国人民解放(军|軍)|八一)?建(军节|軍節)", monthDay 8 1 )
+  , ( "植树节", "中(国植树节|國植樹節)", monthDay 3 12 )
+  , ( "五四青年节", "(中(国|國))?(五四|54)?青年(节|節)", monthDay 5 4 )
+  , ( "圣诞节", "(圣诞|聖誕)(节|節)?", monthDay 12 25 )
+  , ( "平安夜", "(平安|聖誕)夜", monthDay 12 24 )
+  , ( "哥伦布日", "哥(伦|倫)布日", monthDay 10 12 )
+  , ( "双十一", "(双|雙)(十一|11)", monthDay 11 11 )
+  , ( "万圣节", "万圣节|萬聖節", monthDay 10 31 )
+  , ( "香港回归纪念日", "香港回(归纪|歸紀)念日", monthDay 7 1 )
+  , ( "人权日", "人(权|權)日", monthDay 12 10 )
+  , ( "美国独立日", "(美国)?(独|獨)立日", monthDay 7 4 )
+  , ( "儿童节", "(国际|國際)?(六一|61)?(儿|兒)童(节|節)", monthDay 6 1 )
+  , ( "国际慈善日", "(国际|國際)慈善日", monthDay 9 5 )
+  , ( "国际瑜伽日", "(国际|國際)瑜伽日", monthDay 6 21 )
+  , ( "国际爵士日", "(国际|國際)爵士日", monthDay 4 30 )
+  , ( "国际奥林匹克日", "(国际|國際)奥林匹克日", monthDay 6 23 )
+  , ( "妇女节", "(国际劳动|國際勞動|三八)?(妇|婦)女(节|節)", monthDay 3 8 )
+  , ( "劳动节", "(五一|51)?(国际|國際)?(劳动|勞動)(节|節)", monthDay 5 1 )
+  , ( "国际青年节", "(国际|國際)青年(节|節)", monthDay 8 12 )
+  , ( "澳门回归纪念日", "澳(门|門)回(归纪|歸紀)念日", monthDay 12 20 )
+  , ( "全国爱牙日", "全(国爱|國愛)牙日", monthDay 9 20 )
+  , ( "全国爱耳日", "全(国爱|國愛)耳日", monthDay 3 3 )
+  , ( "全国爱眼日", "全(国爱|國愛)眼日", monthDay 6 6 )
+  , ( "南京大屠杀纪念日", "南京大屠(杀纪|殺紀)念日", monthDay 12 13 )
+  , ( "辛亥革命纪念日", "辛亥革命(纪|紀)念日", monthDay 10 10 )
+  , ( "元旦", "元旦(节|節)?|((公|(阳|陽))(历|曆))?新年", monthDay 1 1 )
+  , ( "新年夜", "新年夜", monthDay 12 31 )
+  , ( "情人节", "(情人|(圣瓦伦丁|聖瓦倫丁))(节|節)", monthDay 2 14 )
+  , ( "清明节", "清明(节|節)", monthDay 4 5 )
+  , ( "光棍节", "光棍(节|節)", monthDay 11 11 )
+  , ( "圣帕特里克节", "圣帕特里克节|聖帕特裏克節", monthDay 3 17 )
+  , ( "教师节", "(中(国|國))?教师(节|節)", monthDay 9 10 )
+  , ( "退伍军人节", "(退伍(军|軍)人|老兵)(节|節)", monthDay 11 11 )
+  , ( "白色情人节", "白色情人(节|節)", monthDay 3 14 )
+  , ( "世界艾滋病日", "世界艾滋病日", monthDay 12 1 )
+  , ( "世界献血日", "世界(献|獻)血日", monthDay 6 14 )
+  , ( "世界癌症日", "世界癌(症|癥)日", monthDay 2 4 )
+  , ( "国际消费者权益日", "(国际|世界)?(消费者权益|消費者權益)日|三一五", monthDay 3 15 )
+  , ( "世界糖尿病日", "世界糖尿病日", monthDay 11 14 )
+  , ( "世界环境日", "世界(环|環)境日", monthDay 6 5 )
+  , ( "世界粮食日", "世界((粮|糧)食|食物)日", monthDay 10 16 )
+  , ( "世界心脏日", "世界心(脏|臟)日", monthDay 9 29 )
+  , ( "世界海洋日", "世界海洋日", monthDay 6 8 )
+  , ( "世界诗歌日", "世界(诗|詩)歌日", monthDay 3 21 )
+  , ( "世界人口日", "世界人口日", monthDay 7 11 )
+  , ( "世界难民日", "世界(难|難)民日", monthDay 6 20 )
+  , ( "世界教师日", "世界教师日", monthDay 10 5 )
+  , ( "世界旅游日", "世界旅游日", monthDay 9 27 )
+
+  -- Fixed day/week/month, year over year
+  , ( "父亲节", "父(亲节|親節)", nthDOWOfMonth 3 7 6 )
+  , ( "马丁路德金日", "(马|馬)丁路德金((纪|紀)念)?日", nthDOWOfMonth 3 1 1)
+  , ( "母亲节", "母(亲节|親節)", nthDOWOfMonth 2 7 5 )
+  ]
+
 rules :: [Rule]
 rules =
   [ ruleAbsorptionOfAfterNamedDay
   , ruleAfternoon
-  , ruleArmysDay
-  , ruleChildrensDay
-  , ruleChristmas
   , ruleDimTimePartofday
   , ruleDurationAgo
   , ruleDurationFromNow
@@ -995,7 +989,6 @@
   , ruleIntegerLatentTimeofday
   , ruleIntersect
   , ruleIntersectBy
-  , ruleLaborDay
   , ruleLastCycle
   , ruleLastNCycle
   , ruleNCycleLast
@@ -1008,7 +1001,6 @@
   , ruleMonthNumericWithMonthSymbol
   , ruleMorning
   , ruleNamedmonthDayofmonth
-  , ruleNewYearsDay
   , ruleNextCycle
   , ruleNextNCycle
   , ruleNCycleNext
@@ -1046,9 +1038,7 @@
   , ruleTomorrow
   , ruleTomorrowNight
   , ruleTonight
-  , ruleValentinesDay
   , ruleWeekend
-  , ruleWomensDay
   , ruleYearNumericWithYearSymbol
   , ruleYesterday
   , ruleYyyymmdd
@@ -1056,3 +1046,4 @@
   ]
   ++ ruleDaysOfWeek
   ++ ruleMonths
+  ++ rulePeriodicHolidays
diff --git a/Duckling/TimeGrain/HI/Rules.hs b/Duckling/TimeGrain/HI/Rules.hs
new file mode 100644
--- /dev/null
+++ b/Duckling/TimeGrain/HI/Rules.hs
@@ -0,0 +1,42 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Duckling.TimeGrain.HI.Rules
+  ( rules
+  ) where
+
+import Data.String
+import Data.Text (Text)
+import Prelude
+
+import Duckling.Dimensions.Types
+import Duckling.Types
+import qualified Duckling.TimeGrain.Types as TG
+
+grains :: [(Text, String, TG.Grain)]
+grains = [ ("second (grain)", "सेकंड", TG.Second)
+         , ("minute (grain)", "मिनट", TG.Minute)
+         , ("hour (grain)", "घंटा", TG.Hour)
+         , ("day (grain)", "(दिन|दिवस)", TG.Day)
+         , ("week (grain)", "(सप्ताह|हफ़्ता)", TG.Week)
+         , ("month (grain)", "महीना", TG.Month)
+         , ("quarter (grain)", "चौथाई", TG.Quarter)
+         , ("year (grain)", "(साल|वर्ष)", TG.Year)
+         ]
+
+rules :: [Rule]
+rules = map go grains
+  where
+    go (name, regexPattern, grain) = Rule
+      { name = name
+      , pattern = [regex regexPattern]
+      , prod = \_ -> Just $ Token TimeGrain grain
+      }
diff --git a/Duckling/TimeGrain/RO/Rules.hs b/Duckling/TimeGrain/RO/Rules.hs
--- a/Duckling/TimeGrain/RO/Rules.hs
+++ b/Duckling/TimeGrain/RO/Rules.hs
@@ -10,15 +10,16 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.TimeGrain.RO.Rules
-  ( rules ) where
+  ( rules
+  ) where
 
+import Data.String
 import Data.Text (Text)
 import Prelude
-import Data.String
 
 import Duckling.Dimensions.Types
-import qualified Duckling.TimeGrain.Types as TG
 import Duckling.Types
+import qualified Duckling.TimeGrain.Types as TG
 
 grains :: [(Text, String, TG.Grain)]
 grains = [ ("secunde (grain)", "sec(und(a|e|ă))?", TG.Second)
diff --git a/Duckling/Volume/RO/Corpus.hs b/Duckling/Volume/RO/Corpus.hs
--- a/Duckling/Volume/RO/Corpus.hs
+++ b/Duckling/Volume/RO/Corpus.hs
@@ -9,7 +9,8 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Volume.RO.Corpus
-  ( corpus ) where
+  ( corpus
+  ) where
 
 import Data.String
 import Prelude
@@ -26,8 +27,10 @@
 allExamples = concat
   [ examples (VolumeValue Millilitre 250)
              [ "250 mililitri"
+             , "250 de mililitri"
              , "250ml"
              , "250 ml"
+             , "250 de ml"
              ]
   , examples (VolumeValue Litre 2)
              [ "2 litri"
@@ -44,5 +47,8 @@
   , examples (VolumeValue Litre 0.5)
              [ "jumatate de litru"
              , "jumătate de litru"
+             ]
+  , examples (VolumeValue Gallon 20)
+             [ "douazeci de galoane"
              ]
   ]
diff --git a/Duckling/Volume/RO/Rules.hs b/Duckling/Volume/RO/Rules.hs
--- a/Duckling/Volume/RO/Rules.hs
+++ b/Duckling/Volume/RO/Rules.hs
@@ -7,13 +7,15 @@
 
 
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Duckling.Volume.RO.Rules
-  ( rules ) where
+  ( rules
+  ) where
 
-import Prelude
 import Data.String
+import Prelude
 
 import Duckling.Dimensions.Types
 import Duckling.Types
@@ -25,9 +27,9 @@
   { name = "<latent vol> ml"
   , pattern =
     [ dimension Volume
-    , regex "m(ililitr[ui]|l)"
+    , regex "(de )?m(ililitr[ui]|l)"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Volume vd:_) ->
         Just . Token Volume $ withUnit TVolume.Millilitre vd
       _ -> Nothing
@@ -38,9 +40,9 @@
   { name = "<vol> hectoliters"
   , pattern =
     [ dimension Volume
-    , regex "hectolitr[ui]"
+    , regex "(de )?hectolitr[ui]"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Volume vd:_) ->
         Just . Token Volume $ withUnit TVolume.Hectolitre vd
       _ -> Nothing
@@ -51,9 +53,9 @@
   { name = "<vol> liters"
   , pattern =
     [ dimension Volume
-    , regex "l(itr[ui])?"
+    , regex "(de )?l(itr[ui])?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Volume vd:_) ->
         Just . Token Volume $ withUnit TVolume.Litre vd
       _ -> Nothing
@@ -65,7 +67,7 @@
   , pattern =
     [ regex "jum(a|ă)tate de litr[ui]"
     ]
-  , prod = \_ -> Just . Token Volume . withUnit TVolume.Litre $ volume 0.5
+  , prod = const . Just . Token Volume . withUnit TVolume.Litre $ volume 0.5
   }
 
 ruleLatentVolGalon :: Rule
@@ -73,9 +75,9 @@
   { name = "<latent vol> galon"
   , pattern =
     [ dimension Volume
-    , regex "gal(oane|on)?"
+    , regex "(de )?gal(oane|on)?"
     ]
-  , prod = \tokens -> case tokens of
+  , prod = \case
       (Token Volume vd:_) ->
         Just . Token Volume $ withUnit TVolume.Gallon vd
       _ -> Nothing
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -57,6 +57,8 @@
 | `Url` | "https://api.wit.ai/message?q=hi" | `{"value":"https://api.wit.ai/message?q=hi","domain":"api.wit.ai"}`
 | `Volume` | "4 gallons" | `{"value":4,"type":"value","unit":"gallon"}`
 
+[Custom dimensions](https://github.com/facebook/duckling/blob/master/exe/CustomDimensionExample.hs) are also supported.
+
 ## Extending Duckling
 To regenerate the classifiers and run the test suite:
 ```
@@ -66,10 +68,11 @@
 It's important to regenerate the classifiers after updating the code and before
 running the test suite.
 
-To extend Duckling's support for a dimension in a given language, typically 2
+To extend Duckling's support for a dimension in a given language, typically 3
 files need to be updated:
-* `Duckling/<dimension>/<language>/Rules.hs`
-* `Duckling/<dimension>/<language>/Corpus.hs`
+* `Duckling/<Dimension>/<Lang>/Rules.hs`
+* `Duckling/<Dimension>/<Lang>/Corpus.hs`
+* `Duckling/Dimensions/<Lang>.hs` (if not already present in `Duckling/Dimensions/Common.hs`)
 
 To add a new language:
 * Make sure that the language code used follows the [ISO-639-1 standard](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
diff --git a/duckling.cabal b/duckling.cabal
--- a/duckling.cabal
+++ b/duckling.cabal
@@ -1,10 +1,10 @@
 name:                duckling
-version:             0.1.6.0
+version:             0.1.6.1
 synopsis:            A Haskell library for parsing text into structured data.
 description:
   Duckling is a library for parsing text into structured data.
-homepage:            https://github.com/facebookincubator/duckling#readme
-bug-reports:         https://github.com/facebookincubator/duckling/issues
+homepage:            https://github.com/facebook/duckling#readme
+bug-reports:         https://github.com/facebook/duckling/issues
 license:             OtherLicense
 license-files:       LICENSE,PATENTS
 author:              Facebook, Inc.
@@ -31,6 +31,7 @@
                      , Duckling.Engine
                      , Duckling.Engine.Regex
                      , Duckling.Locale
+                     , Duckling.Region
                      , Duckling.Resolve
                      , Duckling.Types
                      , Duckling.Types.Document
@@ -107,6 +108,8 @@
                      , Duckling.Ranking.Classifiers.MY_XX
                      , Duckling.Ranking.Classifiers.NB_XX
                      , Duckling.Ranking.Classifiers.NE_XX
+                     , Duckling.Ranking.Classifiers.NL_BE
+                     , Duckling.Ranking.Classifiers.NL_NL
                      , Duckling.Ranking.Classifiers.NL_XX
                      , Duckling.Ranking.Classifiers.PL_XX
                      , Duckling.Ranking.Classifiers.PT_XX
@@ -166,8 +169,32 @@
                      -- AmountOfMoney
                      , Duckling.AmountOfMoney.AR.Corpus
                      , Duckling.AmountOfMoney.AR.Rules
+                     , Duckling.AmountOfMoney.EN.AU.Corpus
+                     , Duckling.AmountOfMoney.EN.AU.Rules
+                     , Duckling.AmountOfMoney.EN.BZ.Corpus
+                     , Duckling.AmountOfMoney.EN.BZ.Rules
+                     , Duckling.AmountOfMoney.EN.CA.Corpus
+                     , Duckling.AmountOfMoney.EN.CA.Rules
                      , Duckling.AmountOfMoney.EN.Corpus
+                     , Duckling.AmountOfMoney.EN.GB.Corpus
+                     , Duckling.AmountOfMoney.EN.GB.Rules
+                     , Duckling.AmountOfMoney.EN.IE.Corpus
+                     , Duckling.AmountOfMoney.EN.IE.Rules
+                     , Duckling.AmountOfMoney.EN.IN.Corpus
+                     , Duckling.AmountOfMoney.EN.IN.Rules
+                     , Duckling.AmountOfMoney.EN.JM.Corpus
+                     , Duckling.AmountOfMoney.EN.JM.Rules
+                     , Duckling.AmountOfMoney.EN.NZ.Corpus
+                     , Duckling.AmountOfMoney.EN.NZ.Rules
+                     , Duckling.AmountOfMoney.EN.PH.Corpus
+                     , Duckling.AmountOfMoney.EN.PH.Rules
                      , Duckling.AmountOfMoney.EN.Rules
+                     , Duckling.AmountOfMoney.EN.TT.Corpus
+                     , Duckling.AmountOfMoney.EN.TT.Rules
+                     , Duckling.AmountOfMoney.EN.US.Corpus
+                     , Duckling.AmountOfMoney.EN.US.Rules
+                     , Duckling.AmountOfMoney.EN.ZA.Corpus
+                     , Duckling.AmountOfMoney.EN.ZA.Rules
                      , Duckling.AmountOfMoney.BG.Corpus
                      , Duckling.AmountOfMoney.BG.Rules
                      , Duckling.AmountOfMoney.ES.Corpus
@@ -253,6 +280,8 @@
                      , Duckling.Duration.GA.Corpus
                      , Duckling.Duration.GA.Rules
                      , Duckling.Duration.HE.Rules
+                     , Duckling.Duration.HI.Corpus
+                     , Duckling.Duration.HI.Rules
                      , Duckling.Duration.HR.Rules
                      , Duckling.Duration.HU.Corpus
                      , Duckling.Duration.HU.Rules
@@ -450,6 +479,8 @@
                      , Duckling.Quantity.RO.Rules
                      , Duckling.Quantity.RU.Corpus
                      , Duckling.Quantity.RU.Rules
+                     , Duckling.Quantity.ZH.Corpus
+                     , Duckling.Quantity.ZH.Rules
                      , Duckling.Quantity.Helpers
                      , Duckling.Quantity.Types
 
@@ -542,6 +573,9 @@
                      , Duckling.Time.NB.Rules
                      , Duckling.Time.NL.Corpus
                      , Duckling.Time.NL.Rules
+                     , Duckling.Time.NL.BE.Corpus
+                     , Duckling.Time.NL.BE.Rules
+                     , Duckling.Time.NL.NL.Rules
                      , Duckling.Time.PL.Corpus
                      , Duckling.Time.PL.Rules
                      , Duckling.Time.PT.Corpus
@@ -580,6 +614,7 @@
                      , Duckling.TimeGrain.FR.Rules
                      , Duckling.TimeGrain.GA.Rules
                      , Duckling.TimeGrain.HE.Rules
+                     , Duckling.TimeGrain.HI.Rules
                      , Duckling.TimeGrain.HR.Rules
                      , Duckling.TimeGrain.HU.Rules
                      , Duckling.TimeGrain.IT.Rules
@@ -721,6 +756,7 @@
                      , Duckling.Duration.FR.Tests
                      , Duckling.Duration.GA.Tests
                      , Duckling.Duration.HU.Tests
+                     , Duckling.Duration.HI.Tests
                      , Duckling.Duration.JA.Tests
                      , Duckling.Duration.KO.Tests
                      , Duckling.Duration.NB.Tests
@@ -822,6 +858,7 @@
                      , Duckling.Quantity.PT.Tests
                      , Duckling.Quantity.RO.Tests
                      , Duckling.Quantity.RU.Tests
+                     , Duckling.Quantity.ZH.Tests
                      , Duckling.Quantity.Tests
 
                      -- Temperature
@@ -883,14 +920,14 @@
                      , Duckling.Volume.TR.Tests
                      , Duckling.Volume.Tests
 
-  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wincomplete-patterns
   default-language:    Haskell2010
   default-extensions:  OverloadedStrings
 
 executable duckling-regen-exe
   main-is:             RegenMain.hs
   hs-source-dirs:      exe
-  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wincomplete-patterns
   other-modules:       Duckling.Ranking.Train
                      , Duckling.Ranking.Generate
   build-depends:       duckling
@@ -980,4 +1017,4 @@
 
 source-repository head
   type:     git
-  location: https://github.com/facebookincubator/duckling
+  location: https://github.com/facebook/duckling
diff --git a/exe/Duckling/Ranking/Generate.hs b/exe/Duckling/Ranking/Generate.hs
--- a/exe/Duckling/Ranking/Generate.hs
+++ b/exe/Duckling/Ranking/Generate.hs
@@ -45,6 +45,7 @@
 import qualified Duckling.Time.KO.Corpus as KOTime
 import qualified Duckling.Time.NB.Corpus as NBTime
 import qualified Duckling.Time.NL.Corpus as NLTime
+import qualified Duckling.Time.NL.BE.Corpus as NL_BETime
 import qualified Duckling.Time.PL.Corpus as PLTime
 import qualified Duckling.Time.PT.Corpus as PTTime
 import qualified Duckling.Time.RO.Corpus as ROTime
@@ -157,6 +158,7 @@
 -- | For backward compatibility.
 getDefaultCorpusForLang :: Lang -> Corpus
 getDefaultCorpusForLang EN = ENTime.defaultCorpus
+getDefaultCorpusForLang NL = NLTime.defaultCorpus
 getDefaultCorpusForLang lang = getCorpusForLang lang
 
 getCorpusForLang :: Lang -> Corpus
@@ -199,6 +201,7 @@
 getExamplesForLocale EN CA = EN_CATime.allExamples
 getExamplesForLocale EN GB = EN_GBTime.allExamples
 getExamplesForLocale EN US = EN_USTime.allExamples
+getExamplesForLocale NL BE = NL_BETime.allExamples
 getExamplesForLocale ZH CN = ZH_CNTime.allExamples
 getExamplesForLocale ZH HK = ZH_HKTime.allExamples
 getExamplesForLocale ZH MO = ZH_MOTime.allExamples
diff --git a/tests/Duckling/AmountOfMoney/EN/Tests.hs b/tests/Duckling/AmountOfMoney/EN/Tests.hs
--- a/tests/Duckling/AmountOfMoney/EN/Tests.hs
+++ b/tests/Duckling/AmountOfMoney/EN/Tests.hs
@@ -17,17 +17,122 @@
 
 import Duckling.AmountOfMoney.EN.Corpus
 import Duckling.Dimensions.Types
+import Duckling.Locale
 import Duckling.Testing.Asserts
-import Duckling.Testing.Types (testContext, testOptions)
+import Duckling.Testing.Types (testContext, testOptions, withLocale)
 import Duckling.Types (Range(..))
+import qualified Duckling.AmountOfMoney.EN.AU.Corpus as AU
+import qualified Duckling.AmountOfMoney.EN.BZ.Corpus as BZ
+import qualified Duckling.AmountOfMoney.EN.CA.Corpus as CA
+import qualified Duckling.AmountOfMoney.EN.GB.Corpus as GB
+import qualified Duckling.AmountOfMoney.EN.IE.Corpus as GIE
+import qualified Duckling.AmountOfMoney.EN.IN.Corpus as IN
+import qualified Duckling.AmountOfMoney.EN.IE.Corpus as IE
+import qualified Duckling.AmountOfMoney.EN.JM.Corpus as JM
+import qualified Duckling.AmountOfMoney.EN.NZ.Corpus as NZ
+import qualified Duckling.AmountOfMoney.EN.PH.Corpus as PH
+import qualified Duckling.AmountOfMoney.EN.TT.Corpus as TT
+import qualified Duckling.AmountOfMoney.EN.US.Corpus as US
+import qualified Duckling.AmountOfMoney.EN.ZA.Corpus as ZA
 
 tests :: TestTree
 tests = testGroup "EN Tests"
   [ makeCorpusTest [This AmountOfMoney] corpus
   , makeNegativeCorpusTest [This AmountOfMoney] negativeCorpus
+  , localeTests
   , intersectTests
   , rangeTests
   ]
+
+localeTests :: TestTree
+localeTests = testGroup "Locale Tests"
+  [ testGroup "EN_AU Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeAU AU.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeAU AU.negativeExamples
+    ]
+   , testGroup "EN_BZ Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeBZ BZ.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeBZ BZ.negativeExamples
+    ]
+   , testGroup "EN_CA Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeCA CA.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeCA CA.negativeExamples
+    ]
+   , testGroup "EN_GB Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeGB GB.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeGB GB.negativeExamples
+    ]
+   , testGroup "EN_IE Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeIE IE.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeIE IE.negativeExamples
+    ]
+   , testGroup "EN_IN Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeIN IN.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeIN IN.negativeExamples
+    ]
+   , testGroup "EN_JM Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeJM JM.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeJM JM.negativeExamples
+    ]
+   , testGroup "EN_NZ Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeNZ NZ.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeNZ NZ.negativeExamples
+    ]
+   , testGroup "EN_PH Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localePH PH.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localePH PH.negativeExamples
+    ]
+    , testGroup "EN_TT Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeTT TT.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeTT TT.negativeExamples
+    ]
+    , testGroup "EN_US Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeUS US.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeUS US.negativeExamples
+    ]
+    , testGroup "EN_ZA Tests"
+    [ makeCorpusTest [This AmountOfMoney]
+      $ withLocale corpus localeZA ZA.allExamples
+    , makeNegativeCorpusTest [This AmountOfMoney]
+      $ withLocale negativeCorpus localeZA ZA.negativeExamples
+    ]
+  ]
+  where
+    localeAU = makeLocale EN $ Just AU
+    localeBZ = makeLocale EN $ Just BZ
+    localeCA = makeLocale EN $ Just CA
+    localeGB = makeLocale EN $ Just GB
+    localeIE = makeLocale EN $ Just IE
+    localeIN = makeLocale EN $ Just IN
+    localeJM = makeLocale EN $ Just JM
+    localeNZ = makeLocale EN $ Just NZ
+    localePH = makeLocale EN $ Just PH
+    localeTT = makeLocale EN $ Just TT
+    localeUS = makeLocale EN $ Just US
+    localeZA = makeLocale EN $ Just ZA
+
 
 intersectTests :: TestTree
 intersectTests = testCase "Intersect Test" $
diff --git a/tests/Duckling/AmountOfMoney/RO/Tests.hs b/tests/Duckling/AmountOfMoney/RO/Tests.hs
--- a/tests/Duckling/AmountOfMoney/RO/Tests.hs
+++ b/tests/Duckling/AmountOfMoney/RO/Tests.hs
@@ -7,17 +7,19 @@
 
 
 module Duckling.AmountOfMoney.RO.Tests
-  ( tests ) where
+  ( tests
+  ) where
 
-import Prelude
 import Data.String
+import Prelude
 import Test.Tasty
 
+import Duckling.AmountOfMoney.RO.Corpus
 import Duckling.Dimensions.Types
 import Duckling.Testing.Asserts
-import Duckling.AmountOfMoney.RO.Corpus
 
 tests :: TestTree
 tests = testGroup "RO Tests"
   [ makeCorpusTest [This AmountOfMoney] corpus
+  , makeNegativeCorpusTest [This AmountOfMoney] negativeCorpus
   ]
diff --git a/tests/Duckling/Duration/HI/Tests.hs b/tests/Duckling/Duration/HI/Tests.hs
new file mode 100644
--- /dev/null
+++ b/tests/Duckling/Duration/HI/Tests.hs
@@ -0,0 +1,24 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+
+module Duckling.Duration.HI.Tests
+  ( tests
+  ) where
+
+import Data.String
+import Prelude
+import Test.Tasty
+
+import Duckling.Dimensions.Types
+import Duckling.Duration.HI.Corpus
+import Duckling.Testing.Asserts
+
+tests :: TestTree
+tests = testGroup "HI Tests"
+  [ makeCorpusTest [This Duration] corpus
+  ]
diff --git a/tests/Duckling/Duration/Tests.hs b/tests/Duckling/Duration/Tests.hs
--- a/tests/Duckling/Duration/Tests.hs
+++ b/tests/Duckling/Duration/Tests.hs
@@ -20,6 +20,7 @@
 import qualified Duckling.Duration.EN.Tests as EN
 import qualified Duckling.Duration.FR.Tests as FR
 import qualified Duckling.Duration.GA.Tests as GA
+import qualified Duckling.Duration.HI.Tests as HI
 import qualified Duckling.Duration.HU.Tests as HU
 import qualified Duckling.Duration.JA.Tests as JA
 import qualified Duckling.Duration.KO.Tests as KO
@@ -41,6 +42,7 @@
   , EN.tests
   , FR.tests
   , GA.tests
+  , HI.tests
   , HU.tests
   , JA.tests
   , KO.tests
diff --git a/tests/Duckling/Quantity/Tests.hs b/tests/Duckling/Quantity/Tests.hs
--- a/tests/Duckling/Quantity/Tests.hs
+++ b/tests/Duckling/Quantity/Tests.hs
@@ -22,6 +22,7 @@
 import qualified Duckling.Quantity.PT.Tests as PT
 import qualified Duckling.Quantity.RO.Tests as RO
 import qualified Duckling.Quantity.RU.Tests as RU
+import qualified Duckling.Quantity.ZH.Tests as ZH
 
 tests :: TestTree
 tests = testGroup "Quantity Tests"
@@ -33,4 +34,5 @@
   , PT.tests
   , RO.tests
   , RU.tests
+  , ZH.tests
   ]
diff --git a/tests/Duckling/Quantity/ZH/Tests.hs b/tests/Duckling/Quantity/ZH/Tests.hs
new file mode 100644
--- /dev/null
+++ b/tests/Duckling/Quantity/ZH/Tests.hs
@@ -0,0 +1,23 @@
+-- Copyright (c) 2016-present, Facebook, Inc.
+-- All rights reserved.
+--
+-- This source code is licensed under the BSD-style license found in the
+-- LICENSE file in the root directory of this source tree. An additional grant
+-- of patent rights can be found in the PATENTS file in the same directory.
+
+
+module Duckling.Quantity.ZH.Tests
+  ( tests ) where
+
+import Data.String
+import Prelude
+import Test.Tasty
+
+import Duckling.Dimensions.Types
+import Duckling.Quantity.ZH.Corpus
+import Duckling.Testing.Asserts
+
+tests :: TestTree
+tests = testGroup "ZH Tests"
+  [ makeCorpusTest [This Quantity] corpus
+  ]
diff --git a/tests/Duckling/Temperature/EN/Tests.hs b/tests/Duckling/Temperature/EN/Tests.hs
--- a/tests/Duckling/Temperature/EN/Tests.hs
+++ b/tests/Duckling/Temperature/EN/Tests.hs
@@ -13,12 +13,25 @@
 import Prelude
 import Data.String
 import Test.Tasty
+import Test.Tasty.HUnit
 
 import Duckling.Dimensions.Types
 import Duckling.Temperature.EN.Corpus
 import Duckling.Testing.Asserts
+import Duckling.Testing.Types (testContext, testOptions)
+import Duckling.Types (Range(..))
 
 tests :: TestTree
 tests = testGroup "EN Tests"
   [ makeCorpusTest [This Temperature] corpus
+  , rangeTests
   ]
+
+rangeTests :: TestTree
+rangeTests = testCase "Range Test" $
+  mapM_ (analyzedRangeTest testContext testOptions
+          . withTargets [This Temperature]) xs
+  where
+    xs = [ ("between 40 and 30 degrees", Range 15 25 )
+         , ("30 degrees degrees", Range 0 10 )
+         ]
diff --git a/tests/Duckling/Time/DE/Tests.hs b/tests/Duckling/Time/DE/Tests.hs
--- a/tests/Duckling/Time/DE/Tests.hs
+++ b/tests/Duckling/Time/DE/Tests.hs
@@ -12,13 +12,27 @@
 import Data.String
 import Prelude
 import Test.Tasty
+import Test.Tasty.HUnit
 
 import Duckling.Dimensions.Types
+import Duckling.Locale
+import Duckling.Resolve
 import Duckling.Testing.Asserts
+import Duckling.Testing.Types (testContext, testOptions)
 import Duckling.Time.DE.Corpus
+import Duckling.Types (Range(..))
 
 tests :: TestTree
 tests = testGroup "DE Tests"
   [ makeCorpusTest [This Time] corpus
   , makeNegativeCorpusTest [This Time] negativeCorpus
+  , rangeTests
   ]
+
+rangeTests :: TestTree
+rangeTests = testCase "Range Test" $
+  mapM_ (analyzedRangeTest (testContext{locale = makeLocale DE Nothing})
+         testOptions . withTargets [This Time]) xs
+  where
+    xs = [ ("Wir treffen uns am 17 Uhr am KiLa.", Range 16 25)
+         ]
diff --git a/tests/Duckling/Time/EN/Tests.hs b/tests/Duckling/Time/EN/Tests.hs
--- a/tests/Duckling/Time/EN/Tests.hs
+++ b/tests/Duckling/Time/EN/Tests.hs
@@ -174,4 +174,6 @@
          , ("this this week", Range 5 14) -- ruleThisTime too eager
          , ("one ninety nine a m", Range 11 19) -- ruleMilitarySpelledOutAMPM2
          , ("thirteen fifty nine a m", Range 15 23) -- ruleMilitarySpelledOutAMPM
+         , ("table Wednesday for 30 people", Range 6 15)
+           -- do not parse "for 30" as year intersect
          ]
diff --git a/tests/Duckling/Time/NL/Tests.hs b/tests/Duckling/Time/NL/Tests.hs
--- a/tests/Duckling/Time/NL/Tests.hs
+++ b/tests/Duckling/Time/NL/Tests.hs
@@ -7,18 +7,33 @@
 
 
 module Duckling.Time.NL.Tests
-  ( tests ) where
+  ( tests
+  ) where
 
 import Data.String
 import Prelude
 import Test.Tasty
 
 import Duckling.Dimensions.Types
+import Duckling.Locale
 import Duckling.Testing.Asserts
+import Duckling.Testing.Types
 import Duckling.Time.NL.Corpus
+import qualified Duckling.Time.NL.BE.Corpus as BE
 
 tests :: TestTree
 tests = testGroup "NL Tests"
   [ makeCorpusTest [This Time] corpus
   , makeNegativeCorpusTest [This Time] negativeCorpus
+  , localeTests
   ]
+
+localeTests :: TestTree
+localeTests = testGroup "Locale Tests"
+  [ testGroup "NL_BE Tests"
+    [ makeCorpusTest [This Time] $ withLocale corpus localeBE BE.allExamples
+    , makeNegativeCorpusTest [This Time] $ withLocale negativeCorpus localeBE []
+    ]
+  ]
+  where
+    localeBE = makeLocale NL $ Just BE
