mirror of
https://github.com/facebook/duckling.git
synced 2024-12-23 04:02:35 +03:00
43079e7113
Summary: - Setup Nepali (NE) language - Add basic Numeral dimension Closes https://github.com/facebook/duckling/pull/156 Reviewed By: JonCoens Differential Revision: D6965558 Pulled By: patapizza fbshipit-source-id: f46c9b104d4345f20bd0cf53f8c9c8754855f314
119 lines
5.3 KiB
Haskell
119 lines
5.3 KiB
Haskell
-- 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 #-}
|
|
|
|
module Duckling.Dimensions
|
|
( allDimensions
|
|
, explicitDimensions
|
|
) where
|
|
|
|
import Data.HashSet (HashSet)
|
|
import Prelude
|
|
import qualified Data.HashSet as HashSet
|
|
|
|
import Duckling.Dimensions.Types
|
|
import qualified Duckling.Dimensions.Common as CommonDimensions
|
|
import qualified Duckling.Dimensions.AR as ARDimensions
|
|
import qualified Duckling.Dimensions.BG as BGDimensions
|
|
import qualified Duckling.Dimensions.CS as CSDimensions
|
|
import qualified Duckling.Dimensions.DA as DADimensions
|
|
import qualified Duckling.Dimensions.DE as DEDimensions
|
|
import qualified Duckling.Dimensions.EL as ELDimensions
|
|
import qualified Duckling.Dimensions.EN as ENDimensions
|
|
import qualified Duckling.Dimensions.ES as ESDimensions
|
|
import qualified Duckling.Dimensions.ET as ETDimensions
|
|
import qualified Duckling.Dimensions.FR as FRDimensions
|
|
import qualified Duckling.Dimensions.GA as GADimensions
|
|
import qualified Duckling.Dimensions.HE as HEDimensions
|
|
import qualified Duckling.Dimensions.HI as HIDimensions
|
|
import qualified Duckling.Dimensions.HR as HRDimensions
|
|
import qualified Duckling.Dimensions.HU as HUDimensions
|
|
import qualified Duckling.Dimensions.ID as IDDimensions
|
|
import qualified Duckling.Dimensions.IT as ITDimensions
|
|
import qualified Duckling.Dimensions.JA as JADimensions
|
|
import qualified Duckling.Dimensions.KA as KADimensions
|
|
import qualified Duckling.Dimensions.KO as KODimensions
|
|
import qualified Duckling.Dimensions.MY as MYDimensions
|
|
import qualified Duckling.Dimensions.NB as NBDimensions
|
|
import qualified Duckling.Dimensions.NE as NEDimensions
|
|
import qualified Duckling.Dimensions.NL as NLDimensions
|
|
import qualified Duckling.Dimensions.PL as PLDimensions
|
|
import qualified Duckling.Dimensions.PT as PTDimensions
|
|
import qualified Duckling.Dimensions.RO as RODimensions
|
|
import qualified Duckling.Dimensions.RU as RUDimensions
|
|
import qualified Duckling.Dimensions.SV as SVDimensions
|
|
import qualified Duckling.Dimensions.TR as TRDimensions
|
|
import qualified Duckling.Dimensions.UK as UKDimensions
|
|
import qualified Duckling.Dimensions.VI as VIDimensions
|
|
import qualified Duckling.Dimensions.ZH as ZHDimensions
|
|
import Duckling.Locale
|
|
|
|
allDimensions :: Lang -> [Some Dimension]
|
|
allDimensions lang = CommonDimensions.allDimensions ++ langDimensions lang
|
|
|
|
-- | Augments `targets` with all dependent dimensions.
|
|
explicitDimensions :: HashSet (Some Dimension) -> HashSet (Some Dimension)
|
|
explicitDimensions targets = HashSet.union targets deps
|
|
where
|
|
deps = HashSet.unions . map dependents $ HashSet.toList targets
|
|
|
|
-- | Ordinal depends on Numeral for JA, KO, and ZH.
|
|
dependents :: Some Dimension -> HashSet (Some Dimension)
|
|
dependents (This Distance) = HashSet.singleton (This Numeral)
|
|
dependents (This Duration) = HashSet.fromList [This Numeral, This TimeGrain]
|
|
dependents (This Numeral) = HashSet.empty
|
|
dependents (This Email) = HashSet.empty
|
|
dependents (This AmountOfMoney) = HashSet.singleton (This Numeral)
|
|
dependents (This Ordinal) = HashSet.singleton (This Numeral)
|
|
dependents (This PhoneNumber) = HashSet.empty
|
|
dependents (This Quantity) = HashSet.singleton (This Numeral)
|
|
dependents (This RegexMatch) = HashSet.empty
|
|
dependents (This Temperature) = HashSet.singleton (This Numeral)
|
|
dependents (This Time) =
|
|
HashSet.fromList [This Numeral, This Duration, This Ordinal, This TimeGrain]
|
|
dependents (This TimeGrain) = HashSet.empty
|
|
dependents (This Url) = HashSet.empty
|
|
dependents (This Volume) = HashSet.singleton (This Numeral)
|
|
|
|
langDimensions :: Lang -> [Some Dimension]
|
|
langDimensions AR = ARDimensions.allDimensions
|
|
langDimensions BG = BGDimensions.allDimensions
|
|
langDimensions CS = CSDimensions.allDimensions
|
|
langDimensions DA = DADimensions.allDimensions
|
|
langDimensions DE = DEDimensions.allDimensions
|
|
langDimensions EL = ELDimensions.allDimensions
|
|
langDimensions EN = ENDimensions.allDimensions
|
|
langDimensions ES = ESDimensions.allDimensions
|
|
langDimensions ET = ETDimensions.allDimensions
|
|
langDimensions FR = FRDimensions.allDimensions
|
|
langDimensions GA = GADimensions.allDimensions
|
|
langDimensions HE = HEDimensions.allDimensions
|
|
langDimensions HI = HIDimensions.allDimensions
|
|
langDimensions HR = HRDimensions.allDimensions
|
|
langDimensions HU = HUDimensions.allDimensions
|
|
langDimensions ID = IDDimensions.allDimensions
|
|
langDimensions IT = ITDimensions.allDimensions
|
|
langDimensions JA = JADimensions.allDimensions
|
|
langDimensions KA = KADimensions.allDimensions
|
|
langDimensions KO = KODimensions.allDimensions
|
|
langDimensions MY = MYDimensions.allDimensions
|
|
langDimensions NB = NBDimensions.allDimensions
|
|
langDimensions NE = NEDimensions.allDimensions
|
|
langDimensions NL = NLDimensions.allDimensions
|
|
langDimensions PL = PLDimensions.allDimensions
|
|
langDimensions PT = PTDimensions.allDimensions
|
|
langDimensions RO = RODimensions.allDimensions
|
|
langDimensions RU = RUDimensions.allDimensions
|
|
langDimensions SV = SVDimensions.allDimensions
|
|
langDimensions TR = TRDimensions.allDimensions
|
|
langDimensions UK = UKDimensions.allDimensions
|
|
langDimensions VI = VIDimensions.allDimensions
|
|
langDimensions ZH = ZHDimensions.allDimensions
|